Bug 1331509 - Move InitRenderFrame call to TabParent construction. r?dvander draft
authorKartikaya Gupta <kgupta@mozilla.com>
Tue, 17 Jan 2017 15:52:45 -0500
changeset 462714 bf1c84fc8159548272a56886b20e770822c62270
parent 462713 51ed9818d2d355223be221935a2dac0ffd1888c6
child 462715 c18cd316bea5be9ec9236c2a3419c3078efa8bf6
push id41849
push userkgupta@mozilla.com
push dateTue, 17 Jan 2017 23:14:58 +0000
reviewersdvander
bugs1331509
milestone53.0a1
Bug 1331509 - Move InitRenderFrame call to TabParent construction. r?dvander MozReview-Commit-ID: Cg0EDJ3uSmz
dom/base/nsFrameLoader.cpp
dom/ipc/TabParent.cpp
--- 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();