Modified: trunk/Source/WebCore/ChangeLog (130255 => 130256)
--- trunk/Source/WebCore/ChangeLog 2012-10-03 06:28:44 UTC (rev 130255)
+++ trunk/Source/WebCore/ChangeLog 2012-10-03 06:31:31 UTC (rev 130256)
@@ -1,3 +1,31 @@
+2012-10-03 Kent Tamura <tk...@chromium.org>
+
+ Introduce DateComponents::minimumYear and maximumYear
+ https://bugs.webkit.org/show_bug.cgi?id=98230
+
+ Reviewed by Kentaro Hara.
+
+ Share same difinitions in DateComponents.cpp and DateTimeFieldElements.cpp.
+
+ No new tests. This doesn't change any bahevior.
+
+ * platform/DateComponents.h:
+ (WebCore::DateComponents::minimumYear): Moved from DateComponents.cpp.
+ (WebCore::DateComponents::maximumYear): ditto.
+ * platform/DateComponents.cpp:
+ (WebCore): Move out static minimumYear and maximumYear.
+ (WebCore::DateComponents::parseYear): Use DateCompnents::minimumYear and/or maximumYear.
+ (WebCore::withinHTMLDateLimits): ditto.
+ (WebCore::DateComponents::parseWeek): ditto.
+ (WebCore::DateComponents::setMonthsSinceEpoch): ditto.
+ (WebCore::DateComponents::setMillisecondsSinceEpochForWeek): ditto.
+
+ * html/shadow/DateTimeFieldElements.cpp:
+ (WebCore): Remove minimumYear and maximumYear.
+ (WebCore::DateTimeYearFieldElement::DateTimeYearFieldElement):
+ Use DateComponents::minimumYear and maximumYear.
+
+
2012-10-02 Arko Saha <a...@motorola.com>
Microdata: itemprop names must not override builtin properties.
Modified: trunk/Source/WebCore/html/shadow/DateTimeFieldElements.cpp (130255 => 130256)
--- trunk/Source/WebCore/html/shadow/DateTimeFieldElements.cpp 2012-10-03 06:28:44 UTC (rev 130255)
+++ trunk/Source/WebCore/html/shadow/DateTimeFieldElements.cpp 2012-10-03 06:31:31 UTC (rev 130256)
@@ -422,15 +422,8 @@
// ----------------------------
-// HTML5 uses ISO-8601 format with year >= 1. Gregorian calendar started in
-// 1582. However, we need to support 0001-01-01 in Gregorian calendar rule.
-static const int minimumYear = 1;
-// Date in ECMAScript can't represent dates later than 275760-09-13T00:00Z.
-// So, we have the same upper limit in HTML5 dates.
-static const int maximumYear = 275760;
-
DateTimeYearFieldElement::DateTimeYearFieldElement(Document* document, FieldOwner& fieldOwner, const String& placeholder)
- : DateTimeNumericFieldElement(document, fieldOwner, minimumYear, maximumYear, placeholder)
+ : DateTimeNumericFieldElement(document, fieldOwner, DateComponents::minimumYear(), DateComponents::maximumYear(), placeholder)
{
}
Modified: trunk/Source/WebCore/platform/DateComponents.cpp (130255 => 130256)
--- trunk/Source/WebCore/platform/DateComponents.cpp 2012-10-03 06:28:44 UTC (rev 130255)
+++ trunk/Source/WebCore/platform/DateComponents.cpp 2012-10-03 06:31:31 UTC (rev 130256)
@@ -47,12 +47,6 @@
// HTML5 specification defines maximum week of year is 53.
const int DateComponents::maximumWeekNumber = 53;
-// HTML5 uses ISO-8601 format with year >= 1. Gregorian calendar started in
-// 1582. However, we need to support 0001-01-01 in Gregorian calendar rule.
-static const int minimumYear = 1;
-// Date in ECMAScript can't represent dates later than 275760-09-13T00:00Z.
-// So, we have the same upper limit in HTML5 dates.
-static const int maximumYear = 275760;
static const int maximumMonthInMaximumYear = 8; // This is September, since months are 0 based.
static const int maximumDayInMaximumMonth = 13;
static const int maximumWeekInMaximumYear = 37; // The week of 275760-09-13
@@ -145,7 +139,7 @@
int year;
if (!toInt(src, length, start, digitsLength, year))
return false;
- if (year < minimumYear || year > maximumYear)
+ if (year < minimumYear() || year > maximumYear())
return false;
m_year = year;
end = start + digitsLength;
@@ -154,18 +148,18 @@
static bool withinHTMLDateLimits(int year, int month)
{
- if (year < minimumYear)
+ if (year < DateComponents::minimumYear())
return false;
- if (year < maximumYear)
+ if (year < DateComponents::maximumYear())
return true;
return month <= maximumMonthInMaximumYear;
}
static bool withinHTMLDateLimits(int year, int month, int monthDay)
{
- if (year < minimumYear)
+ if (year < DateComponents::minimumYear())
return false;
- if (year < maximumYear)
+ if (year < DateComponents::maximumYear())
return true;
if (month < maximumMonthInMaximumYear)
return true;
@@ -174,9 +168,9 @@
static bool withinHTMLDateLimits(int year, int month, int monthDay, int hour, int minute, int second, int millisecond)
{
- if (year < minimumYear)
+ if (year < DateComponents::minimumYear())
return false;
- if (year < maximumYear)
+ if (year < DateComponents::maximumYear())
return true;
if (month < maximumMonthInMaximumYear)
return true;
@@ -402,7 +396,7 @@
int week;
if (!toInt(src, length, index, 2, week) || week < minimumWeekNumber || week > maxWeekNumberInYear())
return false;
- if (m_year == maximumYear && week > maximumWeekInMaximumYear)
+ if (m_year == maximumYear() && week > maximumWeekInMaximumYear)
return false;
m_week = week;
end = index + 2;
@@ -598,7 +592,7 @@
months = round(months);
double doubleMonth = positiveFmod(months, 12);
double doubleYear = 1970 + (months - doubleMonth) / 12;
- if (doubleYear < minimumYear || maximumYear < doubleYear)
+ if (doubleYear < minimumYear() || maximumYear() < doubleYear)
return false;
int year = static_cast<int>(doubleYear);
int month = static_cast<int>(doubleMonth);
@@ -628,7 +622,7 @@
ms = round(ms);
m_year = msToYear(ms);
- if (m_year < minimumYear || m_year > maximumYear)
+ if (m_year < minimumYear() || m_year > maximumYear())
return false;
int yearDay = dayInYear(ms, m_year);
@@ -636,7 +630,7 @@
if (yearDay < offset) {
// The day belongs to the last week of the previous year.
m_year--;
- if (m_year <= minimumYear)
+ if (m_year <= minimumYear())
return false;
m_week = maxWeekNumberInYear();
} else {
@@ -645,7 +639,7 @@
m_year++;
m_week = 1;
}
- if (m_year > maximumYear || (m_year == maximumYear && m_week > maximumWeekInMaximumYear))
+ if (m_year > maximumYear() || (m_year == maximumYear() && m_week > maximumWeekInMaximumYear))
return false;
}
m_type = Week;
Modified: trunk/Source/WebCore/platform/DateComponents.h (130255 => 130256)
--- trunk/Source/WebCore/platform/DateComponents.h 2012-10-03 06:28:44 UTC (rev 130255)
+++ trunk/Source/WebCore/platform/DateComponents.h 2012-10-03 06:31:31 UTC (rev 130256)
@@ -159,6 +159,12 @@
static inline double maximumTime() { return 86399999; } // 23:59:59.999
static inline double maximumWeek() { return 8639999568000000.0; } // 275760-09-08, the Monday of the week including 275760-09-13.
+ // HTML5 uses ISO-8601 format with year >= 1. Gregorian calendar started in
+ // 1582. However, we need to support 0001-01-01 in Gregorian calendar rule.
+ static inline int minimumYear() { return 1; }
+ // Date in ECMAScript can't represent dates later than 275760-09-13T00:00Z.
+ // So, we have the same upper limit in HTML5 date/time types.
+ static inline int maximumYear() { return 275760; }
static const int minimumWeekNumber;
static const int maximumWeekNumber;