Bug 1331509 - Move InitRenderFrame call to TabParent construction. r?dvander
MozReview-Commit-ID: Cg0EDJ3uSmz
--- a/dom/base/nsFrameLoader.cpp
+++ b/dom/base/nsFrameLoader.cpp
@@ -2932,16 +2932,18 @@ nsFrameLoader::TryRemoteBrowser()
NS_ENSURE_SUCCESS(rv, false);
nsCOMPtr<Element> ownerElement = mOwnerContent;
mRemoteBrowser = ContentParent::CreateBrowser(context, ownerElement, openerContentParent,
mFreshProcess);
if (!mRemoteBrowser) {
return false;
}
+ // Now that mRemoteBrowser is set, we can initialize the RenderFrameParent
+ mRemoteBrowser->InitRenderFrame();
MaybeUpdatePrimaryTabParent(eTabParentChanged);
mChildID = mRemoteBrowser->Manager()->ChildID();
nsCOMPtr<nsIDocShellTreeItem> rootItem;
parentDocShell->GetRootTreeItem(getter_AddRefs(rootItem));
nsCOMPtr<nsPIDOMWindowOuter> rootWin = rootItem->GetWindow();
--- a/dom/ipc/TabParent.cpp
+++ b/dom/ipc/TabParent.cpp
@@ -624,16 +624,17 @@ void
TabParent::InitRenderFrame()
{
if (IsInitedByParent()) {
// If TabParent is initialized by parent side then the RenderFrame must also
// be created here. If TabParent is initialized by child side,
// child side will create RenderFrame.
MOZ_ASSERT(!GetRenderFrame());
RefPtr<nsFrameLoader> frameLoader = GetFrameLoader();
+ MOZ_ASSERT(frameLoader);
if (frameLoader) {
bool success;
RenderFrameParent* renderFrame = new RenderFrameParent(frameLoader, &success);
uint64_t layersId = renderFrame->GetLayersId();
AddTabParentToTable(layersId, this);
Unused << SendPRenderFrameConstructor(renderFrame);
}
} else {
@@ -646,18 +647,17 @@ TabParent::InitRenderFrame()
void
TabParent::Show(const ScreenIntSize& size, bool aParentIsActive)
{
mDimensions = size;
if (mIsDestroyed) {
return;
}
- InitRenderFrame();
-
+ MOZ_ASSERT(GetRenderFrame());
RenderFrameParent* renderFrame = IsInitedByParent() ? GetRenderFrame() : nullptr;
uint64_t layersId = renderFrame ? renderFrame->GetLayersId() : 0;
TextureFactoryIdentifier textureFactoryIdentifier;
if (renderFrame) {
renderFrame->GetTextureFactoryIdentifier(&textureFactoryIdentifier);
}
nsCOMPtr<nsISupports> container = mFrameElement->OwnerDoc()->GetContainer();