Closed Bug 580535 Opened 14 years ago Closed 14 years ago

Broken accessibility in context menus

Categories

(Core :: Disability Access APIs, defect)

defect
Not set
normal

Tracking

()

RESOLVED WORKSFORME
Tracking Status
blocking2.0 --- final+

People

(Reporter: Jamie, Assigned: surkov)

References

(Blocks 1 open bug)

Details

(Keywords: access, regression)

User-Agent:       Mozilla/5.0 (Windows; Windows NT 6.1; WOW64; rv:2.0b2pre) Gecko/20100720 Minefield/4.0b2pre
Build Identifier: Mozilla/5.0 (Windows; Windows NT 6.1; WOW64; rv:2.0b2pre) Gecko/20100720 Minefield/4.0b2pre

Context menus are often broken, but they can be made to work again. This is extremely convoluted. :)

Reproducible: Always

Steps to Reproduce:
1. Open Minefield so that it starts with about:blank as the only tab.
The about:blank document will receive the focus.
2. Press the applications key to open the context menu.
Expected: A menuStart event should be fired for the menu. The menu should contain a child for each menu item.
Actual: A menuStart is fired for the menu, but the menu contains no children.
3. Press down arrow to move to the first item.
Expected: A focus event should be fired for the first menu item.
Actual: A focus event is fired for the menu and it receives the focused state.
4. Press escape to close the menu.

5. Using the location bar, go to about:license.
The about:license document will receive the focus.
6. Press the applications key to open the context menu.
Expected: A menuStart event should be fired for the menu. The menu should contain a child for each menu item.
Actual: A menuStart is fired for the menu, but the menu contains no children.
7. Press down arrow to move to the first item.
Expected: A focus event should be fired for the first menu item.
Actual: A focus event is fired for the menu and it receives the focused state.
8. Press escape to close the menu.

9. Press tab to move to the first link on the page.
10. Press the applications key to open the context menu.
Result (correct): A menuStart event is fired for the menu. The menu contains a child for each menu item.
11. Press down arrow to move to the first item.
Result (correct): A focus event is fired for the first menu item.
12. Press escape to close the menu.

13. Press shift+tab to move focus back to the document.
14. Press the applications key to open the context menu.
Result (correct): A menuStart event is fired for the menu. The menu contains a child for each menu item.
15. Press down arrow to move to the first item.
Result (correct): A focus event is fired for the first menu item.
Observation: Once the context menu works once (as for the link above), it starts to work within the document where it was broken before.
16. Press escape to close the menu.

17. Press f6 to move to the tab bar.
18. Press the applications key to open the context menu.
Expected: A menuStart event should be fired for the menu. The menu should contain a child for each menu item.
Actual: A menuStart is fired for the menu, but the menu contains no children.
19. Press down arrow to move to the first item.
Expected: A focus event should be fired for the first menu item.
Actual: A focus event is fired for the menu and it receives the focused state.
20. Press escape to close the menu.

21. Open a new tab by pressing control+t.
22. Press shift+tab twice to move to the tab bar.
23. Press the applications key to open the context menu.
Expected: A menuStart event should be fired for the menu. The menu should contain a child for each menu item.
Actual: A menuStart is fired for the menu, but the menu contains no children.
24. Press down arrow to move to the first item.
Expected: A focus event should be fired for the first menu item.
Actual: A focus event is fired for the menu and it receives the focused state.
25. Press escape to close the menu.

26. Close Minefield, ensuring that tabs are saved.
27. Open Minefield again. There should still be two tabs.

28. Press f6 to move to the tab bar.
29. Press the applications key to open the context menu.
Result (correct): A menuStart event is fired for the menu. The menu contains a child for each menu item.
30. Press down arrow to move to the first item.
Result (correct): A focus event should be fired for the first menu item.
Observation: If Minefield is started with only one tab open, the tab bar context menu is broken. It must be started with at least two tabs for this to work. Creating a new tab is not sufficient to make it work.
31. Press escape to close the menu.



I'm pretty sure this broke within the last few weeks, but haven't figured out exactly when yet.
Version: unspecified → Trunk
Confirming. This iwas also introduced in the two weeks between the 3rd and 19th of July, 2010.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Regression range: http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=580205b95ceb&tochange=82edf5bd1abe
Works in the June 30, 2010 build, broken in the July 1, 2010 build. Seems to implicate bug 574312. I never saw this in the try-server builds I tried.
requesting blocking status based on comment #2
blocking2.0: --- → ?
blocking2.0: ? → final+
blocking2.0: final+ → betaN+
Who owns this?  Need an owner ASAP.
Assigning to Alexander based on the regression range.
Assignee: nobody → surkov.alexander
(Aside: Neil might be tweaking popup frame construction over on bug 558072)
blocking2.0: betaN+ → final+
The problem is menupoup has lazy frame construction of menuitems. When menu is shown on the screen then we don't get any notifications for menuitems and therefore we don't invalidate menupopup accessible children. I tried the approach from bug 570275 and I see notifications for menuitems, sometimes. So bug 570275 is going to be a fix for this bug, at least partially.

In the case it's not going to fix all cases then we can
1) force menupopup accessible children invalidation when it appears on the screen 
or
2) force menuitem frames generation when menupoup accessible is created so that menuitem accessibles will be created

the second approach should have perf impact.
Depends on: 570275
Blocks: orca
In addition to what I stated in bug 593631, I also find that the context menus don't work in the bookmarks library either.
1. Open the Organize Bookmarks dialog.
2. Use keyboard to get the caret over to the list of bookmarks in any folder.
3. Press the application key.
4. Menu pops up but no speech from Orca.

I didn't look for internal events so far but the behavior is identical to Orca's behavior reported in other instances.
OS: Windows 7 → All
Hardware: x86 → All
I am happy to report that the context menus appear to work now.  I just installed version 4.0b7pre from nightly build of Oct 4th 2010..  I checked by pressing the application or context key key while focusing a normal link on a page and also in the bookmarks library while on a detail bookmark.  I got Orca output from both menus.
Thanks, Steve, for letting know this. I thought it should be fixed by bug 570275, so no idea how it happened it's fixed now. It makes sense to confirm this on Windows before to close the bug.
This seems to be working in Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0b7pre) Gecko/20101006 Firefox/4.0b7pre. Shall we close as worksforme or do we want to figure out what fixed it?
Worksforme is fine. I don't care a lot because bug 570275 adds automated test for this and we shouldn't be broken suddenly again.
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.