Title: [135829] trunk
Revision
135829
Author
tk...@chromium.org
Date
2012-11-26 23:53:18 -0800 (Mon, 26 Nov 2012)

Log Message

:read-only selector should match to date/time input types
https://bugs.webkit.org/show_bug.cgi?id=103350

Reviewed by Kentaro Hara.

Source/WebCore:

We supported :read-only and :read-write only for text form controls;
i.e. <textarea> and text-field <input>. According to [1], we should
support them for date/time types. So, this patch removes
isTextFormControl check in SelectorChecker, and just relies on
shouldMatchRead{Only,Write}Selector virtual functions.

Tests: Update fast/forms/*/*-appearance-pseudo-classes.html.

[1] http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary

* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::checkOneSelector):
Remove isFormControlElement check and isTextFormControl check.

* html/HTMLFormControlElement.cpp:
Remove shouldMatchRead{Only,Write}Selector functions. We don't need
common implementations any more.
* html/HTMLFormControlElement.h: Ditto.

* html/HTMLTextAreaElement.h:
(HTMLTextAreaElement): Add shouldMatchRead{Only,Write}Selector overrides.
* html/HTMLTextAreaElement.cpp:
(WebCore::HTMLTextAreaElement::shouldMatchReadOnlySelector): Added.
(WebCore::HTMLTextAreaElement::shouldMatchReadWriteSelector): Added.

* html/HTMLInputElement.h:
(HTMLInputElement): Add shouldMatchRead{Only,Write}Selector overrides.
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::shouldMatchReadOnlySelector):
Added. This checks InputType::supportsReadOnly and readOnly.
(WebCore::HTMLInputElement::shouldMatchReadWriteSelector): Ditto.

* html/InputType.h:
(InputType): Add supportsReadOnly.
* html/InputType.cpp:
(WebCore::InputType::supportsReadOnly): Added. Returns false by default.

* html/BaseDateAndTimeInputType.h:
(BaseDateAndTimeInputType): Add supportsReadOnly.
* html/BaseDateAndTimeInputType.cpp:
(WebCore::BaseDateAndTimeInputType::supportsReadOnly): Added. Returns true.
* html/TextFieldInputType.h:
(TextFieldInputType): Add supportsReadOnly.
* html/TextFieldInputType.cpp:
(WebCore::TextFieldInputType::supportsReadOnly): Added. Returns true.

LayoutTests:

The text color becomes yellow as specified for :read-only in
*-appearance-pseudo-classes.html

* platform/chromium-mac/fast/forms/date/date-appearance-pseudo-classes-expected.png:
* platform/chromium-mac/fast/forms/month/month-appearance-pseudo-classes-expected.png:
* platform/chromium-mac/fast/forms/time/time-appearance-pseudo-classes-expected.png:
* platform/chromium-mac/fast/forms/week/week-appearance-pseudo-classes-expected.png:
* platform/chromium/TestExpectations:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (135828 => 135829)


--- trunk/LayoutTests/ChangeLog	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/LayoutTests/ChangeLog	2012-11-27 07:53:18 UTC (rev 135829)
@@ -1,3 +1,19 @@
+2012-11-26  Kent Tamura  <tk...@chromium.org>
+
+        :read-only selector should match to date/time input types
+        https://bugs.webkit.org/show_bug.cgi?id=103350
+
+        Reviewed by Kentaro Hara.
+
+        The text color becomes yellow as specified for :read-only in
+        *-appearance-pseudo-classes.html
+
+        * platform/chromium-mac/fast/forms/date/date-appearance-pseudo-classes-expected.png:
+        * platform/chromium-mac/fast/forms/month/month-appearance-pseudo-classes-expected.png:
+        * platform/chromium-mac/fast/forms/time/time-appearance-pseudo-classes-expected.png:
+        * platform/chromium-mac/fast/forms/week/week-appearance-pseudo-classes-expected.png:
+        * platform/chromium/TestExpectations:
+
 2012-11-26  Justin Novosad  <ju...@google.com>
 
         [Qt] new fast/backgrounds/background-opaque-images-over-color.html fails since r135629

Modified: trunk/LayoutTests/platform/chromium/TestExpectations (135828 => 135829)


--- trunk/LayoutTests/platform/chromium/TestExpectations	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/LayoutTests/platform/chromium/TestExpectations	2012-11-27 07:53:18 UTC (rev 135829)
@@ -2868,6 +2868,10 @@
 webkit.org/b/102888 platform/chromium/fast/forms/suggestion-picker/datetime-suggestion-picker-appearance.html [ Pass ImageOnlyFailure Missing ]
 webkit.org/b/102888 platform/chromium/fast/forms/suggestion-picker/datetime-suggestion-picker-appearance-rtl.html [ Pass ImageOnlyFailure Missing ]
 webkit.org/b/102888 platform/chromium/fast/forms/suggestion-picker/datetime-suggestion-picker-appearance-with-scroll-bar.html [ Pass ImageOnlyFailure Missing ]
+webkit.org/b/103350 fast/forms/date/date-appearance-pseudo-classes.html [ Pass ImageOnlyFailure ]
+webkit.org/b/103350 fast/forms/month/month-appearance-pseudo-classes.html [ Pass ImageOnlyFailure ]
+webkit.org/b/103350 fast/forms/time/time-appearance-pseudo-classes.html [ Pass ImageOnlyFailure ]
+webkit.org/b/103350 fast/forms/week/week-appearance-pseudo-classes.html [ Pass ImageOnlyFailure ]
 
 # New test added in r87324
 crbug.com/83994 [ Win ] platform/win/plugins/call-_javascript_-that-destroys-plugin.html [ Failure ]

Modified: trunk/LayoutTests/platform/chromium-mac/fast/forms/date/date-appearance-pseudo-classes-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/chromium-mac/fast/forms/month/month-appearance-pseudo-classes-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/chromium-mac/fast/forms/time/time-appearance-pseudo-classes-expected.png


(Binary files differ)

Modified: trunk/LayoutTests/platform/chromium-mac/fast/forms/week/week-appearance-pseudo-classes-expected.png


(Binary files differ)

Modified: trunk/Source/WebCore/ChangeLog (135828 => 135829)


--- trunk/Source/WebCore/ChangeLog	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/ChangeLog	2012-11-27 07:53:18 UTC (rev 135829)
@@ -1,3 +1,56 @@
+2012-11-26  Kent Tamura  <tk...@chromium.org>
+
+        :read-only selector should match to date/time input types
+        https://bugs.webkit.org/show_bug.cgi?id=103350
+
+        Reviewed by Kentaro Hara.
+
+        We supported :read-only and :read-write only for text form controls;
+        i.e. <textarea> and text-field <input>. According to [1], we should
+        support them for date/time types. So, this patch removes
+        isTextFormControl check in SelectorChecker, and just relies on
+        shouldMatchRead{Only,Write}Selector virtual functions.
+
+        Tests: Update fast/forms/*/*-appearance-pseudo-classes.html.
+
+        [1] http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
+
+        * css/SelectorChecker.cpp:
+        (WebCore::SelectorChecker::checkOneSelector):
+        Remove isFormControlElement check and isTextFormControl check.
+
+        * html/HTMLFormControlElement.cpp:
+        Remove shouldMatchRead{Only,Write}Selector functions. We don't need
+        common implementations any more.
+        * html/HTMLFormControlElement.h: Ditto.
+
+        * html/HTMLTextAreaElement.h:
+        (HTMLTextAreaElement): Add shouldMatchRead{Only,Write}Selector overrides.
+        * html/HTMLTextAreaElement.cpp:
+        (WebCore::HTMLTextAreaElement::shouldMatchReadOnlySelector): Added.
+        (WebCore::HTMLTextAreaElement::shouldMatchReadWriteSelector): Added.
+
+        * html/HTMLInputElement.h:
+        (HTMLInputElement): Add shouldMatchRead{Only,Write}Selector overrides.
+        * html/HTMLInputElement.cpp:
+        (WebCore::HTMLInputElement::shouldMatchReadOnlySelector):
+        Added. This checks InputType::supportsReadOnly and readOnly.
+        (WebCore::HTMLInputElement::shouldMatchReadWriteSelector): Ditto.
+
+        * html/InputType.h:
+        (InputType): Add supportsReadOnly.
+        * html/InputType.cpp:
+        (WebCore::InputType::supportsReadOnly): Added. Returns false by default.
+
+        * html/BaseDateAndTimeInputType.h:
+        (BaseDateAndTimeInputType): Add supportsReadOnly.
+        * html/BaseDateAndTimeInputType.cpp:
+        (WebCore::BaseDateAndTimeInputType::supportsReadOnly): Added. Returns true.
+        * html/TextFieldInputType.h:
+        (TextFieldInputType): Add supportsReadOnly.
+        * html/TextFieldInputType.cpp:
+        (WebCore::TextFieldInputType::supportsReadOnly): Added. Returns true.
+
 2012-11-26  Sheriff Bot  <webkit.review....@gmail.com>
 
         Unreviewed, rolling out r135822.

