Diff
Modified: trunk/LayoutTests/ChangeLog (267280 => 267281)
--- trunk/LayoutTests/ChangeLog 2020-09-18 20:28:55 UTC (rev 267280)
+++ trunk/LayoutTests/ChangeLog 2020-09-18 20:34:36 UTC (rev 267281)
@@ -1,3 +1,20 @@
+2020-09-18 Aditya Keerthi <akeer...@apple.com>
+
+ [macOS] Date/time inputs should focus the next editable component when entering a separator key
+ https://bugs.webkit.org/show_bug.cgi?id=216661
+ <rdar://problem/69091856>
+
+ Reviewed by Wenson Hsieh.
+
+ Added new test cases to the existing set of keyboard tests for date/time inputs.
+
+ * fast/forms/date/date-editable-components/date-editable-components-keyboard-events-expected.txt:
+ * fast/forms/date/date-editable-components/date-editable-components-keyboard-events.html:
+ * fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-keyboard-events-expected.txt:
+ * fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-keyboard-events.html:
+ * fast/forms/time/time-editable-components/time-editable-components-keyboard-events-expected.txt:
+ * fast/forms/time/time-editable-components/time-editable-components-keyboard-events.html:
+
2020-09-18 Chris Dumez <cdu...@apple.com>
Import AudioContext / AudioListener / AudioNode / AudioParam layout tests from Blink
Modified: trunk/LayoutTests/fast/forms/date/date-editable-components/date-editable-components-keyboard-events-expected.txt (267280 => 267281)
--- trunk/LayoutTests/fast/forms/date/date-editable-components/date-editable-components-keyboard-events-expected.txt 2020-09-18 20:28:55 UTC (rev 267280)
+++ trunk/LayoutTests/fast/forms/date/date-editable-components/date-editable-components-keyboard-events-expected.txt 2020-09-18 20:34:36 UTC (rev 267281)
@@ -35,6 +35,17 @@
PASS changeEventsFired is 3
PASS inputEventsFired is 3
+Advance field keys
+PASS input.value is "2020-06-02"
+PASS input.value is "2020-06-03"
+PASS input.value is "2020-06-04"
+PASS input.value is "2020-06-05"
+PASS input.value is "2020-06-06"
+PASS input.value is "2020-06-07"
+PASS input.value is "2020-06-08"
+PASS changeEventsFired is 7
+PASS inputEventsFired is 7
+
Up/Down arrow keys
PASS input.value is "2020-01-20"
PASS input.value is "2020-02-20"
Modified: trunk/LayoutTests/fast/forms/date/date-editable-components/date-editable-components-keyboard-events.html (267280 => 267281)
--- trunk/LayoutTests/fast/forms/date/date-editable-components/date-editable-components-keyboard-events.html 2020-09-18 20:28:55 UTC (rev 267280)
+++ trunk/LayoutTests/fast/forms/date/date-editable-components/date-editable-components-keyboard-events.html 2020-09-18 20:34:36 UTC (rev 267281)
@@ -130,6 +130,37 @@
shouldBe("changeEventsFired", "3");
shouldBe("inputEventsFired", "3");
+ beginTest("Advance field keys", "2020-06-05"); // [06]/01/2020
+ UIHelper.keyDown(" "); // -> 06/[01]/2020
+ UIHelper.keyDown("2"); // -> 06/[02]/2020
+ shouldBeEqualToString("input.value", "2020-06-02");
+ UIHelper.keyDown("leftArrow"); // -> [06]/02/2020
+ UIHelper.keyDown("/"); // -> 06/[02]/2020
+ UIHelper.keyDown("3"); // -> 06/[03]/2020
+ shouldBeEqualToString("input.value", "2020-06-03");
+ UIHelper.keyDown("leftArrow"); // -> [06]/03/2020
+ UIHelper.keyDown("-"); // -> 06/[03]/2020
+ UIHelper.keyDown("4"); // -> 06/[04]/2020
+ shouldBeEqualToString("input.value", "2020-06-04");
+ UIHelper.keyDown("leftArrow"); // -> [06]/04/2020
+ UIHelper.keyDown("."); // -> 06/[04]/2020
+ UIHelper.keyDown("5"); // -> 06/[05]/2020
+ shouldBeEqualToString("input.value", "2020-06-05");
+ UIHelper.keyDown("leftArrow"); // -> [06]/05/2020
+ UIHelper.keyDown(":"); // -> 06/[05]/2020
+ UIHelper.keyDown("6"); // -> 06/[06]/2020
+ shouldBeEqualToString("input.value", "2020-06-06");
+ UIHelper.keyDown("leftArrow"); // -> [06]/06/2020
+ UIHelper.keyDown(";"); // -> 06/[06]/2020
+ UIHelper.keyDown("7"); // -> 06/[07]/2020
+ shouldBeEqualToString("input.value", "2020-06-07");
+ UIHelper.keyDown("leftArrow"); // -> [06]/07/2020
+ UIHelper.keyDown(","); // -> 06/[07]/2020
+ UIHelper.keyDown("8"); // -> 06/[08]/2020
+ shouldBeEqualToString("input.value", "2020-06-08");
+ shouldBe("changeEventsFired", "7");
+ shouldBe("inputEventsFired", "7");
+
beginTest("Up/Down arrow keys", "2020-12-20"); // [12]/20/2020
UIHelper.keyDown("upArrow"); // [01]/20/2020
shouldBeEqualToString("input.value", "2020-01-20");
Modified: trunk/LayoutTests/fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-keyboard-events-expected.txt (267280 => 267281)
--- trunk/LayoutTests/fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-keyboard-events-expected.txt 2020-09-18 20:28:55 UTC (rev 267280)
+++ trunk/LayoutTests/fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-keyboard-events-expected.txt 2020-09-18 20:34:36 UTC (rev 267281)
@@ -37,6 +37,17 @@
PASS changeEventsFired is 11
PASS inputEventsFired is 11
+Advance field keys
+PASS input.value is "2020-06-02T16:27"
+PASS input.value is "2020-06-03T16:27"
+PASS input.value is "2020-06-04T16:27"
+PASS input.value is "2020-06-05T16:27"
+PASS input.value is "2020-06-06T16:27"
+PASS input.value is "2020-06-07T16:27"
+PASS input.value is "2020-06-08T16:27"
+PASS changeEventsFired is 7
+PASS inputEventsFired is 7
+
Up/Down arrow keys
PASS input.value is "2020-01-20T23:59"
PASS input.value is "2020-02-20T23:59"
Modified: trunk/LayoutTests/fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-keyboard-events.html (267280 => 267281)
--- trunk/LayoutTests/fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-keyboard-events.html 2020-09-18 20:28:55 UTC (rev 267280)
+++ trunk/LayoutTests/fast/forms/datetimelocal/datetimelocal-editable-components/datetimelocal-editable-components-keyboard-events.html 2020-09-18 20:34:36 UTC (rev 267281)
@@ -141,6 +141,37 @@
shouldBe("changeEventsFired", "11");
shouldBe("inputEventsFired", "11");
+ beginTest("Advance field keys", "2020-06-05T16:27"); // [06]/01/2020 04:27 PM
+ UIHelper.keyDown(" "); // -> 06/[01]/2020 04:27 PM
+ UIHelper.keyDown("2"); // -> 06/[02]/2020 04:27 PM
+ shouldBeEqualToString("input.value", "2020-06-02T16:27");
+ UIHelper.keyDown("leftArrow"); // -> [06]/02/2020 04:27 PM
+ UIHelper.keyDown("/"); // -> 06/[02]/2020 04:27 PM
+ UIHelper.keyDown("3"); // -> 06/[03]/2020 04:27 PM
+ shouldBeEqualToString("input.value", "2020-06-03T16:27");
+ UIHelper.keyDown("leftArrow"); // -> [06]/03/2020 04:27 PM
+ UIHelper.keyDown("-"); // -> 06/[03]/2020 04:27 PM
+ UIHelper.keyDown("4"); // -> 06/[04]/2020 04:27 PM
+ shouldBeEqualToString("input.value", "2020-06-04T16:27");
+ UIHelper.keyDown("leftArrow"); // -> [06]/04/2020 04:27 PM
+ UIHelper.keyDown("."); // -> 06/[04]/2020 04:27 PM
+ UIHelper.keyDown("5"); // -> 06/[05]/2020 04:27 PM
+ shouldBeEqualToString("input.value", "2020-06-05T16:27");
+ UIHelper.keyDown("leftArrow"); // -> [06]/05/2020 04:27 PM
+ UIHelper.keyDown(":"); // -> 06/[05]/2020 04:27 PM
+ UIHelper.keyDown("6"); // -> 06/[06]/2020 04:27 PM
+ shouldBeEqualToString("input.value", "2020-06-06T16:27");
+ UIHelper.keyDown("leftArrow"); // -> [06]/06/2020 04:27 PM
+ UIHelper.keyDown(";"); // -> 06/[06]/2020 04:27 PM
+ UIHelper.keyDown("7"); // -> 06/[07]/2020 04:27 PM
+ shouldBeEqualToString("input.value", "2020-06-07T16:27");
+ UIHelper.keyDown("leftArrow"); // -> [06]/07/2020 04:27 PM
+ UIHelper.keyDown(","); // -> 06/[07]/2020 04:27 PM
+ UIHelper.keyDown("8"); // -> 06/[08]/2020 04:27 PM
+ shouldBeEqualToString("input.value", "2020-06-08T16:27");
+ shouldBe("changeEventsFired", "7");
+ shouldBe("inputEventsFired", "7");
+
beginTest("Up/Down arrow keys", "2020-12-20T23:59"); // [12]/20/2020 11:59 PM
UIHelper.keyDown("upArrow"); // -> [01]/20/2020 11:59 PM
shouldBeEqualToString("input.value", "2020-01-20T23:59");
Modified: trunk/LayoutTests/fast/forms/time/time-editable-components/time-editable-components-keyboard-events-expected.txt (267280 => 267281)
--- trunk/LayoutTests/fast/forms/time/time-editable-components/time-editable-components-keyboard-events-expected.txt 2020-09-18 20:28:55 UTC (rev 267280)
+++ trunk/LayoutTests/fast/forms/time/time-editable-components/time-editable-components-keyboard-events-expected.txt 2020-09-18 20:34:36 UTC (rev 267281)
@@ -29,6 +29,17 @@
PASS changeEventsFired is 5
PASS inputEventsFired is 5
+Advance field keys
+PASS input.value is "01:02"
+PASS input.value is "01:03"
+PASS input.value is "01:04"
+PASS input.value is "01:05"
+PASS input.value is "01:06"
+PASS input.value is "01:07"
+PASS input.value is "01:08"
+PASS changeEventsFired is 7
+PASS inputEventsFired is 7
+
Up/Down arrow keys
PASS input.value is "12:59"
PASS input.value is "13:59"
Modified: trunk/LayoutTests/fast/forms/time/time-editable-components/time-editable-components-keyboard-events.html (267280 => 267281)
--- trunk/LayoutTests/fast/forms/time/time-editable-components/time-editable-components-keyboard-events.html 2020-09-18 20:28:55 UTC (rev 267280)
+++ trunk/LayoutTests/fast/forms/time/time-editable-components/time-editable-components-keyboard-events.html 2020-09-18 20:34:36 UTC (rev 267281)
@@ -93,6 +93,37 @@
shouldBe("changeEventsFired", "5");
shouldBe("inputEventsFired", "5");
+ beginTest("Advance field keys", "01:28"); // [01]:28 AM
+ UIHelper.keyDown(" "); // -> 01:[28] AM
+ UIHelper.keyDown("2"); // -> 01:[02] AM
+ shouldBeEqualToString("input.value", "01:02");
+ UIHelper.keyDown("leftArrow"); // -> [01]:02 AM
+ UIHelper.keyDown("/"); // -> 01:[02] AM
+ UIHelper.keyDown("3"); // -> 01:[03] AM
+ shouldBeEqualToString("input.value", "01:03");
+ UIHelper.keyDown("leftArrow"); // -> [01]:03 AM
+ UIHelper.keyDown("-"); // -> 01:[03] AM
+ UIHelper.keyDown("4"); // -> 01:[04] AM
+ shouldBeEqualToString("input.value", "01:04");
+ UIHelper.keyDown("leftArrow"); // -> [01]:04 AM
+ UIHelper.keyDown("."); // -> 01:[04] AM
+ UIHelper.keyDown("5"); // -> 01:[05] AM
+ shouldBeEqualToString("input.value", "01:05");
+ UIHelper.keyDown("leftArrow"); // -> [01]:05 AM
+ UIHelper.keyDown(":"); // -> 01:[05] AM
+ UIHelper.keyDown("6"); // -> 01:[06] AM
+ shouldBeEqualToString("input.value", "01:06");
+ UIHelper.keyDown("leftArrow"); // -> [01]:06 AM
+ UIHelper.keyDown(";"); // -> 01:[06] AM
+ UIHelper.keyDown("7"); // -> 01:[07] AM
+ shouldBeEqualToString("input.value", "01:07");
+ UIHelper.keyDown("leftArrow"); // -> [01]:07 AM
+ UIHelper.keyDown(","); // -> 01:[07] AM
+ UIHelper.keyDown("8"); // -> 01:[08] AM
+ shouldBeEqualToString("input.value", "01:08");
+ shouldBe("changeEventsFired", "7");
+ shouldBe("inputEventsFired", "7");
+
beginTest("Up/Down arrow keys", "23:59"); // [11]:59 PM
UIHelper.keyDown("upArrow"); // -> [12]:59 PM
shouldBeEqualToString("input.value", "12:59");
Modified: trunk/Source/WebCore/ChangeLog (267280 => 267281)
--- trunk/Source/WebCore/ChangeLog 2020-09-18 20:28:55 UTC (rev 267280)
+++ trunk/Source/WebCore/ChangeLog 2020-09-18 20:34:36 UTC (rev 267281)
@@ -1,3 +1,18 @@
+2020-09-18 Aditya Keerthi <akeer...@apple.com>
+
+ [macOS] Date/time inputs should focus the next editable component when entering a separator key
+ https://bugs.webkit.org/show_bug.cgi?id=216661
+ <rdar://problem/69091856>
+
+ Reviewed by Wenson Hsieh.
+
+ NSDatePicker focuses the next editable field when entering a separator
+ key. We should match this behavior to be consistent with the rest of
+ the system.
+
+ * html/shadow/DateTimeFieldElement.cpp:
+ (WebCore::DateTimeFieldElement::defaultKeyboardEventHandler):
+
2020-09-18 Said Abou-Hallawa <sabouhall...@apple.com>
REGRESSION(r267137): PaintFrequencyTracker needs to track all the painting
Modified: trunk/Source/WebCore/html/shadow/DateTimeFieldElement.cpp (267280 => 267281)
--- trunk/Source/WebCore/html/shadow/DateTimeFieldElement.cpp 2020-09-18 20:28:55 UTC (rev 267280)
+++ trunk/Source/WebCore/html/shadow/DateTimeFieldElement.cpp 2020-09-18 20:34:36 UTC (rev 267281)
@@ -85,6 +85,7 @@
return;
auto key = keyboardEvent.keyIdentifier();
+ auto code = keyboardEvent.code();
if (key == "Left" && m_fieldOwner && m_fieldOwner->focusOnPreviousField(*this)) {
keyboardEvent.setDefaultHandled();
@@ -91,7 +92,8 @@
return;
}
- if (key == "Right" && m_fieldOwner && m_fieldOwner->focusOnNextField(*this)) {
+ if ((key == "Right" || code == "Comma" || code == "Minus" || code == "Period" || code == "Space" || code == "Slash" || code == "Semicolon")
+ && m_fieldOwner && m_fieldOwner->focusOnNextField(*this)) {
keyboardEvent.setDefaultHandled();
return;
}
Modified: trunk/Tools/ChangeLog (267280 => 267281)
--- trunk/Tools/ChangeLog 2020-09-18 20:28:55 UTC (rev 267280)
+++ trunk/Tools/ChangeLog 2020-09-18 20:34:36 UTC (rev 267281)
@@ -1,3 +1,21 @@
+2020-09-18 Aditya Keerthi <akeer...@apple.com>
+
+ [macOS] Date/time inputs should focus the next editable component when entering a separator key
+ https://bugs.webkit.org/show_bug.cgi?id=216661
+ <rdar://problem/69091856>
+
+ Reviewed by Wenson Hsieh.
+
+ * WebKitTestRunner/mac/EventSenderProxy.mm:
+ (WTR::EventSenderProxy::keyDown):
+
+ Add support for colon, semicolon, and comma keys. The keycode values are
+ taken from the virtual keycode values in HIToolbox/Events.h.
+
+ Note that the keycode for colon and semicolon is the same, as there is
+ no distinct value for colon. This is safe as it matches the _javascript_
+ behavior.
+
2020-09-18 Alex Christensen <achristen...@webkit.org>
WKWebView._tryClose should return whether it succeeded or not
Modified: trunk/Tools/WebKitTestRunner/mac/EventSenderProxy.mm (267280 => 267281)
--- trunk/Tools/WebKitTestRunner/mac/EventSenderProxy.mm 2020-09-18 20:28:55 UTC (rev 267280)
+++ trunk/Tools/WebKitTestRunner/mac/EventSenderProxy.mm 2020-09-18 20:34:36 UTC (rev 267281)
@@ -746,6 +746,12 @@
keyCode = 0x0E;
else if ([character isEqualToString:@"\x1b"])
keyCode = 0x1B;
+ else if ([character isEqualToString:@":"])
+ keyCode = 0x29;
+ else if ([character isEqualToString:@";"])
+ keyCode = 0x29;
+ else if ([character isEqualToString:@","])
+ keyCode = 0x2B;
KeyMappingEntry table[] = {
{0x2F, 0x41, '.', nil},