Title: [138254] trunk/Source/WebCore
Revision
138254
Author
commit-qu...@webkit.org
Date
2012-12-20 07:50:14 -0800 (Thu, 20 Dec 2012)

Log Message

INPUT_MULTIPLE_FIELDS_UI: Add minimum/maximum value to DateTimeEditElement::LayoutParameters
https://bugs.webkit.org/show_bug.cgi?id=105510

Patch by Kunihiko Sakamoto <ksakam...@chromium.org> on 2012-12-20
Reviewed by Kent Tamura.

Add two DateComponents fields, minimum and maximum, to DateTimeEditElement::LayoutParameters, replacing minimumYear and maximumYear.
They will be used to limit selectable values of month, day, etc.

No new tests. No behavior change.

* html/BaseMultipleFieldsDateAndTimeInputType.cpp: Removed fullYear().
* html/BaseMultipleFieldsDateAndTimeInputType.h:
(BaseMultipleFieldsDateAndTimeInputType): Ditto.
* html/DateInputType.cpp:
(WebCore::DateInputType::setupLayoutParameters): Populates minimum/maximum.
* html/DateTimeInputType.cpp:
(WebCore::DateTimeInputType::setupLayoutParameters): Ditto.
* html/DateTimeLocalInputType.cpp:
(WebCore::DateTimeLocalInputType::setupLayoutParameters): Ditto.
* html/MonthInputType.cpp:
(WebCore::MonthInputType::setupLayoutParameters): Ditto.
* html/WeekInputType.cpp:
(WebCore::WeekInputType::setupLayoutParameters): Ditto.
* html/shadow/DateTimeEditElement.cpp:
(WebCore::DateTimeEditBuilder::visitField): Replace the usage of minimumYear/maximumYear with minimum/maximum DateComponents.
* html/shadow/DateTimeEditElement.h:
(LayoutParameters): Removed minimumYear, maximumYear, and undefinedYear(), and added minimum and maximum fields.
(WebCore::DateTimeEditElement::LayoutParameters::LayoutParameters):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (138253 => 138254)


--- trunk/Source/WebCore/ChangeLog	2012-12-20 15:28:26 UTC (rev 138253)
+++ trunk/Source/WebCore/ChangeLog	2012-12-20 15:50:14 UTC (rev 138254)
@@ -1,3 +1,34 @@
+2012-12-20  Kunihiko Sakamoto  <ksakam...@chromium.org>
+
+        INPUT_MULTIPLE_FIELDS_UI: Add minimum/maximum value to DateTimeEditElement::LayoutParameters
+        https://bugs.webkit.org/show_bug.cgi?id=105510
+
+        Reviewed by Kent Tamura.
+
+        Add two DateComponents fields, minimum and maximum, to DateTimeEditElement::LayoutParameters, replacing minimumYear and maximumYear.
+        They will be used to limit selectable values of month, day, etc.
+
+        No new tests. No behavior change.
+
+        * html/BaseMultipleFieldsDateAndTimeInputType.cpp: Removed fullYear().
+        * html/BaseMultipleFieldsDateAndTimeInputType.h:
+        (BaseMultipleFieldsDateAndTimeInputType): Ditto.
+        * html/DateInputType.cpp:
+        (WebCore::DateInputType::setupLayoutParameters): Populates minimum/maximum.
+        * html/DateTimeInputType.cpp:
+        (WebCore::DateTimeInputType::setupLayoutParameters): Ditto.
+        * html/DateTimeLocalInputType.cpp:
+        (WebCore::DateTimeLocalInputType::setupLayoutParameters): Ditto.
+        * html/MonthInputType.cpp:
+        (WebCore::MonthInputType::setupLayoutParameters): Ditto.
+        * html/WeekInputType.cpp:
+        (WebCore::WeekInputType::setupLayoutParameters): Ditto.
+        * html/shadow/DateTimeEditElement.cpp:
+        (WebCore::DateTimeEditBuilder::visitField): Replace the usage of minimumYear/maximumYear with minimum/maximum DateComponents.
+        * html/shadow/DateTimeEditElement.h:
+        (LayoutParameters): Removed minimumYear, maximumYear, and undefinedYear(), and added minimum and maximum fields.
+        (WebCore::DateTimeEditElement::LayoutParameters::LayoutParameters):
+
 2012-12-20  Zan Dobersek  <zandober...@gmail.com>
 
         [GTK] Remove the --enable-unstable-features configuration option