Modified: trunk/Source/WebCore/css/SelectorChecker.cpp (135828 => 135829)


--- trunk/Source/WebCore/css/SelectorChecker.cpp	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/css/SelectorChecker.cpp	2012-11-27 07:53:18 UTC (rev 135829)
@@ -1052,13 +1052,9 @@
                 return !element->isEnabledFormControl();
             break;
         case CSSSelector::PseudoReadOnly:
-            if (!element || !element->isFormControlElement())
-                return false;
-            return element->isTextFormControl() && element->shouldMatchReadOnlySelector();
+            return element && element->shouldMatchReadOnlySelector();
         case CSSSelector::PseudoReadWrite:
-            if (!element || !element->isFormControlElement())
-                return false;
-            return element->isTextFormControl() && element->shouldMatchReadWriteSelector();
+            return element && element->shouldMatchReadWriteSelector();
         case CSSSelector::PseudoOptional:
             return element && element->isOptionalFormControl();
         case CSSSelector::PseudoRequired:

Modified: trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp (135828 => 135829)


--- trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/html/BaseDateAndTimeInputType.cpp	2012-11-27 07:53:18 UTC (rev 135829)
@@ -180,5 +180,10 @@
     return typeMismatchFor(proposedValue) ? String() : proposedValue;
 }
 
