Diff
Modified: branches/chromium/1271/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events-expected.txt (131283 => 131284)
--- branches/chromium/1271/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events-expected.txt 2012-10-15 00:28:18 UTC (rev 131283)
+++ branches/chromium/1271/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events-expected.txt 2012-10-15 01:21:54 UTC (rev 131284)
@@ -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: branches/chromium/1271/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events.html (131283 => 131284)
--- branches/chromium/1271/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events.html 2012-10-15 00:28:18 UTC (rev 131283)
+++ branches/chromium/1271/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-keyboard-events.html 2012-10-15 01:21:54 UTC (rev 131284)
@@ -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: branches/chromium/1271/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-mouse-events-expected.txt (131283 => 131284)
--- branches/chromium/1271/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-mouse-events-expected.txt 2012-10-15 00:28:18 UTC (rev 131283)
+++ branches/chromium/1271/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-mouse-events-expected.txt 2012-10-15 01:21:54 UTC (rev 131284)
@@ -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: branches/chromium/1271/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-mouse-events.html (131283 => 131284)
--- branches/chromium/1271/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-mouse-events.html 2012-10-15 00:28:18 UTC (rev 131283)
+++ branches/chromium/1271/LayoutTests/fast/forms/time-multiple-fields/time-multiple-fields-mouse-events.html 2012-10-15 01:21:54 UTC (rev 131284)
@@ -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: branches/chromium/1271/Source/WebCore/html/shadow/DateTimeEditElement.cpp (131283 => 131284)
--- branches/chromium/1271/Source/WebCore/html/shadow/DateTimeEditElement.cpp 2012-10-15 00:28:18 UTC (rev 131283)
+++ branches/chromium/1271/Source/WebCore/html/shadow/DateTimeEditElement.cpp 2012-10-15 01:21:54 UTC (rev 131284)
@@ -335,6 +335,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: branches/chromium/1271/Source/WebCore/html/shadow/DateTimeEditElement.h (131283 => 131284)
--- branches/chromium/1271/Source/WebCore/html/shadow/DateTimeEditElement.h 2012-10-15 00:28:18 UTC (rev 131283)
+++ branches/chromium/1271/Source/WebCore/html/shadow/DateTimeEditElement.h 2012-10-15 01:21:54 UTC (rev 131284)
@@ -108,6 +108,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;
// SpinButtonElement::SpinButtonOwner functions.
virtual void focusAndSelectSpinButtonOwner() OVERRIDE FINAL;
Modified: branches/chromium/1271/Source/WebCore/html/shadow/DateTimeFieldElement.cpp (131283 => 131284)
--- branches/chromium/1271/Source/WebCore/html/shadow/DateTimeFieldElement.cpp 2012-10-15 00:28:18 UTC (rev 131283)
+++ branches/chromium/1271/Source/WebCore/html/shadow/DateTimeFieldElement.cpp 2012-10-15 01:21:54 UTC (rev 131284)
@@ -144,7 +144,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: branches/chromium/1271/Source/WebCore/html/shadow/DateTimeFieldElement.h (131283 => 131284)
--- branches/chromium/1271/Source/WebCore/html/shadow/DateTimeFieldElement.h 2012-10-15 00:28:18 UTC (rev 131283)
+++ branches/chromium/1271/Source/WebCore/html/shadow/DateTimeFieldElement.h 2012-10-15 01:21:54 UTC (rev 131284)
@@ -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 void defaultEventHandler(Event*) OVERRIDE;