Commit 5b7e51e5 authored by John Emau's avatar John Emau Committed by Commit Bot

DevTools: Make console message source links keyboard accessible

Make all console message anchor source links keyboard accessible by
adding the anchor element to the _selectableChildren array in the
ConsoleViewMessage UI component which will use _selectableChildren to
manage keyboard navigation and focus.

This is required to meet WCAG 2.1.1 Keyboard success criteria.
See: https://www.w3.org/WAI/WCAG21/quickref/#keyboard

For the tests I added an additional ArrowUp or ArrowDown to move focus
to the original desired target under test, occasionally I would include
the content of the source link in the test's expected results for
additional guards against regressions.

on the previous message, then use the up and down arrow keys to navigate
between visible links within the console messages.

Screenshot: https://i.imgur.com/ZUDFsUV.png
Gif: https://i.imgur.com/UlhVhwn.gifv
Test: Put focus in the console input, then use Shift + Tab to set focus
Bug: 963183
Change-Id: I8e094506adeed099a2b0c1b81c4b4394f83129a6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1638137
Commit-Queue: John Emau <John.Emau@microsoft.com>
Reviewed-by: default avatarMathias Bynens <mathias@chromium.org>
Reviewed-by: default avatarYang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#702981}
parent 78fa0219
...@@ -348,6 +348,11 @@ Console.ConsoleViewMessage = class { ...@@ -348,6 +348,11 @@ Console.ConsoleViewMessage = class {
// Append a space to prevent the anchor text from being glued to the console message when the user selects and copies the console messages. // Append a space to prevent the anchor text from being glued to the console message when the user selects and copies the console messages.
if (anchorElement) { if (anchorElement) {
anchorElement.tabIndex = -1;
this._selectableChildren.push({
element: anchorElement,
forceSelect: () => anchorElement.focus(),
});
const anchorWrapperElement = createElementWithClass('span', 'console-message-anchor'); const anchorWrapperElement = createElementWithClass('span', 'console-message-anchor');
anchorWrapperElement.appendChild(anchorElement); anchorWrapperElement.appendChild(anchorElement);
anchorWrapperElement.createTextChild(' '); anchorWrapperElement.createTextChild(' ');
......
...@@ -57,11 +57,21 @@ Viewport virtual selection: 1 ...@@ -57,11 +57,21 @@ Viewport virtual selection: 1
activeElement: LI.parent.object-properties-section-root-element.selected activeElement: LI.parent.object-properties-section-root-element.selected
active text: {y: 2} active text: {y: 2}
ArrowDown:
Viewport virtual selection: 1
activeElement: SPAN.devtools-link
active text: console-key-expand.js:51
ArrowDown: ArrowDown:
Viewport virtual selection: 2 Viewport virtual selection: 2
activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected
active text: console-key-expand.js:51 after active text: console-key-expand.js:51 after
ArrowUp:
Viewport virtual selection: 1
activeElement: SPAN.devtools-link
active text: console-key-expand.js:51
ArrowUp: ArrowUp:
Viewport virtual selection: 1 Viewport virtual selection: 1
activeElement: LI.parent.object-properties-section-root-element.selected activeElement: LI.parent.object-properties-section-root-element.selected
...@@ -79,7 +89,7 @@ Message count: 3 ...@@ -79,7 +89,7 @@ Message count: 3
Force selecting index 1 Force selecting index 1
Viewport virtual selection: 1 Viewport virtual selection: 1
activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected
active text: console-key-expand.js:70 text {x: 1} {y: 2} active text: console-key-expand.js:74 text {x: 1} {y: 2}
ArrowRight: ArrowRight:
Viewport virtual selection: 1 Viewport virtual selection: 1
...@@ -108,10 +118,14 @@ active text: {y: 2} ...@@ -108,10 +118,14 @@ active text: {y: 2}
ArrowDown: ArrowDown:
ArrowDown:
ArrowDown: ArrowDown:
Viewport virtual selection: 2 Viewport virtual selection: 2
activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected
active text: console-key-expand.js:70 after active text: console-key-expand.js:74 after
ArrowUp:
ArrowUp: ArrowUp:
Viewport virtual selection: 1 Viewport virtual selection: 1
...@@ -126,7 +140,7 @@ active text: {y: 2} ...@@ -126,7 +140,7 @@ active text: {y: 2}
ArrowLeft: ArrowLeft:
Viewport virtual selection: 1 Viewport virtual selection: 1
activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected
active text: console-key-expand.js:70 text {x: 1}x: 1 {y: 2}y: 2 active text: console-key-expand.js:74 text {x: 1}x: 1 {y: 2}y: 2
Running: testExpandingObjectInTrace Running: testExpandingObjectInTrace
Evaluating: console.log("before");console.warn("warning", obj1);console.log("after"); Evaluating: console.log("before");console.warn("warning", obj1);console.log("after");
...@@ -137,16 +151,16 @@ Viewport virtual selection: 1 ...@@ -137,16 +151,16 @@ Viewport virtual selection: 1
Has object: collapsed Has object: collapsed
Is trace expanded: NO Is trace expanded: NO
activeElement: DIV.console-message-wrapper.console-from-api.console-warning-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-warning-level.console-selected
active text: console-key-expand.js:112 warning {x: 1} active text: console-key-expand.js:117 warning {x: 1}
(anonymous) @ console-key-expand.js:112 (anonymous) @ console-key-expand.js:117
ArrowRight: ArrowRight:
Viewport virtual selection: 1 Viewport virtual selection: 1
Has object: collapsed Has object: collapsed
Is trace expanded: YES Is trace expanded: YES
activeElement: DIV.console-message-wrapper.console-from-api.console-warning-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-warning-level.console-selected
active text: console-key-expand.js:112 warning {x: 1} active text: console-key-expand.js:117 warning {x: 1}
(anonymous) @ console-key-expand.js:112 (anonymous) @ console-key-expand.js:117
ArrowRight: ArrowRight:
Viewport virtual selection: 1 Viewport virtual selection: 1
...@@ -171,19 +185,23 @@ active text: x: 1 ...@@ -171,19 +185,23 @@ active text: x: 1
ArrowDown: ArrowDown:
ArrowDown:
ArrowDown: ArrowDown:
Viewport virtual selection: 2 Viewport virtual selection: 2
Has object: expanded Has object: expanded
Is trace expanded: YES Is trace expanded: YES
activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected
active text: console-key-expand.js:112 after active text: console-key-expand.js:117 after
ArrowUp:
ArrowUp: ArrowUp:
Viewport virtual selection: 1 Viewport virtual selection: 1
Has object: expanded Has object: expanded
Is trace expanded: YES Is trace expanded: YES
activeElement: SPAN.devtools-link activeElement: SPAN.devtools-link
active text: console-key-expand.js:112 active text: console-key-expand.js:117
ArrowUp: ArrowUp:
Viewport virtual selection: 1 Viewport virtual selection: 1
...@@ -197,24 +215,24 @@ Viewport virtual selection: 1 ...@@ -197,24 +215,24 @@ Viewport virtual selection: 1
Has object: expanded Has object: expanded
Is trace expanded: YES Is trace expanded: YES
activeElement: DIV.console-message-wrapper.console-from-api.console-warning-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-warning-level.console-selected
active text: console-key-expand.js:112 warning {x: 1}x: 1 active text: console-key-expand.js:117 warning {x: 1}x: 1
(anonymous) @ console-key-expand.js:112 (anonymous) @ console-key-expand.js:117
ArrowLeft: ArrowLeft:
Viewport virtual selection: 1 Viewport virtual selection: 1
Has object: expanded Has object: expanded
Is trace expanded: NO Is trace expanded: NO
activeElement: DIV.console-message-wrapper.console-from-api.console-warning-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-warning-level.console-selected
active text: console-key-expand.js:112 warning {x: 1}x: 1 active text: console-key-expand.js:117 warning {x: 1}x: 1
(anonymous) @ console-key-expand.js:112 (anonymous) @ console-key-expand.js:117
ArrowLeft: ArrowLeft:
Viewport virtual selection: 1 Viewport virtual selection: 1
Has object: expanded Has object: expanded
Is trace expanded: NO Is trace expanded: NO
activeElement: DIV.console-message-wrapper.console-from-api.console-warning-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-warning-level.console-selected
active text: console-key-expand.js:112 warning {x: 1}x: 1 active text: console-key-expand.js:117 warning {x: 1}x: 1
(anonymous) @ console-key-expand.js:112 (anonymous) @ console-key-expand.js:117
Running: testExpandingElement Running: testExpandingElement
Evaluating: console.log("before");console.log(el);console.log("after"); Evaluating: console.log("before");console.log(el);console.log("after");
...@@ -223,7 +241,9 @@ Message count: 3 ...@@ -223,7 +241,9 @@ Message count: 3
Force selecting index 1 Force selecting index 1
Viewport virtual selection: 1 Viewport virtual selection: 1
activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected
active text: console-key-expand.js:160 <div>​…​</div>​ active text: console-key-expand.js:167 <div>​…​</div>​
ArrowDown:
ArrowDown: ArrowDown:
Viewport virtual selection: 1 Viewport virtual selection: 1
...@@ -241,6 +261,8 @@ Message count: 2 ...@@ -241,6 +261,8 @@ Message count: 2
Setting focus in prompt: Setting focus in prompt:
Shift+Tab: Shift+Tab:
ArrowUp:
Viewport virtual selection: 1 Viewport virtual selection: 1
Has object: collapsed Has object: collapsed
activeElement: LI.parent.object-properties-section-root-element.selected activeElement: LI.parent.object-properties-section-root-element.selected
...@@ -258,10 +280,14 @@ Message count: 2 ...@@ -258,10 +280,14 @@ Message count: 2
Setting focus in prompt: Setting focus in prompt:
Shift+Tab: Shift+Tab:
ArrowUp:
Viewport virtual selection: 1 Viewport virtual selection: 1
Has object: collapsed Has object: collapsed
activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected
active text: console-key-expand.js:191 after active text: console-key-expand.js:199 after
ArrowUp:
ArrowUp: ArrowUp:
Viewport virtual selection: 0 Viewport virtual selection: 0
...@@ -276,6 +302,8 @@ Setting focus in prompt: ...@@ -276,6 +302,8 @@ Setting focus in prompt:
Shift+Tab: Shift+Tab:
ArrowUp:
ArrowRight: ArrowRight:
Tab: Tab:
...@@ -284,6 +312,8 @@ Has object: expanded ...@@ -284,6 +312,8 @@ Has object: expanded
activeElement: TEXTAREA activeElement: TEXTAREA
Shift+Tab: Shift+Tab:
ArrowUp:
Viewport virtual selection: 0 Viewport virtual selection: 0
Has object: expanded Has object: expanded
activeElement: LI.parent.object-properties-section-root-element.expanded.selected activeElement: LI.parent.object-properties-section-root-element.expanded.selected
......
...@@ -62,6 +62,10 @@ ...@@ -62,6 +62,10 @@
dumpFocus(true, 1, true /* skipObjectCheck */); dumpFocus(true, 1, true /* skipObjectCheck */);
press('ArrowDown'); press('ArrowDown');
dumpFocus(true, 1, true /* skipObjectCheck */); dumpFocus(true, 1, true /* skipObjectCheck */);
press('ArrowDown');
dumpFocus(true, 1, true /* skipObjectCheck */);
press('ArrowUp');
dumpFocus(true, 1, true /* skipObjectCheck */);
press('ArrowUp'); press('ArrowUp');
dumpFocus(true, 1, true /* skipObjectCheck */); dumpFocus(true, 1, true /* skipObjectCheck */);
press('ArrowLeft'); press('ArrowLeft');
...@@ -70,8 +74,7 @@ ...@@ -70,8 +74,7 @@
next(); next();
}, },
// Note: // Note: During this test expanded objects
// During this test expanded objects
// do not include the __proto__ property. // do not include the __proto__ property.
async function testExpandingObjects(next) { async function testExpandingObjects(next) {
await clearAndLog(`console.log("before");console.log("text", obj1, obj2);console.log("after");`, 3); await clearAndLog(`console.log("before");console.log("text", obj1, obj2);console.log("after");`, 3);
...@@ -96,8 +99,10 @@ ...@@ -96,8 +99,10 @@
await ConsoleTestRunner.waitForRemoteObjectsConsoleMessagesPromise(); await ConsoleTestRunner.waitForRemoteObjectsConsoleMessagesPromise();
press('ArrowDown'); press('ArrowDown');
press('ArrowDown'); press('ArrowDown');
press('ArrowDown');
dumpFocus(true, 1, true /* skipObjectCheck */); dumpFocus(true, 1, true /* skipObjectCheck */);
press('ArrowUp');
press('ArrowUp'); press('ArrowUp');
dumpFocus(true, 1, true /* skipObjectCheck */); dumpFocus(true, 1, true /* skipObjectCheck */);
...@@ -130,8 +135,10 @@ ...@@ -130,8 +135,10 @@
dumpFocus(true, 1); dumpFocus(true, 1);
press('ArrowDown'); press('ArrowDown');
press('ArrowDown'); press('ArrowDown');
press('ArrowDown');
dumpFocus(true, 1); dumpFocus(true, 1);
press('ArrowUp');
press('ArrowUp'); press('ArrowUp');
dumpFocus(true, 1); dumpFocus(true, 1);
press('ArrowUp'); press('ArrowUp');
...@@ -163,6 +170,7 @@ ...@@ -163,6 +170,7 @@
dumpFocus(true, 1); dumpFocus(true, 1);
press('ArrowDown'); press('ArrowDown');
press('ArrowDown');
dumpFocus(true, 1); dumpFocus(true, 1);
// Expand object. // Expand object.
...@@ -180,7 +188,7 @@ ...@@ -180,7 +188,7 @@
TestRunner.addResult(`Setting focus in prompt:`); TestRunner.addResult(`Setting focus in prompt:`);
prompt.focus(); prompt.focus();
shiftPress('Tab'); shiftPress('Tab');
press('ArrowUp'); // Move from source link to object.
dumpFocus(true, 1); dumpFocus(true, 1);
// Expand object. // Expand object.
...@@ -191,15 +199,18 @@ ...@@ -191,15 +199,18 @@
next(); next();
}, },
async function testArrowUpToFirstVisibleMessageShouldSelectLastObject(next) { async function testArrowUpToFirstVisibleMessageShouldSelectLastObject(
next) {
await clearAndLog(`console.log(obj1);console.log("after");`, 2); await clearAndLog(`console.log(obj1);console.log("after");`, 2);
await ConsoleTestRunner.waitForRemoteObjectsConsoleMessagesPromise(); await ConsoleTestRunner.waitForRemoteObjectsConsoleMessagesPromise();
TestRunner.addResult(`Setting focus in prompt:`); TestRunner.addResult(`Setting focus in prompt:`);
prompt.focus(); prompt.focus();
shiftPress('Tab'); shiftPress('Tab');
press('ArrowUp'); // Move from source link to "after".
dumpFocus(true); dumpFocus(true);
press('ArrowUp'); // Move from source link to object.
press('ArrowUp'); press('ArrowUp');
dumpFocus(true); dumpFocus(true);
...@@ -218,12 +229,14 @@ ...@@ -218,12 +229,14 @@
TestRunner.addResult(`Setting focus in prompt:`); TestRunner.addResult(`Setting focus in prompt:`);
prompt.focus(); prompt.focus();
shiftPress('Tab'); shiftPress('Tab');
press('ArrowUp'); // Move from source link to object.
press('ArrowRight'); press('ArrowRight');
await ConsoleTestRunner.waitForRemoteObjectsConsoleMessagesPromise(); await ConsoleTestRunner.waitForRemoteObjectsConsoleMessagesPromise();
press('Tab'); press('Tab');
dumpFocus(true); dumpFocus(true);
shiftPress('Tab'); shiftPress('Tab');
press('ArrowUp'); // Move from source link to object.
dumpFocus(true); dumpFocus(true);
dumpScrollInfo(); dumpScrollInfo();
......
...@@ -9,6 +9,11 @@ Setting focus in prompt: ...@@ -9,6 +9,11 @@ Setting focus in prompt:
Shift+Tab: Shift+Tab:
Viewport virtual selection: 2 Viewport virtual selection: 2
activeElement: SPAN.devtools-link activeElement: SPAN.devtools-link
active text: console-key-links.js:26
ArrowUp:
Viewport virtual selection: 2
activeElement: SPAN.devtools-link
active text: www.chromium.org/2 active text: www.chromium.org/2
ArrowUp: ArrowUp:
...@@ -16,6 +21,11 @@ Viewport virtual selection: 2 ...@@ -16,6 +21,11 @@ Viewport virtual selection: 2
activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected
active text: console-key-links.js:26 www.chromium.org/2 active text: console-key-links.js:26 www.chromium.org/2
ArrowUp:
Viewport virtual selection: 1
activeElement: SPAN.devtools-link
active text: console-key-links.js:26
ArrowUp: ArrowUp:
Viewport virtual selection: 1 Viewport virtual selection: 1
activeElement: SPAN.devtools-link activeElement: SPAN.devtools-link
...@@ -41,6 +51,11 @@ Viewport virtual selection: 1 ...@@ -41,6 +51,11 @@ Viewport virtual selection: 1
activeElement: SPAN.devtools-link activeElement: SPAN.devtools-link
active text: www.chromium.org/1b active text: www.chromium.org/1b
ArrowDown:
Viewport virtual selection: 1
activeElement: SPAN.devtools-link
active text: console-key-links.js:26
ArrowDown: ArrowDown:
Viewport virtual selection: 2 Viewport virtual selection: 2
activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-info-level.console-selected
...@@ -54,7 +69,7 @@ active text: www.chromium.org/2 ...@@ -54,7 +69,7 @@ active text: www.chromium.org/2
ArrowDown: ArrowDown:
Viewport virtual selection: 2 Viewport virtual selection: 2
activeElement: SPAN.devtools-link activeElement: SPAN.devtools-link
active text: www.chromium.org/2 active text: console-key-links.js:26
Running: testNavigatingLinksInStackTrace Running: testNavigatingLinksInStackTrace
Evaluating: fn1() Evaluating: fn1()
...@@ -62,12 +77,16 @@ Message count: 1 ...@@ -62,12 +77,16 @@ Message count: 1
Setting focus in prompt: Setting focus in prompt:
Shift+Tab: Shift+Tab:
ArrowUp:
Viewport virtual selection: 0 Viewport virtual selection: 0
Is trace expanded: NO Is trace expanded: NO
activeElement: SPAN.devtools-link activeElement: SPAN.devtools-link
active text: www.chromium.org/linkInErrMsg active text: www.chromium.org/linkInErrMsg
ArrowDown: ArrowDown:
ArrowUp:
Viewport virtual selection: 0 Viewport virtual selection: 0
Is trace expanded: NO Is trace expanded: NO
activeElement: SPAN.devtools-link activeElement: SPAN.devtools-link
...@@ -79,7 +98,7 @@ Is trace expanded: NO ...@@ -79,7 +98,7 @@ Is trace expanded: NO
activeElement: DIV.console-message-wrapper.console-from-api.console-error-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-error-level.console-selected
active text: foo.js:18 Custom error with link www.chromium.org/linkInErrMsg active text: foo.js:18 Custom error with link www.chromium.org/linkInErrMsg
fn1 @ foo.js:18 fn1 @ foo.js:18
(anonymous) @ console-key-links.js:62 (anonymous) @ console-key-links.js:71
ArrowRight: ArrowRight:
Viewport virtual selection: 0 Viewport virtual selection: 0
...@@ -87,7 +106,7 @@ Is trace expanded: YES ...@@ -87,7 +106,7 @@ Is trace expanded: YES
activeElement: DIV.console-message-wrapper.console-from-api.console-error-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-error-level.console-selected
active text: foo.js:18 Custom error with link www.chromium.org/linkInErrMsg active text: foo.js:18 Custom error with link www.chromium.org/linkInErrMsg
fn1 @ foo.js:18 fn1 @ foo.js:18
(anonymous) @ console-key-links.js:62 (anonymous) @ console-key-links.js:71
ArrowDown: ArrowDown:
Viewport virtual selection: 0 Viewport virtual selection: 0
...@@ -105,13 +124,19 @@ ArrowDown: ...@@ -105,13 +124,19 @@ ArrowDown:
Viewport virtual selection: 0 Viewport virtual selection: 0
Is trace expanded: YES Is trace expanded: YES
activeElement: SPAN.devtools-link activeElement: SPAN.devtools-link
active text: console-key-links.js:62 active text: foo.js:18
ArrowDown:
Viewport virtual selection: 0
Is trace expanded: YES
activeElement: SPAN.devtools-link
active text: console-key-links.js:71
ArrowDown: ArrowDown:
Viewport virtual selection: 0 Viewport virtual selection: 0
Is trace expanded: YES Is trace expanded: YES
activeElement: SPAN.devtools-link activeElement: SPAN.devtools-link
active text: console-key-links.js:62 active text: console-key-links.js:71
ArrowLeft: ArrowLeft:
Viewport virtual selection: 0 Viewport virtual selection: 0
...@@ -119,7 +144,7 @@ Is trace expanded: YES ...@@ -119,7 +144,7 @@ Is trace expanded: YES
activeElement: DIV.console-message-wrapper.console-from-api.console-error-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-error-level.console-selected
active text: foo.js:18 Custom error with link www.chromium.org/linkInErrMsg active text: foo.js:18 Custom error with link www.chromium.org/linkInErrMsg
fn1 @ foo.js:18 fn1 @ foo.js:18
(anonymous) @ console-key-links.js:62 (anonymous) @ console-key-links.js:71
ArrowLeft: ArrowLeft:
Viewport virtual selection: 0 Viewport virtual selection: 0
...@@ -127,5 +152,5 @@ Is trace expanded: NO ...@@ -127,5 +152,5 @@ Is trace expanded: NO
activeElement: DIV.console-message-wrapper.console-from-api.console-error-level.console-selected activeElement: DIV.console-message-wrapper.console-from-api.console-error-level.console-selected
active text: foo.js:18 Custom error with link www.chromium.org/linkInErrMsg active text: foo.js:18 Custom error with link www.chromium.org/linkInErrMsg
fn1 @ foo.js:18 fn1 @ foo.js:18
(anonymous) @ console-key-links.js:62 (anonymous) @ console-key-links.js:71
...@@ -44,6 +44,15 @@ ...@@ -44,6 +44,15 @@
press('ArrowUp'); press('ArrowUp');
dumpFocus(true, 0, true); dumpFocus(true, 0, true);
press('ArrowUp');
dumpFocus(true, 0, true);
press('ArrowUp');
dumpFocus(true, 0, true);
press('ArrowDown');
dumpFocus(true, 0, true);
press('ArrowDown'); press('ArrowDown');
dumpFocus(true, 0, true); dumpFocus(true, 0, true);
...@@ -69,10 +78,12 @@ ...@@ -69,10 +78,12 @@
TestRunner.addResult(`Setting focus in prompt:`); TestRunner.addResult(`Setting focus in prompt:`);
prompt.focus(); prompt.focus();
shiftPress('Tab'); shiftPress('Tab');
press('ArrowUp'); // Move from source link to message link.
dumpFocus(true, 0, true); dumpFocus(true, 0, true);
press('ArrowDown'); press('ArrowDown');
press('ArrowUp');
dumpFocus(true, 0, true); dumpFocus(true, 0, true);
press('ArrowUp'); press('ArrowUp');
...@@ -93,6 +104,9 @@ ...@@ -93,6 +104,9 @@
press('ArrowDown'); press('ArrowDown');
dumpFocus(true, 0, true); dumpFocus(true, 0, true);
press('ArrowDown');
dumpFocus(true, 0, true);
press('ArrowLeft'); press('ArrowLeft');
dumpFocus(true, 0, true); dumpFocus(true, 0, true);
......
...@@ -7,12 +7,18 @@ Setting focus in prompt: ...@@ -7,12 +7,18 @@ Setting focus in prompt:
TEXTAREA:Console prompt TEXTAREA:Console prompt
Shift+Tab: Shift+Tab:
SPAN:test://evaluations/0/console-key-navigation.js:20
ArrowUp:
DIV:console-key-navigation.js:20 Message #99 DIV:console-key-navigation.js:20 Message #99
Shift+Tab: Shift+Tab:
DIV#console-messages.monospace DIV#console-messages.monospace
Tab: Tab:
SPAN:test://evaluations/0/console-key-navigation.js:20
ArrowUp:
DIV:console-key-navigation.js:20 Message #99 DIV:console-key-navigation.js:20 Message #99
Tab: Tab:
...@@ -23,6 +29,9 @@ Setting focus in prompt: ...@@ -23,6 +29,9 @@ Setting focus in prompt:
TEXTAREA:Console prompt TEXTAREA:Console prompt
Shift+Tab: Shift+Tab:
SPAN:test://evaluations/0/console-key-navigation.js:20
ArrowUp:
DIV:console-key-navigation.js:20 Message #99 DIV:console-key-navigation.js:20 Message #99
Scrolling to top of viewport Scrolling to top of viewport
...@@ -32,12 +41,18 @@ Shift+Tab: ...@@ -32,12 +41,18 @@ Shift+Tab:
DIV#console-messages.monospace DIV#console-messages.monospace
Tab: Tab:
SPAN:test://evaluations/0/console-key-navigation.js:20
ArrowUp:
DIV:console-key-navigation.js:20 Message #99 DIV:console-key-navigation.js:20 Message #99
Setting focus in prompt: Setting focus in prompt:
TEXTAREA:Console prompt TEXTAREA:Console prompt
Shift+Tab: Shift+Tab:
SPAN:test://evaluations/0/console-key-navigation.js:20
ArrowUp:
DIV:console-key-navigation.js:20 Message #99 DIV:console-key-navigation.js:20 Message #99
Scrolling to top of viewport Scrolling to top of viewport
...@@ -54,12 +69,18 @@ DIV.console-group.console-group-messages ...@@ -54,12 +69,18 @@ DIV.console-group.console-group-messages
Home: Home:
DIV:console-key-navigation.js:20 Message #0 DIV:console-key-navigation.js:20 Message #0
ArrowDown:
SPAN:test://evaluations/0/console-key-navigation.js:20
ArrowDown: ArrowDown:
DIV:console-key-navigation.js:20 Message #1 DIV:console-key-navigation.js:20 Message #1
End: End:
DIV:console-key-navigation.js:20 Message #99 DIV:console-key-navigation.js:20 Message #99
ArrowUp:
SPAN:test://evaluations/0/console-key-navigation.js:20
ArrowUp: ArrowUp:
DIV:console-key-navigation.js:20 Message #98 DIV:console-key-navigation.js:20 Message #98
......
...@@ -32,12 +32,18 @@ ...@@ -32,12 +32,18 @@
shiftPress('Tab'); shiftPress('Tab');
dumpFocus(); dumpFocus();
press('ArrowUp');
dumpFocus();
shiftPress('Tab'); shiftPress('Tab');
dumpFocus(); dumpFocus();
press('Tab'); press('Tab');
dumpFocus(); dumpFocus();
press('ArrowUp');
dumpFocus();
press('Tab'); press('Tab');
dumpFocus(); dumpFocus();
...@@ -52,6 +58,9 @@ ...@@ -52,6 +58,9 @@
shiftPress('Tab'); shiftPress('Tab');
dumpFocus(); dumpFocus();
press('ArrowUp');
dumpFocus();
scrollViewportToTop(); scrollViewportToTop();
dumpFocus(); dumpFocus();
...@@ -61,6 +70,9 @@ ...@@ -61,6 +70,9 @@
press('Tab'); press('Tab');
dumpFocus(); dumpFocus();
press('ArrowUp');
dumpFocus();
TestRunner.addResult(`\nSetting focus in prompt:`); TestRunner.addResult(`\nSetting focus in prompt:`);
prompt.focus(); prompt.focus();
dumpFocus(); dumpFocus();
...@@ -68,6 +80,9 @@ ...@@ -68,6 +80,9 @@
shiftPress('Tab'); shiftPress('Tab');
dumpFocus(); dumpFocus();
press('ArrowUp');
dumpFocus();
scrollViewportToTop(); scrollViewportToTop();
dumpFocus(); dumpFocus();
...@@ -87,12 +102,18 @@ ...@@ -87,12 +102,18 @@
press('ArrowDown'); press('ArrowDown');
dumpFocus(); dumpFocus();
press('ArrowDown');
dumpFocus();
press('End'); press('End');
dumpFocus(); dumpFocus();
press('ArrowUp'); press('ArrowUp');
dumpFocus(); dumpFocus();
press('ArrowUp');
dumpFocus();
next(); next();
}, },
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment