Out-of-process iframes don't deactivate when their top-level window is lowered
Categories
(Core :: DOM: UI Events & Focus Handling, defect, P2)
Tracking
()
Fission Milestone | M6 |
People
(Reporter: hsivonen, Assigned: hsivonen)
References
Details
(Whiteboard: [fixed by bug 1615548])
Attachments
(1 obsolete file)
Spun off from bug 1556627: Out-of-process iframes don't deactivate when their top-level window is lowered. The easiest to observe symptom is that form controls don't appear dimmed.
Updated•4 years ago
|
Assignee | ||
Comment 1•4 years ago
|
||
Some observations:
If the chrome process broadcast deactivation to the whole BrowsingContext
subtree when it deactivates the top-level Web content, the IPC messages would race as they'd reach the content processes.
When we are in a content process, we propagate deactivation only to the iframe in which the focus is. We should also propagate it to other iframes. However, at the relevant point in the code we don't have a BrowsingContext
pointer to "this" BrowsingContext
to find the right subtree.
I guess I'll look into what it would take to get the "this" BrowsingContext
pointer to the right place.
Assignee | ||
Comment 2•4 years ago
|
||
Sigh. With multiple levels of iframes, it's even worse than that. Really the easiest thing would be doing the broadcast from the top, but that would arrive at leaves sooner than the current along-path handling of the iframes that are along the focus chain.
Assignee | ||
Comment 3•4 years ago
|
||
Maybe we can filter out the focused chain as we're doing the broadcast?
Updated•4 years ago
|
Assignee | ||
Comment 4•4 years ago
|
||
Assignee | ||
Comment 5•4 years ago
|
||
The attached patch appears to propagate deactivatedness properly, but still the rendering doesn't reflect the change.
Assignee | ||
Comment 6•4 years ago
|
||
(In reply to Henri Sivonen (:hsivonen) from comment #5)
The attached patch appears to propagate deactivatedness properly, but still the rendering doesn't reflect the change.
With the attached path there appears to be a call into Stylo to invalidate styles and there is a subsequent marking of the layer tree as needing an update.
I don't have immediate ideas for why the visuals don't actually update.
farre, do we have some optimizations not to repaint the layers of inactive OOP iframes?
Comment 7•4 years ago
|
||
Tracking for Fission Nightly (M6), unless this is causing test failures.
Assignee | ||
Comment 8•4 years ago
|
||
With the attached patch OOP iframes seem to run the deactivation steps, but the OOP iframes continue to appear active. This is with other in-flight patches, including bug 1618152. My patch queue is available from https://github.com/hsivonen/gecko/tree/deactivate
Neil, do you have ideas what's wrong here? Also, does this patch look right (worth getting through review and landing) even if insufficient?
Assignee | ||
Comment 9•4 years ago
|
||
Making progress in bug 1615548 in a way that reduces the need to understand this situation directly for now.
Assignee | ||
Comment 10•4 years ago
|
||
This was fixed as a side effect of bug 1615548. However, now there's a new bug: The out-of-process iframes don't return back to the right state when switching windows back.
Assignee | ||
Comment 11•4 years ago
|
||
(In reply to Henri Sivonen (:hsivonen) from comment #10)
However, now there's a new bug: The out-of-process iframes don't return back to the right state when switching windows back.
Filed as bug 1622738.
Updated•4 years ago
|
Description
•