Title: [130134] trunk/Source/WebCore
Revision
130134
Author
yo...@chromium.org
Date
2012-10-02 01:10:08 -0700 (Tue, 02 Oct 2012)

Log Message

[Forms] Adding DateTimeDayFieldElement for multiple fields "date", "datetime", "datetime-local" input UI
https://bugs.webkit.org/show_bug.cgi?id=97998

Reviewed by Kent Tamura.

This patch introduces DateTimeDayFieldElement class for implementing
multiple fields "date", "datetime", and "datetime-local" input UI.

No new tests. This patch doesn't change behavior.

* html/shadow/DateTimeFieldElements.cpp:
(WebCore::DateTimeDayFieldElement::DateTimeDayFieldElement): Added.
(WebCore::DateTimeDayFieldElement::create): Added.
(WebCore::DateTimeDayFieldElement::populateDateTimeFieldsState): Added.
(WebCore::DateTimeDayFieldElement::setValueAsDate): Added.
(WebCore::DateTimeDayFieldElement::setValueAsDateTimeFieldsState): Added.
* html/shadow/DateTimeFieldElements.h:
(DateTimeDayFieldElement): Added.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (130133 => 130134)


--- trunk/Source/WebCore/ChangeLog	2012-10-02 08:09:10 UTC (rev 130133)
+++ trunk/Source/WebCore/ChangeLog	2012-10-02 08:10:08 UTC (rev 130134)
@@ -1,5 +1,26 @@
 2012-10-02  Yoshifumi Inoue  <yo...@chromium.org>
 
+        [Forms] Adding DateTimeDayFieldElement for multiple fields "date", "datetime", "datetime-local" input UI
+        https://bugs.webkit.org/show_bug.cgi?id=97998
+
+        Reviewed by Kent Tamura.
+
+        This patch introduces DateTimeDayFieldElement class for implementing
+        multiple fields "date", "datetime", and "datetime-local" input UI.
+
+        No new tests. This patch doesn't change behavior.
+
+        * html/shadow/DateTimeFieldElements.cpp:
+        (WebCore::DateTimeDayFieldElement::DateTimeDayFieldElement): Added.
+        (WebCore::DateTimeDayFieldElement::create): Added.
+        (WebCore::DateTimeDayFieldElement::populateDateTimeFieldsState): Added.
+        (WebCore::DateTimeDayFieldElement::setValueAsDate): Added.
+        (WebCore::DateTimeDayFieldElement::setValueAsDateTimeFieldsState): Added.
+        * html/shadow/DateTimeFieldElements.h:
+        (DateTimeDayFieldElement): Added.
+
+2012-10-02  Yoshifumi Inoue  <yo...@chromium.org>
+
         LocalzeNone::dateFormat() should have right date format.
         https://bugs.webkit.org/show_bug.cgi?id=98123
 

Modified: trunk/Source/WebCore/html/shadow/DateTimeFieldElements.cpp (130133 => 130134)


--- trunk/Source/WebCore/html/shadow/DateTimeFieldElements.cpp	2012-10-02 08:09:10 UTC (rev 130133)
+++ trunk/Source/WebCore/html/shadow/DateTimeFieldElements.cpp	2012-10-02 08:10:08 UTC (rev 130134)
@@ -71,6 +71,47 @@
 
 // ----------------------------
 
+DateTimeDayFieldElement::DateTimeDayFieldElement(Document* document, FieldOwner& fieldOwner, const String& placeholder)
+    : DateTimeNumericFieldElement(document, fieldOwner, 1, 31, placeholder)
+{
+}
+
+PassRefPtr<DateTimeDayFieldElement> DateTimeDayFieldElement::create(Document* document, FieldOwner& fieldOwner, const String& placeholder)
+{
+    DEFINE_STATIC_LOCAL(AtomicString, dayPsuedoId, ("-webkit-datetime-edit-day-field"));
+    RefPtr<DateTimeDayFieldElement> field = adoptRef(new DateTimeDayFieldElement(document, fieldOwner, placeholder));
+    field->initialize(dayPsuedoId, AXDayOfMonthFieldText());
+    return field.release();
+}
+
+void DateTimeDayFieldElement::populateDateTimeFieldsState(DateTimeFieldsState& dateTimeFieldsState)
+{
+    dateTimeFieldsState.setDayOfMonth(hasValue() ? valueAsInteger() : DateTimeFieldsState::emptyValue);
+}
+
+void DateTimeDayFieldElement::setValueAsDate(const DateComponents& date)
+{
+    setValueAsInteger(date.monthDay());
+}
+
+void DateTimeDayFieldElement::setValueAsDateTimeFieldsState(const DateTimeFieldsState& dateTimeFieldsState, const DateComponents& dateForReadOnlyField)
+{
+    if (!dateTimeFieldsState.hasDayOfMonth()) {
+        setEmptyValue(dateForReadOnlyField);
+        return;
+    }
+
+    const unsigned value = dateTimeFieldsState.dayOfMonth();
+    if (range().isInRange(static_cast<int>(value))) {
+        setValueAsInteger(value);
+        return;
+    }
+
+    setEmptyValue(dateForReadOnlyField);
+}
+
+// ----------------------------
+
 DateTimeHourFieldElement::DateTimeHourFieldElement(Document* document, FieldOwner& fieldOwner, int minimum, int maximum)
     : DateTimeNumericFieldElement(document, fieldOwner, minimum, maximum, "--")
     , m_alignment(maximum + maximum % 2)

Modified: trunk/Source/WebCore/html/shadow/DateTimeFieldElements.h (130133 => 130134)


--- trunk/Source/WebCore/html/shadow/DateTimeFieldElements.h	2012-10-02 08:09:10 UTC (rev 130133)
+++ trunk/Source/WebCore/html/shadow/DateTimeFieldElements.h	2012-10-02 08:10:08 UTC (rev 130134)
@@ -47,7 +47,21 @@
     virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&, const DateComponents& dateForReadOnlyField) OVERRIDE FINAL;
 };
 
+class DateTimeDayFieldElement : public DateTimeNumericFieldElement {
+    WTF_MAKE_NONCOPYABLE(DateTimeDayFieldElement);
 
+public:
+    static PassRefPtr<DateTimeDayFieldElement> create(Document*, FieldOwner&, const String& placeholder);
+
+private:
+    DateTimeDayFieldElement(Document*, FieldOwner&, const String& placeholder);
+
+    // DateTimeFieldElement functions.
+    virtual void populateDateTimeFieldsState(DateTimeFieldsState&) OVERRIDE FINAL;
+    virtual void setValueAsDate(const DateComponents&) OVERRIDE FINAL;
+    virtual void setValueAsDateTimeFieldsState(const DateTimeFieldsState&, const DateComponents& dateForReadOnlyField) OVERRIDE FINAL;
+};
+
 // DateTimeHourFieldElement is used for hour field of date time format
 // supporting following patterns:
 //  - 0 to 11
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to