- 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&);