+bool BaseDateAndTimeInputType::supportsReadOnly() const
+{
+    return true;
+}
+
 } // namespace WebCore
 #endif

Modified: trunk/Source/WebCore/html/BaseDateAndTimeInputType.h (135828 => 135829)


--- trunk/Source/WebCore/html/BaseDateAndTimeInputType.h	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/html/BaseDateAndTimeInputType.h	2012-11-27 07:53:18 UTC (rev 135829)
@@ -66,6 +66,7 @@
     virtual String serializeWithMilliseconds(double) const;
     virtual String localizeValue(const String&) const OVERRIDE;
     virtual String convertFromVisibleValue(const String&) const OVERRIDE;
+    virtual bool supportsReadOnly() const OVERRIDE;
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/html/HTMLFormControlElement.cpp (135828 => 135829)


--- trunk/Source/WebCore/html/HTMLFormControlElement.cpp	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/html/HTMLFormControlElement.cpp	2012-11-27 07:53:18 UTC (rev 135829)
@@ -459,16 +459,6 @@
     setNeedsValidityCheck();
 }
 
-bool HTMLFormControlElement::shouldMatchReadOnlySelector() const
-{
-    return readOnly();
-}
-
-bool HTMLFormControlElement::shouldMatchReadWriteSelector() const
-{
-    return !readOnly();
-}
-
 bool HTMLFormControlElement::validationMessageShadowTreeContains(Node* node) const
 {
     return m_validationMessage && m_validationMessage->shadowTreeContains(node);

Modified: trunk/Source/WebCore/html/HTMLFormControlElement.h (135828 => 135829)


--- trunk/Source/WebCore/html/HTMLFormControlElement.h	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/html/HTMLFormControlElement.h	2012-11-27 07:53:18 UTC (rev 135829)
@@ -81,8 +81,6 @@
 
     virtual const AtomicString& formControlType() const OVERRIDE = 0;
     virtual bool isEnabledFormControl() const { return !disabled(); }
-    virtual bool shouldMatchReadOnlySelector() const OVERRIDE;
-    virtual bool shouldMatchReadWriteSelector() const OVERRIDE;
 
     virtual bool canTriggerImplicitSubmission() const { return false; }
 

Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (135828 => 135829)


--- trunk/Source/WebCore/html/HTMLInputElement.cpp	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp	2012-11-27 07:53:18 UTC (rev 135829)
@@ -1438,6 +1438,16 @@
     return m_inputType->supportsRequired() && required();
 }
 
