Bug 1391110: Part 2 - Reparent FrameLoader wrapper when owner content changes. r=smaug

We allow swapping frameloaders between unrelated documents, so we need to
reparent wrappers when the owner content changes.

MozReview-Commit-ID: LNIf4ZrCZLo

--HG--
extra : rebase_source : 8041d1601962d61e675e78e3447c7772eee89df0
This commit is contained in:
Kris Maglione 2017-08-19 13:03:59 -07:00
parent 470160f420
commit 68a883f00b

View File

@ -2356,6 +2356,17 @@ nsFrameLoader::SetOwnerContent(Element* aContent)
mOwnerContent->RemoveMutationObserver(this);
}
mOwnerContent = aContent;
AutoJSAPI jsapi;
jsapi.Init();
JS::RootedObject wrapper(jsapi.cx(), GetWrapper());
if (wrapper) {
JSAutoCompartment ac(jsapi.cx(), wrapper);
nsresult rv = ReparentWrapper(jsapi.cx(), wrapper);
Unused << NS_WARN_IF(NS_FAILED(rv));
}
if (RenderFrameParent* rfp = GetCurrentRenderFrame()) {
rfp->OwnerContentChanged(aContent);
}