Bug 1331509 - Extract a helper function to initialize the RenderFrameParent from TabParent. r?dvander
MozReview-Commit-ID: KMcpSQUax6z
--- a/dom/ipc/TabParent.cpp
+++ b/dom/ipc/TabParent.cpp
@@ -616,44 +616,53 @@ TabParent::LoadURL(nsIURI* aURI)
mDelayedURL = spec;
return;
}
Unused << SendLoadURL(spec, GetShowInfo());
}
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();
+ if (frameLoader) {
+ bool success;
+ RenderFrameParent* renderFrame = new RenderFrameParent(frameLoader, &success);
+ uint64_t layersId = renderFrame->GetLayersId();
+ AddTabParentToTable(layersId, this);
+ Unused << SendPRenderFrameConstructor(renderFrame);
+ }
+ } else {
+ // Otherwise, the child should have constructed the RenderFrame,
+ // and we should already know about it.
+ MOZ_ASSERT(GetRenderFrame());
+ }
+}
+
+void
TabParent::Show(const ScreenIntSize& size, bool aParentIsActive)
{
mDimensions = size;
if (mIsDestroyed) {
return;
}
+ InitRenderFrame();
+
+ RenderFrameParent* renderFrame = IsInitedByParent() ? GetRenderFrame() : nullptr;
+ uint64_t layersId = renderFrame ? renderFrame->GetLayersId() : 0;
TextureFactoryIdentifier textureFactoryIdentifier;
- uint64_t layersId = 0;
- bool success = false;
- RenderFrameParent* renderFrame = nullptr;
- 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();
- if (frameLoader) {
- renderFrame = new RenderFrameParent(frameLoader, &success);
- layersId = renderFrame->GetLayersId();
- renderFrame->GetTextureFactoryIdentifier(&textureFactoryIdentifier);
- AddTabParentToTable(layersId, this);
- Unused << SendPRenderFrameConstructor(renderFrame);
- }
- } else {
- // Otherwise, the child should have constructed the RenderFrame,
- // and we should already know about it.
- MOZ_ASSERT(GetRenderFrame());
+ if (renderFrame) {
+ renderFrame->GetTextureFactoryIdentifier(&textureFactoryIdentifier);
}
nsCOMPtr<nsISupports> container = mFrameElement->OwnerDoc()->GetContainer();
nsCOMPtr<nsIBaseWindow> baseWindow = do_QueryInterface(container);
nsCOMPtr<nsIWidget> mainWidget;
baseWindow->GetMainWidget(getter_AddRefs(mainWidget));
mSizeMode = mainWidget ? mainWidget->SizeMode() : nsSizeMode_Normal;
--- a/dom/ipc/TabParent.h
+++ b/dom/ipc/TabParent.h
@@ -363,16 +363,18 @@ public:
/**
* Return the top level doc accessible parent for this tab.
*/
a11y::DocAccessibleParent* GetTopLevelDocAccessible() const;
void LoadURL(nsIURI* aURI);
+ void InitRenderFrame();
+
// XXX/cjones: it's not clear what we gain by hiding these
// message-sending functions under a layer of indirection and
// eating the return values
void Show(const ScreenIntSize& aSize, bool aParentIsActive);
void UpdateDimensions(const nsIntRect& aRect, const ScreenIntSize& aSize);
void SizeModeChanged(const nsSizeMode& aSizeMode);