+bool HTMLInputElement::shouldMatchReadOnlySelector() const
+{
+    return m_inputType->supportsReadOnly() && readOnly();
+}
+
+bool HTMLInputElement::shouldMatchReadWriteSelector() const
+{
+    return m_inputType->supportsReadOnly() && !readOnly();
+}
+
 void HTMLInputElement::addSearchResult()
 {
     m_inputType->addSearchResult();

Modified: trunk/Source/WebCore/html/HTMLInputElement.h (135828 => 135829)


--- trunk/Source/WebCore/html/HTMLInputElement.h	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/html/HTMLInputElement.h	2012-11-27 07:53:18 UTC (rev 135829)
@@ -288,6 +288,8 @@
 
     static Vector<FileChooserFileInfo> filesFromFileInputFormControlState(const FormControlState&);
 
+    virtual bool shouldMatchReadOnlySelector() const OVERRIDE;
+    virtual bool shouldMatchReadWriteSelector() const OVERRIDE;
     virtual void setRangeText(const String& replacement, ExceptionCode&) OVERRIDE;
     virtual void setRangeText(const String& replacement, unsigned start, unsigned end, const String& selectionMode, ExceptionCode&) OVERRIDE;
 

Modified: trunk/Source/WebCore/html/HTMLTextAreaElement.cpp (135828 => 135829)


--- trunk/Source/WebCore/html/HTMLTextAreaElement.cpp	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/html/HTMLTextAreaElement.cpp	2012-11-27 07:53:18 UTC (rev 135829)
@@ -529,6 +529,16 @@
     fixPlaceholderRenderer(m_placeholder, innerTextElement());
 }
 
+bool HTMLTextAreaElement::shouldMatchReadOnlySelector() const
+{
+    return readOnly();
+}
+
+bool HTMLTextAreaElement::shouldMatchReadWriteSelector() const
+{
+    return !readOnly();
+}
+
 void HTMLTextAreaElement::updatePlaceholderText()
 {
     ExceptionCode ec = 0;

Modified: trunk/Source/WebCore/html/HTMLTextAreaElement.h (135828 => 135829)


--- trunk/Source/WebCore/html/HTMLTextAreaElement.h	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/html/HTMLTextAreaElement.h	2012-11-27 07:53:18 UTC (rev 135829)
@@ -112,6 +112,8 @@
 
     virtual bool shouldUseInputMethod();
     virtual void attach() OVERRIDE;
+    virtual bool shouldMatchReadOnlySelector() const OVERRIDE;
+    virtual bool shouldMatchReadWriteSelector() const OVERRIDE;
 
     bool valueMissing(const String& value) const { return isRequiredFormControl() && !disabled() && !readOnly() && value.isEmpty(); }
     bool tooLong(const String&, NeedsToCheckDirtyFlag) const;

Modified: trunk/Source/WebCore/html/InputType.cpp (135828 => 135829)


--- trunk/Source/WebCore/html/InputType.cpp	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/html/InputType.cpp	2012-11-27 07:53:18 UTC (rev 135829)
@@ -861,6 +861,11 @@
     return false;
 }
 
+bool InputType::supportsReadOnly() const
+{
+    return false;
+}
+
 void InputType::updateInnerTextValue()
 {
 }

Modified: trunk/Source/WebCore/html/InputType.h (135828 => 135829)


--- trunk/Source/WebCore/html/InputType.h	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/html/InputType.h	2012-11-27 07:53:18 UTC (rev 135829)
@@ -267,6 +267,7 @@
     virtual bool isSteppable() const;
     virtual bool shouldRespectHeightAndWidthAttributes();
     virtual bool supportsPlaceholder() const;
+    virtual bool supportsReadOnly() const;
     virtual void updateInnerTextValue();
     virtual void updatePlaceholderText();
     virtual void multipleAttributeChanged();

Modified: trunk/Source/WebCore/html/TextFieldInputType.cpp (135828 => 135829)


--- trunk/Source/WebCore/html/TextFieldInputType.cpp	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/html/TextFieldInputType.cpp	2012-11-27 07:53:18 UTC (rev 135829)
@@ -329,6 +329,11 @@
         m_innerSpinButton->releaseCapture();
 }
 
+bool TextFieldInputType::supportsReadOnly() const
+{
+    return true;
+}
+
 bool TextFieldInputType::shouldUseInputMethod() const
 {
     return true;

Modified: trunk/Source/WebCore/html/TextFieldInputType.h (135828 => 135829)


--- trunk/Source/WebCore/html/TextFieldInputType.h	2012-11-27 07:34:15 UTC (rev 135828)
+++ trunk/Source/WebCore/html/TextFieldInputType.h	2012-11-27 07:53:18 UTC (rev 135829)
@@ -64,6 +64,7 @@
     virtual void destroyShadowSubtree() OVERRIDE;
     virtual void disabledAttributeChanged() OVERRIDE;
     virtual void readonlyAttributeChanged() OVERRIDE;
+    virtual bool supportsReadOnly() const OVERRIDE;
     virtual void handleBlurEvent() OVERRIDE;
     virtual void setValue(const String&, bool valueChanged, TextFieldEventBehavior) OVERRIDE;
     virtual void updateInnerTextValue() OVERRIDE;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to