Title: [141889] trunk
- Revision
- 141889
- Author
- [email protected]
- Date
- 2013-02-05 05:54:16 -0800 (Tue, 05 Feb 2013)
Log Message
INPUT_MULTIPLE_FIELDS_UI: element.focus() should not focus on disabled sub-fields.
https://bugs.webkit.org/show_bug.cgi?id=108924
Reviewed by Kentaro Hara.
Source/WebCore:
The first field may be non-focusable. We should search sub-fields for
focusable one.
Test: fast/forms/date-multiple-fields/date-multiple-fields-focus.html
* html/shadow/DateTimeEditElement.cpp:
(WebCore::DateTimeEditElement::focusOnNextFocusableField):
Added. A private helper function.
(WebCore::DateTimeEditElement::focusIfNoFocus): Use focusOnNextFocusableField.
(WebCore::DateTimeEditElement::focusByOwner): Ditto.
(WebCore::DateTimeEditElement::focusOnNextField): Ditto.
* html/shadow/DateTimeEditElement.h:
(DateTimeEditElement): Declare focusOnNextFocusableField.
LayoutTests:
* fast/forms/date-multiple-fields/date-multiple-fields-focus-expected.txt: Added.
* fast/forms/date-multiple-fields/date-multiple-fields-focus.html: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (141888 => 141889)
--- trunk/LayoutTests/ChangeLog 2013-02-05 13:52:22 UTC (rev 141888)
+++ trunk/LayoutTests/ChangeLog 2013-02-05 13:54:16 UTC (rev 141889)
@@ -1,3 +1,13 @@
+2013-02-05 Kent Tamura <[email protected]>
+
+ INPUT_MULTIPLE_FIELDS_UI: element.focus() should not focus on disabled sub-fields.
+ https://bugs.webkit.org/show_bug.cgi?id=108924
+
+ Reviewed by Kentaro Hara.
+
+ * fast/forms/date-multiple-fields/date-multiple-fields-focus-expected.txt: Added.
+ * fast/forms/date-multiple-fields/date-multiple-fields-focus.html: Added.
+
2013-02-04 Vsevolod Vlasov <[email protected]>
Web Inspector: Create separate project for each file system added to inspector.
Added: trunk/LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-focus-expected.txt (0 => 141889)
--- trunk/LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-focus-expected.txt (rev 0)
+++ trunk/LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-focus-expected.txt 2013-02-05 13:54:16 UTC (rev 141889)
@@ -0,0 +1,11 @@
+Check if element.focus() does not focus on disabled sub-fields.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+PASS internals.youngestShadowRoot(dateInput).activeElement.getAttribute("pseudo") is "-webkit-datetime-edit-month-field"
+PASS internals.youngestShadowRoot(dateInput).activeElement.getAttribute("pseudo") is "-webkit-datetime-edit-month-field"
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-focus.html (0 => 141889)
--- trunk/LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-focus.html (rev 0)
+++ trunk/LayoutTests/fast/forms/date-multiple-fields/date-multiple-fields-focus.html 2013-02-05 13:54:16 UTC (rev 141889)
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<body>
+<script src=""
+<script>
+description('Check if element.focus() does not focus on disabled sub-fields.');
+if (window.internals)
+ internals.settings.setLangAttributeAwareFormControlUIEnabled(true);
+else
+ debug('This test requires DRT/WRT.');
+
+var dateInput = document.createElement('input');
+dateInput.lang = 'ja-jp';
+dateInput.type = 'date';
+dateInput.min = '2013-02-01';
+dateInput.max = '2013-03-30';
+document.body.appendChild(dateInput);
+// Assume the date format is "yyyy/MM/dd"
+
+dateInput.focus();
+// Because the year field is fixed, the first focusable element is the
+// month field.
+shouldBeEqualToString('internals.youngestShadowRoot(dateInput).activeElement.getAttribute("pseudo")', '-webkit-datetime-edit-month-field');
+dateInput.blur();
+dateInput.focus();
+shouldBeEqualToString('internals.youngestShadowRoot(dateInput).activeElement.getAttribute("pseudo")', '-webkit-datetime-edit-month-field');
+
+dateInput.remove();
+</script>
+<script src=""
+</body>
Modified: trunk/Source/WebCore/ChangeLog (141888 => 141889)
--- trunk/Source/WebCore/ChangeLog 2013-02-05 13:52:22 UTC (rev 141888)
+++ trunk/Source/WebCore/ChangeLog 2013-02-05 13:54:16 UTC (rev 141889)
@@ -1,3 +1,24 @@
+2013-02-05 Kent Tamura <[email protected]>
+
+ INPUT_MULTIPLE_FIELDS_UI: element.focus() should not focus on disabled sub-fields.
+ https://bugs.webkit.org/show_bug.cgi?id=108924
+
+ Reviewed by Kentaro Hara.
+
+ The first field may be non-focusable. We should search sub-fields for
+ focusable one.
+
+ Test: fast/forms/date-multiple-fields/date-multiple-fields-focus.html
+
+ * html/shadow/DateTimeEditElement.cpp:
+ (WebCore::DateTimeEditElement::focusOnNextFocusableField):
+ Added. A private helper function.
+ (WebCore::DateTimeEditElement::focusIfNoFocus): Use focusOnNextFocusableField.
+ (WebCore::DateTimeEditElement::focusByOwner): Ditto.
+ (WebCore::DateTimeEditElement::focusOnNextField): Ditto.
+ * html/shadow/DateTimeEditElement.h:
+ (DateTimeEditElement): Declare focusOnNextFocusableField.
+
2013-02-04 Vsevolod Vlasov <[email protected]>
Web Inspector: Create separate project for each file system added to inspector.
Modified: trunk/Source/WebCore/html/shadow/DateTimeEditElement.cpp (141888 => 141889)
--- trunk/Source/WebCore/html/shadow/DateTimeEditElement.cpp 2013-02-05 13:52:22 UTC (rev 141888)
+++ trunk/Source/WebCore/html/shadow/DateTimeEditElement.cpp 2013-02-05 13:54:16 UTC (rev 141889)
@@ -506,15 +506,12 @@
{
if (focusedFieldIndex() != invalidFieldIndex)
return;
-
- if (DateTimeFieldElement* field = fieldAt(0))
- field->focus();
+ focusOnNextFocusableField(0);
}
void DateTimeEditElement::focusByOwner()
{
- if (DateTimeFieldElement* field = fieldAt(0))
- field->focus();
+ focusOnNextFocusableField(0);
}
DateTimeFieldElement* DateTimeEditElement::focusedField() const
@@ -538,12 +535,9 @@
m_editControlOwner->editControlValueChanged();
}
-bool DateTimeEditElement::focusOnNextField(const DateTimeFieldElement& field)
+bool DateTimeEditElement::focusOnNextFocusableField(size_t startIndex)
{
- const size_t startFieldIndex = fieldIndexOf(field);
- if (startFieldIndex == invalidFieldIndex)
- return false;
- for (size_t fieldIndex = startFieldIndex + 1; fieldIndex < m_fields.size(); ++fieldIndex) {
+ for (size_t fieldIndex = startIndex; fieldIndex < m_fields.size(); ++fieldIndex) {
if (m_fields[fieldIndex]->isFocusable()) {
m_fields[fieldIndex]->focus();
return true;
@@ -552,6 +546,14 @@
return false;
}
+bool DateTimeEditElement::focusOnNextField(const DateTimeFieldElement& field)
+{
+ const size_t startFieldIndex = fieldIndexOf(field);
+ if (startFieldIndex == invalidFieldIndex)
+ return false;
+ return focusOnNextFocusableField(startFieldIndex + 1);
+}
+
bool DateTimeEditElement::focusOnPreviousField(const DateTimeFieldElement& field)
{
const size_t startFieldIndex = fieldIndexOf(field);
Modified: trunk/Source/WebCore/html/shadow/DateTimeEditElement.h (141888 => 141889)
--- trunk/Source/WebCore/html/shadow/DateTimeEditElement.h 2013-02-05 13:52:22 UTC (rev 141888)
+++ trunk/Source/WebCore/html/shadow/DateTimeEditElement.h 2013-02-05 13:54:16 UTC (rev 141889)
@@ -123,6 +123,7 @@
size_t fieldIndexOf(const DateTimeFieldElement&) const;
DateTimeFieldElement* focusedField() const;
size_t focusedFieldIndex() const;
+ bool focusOnNextFocusableField(size_t startIndex);
bool isDisabled() const;
bool isReadOnly() const;
void layout(const LayoutParameters&, const DateComponents&);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes