Closed Bug 1424159 Opened 6 years ago Closed 5 years ago

[a11y] Trees presented by console are inaccessible

Categories

(DevTools :: Console, defect, P3)

defect

Tracking

(firefox67 fixed)

RESOLVED FIXED
Firefox 67
Tracking Status
firefox67 --- fixed

People

(Reporter: Jamie, Assigned: yzen)

References

(Depends on 1 open bug, Blocks 1 open bug)

Details

(Whiteboard: [qa-67b-p2])

Attachments

(3 files, 2 obsolete files)

STR (with the NVDA screen reader):
1. Start NVDA and Firefox.
2. Open www.mozilla.org.
3. Press control+shift+k to open the Web Console.
4. Type "document" and press enter.
5. Shift+tab into the document.
6. Press control+home, then read through the document with the arrow keys.
Expected: After the input you typed (document), you should be able to see information about the document. Alternatively, you should be able to press enter on the tree and interact with it using the keyboard to inspect it.
Actual: The information about the element is presented in a tree. However, this tree doesn't support keyboard navigation.

I'm not sure if this is the same tree component, but work was done to make the shared tree component keyboard accessible in bug 1335192. However, while the right ARIA properties are being set, the keyboard interaction doesn't seem to work here. There are two possible options here:
1. Just strip the ARIA for this case so that the output appears as text in the document. Probably not ideal because you lose hierarchical information, but it'd at least allow you to read the content at the root.
2. Fix the keyboard interaction in the tree for this case.
Hey James,

We are not using the same Tree as the one fron shared-component, but the one that comes from https://github.com/devtools-html/devtools-core/blob/master/packages/devtools-components/src/tree.js .
Some issues have been fixed by https://github.com/devtools-html/devtools-core/commit/949c414734878b28a1228865f348b7a7df450d40#diff-d28797e041808f39b6f7d1b93afcc46a and https://github.com/devtools-html/devtools-core/commit/739e193ec48df0ca5d876deb14cd894775ae2f4d#diff-d28797e041808f39b6f7d1b93afcc46a , but we need to flipping on a boolean to actually enable it (https://searchfox.org/mozilla-central/rev/3ec05888ca32b2d8a14d700474efb0c63411fca2/devtools/client/webconsole/new-console-output/components/GripMessageBody.js#89-91).

Last time I checked there was still issue with the keyboard navigation + the styling.
Could you check to flip this property to true and tell me if it's okay ?
I think the property moved (after your comment) to devtools/client/webconsole/new-console-output/utils/object-inspector.js line 51. I tried flipping this to false (not true, since it's a disable property); i.e. I changed it to:
    disabledFocus: false,
This didn't appear to make any difference. As before, the tree itself gets focus, but the cursor keys don't focus/act on the items within the tree. Is it possible this is a keyboard event interception issue?
Not sure what it could be, I'll have a look today. This is something we really want to have done right.
There is something acting weirdly indeed, on the component side. I'll have a look soonish I hope.
Also, could you tell me what should be the keyboard sequence to get to a given object when the console is open ?
I'm not sure what would work best so I'd rather have your input on this.

Thanks Jamie
Flags: needinfo?(jteh)
(In reply to Nicolas Chevobbe [:nchevobbe] from comment #4)
> Also, could you tell me what should be the keyboard sequence to get to a
> given object when the console is open ?

That's a tricky one.
TL;DR: Probably shift+tab twice from the input area. Right now, you shift+tab once. However, I think the output area (id: output-container) should be after the tree in the tab order to make life easier for screen reader users. That said, I think we could deal with this later; the important part is that the keyboard commands for the tree work once the tree is focused. 

Longer version:
You can't review the text content of the output with the keyboard - there's no "cursor" - so screen reader users just shift+tab to the output area and use screen reader functionality to review the output, just as they would on a normal web page. When the screen reader cursor lands on something focusable, focus gets set to it. So, most screen reader users would review the output, land on the tree (which would get focus), then switch to normal keyboard operation to inspect the tree. In other words, the tree would get focus programmatically, not via the keyboard. So, screen reader users don't need the tree to be in the tab order.

However, there are sighted keyboard users who aren't screen reader users, and we probably want to support them, too. So, we want the tree to be in the tab order.

This introduces a problem, though. The quickest way for a screen reader user to get to the output area (output-container) is to shift+tab from the input area. Right now, they'll hit one of the trees instead of the output-container, which is rather annoying (and also inconsistent if there's no tree in the output). So, even though it's a bit counter-intuitive, I'd prefer that output-container be *after* the trees in the tab order.
Flags: needinfo?(jteh)
And once inside the tree, navigation should be standard:

- Up and down move through visible items.
- RightArrow opens collapsed nodes, and on non-expandable ones, does nothing.
- LeftArrow, when inside an expanded node container, focuses the parent node, quickly backing out of the children. Otherwise does nothing.
- Enter: Does the same as a mouse click on the item (not the expand/collapse symbol if any).
Product: Firefox → DevTools
Depends on: 1456060
Priority: -- → P3
Has anyone figured out what is going on here causing the tree to not work with the keyboard?
I looked into this some more. Some things have changed and moved around a bit since we last looked at/discussed this.

If I comment out the "focusable: false" at devtools/client/webconsole/components/GripMessageBody.js line 67, when I shift+tab into the tree, the first tree item does get focused correctly! From there, keyboard navigation works very nicely. Is there any chance we can at least get that change made? I know there are some pending problems (according to that comment), but right now, keyboard only users can't use this *at all*.

The problem is that screen reader users might not shift+tab or tab to the tree. They might be reading the console output in their screen reader's document browse mode (or equivalent) and encounter the tree, at which point the screen reader will directly, programmatically focus the tree. In this case, the first tree item doesn't get focused because of this check in devtools/client/shared/components/reps/reps.js line 4460:

        // Only set default focus to the first tree node if the focus came
        // from outside the tree (e.g. by tabbing to the tree from other
        // external elements).
        if (explicitOriginalTarget !== this.treeRef && !this.treeRef.contains(explicitOriginalTarget)) {

I understand we wouldn't want to override focus if focus moved within the tree itself. However, this prevents initial programmatic focus from focusing a tree item *at all*, and if you can't focus an item, the keyDown code won't let you navigate the tree.

I wonder if we could change this check so that it doesn't try to focus the first item if there's already a focused item, rather than specifically checking whether focus came from outside.
Alternatively, we could change the _onKeyDown handler to at least allow keyboard navigation to focus the first node even if there's no currently focused item (devtools/client/shared/components/reps/reps.js line 4268). That might be simpler and would still allow screen reader users to navigate the tree.
Flags: needinfo?(nchevobbe)
Hello James,

> If I comment out the "focusable: false" at devtools/client/webconsole/components/GripMessageBody.js line 67, when I shift+tab into the tree, the first tree item does get focused correctly! From there, keyboard navigation works very nicely. Is there any chance we can at least get that change made? I know there are some pending problems (according to that comment), but right now, keyboard only users can't use this *at all*.

If you tested it and it works nicely for you, I'll say let's try it. We can always file more bugs after that to have a better overall keyboard navigation in the console output.

> I wonder if we could change this check so that it doesn't try to focus the first item if there's already a focused item, rather than specifically checking whether focus came from outside.

I'll have to check if there's quirks when doing that, but I'll try something.
Flags: needinfo?(nchevobbe)
(In reply to Nicolas Chevobbe [:nchevobbe] from comment #9)
> > I wonder if we could change this check so that it doesn't try to focus the first item if there's already a focused item, rather than specifically checking whether focus came from outside.
> I'll have to check if there's quirks when doing that, but I'll try something.

One question: in what cases does focus get set to the tree from inside the tree? Presumably, there are some specific cases that prompted this code to be added. It'd help to know what those cases are so we can test for possible regressions.
(In reply to James Teh [:Jamie] from comment #10)
> (In reply to Nicolas Chevobbe [:nchevobbe] from comment #9)
> > > I wonder if we could change this check so that it doesn't try to focus the first item if there's already a focused item, rather than specifically checking whether focus came from outside.
> > I'll have to check if there's quirks when doing that, but I'll try something.
> 
> One question: in what cases does focus get set to the tree from inside the
> tree? Presumably, there are some specific cases that prompted this code to
> be added. It'd help to know what those cases are so we can test for possible
> regressions.

The code was set to prevent autoselecting the first node of the tree if a specific (non-first) node was clicked.
Hello,
After the force update to Firefox Quantum, the web console only shows this tree. I opened a bug on NVDA at:
https://github.com/nvaccess/nvda/issues/8876#issuecomment-432448680

There I have a video of me interacting with this object. I need to be able to read properties of javascript objects in the web console so I can do my job. Currently the work-around is to select all in the console and copy it into a text file. This subtracts a good hour from my productivity in a day.

I was used to having object properties read out in plane text, but if this tree is something that really helps sighted users, then I would recommend the following commands, based off the tree interface conventions in most tree interfaces:
up and down move through the elements in a level
left moves to a parent
right moves to a child
ctrl+home moves to the top
ctrl+end moves to the bottom
enter moves to a child
escape on first press goes to the top-level menu and if on top level menu goes out of input mode
First-letter navigation of the items in the current level
page up jumps a specific number of items up
page down jumps a specific number of items down

I would personally like the items not to loop as I use the top and bottom for orientation of large lists.
I would also like if brows mode only shows the last focused item in the menu and not all the items in the menu as hearing a long list of items that I can't interact with except for going into input mode is a little cumbersome. The reason for the last focused item is because if I focus on a list, then I need to be able to use brows mode to hear the list, copy the name or list, or arrow through the item to see how it is spelled.

But to be honest, it would be really useful to have the screen reader read the following object like:
{a: 1, b: {a1: "orange", b2: "green"}, c: ["pizza", "bred", "cheese"]}
as:
a: 1
b: object sub menu
c: array sub menu
Thanks,
Any update on this bug? The tree is still unusable in Firefox 64.
Assignee: nobody → yzenevich
Status: NEW → ASSIGNED

Will post a PR to debugger.html

MozReview-Commit-ID: 867qxNviQ4V

Depends on D18591

Attachment #9040500 - Attachment is obsolete: true
Attached file Patch for debugger.html (obsolete) —
Attachment #9041257 - Flags: review?(nchevobbe)
Pushed by yura.zenevich@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/fc3ca7ab93c5
make virtualized tree nodes tabbable similar to how the inspector markup tree works. r=nchevobbe
Comment on attachment 9041257 [details] [review]
Patch for debugger.html

Merged into debugger.html
Attachment #9041257 - Attachment is obsolete: true
Attachment #9041257 - Flags: review?(nchevobbe)
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 67

Should've added leave open keyword

Status: RESOLVED → REOPENED
Resolution: FIXED → ---

Nicolas, the second patch can be reviewed afaik. Thanks!

Flags: needinfo?(nchevobbe)
See Also: → 1529687

Opened bug 1529687 for tests

Flags: needinfo?(nchevobbe)
Pushed by yura.zenevich@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/9316cb12864b
make trees in console keyboard accessible. r=nchevobbe

Backed out changeset 9316cb12864b (Bug 1424159) for browser_webconsole_longstring failures

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&searchStr=dt&fromchange=a0bd7500c6a2b8a5a8bf2597aa461359a27aa5be&tochange=903a04ef7adcece77a10381b169c40b0831aa529

Backout link: https://hg.mozilla.org/integration/autoland/rev/79ef46467344a0c6c59d7a3fa38901342ca1b3dd

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=229772245&repo=autoland&lineNumber=15434

00:46:22 INFO - TEST-START | devtools/client/webconsole/test/mochitest/browser_webconsole_longstring.js
00:46:22 INFO - GECKO(1340) | ++DOCSHELL 01667000 == 3 [pid = 5792] [id = {ab15fb49-6774-47b7-b198-101f2515ef09}]
00:46:22 INFO - GECKO(1340) | ++DOMWINDOW == 7 (08915540) [pid = 5792] [serial = 433] [outer = 00000000]
00:46:22 INFO - GECKO(1340) | ++DOMWINDOW == 8 (088A6400) [pid = 5792] [serial = 434] [outer = 08915540]
00:46:22 INFO - GECKO(1340) | ++DOMWINDOW == 9 (088B0800) [pid = 5792] [serial = 435] [outer = 08915540]
00:46:22 INFO - GECKO(1340) | ++DOCSHELL 0D1D0C00 == 11 [pid = 1428] [id = {777da084-ea92-4fbd-9ad5-de85e2d616ac}]
00:46:22 INFO - GECKO(1340) | ++DOMWINDOW == 29 (0D24D540) [pid = 1428] [serial = 1512] [outer = 00000000]
00:46:22 INFO - GECKO(1340) | ++DOMWINDOW == 30 (0E511800) [pid = 1428] [serial = 1513] [outer = 0D24D540]
00:46:22 INFO - GECKO(1340) | ++DOMWINDOW == 31 (10164800) [pid = 1428] [serial = 1514] [outer = 0D24D540]
00:46:22 INFO - GECKO(1340) | ++DOCSHELL 0D1CCC00 == 12 [pid = 1428] [id = {3b0feeba-1f2e-4d12-8d3a-c15c68d62619}]
00:46:22 INFO - GECKO(1340) | ++DOMWINDOW == 32 (0D24D670) [pid = 1428] [serial = 1515] [outer = 00000000]
00:46:22 INFO - GECKO(1340) | ++DOMWINDOW == 33 (12A19400) [pid = 1428] [serial = 1516] [outer = 0D24D670]
00:46:23 INFO - GECKO(1340) | console.log: "foobaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafoobazabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestabbababazomglolztestboom!"
00:46:24 INFO - GECKO(1340) | --DOMWINDOW == 4 (081A6800) [pid = 5844] [serial = 284] [outer = 00000000] [url = about:blank]
00:46:24 INFO - GECKO(1340) | --DOMWINDOW == 3 (081A7000) [pid = 5844] [serial = 287] [outer = 00000000] [url = http://example.com/browser/devtools/client/webconsole/test/mochitest/test-location-styleeditor-link.html]
00:46:24 INFO - GECKO(1340) | --DOMWINDOW == 2 (081A2000) [pid = 5844] [serial = 289] [outer = 00000000] [url = about:blank]
00:46:26 INFO - GECKO(1340) | --DOMWINDOW == 8 (088B1800) [pid = 5792] [serial = 431] [outer = 00000000] [url = about:blank]
00:46:26 INFO - GECKO(1340) | --DOMWINDOW == 7 (01669000) [pid = 5792] [serial = 428] [outer = 00000000] [url = about:blank]
00:46:26 INFO - GECKO(1340) | --DOCSHELL 01666C00 == 2 [pid = 5792] [id = {bb88fba8-6e6b-4b51-8c19-d3e1467f51a1}]
00:46:26 INFO - GECKO(1340) | --DOMWINDOW == 6 (089152E0) [pid = 5792] [serial = 427] [outer = 00000000] [url = data:text/html;charset=utf-8,<p>test logErrorInPage]
00:46:26 INFO - GECKO(1340) | --DOMWINDOW == 5 (08915410) [pid = 5792] [serial = 430] [outer = 00000000] [url = data:text/html;charset=utf-8,<p>test logErrorInPage]
00:46:26 INFO - GECKO(1340) | --DOCSHELL 088A9000 == 1 [pid = 5792] [id = {12398090-ad12-4fb9-adbb-105f2dd6a7d9}]
00:46:27 INFO - GECKO(1340) | --DOMWINDOW == 10 (08396C00) [pid = 5856] [serial = 305] [outer = 00000000] [url = data:text/html;charset=utf8,<p>test Scratchpad panel linking</p>]
00:46:27 INFO - GECKO(1340) | --DOMWINDOW == 32 (0ED93C00) [pid = 1428] [serial = 1499] [outer = 00000000] [url = about:blank]
00:46:27 INFO - GECKO(1340) | --DOMWINDOW == 31 (0ED9A800) [pid = 1428] [serial = 1495] [outer = 00000000] [url = about:blank]
00:46:27 INFO - GECKO(1340) | --DOMWINDOW == 30 (12A1D000) [pid = 1428] [serial = 1498] [outer = 00000000] [url = about:blank]
00:46:27 INFO - GECKO(1340) | --DOMWINDOW == 29 (1210B800) [pid = 1428] [serial = 1496] [outer = 00000000] [url = about:devtools-toolbox]
00:46:27 INFO - GECKO(1340) | --DOCSHELL 08395C00 == 3 [pid = 5856] [id = {a5b27fe7-4399-4098-a37b-d875df0d9cf5}]
00:46:27 INFO - GECKO(1340) | --DOMWINDOW == 9 (08407540) [pid = 5856] [serial = 306] [outer = 00000000] [url = about:blank]
00:46:27 INFO - GECKO(1340) | --DOMWINDOW == 8 (084072E0) [pid = 5856] [serial = 308] [outer = 00000000] [url = about:blank]
00:46:27 INFO - GECKO(1340) | --DOCSHELL 00E65400 == 2 [pid = 5856] [id = {5b62c6b5-f5e1-4578-b384-3692a290d019}]
00:46:29 INFO - TEST-INFO | started process screenshot
00:46:29 INFO - TEST-INFO | screenshot: exit 0
00:46:29 INFO - Buffered messages logged at 00:46:22
00:46:29 INFO - Entering test bound
00:46:29 INFO - Adding a new tab with URL: data:text/html,<meta charset=utf8>Test LongString hang
00:46:29 INFO - Tab added and finished loading
00:46:29 INFO - Opening the toolbox
00:46:29 INFO - Buffered messages logged at 00:46:23
00:46:29 INFO - Toolbox opened and focused
00:46:29 INFO - Log a longString
00:46:29 INFO - Matched a message with text: "foobaraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", all messages received.
00:46:29 INFO - TEST-PASS | devtools/client/webconsole/test/mochitest/browser_webconsole_longstring.js | longString expand arrow is shown -
00:46:29 INFO - wait for long string expansion
00:46:29 INFO - Buffered messages finished
00:46:29 INFO - TEST-UNEXPECTED-FAIL | devtools/client/webconsole/test/mochitest/browser_webconsole_longstring.js | Uncaught exception - waitFor - timed out after 500 tries.
00:46:29 INFO - Leaving test bound
00:46:29 INFO - GECKO(1340) | ++DOMWINDOW == 30 (0ED8D800) [pid = 1428] [serial = 1517] [outer = 0D24D540]
00:46:29 INFO - GECKO(1340) | console.warn: "Error while detaching the thread front: 'detach' request packet to 'server1.conn255.child1/context22' can't be sent as the connection is closed."
00:46:30 INFO - Removing tab.

Flags: needinfo?(yzenevich)
Pushed by yura.zenevich@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/413a18c16f0e
make trees in console keyboard accessible. r=nchevobbe
Status: REOPENED → RESOLVED
Closed: 5 years ago5 years ago
Resolution: --- → FIXED
Flags: needinfo?(yzenevich)
Whiteboard: [qa-67b-p2]

Hi, I just tested this, and it appears that you can only send keystrokes to the tree view if it gained focus by the tab key.

With NVDA, after pressing NVDA+Space when the virtual cursor is at the tree view to turn on focus mode, pressing the arrow keys doesn't do anything, when it should also have worked.

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: