Telling focus to enter subtree in browser.xhtml when you've used `dialog.showModal` loops forever
Categories
(Core :: DOM: UI Events & Focus Handling, defect, P3)
Tracking
()
Tracking | Status | |
---|---|---|
firefox86 | --- | affected |
People
(Reporter: Gijs, Unassigned)
References
Details
Attachments
(1 file)
1.83 KB,
patch
|
Details | Diff | Splinter Review |
FocusNavigation moz_log looks something like this (excerpt):
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable popupgroup:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 0
[Parent 5863: Main Thread]: D/FocusNavigation GetNextTabbable: html
[Parent 5863: Main Thread]: D/FocusNavigation tabindex: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable html:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable body:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable popupset:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable box:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable vbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbar:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbaritem:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable spacer:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbar:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable tabs:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable arrowscrollbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbar:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbartabstop:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbarbutton:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbarbutton:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbaritem:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbarbutton:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable box:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable box:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbarbutton:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbarspring:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbaritem:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbartabstop:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable box:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable box:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable box:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable moz-input-box:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable input:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable div:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable div:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable #text:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable input:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable div:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable div:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable br:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable div:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable div:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable #text:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbartabstop:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbartabstop:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbarspring:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbarbutton:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbarbutton:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbarbutton:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable stack:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable vbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbaritem:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbarbutton:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable stack:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbar:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbartabstop:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbarbutton:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable label:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbaritem:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbarbutton:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable label:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable toolbarbutton:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable image:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable _moz_generated_content_after:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable _moz_generated_content_after:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable #text:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable vbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable tabbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable tabpanels:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable vbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable notificationbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable stack:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable browser:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable splitter:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable browser:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable vbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable notificationbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable stack:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable browser:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable stack:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable dialog:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollbar:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable slider:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable thumb:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollbar:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable slider:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable thumb:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollcorner:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable dialog:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable vbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollbar:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable slider:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable thumb:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollbar:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable slider:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable thumb:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollcorner:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable browser:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable dialog:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollbar:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable slider:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable thumb:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollbar:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable slider:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable thumb:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollcorner:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable dialog:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable vbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollbar:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable slider:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable thumb:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollbar:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable slider:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable thumb:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable scrollcorner:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable browser:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable label:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable splitter:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable browser:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable hbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable vbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable notificationbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable stack:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable browser:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable div:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable #text:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable vbox:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable div:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
[Parent 5863: Main Thread]: D/FocusNavigation Next Tabbable popupgroup:
[Parent 5863: Main Thread]: D/FocusNavigation with tabindex: -1 expected: 1
and then it repeats, with expected: 0
instead of 1
, and then again, with 1 instead of 0, etc. etc. ad infinitum.
STR:
- apply attached patch
- open web console (accel-shift-k / cmd-opt-k)
- run
alert('hi')
ER:
no infinite loop
AR:
infinite loop. :-(
This is tripped by https://searchfox.org/mozilla-central/rev/2c06b16a0c15ae340a0532e319cbf89ef9d21b68/toolkit/content/widgets/dialog.js#269 .
I suspect this is because there's nowhere in the doc to put focus, but that shouldn't infinite loop, it should no-op or error or something else reasonable.
Comment 1•4 years ago
|
||
Feel free to change Priority/Severity if not appropriate.
Reporter | ||
Comment 2•4 years ago
|
||
It appears that the patches I put up on bug 1685313 when I thought I was done (and wasn't seeing this issue in manual testing), together with patches to adapt tests for the new dialogs, also trip this bug, so fixing this is going to block landing the patches on bug 1685313 . I'm happy to help fix this but am not sure where to start...
Comment 3•4 years ago
|
||
When ShowModal()
is called, we run the dialog focusing steps here https://searchfox.org/mozilla-central/source/dom/html/HTMLDialogElement.cpp#122, basically it tries to focus somewhere in the dialog, and move the focus to the body if nothing is focusable. I think this is a good place to start? I think we might need some special handling for chrome documents.
Gijs I can take a look at this if you don't have cycles.
Comment 4•4 years ago
|
||
The log above suggests that this would be a bug in nsFocusManager::DetermineElementToMoveFocus or nsFocusManager::GetNextTabbableContent. Unfortunately this code was changed significantly when handling shadow elements so I'm not familiar with much of it anymore.
Reporter | ||
Comment 5•4 years ago
|
||
It looks based on https://searchfox.org/mozilla-central/rev/bd92b9b4a3c2ff022e830c1358968a84e6e69c95/dom/base/nsFocusManager.cpp#3521-3524 that we set mayFocusRoot
to true to indicate we should be allowed to focus the root, to avoid infinite loops. But in my case, forDocumentNavigation
is false, and so we never enter the block above there, as it specifies:
if (forDocumentNavigation && (forward || mayFocusRoot || popupFrame)) {
Element* root = GetRootForFocus(piWindow, doc, true, true);
return FocusFirst(root, aNextContent);
}
Visually, when this issue happens, the entire parent window is greyed out but there is no visible dialog. I think either none of the content of the HTML dialog
element I added is visible (and thus focusable) at that point, or it's been removed and the dialog is in the process of being closed, when the call to focus something fires.
Either way, there isn't anything focusable in the doc, and I don't think the code here copes with that...
Comment 6•4 years ago
|
||
But in my case, forDocumentNavigation
is false, and so we never enter the block above there, as it specifies:
if (forDocumentNavigation && (forward || mayFocusRoot || popupFrame)) { Element* root = GetRootForFocus(piWindow, doc, true, true); return FocusFirst(root, aNextContent); }
That's correct. This part of the code iterates between different documents. The check above only matters when focus-switching between documents (F6 key). For normal tab navigation, we want to loop back around into the starting document again and continue until the specific starting element is reached again.
We should be bailing out when 'aOriginalStartContent' is reached in GetNextTabbableContent, and aOriginalStartContent should be returned. Then, we should be returning here: https://searchfox.org/mozilla-central/rev/bd92b9b4a3c2ff022e830c1358968a84e6e69c95/dom/base/nsFocusManager.cpp#3404 without setting aNextContent.
Reporter | ||
Comment 7•4 years ago
|
||
(In reply to Neil Deakin from comment #6)
But in my case,
forDocumentNavigation
is false, and so we never enter the block above there, as it specifies:if (forDocumentNavigation && (forward || mayFocusRoot || popupFrame)) { Element* root = GetRootForFocus(piWindow, doc, true, true); return FocusFirst(root, aNextContent); }
That's correct. This part of the code iterates between different documents. The check above only matters when focus-switching between documents (F6 key). For normal tab navigation, we want to loop back around into the starting document again and continue until the specific starting element is reached again.
We should be bailing out when 'aOriginalStartContent' is reached in GetNextTabbableContent, and aOriginalStartContent should be returned. Then, we should be returning here: https://searchfox.org/mozilla-central/rev/bd92b9b4a3c2ff022e830c1358968a84e6e69c95/dom/base/nsFocusManager.cpp#3404 without setting aNextContent.
This doesn't happen, because nextFocus
is null. Is that expected?
Comment 8•4 years ago
|
||
A null value means that the end of the document was reached. The next block of code iterates to the next document in the frame hierarchy and loops back around again. This should continue until the starting content is reached again, at which point that starting content is returned again.
It is a bit of an odd setup, and perhaps could be more specific in specifying that the returned value has looped.
Reporter | ||
Comment 9•4 years ago
|
||
(In reply to Neil Deakin from comment #8)
A null value means that the end of the document was reached. The next block of code iterates to the next document in the frame hierarchy and loops back around again. This should continue until the starting content is reached again, at which point that starting content is returned again.
So I'm confused, because AFAICT the starting content is in the dialog which is in a frame. Then we don't find focusable content there, so we move up to the parent document (browser.xhtml). We don't find focusable content there either, but startContent
gets set to the root of the parent document, and then we just keep going through that loop, and every time GetNextTabbableContent
returns null. I don't see where/how we would re-recurse into the inner document. When we're in the parent document, we never encounter the starting content, because it's not in the same document. Does that make sense? Perhaps I'm missing something?
Comment 10•4 years ago
|
||
I spent some time debugging this and it looks like we start tab navigation from a <dialog> element inside a frame that is not visible. When looping around and continuing to iterate looking for the next item to focus, we never return to the dialog or to its frame, since it isn't visible or focusable. So we iterate forever because we never find the starting point again.
So a basic fix might be, when a non-focusable item is the starting point, iterate up the tree looking for the first ancestor frame element that is visible/focusable and use that as the starting point.
Reporter | ||
Comment 11•4 years ago
|
||
I ended up working around this in bug 1685313 by changing the focus code in dialog.js
to stop using advanceFocusIntoSubtree
, but instead call Services.focus.moveFocus
, also passing the flag not to traverse into parents.
(In reply to Neil Deakin from comment #10)
So a basic fix might be, when a non-focusable item is the starting point, iterate up the tree looking for the first ancestor frame element that is visible/focusable and use that as the starting point.
I would be happy to provide a patch for this but tbh I am not really sure where to start...
Description
•