Modified: trunk/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.cpp (138253 => 138254)


--- trunk/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.cpp	2012-12-20 15:28:26 UTC (rev 138253)
+++ trunk/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.cpp	2012-12-20 15:50:14 UTC (rev 138254)
@@ -422,14 +422,6 @@
     m_pickerIndicatorElement->removeInlineStyleProperty(CSSPropertyDisplay);
 }
 
-int BaseMultipleFieldsDateAndTimeInputType::fullYear(const String& source) const
-{
-    DateComponents date;
-    if (!parseToDateComponents(source, &date))
-        return DateTimeEditElement::LayoutParameters::undefinedYear();
-    return date.fullYear();
-}
-
 bool BaseMultipleFieldsDateAndTimeInputType::shouldHaveSecondField(const DateComponents& date) const
 {
     StepRange stepRange = createStepRange(AnyIsDefaultStep);

Modified: trunk/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.h (138253 => 138254)


--- trunk/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.h	2012-12-20 15:28:26 UTC (rev 138253)
+++ trunk/Source/WebCore/html/BaseMultipleFieldsDateAndTimeInputType.h	2012-12-20 15:50:14 UTC (rev 138254)
@@ -47,7 +47,6 @@
     BaseMultipleFieldsDateAndTimeInputType(HTMLInputElement*);
     virtual ~BaseMultipleFieldsDateAndTimeInputType();
 
-    int fullYear(const String&) const;
     virtual void setupLayoutParameters(DateTimeEditElement::LayoutParameters&, const DateComponents&) const = 0;
     bool shouldHaveSecondField(const DateComponents&) const;
 

Modified: trunk/Source/WebCore/html/DateInputType.cpp (138253 => 138254)


--- trunk/Source/WebCore/html/DateInputType.cpp	2012-12-20 15:28:26 UTC (rev 138253)
+++ trunk/Source/WebCore/html/DateInputType.cpp	2012-12-20 15:50:14 UTC (rev 138254)
@@ -113,8 +113,10 @@
 {
     layoutParameters.dateTimeFormat = layoutParameters.locale.dateFormat();
     layoutParameters.fallbackDateTimeFormat = ASCIILiteral("yyyy-MM-dd");
-    layoutParameters.minimumYear = fullYear(element()->fastGetAttribute(minAttr));
-    layoutParameters.maximumYear = fullYear(element()->fastGetAttribute(maxAttr));
+    if (!parseToDateComponents(element()->fastGetAttribute(minAttr), &layoutParameters.minimum))
+        layoutParameters.minimum = DateComponents();
+    if (!parseToDateComponents(element()->fastGetAttribute(maxAttr), &layoutParameters.maximum))
+        layoutParameters.maximum = DateComponents();
     layoutParameters.placeholderForDay = placeholderForDayOfMonthField();
     layoutParameters.placeholderForMonth = placeholderForMonthField();
     layoutParameters.placeholderForYear = placeholderForYearField();

Modified: trunk/Source/WebCore/html/DateTimeInputType.cpp (138253 => 138254)


--- trunk/Source/WebCore/html/DateTimeInputType.cpp	2012-12-20 15:28:26 UTC (rev 138253)
+++ trunk/Source/WebCore/html/DateTimeInputType.cpp	2012-12-20 15:50:14 UTC (rev 138254)
@@ -152,8 +152,10 @@
         layoutParameters.dateTimeFormat = layoutParameters.locale.dateTimeFormatWithoutSeconds();
         layoutParameters.fallbackDateTimeFormat = "dd/MM/yyyy HH:mm";
     }
-    layoutParameters.minimumYear = fullYear(element()->fastGetAttribute(minAttr));
-    layoutParameters.maximumYear = fullYear(element()->fastGetAttribute(maxAttr));
+    if (!parseToDateComponents(element()->fastGetAttribute(minAttr), &layoutParameters.minimum))
+        layoutParameters.minimum = DateComponents();
+    if (!parseToDateComponents(element()->fastGetAttribute(maxAttr), &layoutParameters.maximum))
+        layoutParameters.maximum = DateComponents();
     layoutParameters.placeholderForDay = placeholderForDayOfMonthField();
     layoutParameters.placeholderForMonth = placeholderForMonthField();
     layoutParameters.placeholderForYear = placeholderForYearField();

Modified: trunk/Source/WebCore/html/DateTimeLocalInputType.cpp (138253 => 138254)


--- trunk/Source/WebCore/html/DateTimeLocalInputType.cpp	2012-12-20 15:28:26 UTC (rev 138253)
+++ trunk/Source/WebCore/html/DateTimeLocalInputType.cpp	2012-12-20 15:50:14 UTC (rev 138254)
@@ -158,8 +158,10 @@
         layoutParameters.dateTimeFormat = layoutParameters.locale.dateTimeFormatWithoutSeconds();
         layoutParameters.fallbackDateTimeFormat = "dd/MM/yyyy HH:mm";
     }
-    layoutParameters.minimumYear = fullYear(element()->fastGetAttribute(minAttr));
-    layoutParameters.maximumYear = fullYear(element()->fastGetAttribute(maxAttr));
+    if (!parseToDateComponents(element()->fastGetAttribute(minAttr), &layoutParameters.minimum))
+        layoutParameters.minimum = DateComponents();
+    if (!parseToDateComponents(element()->fastGetAttribute(maxAttr), &layoutParameters.maximum))
+        layoutParameters.maximum = DateComponents();
     layoutParameters.placeholderForDay = placeholderForDayOfMonthField();
     layoutParameters.placeholderForMonth = placeholderForMonthField();
     layoutParameters.placeholderForYear = placeholderForYearField();

Modified: trunk/Source/WebCore/html/MonthInputType.cpp (138253 => 138254)


--- trunk/Source/WebCore/html/MonthInputType.cpp	2012-12-20 15:28:26 UTC (rev 138253)
+++ trunk/Source/WebCore/html/MonthInputType.cpp	2012-12-20 15:50:14 UTC (rev 138254)
@@ -156,8 +156,10 @@
 {
     layoutParameters.dateTimeFormat = layoutParameters.locale.monthFormat();
     layoutParameters.fallbackDateTimeFormat = "MM/yyyy";
-    layoutParameters.minimumYear = fullYear(element()->fastGetAttribute(minAttr));
-    layoutParameters.maximumYear = fullYear(element()->fastGetAttribute(maxAttr));
+    if (!parseToDateComponents(element()->fastGetAttribute(minAttr), &layoutParameters.minimum))
+        layoutParameters.minimum = DateComponents();
+    if (!parseToDateComponents(element()->fastGetAttribute(maxAttr), &layoutParameters.maximum))
+        layoutParameters.maximum = DateComponents();
     layoutParameters.placeholderForMonth = "--";
     layoutParameters.placeholderForYear = "----";
 }

Modified: trunk/Source/WebCore/html/WeekInputType.cpp (138253 => 138254)


--- trunk/Source/WebCore/html/WeekInputType.cpp	2012-12-20 15:28:26 UTC (rev 138253)
+++ trunk/Source/WebCore/html/WeekInputType.cpp	2012-12-20 15:50:14 UTC (rev 138254)
@@ -110,8 +110,10 @@
 {
     layoutParameters.dateTimeFormat = weekFormatInLDML();
     layoutParameters.fallbackDateTimeFormat = "'Week' ww-yyyy";
-    layoutParameters.minimumYear = fullYear(element()->fastGetAttribute(minAttr));
-    layoutParameters.maximumYear = fullYear(element()->fastGetAttribute(maxAttr));
+    if (!parseToDateComponents(element()->fastGetAttribute(minAttr), &layoutParameters.minimum))
+        layoutParameters.minimum = DateComponents();
+    if (!parseToDateComponents(element()->fastGetAttribute(maxAttr), &layoutParameters.maximum))
+        layoutParameters.maximum = DateComponents();
     layoutParameters.placeholderForYear = "----";
 }
 #endif

