Make the document blocked by the topmost element in the top layer
Categories
(Core :: DOM: Core & HTML, defect, P5)
Tracking
()
People
(Reporter: xidorn, Assigned: sefeng)
References
(Blocks 1 open bug)
Details
Attachments
(3 files)
We have resolved that, if there is anything in the top layer, we should mark the document blocked by the topmost element in the top layer. This behavior hasn't been speced yet, but it would be speced in the HTML spec and have a pointer from the Fullscreen API spec. [1] The HTML spec has defined a "blocked by modal dialog" concept [2], which would be extended to also cover fullscreen. [1] https://github.com/whatwg/fullscreen/issues/15 [2] https://html.spec.whatwg.org/multipage/interaction.html#blocked-by-a-modal-dialog
Updated•7 years ago
|
Comment hidden (obsolete) |
Updated•6 years ago
|
Assignee | ||
Comment 3•4 years ago
|
||
hmm, I don't think this is a blocker of modal dialog.
The blocked by modal dialog
piece is used by cancelling the dialog, and we got it handled in bug 1322947.
I think we probably want to move this bug as part of the inert implementation?
Assignee | ||
Comment 4•4 years ago
|
||
Talked with Tim on Riot: this bug should be about the concept of "inert subtrees" which should probably first be used in the top layer/modal dialog case.
Comment 5•4 years ago
|
||
(In reply to Sean Feng [:sefeng] from comment #3)
hmm, I don't think this is a blocker of modal dialog.
The
blocked by modal dialog
piece is used by cancelling the dialog, and we got it handled in bug 1322947.
Currently, you can tab out of a modal dialog. I'd argue that's a blocker of modal dialog. Is that covered by this bug or should I file that separately?
Assignee | ||
Comment 6•4 years ago
|
||
You mean to use Tab to move the focus out of modal dialog?
This is where inert element comes to play, to prevent this kind of behaviour. This bug is already a blocker of inert element, and I don't think we need to file one separately.
Comment 7•4 years ago
|
||
(In reply to Sean Feng [:sefeng] from comment #6)
You mean to use Tab to move the focus out of modal dialog?
I'm saying tab shouldn't be able to move focus out of a modal dialog, yes.
This is where inert element comes to play, to prevent this kind of behaviour. This bug is already a blocker of inert element, and I don't think we need to file one separately.
Okay, but I'm saying this (or at least inert) should block shipping modal dialog, which I don't think it does currently. Bug 921504 (inert) depends on dialog-element, since the idea was to implement this as an enhancement on top of dialog, but that doesn't make it clear that inert subtrees should block dialog shipping.
Comment 8•4 years ago
|
||
The concept of inert subtrees must be used for all elements that are not the topmost top layer item (which can be a modal dialog or a full screen item).
So I agree with James, inert subtrees are necessary to ship modal dialogs.
Assignee | ||
Comment 9•4 years ago
|
||
Okay, agreed!
fredw, asurkov, would you be interested in implementing the inertness for modal dialog?
For modal dialog, we don't need the entire inert attribute support, we just need the inertness. If we can support the usage for modal dialog first, that would be great.
Comment 10•4 years ago
|
||
(In reply to Sean Feng [:sefeng] from comment #9)
Okay, agreed!
fredw, asurkov, would you be interested in implementing the inertness for modal dialog?
For modal dialog, we don't need the entire inert attribute support, we just need the inertness. If we can support the usage for modal dialog first, that would be great.
Agreed, that would make a good start. I'm in.
Comment 11•4 years ago
|
||
After bug 921504 is landed (-moz-inert CSS property), apparently there's no blockers on this one. Sean, is it something you are on?
Assignee | ||
Comment 12•4 years ago
|
||
Thanks for landing -moz-inert
, I'll do the work for this one.
Thanks Alex!
Assignee | ||
Comment 13•4 years ago
|
||
Assignee | ||
Comment 14•4 years ago
|
||
TopLayerPush has always been returning true, so returning it as a
boolean is incorrect.
Updated•4 years ago
|
Updated•4 years ago
|
Comment 15•4 years ago
|
||
Pushed by sefeng@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/8b57f059e63e Make TopLayerPush to return void r=emilio https://hg.mozilla.org/integration/autoland/rev/c7ae88fd1bd7 Make the document blocked by the topmost element in the top layer r=emilio
Created web-platform-tests PR https://github.com/web-platform-tests/wpt/pull/24939 for changes under testing/web-platform/tests
Comment 17•4 years ago
•
|
||
Backed out for perma failures.
Logs: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=312634666&repo=autoland&lineNumber=6656
https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=312642807&repo=autoland&lineNumber=2933
https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=312642289&repo=autoland&lineNumber=2929
Backout: https://hg.mozilla.org/integration/autoland/rev/240f7ef6d0d548078e9124df24465c767c416ebc
Upstream PR merged by moz-wptsync-bot
Assignee | ||
Comment 19•4 years ago
|
||
When a modal dialog is cancelled, the inertness for other elements
is reverted. However, in order to have the new state (non-inert)
effective, Firefox needs to do a frame flush. This flush is taken
place when it's really needed.
In browser_pioneer_us.js, we have some usage of some buttons when
the flush hasn't taken place yet, so the test fails because the
buttons are not clickable. To fix the test, we add a
getBoundingClientRect() call to force frame flushes to the
corresponding buttons.
Comment 20•4 years ago
|
||
Pushed by sefeng@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/7f016de8d52f Make TopLayerPush to return void r=emilio https://hg.mozilla.org/integration/autoland/rev/5d9e9bd12cd2 Make the document blocked by the topmost element in the top layer r=emilio https://hg.mozilla.org/integration/autoland/rev/17df14f0b129 Force frame flushes when needed to fix browser pioneer test r=rhelmer
Comment 21•4 years ago
|
||
Backed out 3 changesets (Bug 1200896) for causing Bug 1659042.
Backout link: https://hg.mozilla.org/integration/autoland/rev/c1536d43de1a74641e282cb6fc9ae369e02003e3
Push with failures:
- tier 2: https://treeherder.mozilla.org/#/jobs?repo=autoland&searchStr=android%2C7.0%2Cx86-64%2Copt%2Cweb%2Cplatform%2Ctests%2Ctest-android-em-7.0-x86_64%2Fopt-geckoview-web-platform-tests-e10s%2Cwpt11&tochange=35842513b5f7f7eae36ece294f3679ddc71489c7&fromchange=ca6a1ecd46b889cdc3043dcc5fc8619217f344e8
- tier 1: https://treeherder.mozilla.org/#/jobs?repo=autoland&searchStr=android%2C7.0%2Cx86-64%2Cdebug%2Cweb%2Cplatform%2Ctests%2Ctest-android-em-7.0-x86_64%2Fdebug-geckoview-web-platform-tests-e10s%2Cwpt11&tochange=e93466500f6b40181d208517267b05b6191d590a&fromchange=ca6a1ecd46b889cdc3043dcc5fc8619217f344e8&selectedTaskRun=Elf8Yqv4SDWezJDVMYovoA.1
Failure log:
https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=312996012&repo=autoland&lineNumber=9576
Comment 22•4 years ago
|
||
Pushed by sefeng@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/b70a32173d7c Make TopLayerPush to return void r=emilio https://hg.mozilla.org/integration/autoland/rev/f0487d823d74 Make the document blocked by the topmost element in the top layer r=emilio https://hg.mozilla.org/integration/autoland/rev/b0add3579bcc Force frame flushes when needed to fix browser pioneer test r=rhelmer
Comment 23•4 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/b70a32173d7c
https://hg.mozilla.org/mozilla-central/rev/f0487d823d74
https://hg.mozilla.org/mozilla-central/rev/b0add3579bcc
Updated•4 years ago
|
Updated•2 years ago
|
Description
•