Title: [130848] trunk
Revision
130848
Author
tk...@chromium.org
Date
2012-10-09 22:20:36 -0700 (Tue, 09 Oct 2012)

Log Message

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.

Source/WebCore:

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.

LayoutTests:

* 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:

Modified Paths

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;
     };
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to