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