Bug 1716762 - Don't allow focus to move to remote iframe which is display: none; r=emilio

Make it behave the same as in-process iframe.

Differential Revision: https://phabricator.services.mozilla.com/D118002
This commit is contained in:
Edgar Chen
2021-07-07 12:08:18 +00:00
parent 8167a5920d
commit c8e0351b70
8 changed files with 183 additions and 0 deletions

View File

@@ -7990,6 +7990,7 @@ nsresult nsDocShell::SetupNewViewer(nsIContentViewer* aNewViewer,
}
nscolor bgcolor = NS_RGBA(0, 0, 0, 0);
bool isUnderHiddenEmbedderElement = false;
// Ensure that the content viewer is destroyed *after* the GC - bug 71515
nsCOMPtr<nsIContentViewer> contentViewer = mContentViewer;
if (contentViewer) {
@@ -8001,6 +8002,7 @@ nsresult nsDocShell::SetupNewViewer(nsIContentViewer* aNewViewer,
// presentation shell, so we can use it for the next document.
if (PresShell* presShell = contentViewer->GetPresShell()) {
bgcolor = presShell->GetCanvasBackground();
isUnderHiddenEmbedderElement = presShell->IsUnderHiddenEmbedderElement();
}
contentViewer->Close(mSavingOldViewer ? mOSHE.get() : nullptr);
@@ -8046,6 +8048,9 @@ nsresult nsDocShell::SetupNewViewer(nsIContentViewer* aNewViewer,
if (RefPtr<PresShell> presShell = mContentViewer->GetPresShell()) {
presShell->SetCanvasBackground(bgcolor);
presShell->ActivenessMaybeChanged();
if (isUnderHiddenEmbedderElement) {
presShell->SetIsUnderHiddenEmbedderElement(isUnderHiddenEmbedderElement);
}
}
// XXX: It looks like the LayoutState gets restored again in Embed()