Diff
Modified: trunk/LayoutTests/ChangeLog (130847 => 130848)
--- trunk/LayoutTests/ChangeLog 2012-10-10 05:07:13 UTC (rev 130847)
+++ trunk/LayoutTests/ChangeLog 2012-10-10 05:20:36 UTC (rev 130848)
@@ -1,3 +1,15 @@
+2012-10-09 Kent Tamura <tk...@chromium.org>
+
+ Sub-fields in input[type=time] should not be focusable if the input is disabled or read-only
+ https://bugs.webkit.org/show_bug.cgi?id=98850
+
+ Reviewed by Kentaro Hara.
+
+ * fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events-expected.txt:
+ * fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events.html:
+ * fast/forms/time-multiple-fields/time-multiple-fields-mouse-events-expected.txt:
+ * fast/forms/time-multiple-fields/time-multiple-fields-mouse-events.html:
+
2012-10-09 Pablo Flouret <pab...@motorola.com>
[Qt]REGRESSION(r120107): It made http/tests/xmlhttprequest/origin-exact-matching.html fails
Modified: trunk/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events-expected.txt (130847 => 130848)
--- trunk/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events-expected.txt 2012-10-10 05:07:13 UTC (rev 130847)
+++ trunk/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events-expected.txt 2012-10-10 05:20:36 UTC (rev 130848)
@@ -26,6 +26,9 @@
PASS input.value is "03:05"
PASS input.value is "07:05"
PASS document.activeElement.id is "another"
+== Tab navigation should skip disabled/readonly inputs ==
+PASS document.activeElement.id is "another"
+PASS document.activeElement.id is "another"
== Shfit+Tab key ==
PASS input.value is "15:00"
PASS input.value is "15:03"
Modified: trunk/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events.html (130847 => 130848)
--- trunk/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events.html 2012-10-10 05:07:13 UTC (rev 130847)
+++ trunk/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events.html 2012-10-10 05:20:36 UTC (rev 130848)
@@ -98,6 +98,19 @@
keyDown('\t');
shouldBeEqualToString('document.activeElement.id', 'another');
+beginTest('Tab navigation should skip disabled/readonly inputs', '');
+before.focus();
+input.disabled = true;
+keyDown('\t');
+shouldBeEqualToString('document.activeElement.id', 'another');
+input.disabled = false;
+
+before.focus();
+input.readOnly = true;
+keyDown('\t');
+shouldBeEqualToString('document.activeElement.id', 'another');
+input.readOnly = false;
+
beginTest('Shfit+Tab key', '03:00');
another.focus();
keyDown('\t', ['shiftKey']);
Modified: trunk/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-mouse-events-expected.txt (130847 => 130848)
--- trunk/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-mouse-events-expected.txt 2012-10-10 05:07:13 UTC (rev 130847)
+++ trunk/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-mouse-events-expected.txt 2012-10-10 05:20:36 UTC (rev 130848)
@@ -17,6 +17,9 @@
PASS input.value is "02:25"
= Click down part of spin button =
PASS input.value is "02:24"
+= Click on a disabled/readonly field =
+PASS input.value is "02:24"
+PASS input.value is "02:24"
PASS successfullyParsed is true
Modified: trunk/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-mouse-events.html (130847 => 130848)
--- trunk/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-mouse-events.html 2012-10-10 05:07:13 UTC (rev 130847)
+++ trunk/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-mouse-events.html 2012-10-10 05:20:36 UTC (rev 130848)
@@ -66,6 +66,20 @@
mouseClick();
shouldBeEqualToString('input.value', '02:24');
+debug('= Click on a disabled/readonly field =');
+input.disabled = true;
+mouseMoveTo(12, 14);
+mouseClick();
+keyDown('upArrow');
+shouldBeEqualToString('input.value', '02:24'); // Not changed.
+input.disabled = false;
+input.readOnly = true;
+mouseMoveTo(12, 14);
+mouseClick();
+keyDown('upArrow');
+shouldBeEqualToString('input.value', '02:24'); // Not changed.
+input.readOnly = false;
+
debug('');
</script>
<script src=""
Modified: trunk/Source/WebCore/ChangeLog (130847 => 130848)
--- trunk/Source/WebCore/ChangeLog 2012-10-10 05:07:13 UTC (rev 130847)
+++ trunk/Source/WebCore/ChangeLog 2012-10-10 05:20:36 UTC (rev 130848)
@@ -1,3 +1,25 @@
+2012-10-09 Kent Tamura <tk...@chromium.org>
+
+ Sub-fields in input[type=time] should not be focusable if the input is disabled or read-only
+ https://bugs.webkit.org/show_bug.cgi?id=98850
+
+ Reviewed by Kentaro Hara.
+
+ Covered by additional test cases of
+ time-multiple-fields/time-multiple-fields-keyboard-events.html and
+ time-multiple-fields/time-multiple-fields-mouse-events.html.
+
+ * html/shadow/DateTimeFieldElement.h:
+ (FieldOwner): Add isFieldOwnerDisabledOrReadOnly.
+ * html/shadow/DateTimeFieldElement.cpp:
+ (WebCore::DateTimeFieldElement::isFocusable):
+ Check isFieldOwnerDisabledOrReadOnly, and calls HTMLElement::isFocusable()
+ just in case.
+ * html/shadow/DateTimeEditElement.cpp:
+ (WebCore::DateTimeEditElement::isFieldOwnerDisabledOrReadOnly): Added.
+ * html/shadow/DateTimeEditElement.h:
+ (DateTimeEditElement): Declare isFieldOwnerDisabledOrReadOnly.
+
2012-10-09 Robert Kroeger <rjkro...@chromium.org>
[chromium] revert fling deacceleration parameter change
Modified: trunk/Source/WebCore/html/shadow/DateTimeEditElement.cpp (130847 => 130848)
--- trunk/Source/WebCore/html/shadow/DateTimeEditElement.cpp 2012-10-10 05:07:13 UTC (rev 130847)
+++ trunk/Source/WebCore/html/shadow/DateTimeEditElement.cpp 2012-10-10 05:20:36 UTC (rev 130848)
@@ -354,6 +354,11 @@
return m_editControlOwner && m_editControlOwner->isEditControlOwnerDisabled();
}
+bool DateTimeEditElement::isFieldOwnerDisabledOrReadOnly() const
+{
+ return isDisabled() || isReadOnly();
+}
+
bool DateTimeEditElement::isReadOnly() const
{
return m_editControlOwner && m_editControlOwner->isEditControlOwnerReadOnly();
Modified: trunk/Source/WebCore/html/shadow/DateTimeEditElement.h (130847 => 130848)
--- trunk/Source/WebCore/html/shadow/DateTimeEditElement.h 2012-10-10 05:07:13 UTC (rev 130847)
+++ trunk/Source/WebCore/html/shadow/DateTimeEditElement.h 2012-10-10 05:20:36 UTC (rev 130848)
@@ -131,6 +131,7 @@
virtual void fieldValueChanged() OVERRIDE FINAL;
virtual bool focusOnNextField(const DateTimeFieldElement&) OVERRIDE FINAL;
virtual bool focusOnPreviousField(const DateTimeFieldElement&) OVERRIDE FINAL;
+ virtual bool isFieldOwnerDisabledOrReadOnly() const OVERRIDE FINAL;
virtual AtomicString localeIdentifier() const OVERRIDE FINAL;
// SpinButtonElement::SpinButtonOwner functions.
Modified: trunk/Source/WebCore/html/shadow/DateTimeFieldElement.cpp (130847 => 130848)
--- trunk/Source/WebCore/html/shadow/DateTimeFieldElement.cpp 2012-10-10 05:07:13 UTC (rev 130847)
+++ trunk/Source/WebCore/html/shadow/DateTimeFieldElement.cpp 2012-10-10 05:20:36 UTC (rev 130848)
@@ -146,7 +146,11 @@
bool DateTimeFieldElement::isFocusable() const
{
- return !isReadOnly();
+ if (isReadOnly())
+ return false;
+ if (m_fieldOwner && m_fieldOwner->isFieldOwnerDisabledOrReadOnly())
+ return false;
+ return HTMLElement::isFocusable();
}
bool DateTimeFieldElement::isReadOnly() const
Modified: trunk/Source/WebCore/html/shadow/DateTimeFieldElement.h (130847 => 130848)
--- trunk/Source/WebCore/html/shadow/DateTimeFieldElement.h 2012-10-10 05:07:13 UTC (rev 130847)
+++ trunk/Source/WebCore/html/shadow/DateTimeFieldElement.h 2012-10-10 05:20:36 UTC (rev 130848)
@@ -55,6 +55,7 @@
virtual void fieldValueChanged() = 0;
virtual bool focusOnNextField(const DateTimeFieldElement&) = 0;
virtual bool focusOnPreviousField(const DateTimeFieldElement&) = 0;
+ virtual bool isFieldOwnerDisabledOrReadOnly() const = 0;
virtual AtomicString localeIdentifier() const = 0;
};