Modified: trunk/Source/WebCore/html/shadow/DateTimeEditElement.cpp (138253 => 138254)


--- trunk/Source/WebCore/html/shadow/DateTimeEditElement.cpp	2012-12-20 15:28:26 UTC (rev 138253)
+++ trunk/Source/WebCore/html/shadow/DateTimeEditElement.cpp	2012-12-20 15:50:14 UTC (rev 138254)
@@ -237,18 +237,18 @@
 
     case DateTimeFormat::FieldTypeYear: {
         DateTimeYearFieldElement::Parameters yearParams;
-        if (m_parameters.minimumYear == m_parameters.undefinedYear()) {
+        if (m_parameters.minimum.type() == DateComponents::Invalid) {
             yearParams.minimumYear = DateComponents::minimumYear();
             yearParams.minIsSpecified = false;
         } else {
-            yearParams.minimumYear = m_parameters.minimumYear;
+            yearParams.minimumYear = m_parameters.minimum.fullYear();
             yearParams.minIsSpecified = true;
         }
-        if (m_parameters.maximumYear == m_parameters.undefinedYear()) {
+        if (m_parameters.maximum.type() == DateComponents::Invalid) {
             yearParams.maximumYear = DateComponents::maximumYear();
             yearParams.maxIsSpecified = false;
         } else {
-            yearParams.maximumYear = m_parameters.maximumYear;
+            yearParams.maximumYear = m_parameters.maximum.fullYear();
             yearParams.maxIsSpecified = true;
         }
         if (yearParams.minimumYear > yearParams.maximumYear) {
@@ -299,9 +299,10 @@
 
 bool DateTimeEditBuilder::shouldYearFieldReadOnly() const
 {
-    return m_parameters.minimumYear != m_parameters.undefinedYear()
-        && m_parameters.minimumYear == m_parameters.maximumYear
-        && m_parameters.minimumYear == m_dateValue.fullYear();
+    return m_parameters.minimum.type() != DateComponents::Invalid
+        && m_parameters.maximum.type() != DateComponents::Invalid
+        && m_parameters.minimum.fullYear() == m_parameters.maximum.fullYear()
+        && m_parameters.minimum.fullYear() == m_dateValue.fullYear();
 }
 
 void DateTimeEditBuilder::visitLiteral(const String& text)

Modified: trunk/Source/WebCore/html/shadow/DateTimeEditElement.h (138253 => 138254)


--- trunk/Source/WebCore/html/shadow/DateTimeEditElement.h	2012-12-20 15:28:26 UTC (rev 138253)
+++ trunk/Source/WebCore/html/shadow/DateTimeEditElement.h	2012-12-20 15:50:14 UTC (rev 138254)
@@ -27,6 +27,7 @@
 #define DateTimeEditElement_h
 
 #if ENABLE(INPUT_MULTIPLE_FIELDS_UI)
+#include "DateComponents.h"
 #include "DateTimeFieldElement.h"
 #include "StepRange.h"
 
@@ -65,8 +66,8 @@
         String fallbackDateTimeFormat;
         Locale& locale;
         const StepRange stepRange;
-        int minimumYear;
-        int maximumYear;
+        DateComponents minimum;
+        DateComponents maximum;
         String placeholderForDay;
         String placeholderForMonth;
         String placeholderForYear;
@@ -74,12 +75,8 @@
         LayoutParameters(Locale& locale, const StepRange& stepRange)
             : locale(locale)
             , stepRange(stepRange)
-            , minimumYear(undefinedYear())
-            , maximumYear(undefinedYear())
         {
         }
-
-        static inline int undefinedYear() { return -1; }
     };
 
     static PassRefPtr<DateTimeEditElement> create(Document*, EditControlOwner&);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to