Commit c39b1f89 authored by Ryan Hunt's avatar Ryan Hunt
Browse files

Bug 1532725 - Rename PRemoteFrame to PBrowserBridge. r=nika

Differential Revision: https://phabricator.services.mozilla.com/D22132

--HG--
rename : dom/ipc/RemoteFrameChild.cpp => dom/ipc/BrowserBridgeChild.cpp
rename : dom/ipc/RemoteFrameChild.h => dom/ipc/BrowserBridgeChild.h
rename : dom/ipc/RemoteFrameParent.cpp => dom/ipc/BrowserBridgeParent.cpp
rename : dom/ipc/RemoteFrameParent.h => dom/ipc/BrowserBridgeParent.h
rename : dom/ipc/PRemoteFrame.ipdl => dom/ipc/PBrowserBridge.ipdl
extra : rebase_source : d5ca117b96c0d266041d23d80f0f4ab9b0471fb6
parent 67120bc4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -70,7 +70,7 @@
#include "mozilla/dom/IPCBlobUtils.h"
#include "mozilla/dom/NodeBinding.h"
#include "mozilla/dom/Promise.h"
#include "mozilla/dom/RemoteFrameChild.h"
#include "mozilla/dom/BrowserBridgeChild.h"
#include "mozilla/dom/ScriptSettings.h"
#include "mozilla/dom/TabParent.h"
#include "mozilla/dom/Text.h"
@@ -6199,7 +6199,7 @@ bool nsContentUtils::IsSubDocumentTabbable(nsIContent* aContent) {
  // If the subdocument lives in another process, the frame is
  // tabbable.
  if (EventStateManager::IsRemoteTarget(aContent) ||
      RemoteFrameChild::GetFrom(aContent)) {
      BrowserBridgeChild::GetFrom(aContent)) {
    return true;
  }

+6 −6
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@
#include "mozilla/dom/HTMLImageElement.h"
#include "mozilla/dom/HTMLInputElement.h"
#include "mozilla/dom/HTMLSlotElement.h"
#include "mozilla/dom/RemoteFrameChild.h"
#include "mozilla/dom/BrowserBridgeChild.h"
#include "mozilla/dom/Text.h"
#include "mozilla/EventDispatcher.h"
#include "mozilla/EventStateManager.h"
@@ -1854,8 +1854,8 @@ void nsFocusManager::Focus(nsPIDOMWindowOuter* aWindow, Element* aElement,
        }

        // Same as above but for out-of-process iframes
        if (RemoteFrameChild* rfc = RemoteFrameChild::GetFrom(aElement)) {
          rfc->Activate();
        if (BrowserBridgeChild* bbc = BrowserBridgeChild::GetFrom(aElement)) {
          bbc->Activate();
          LOGFOCUS(("Out-of-process iframe activated"));
        }
      }
@@ -3475,9 +3475,9 @@ nsresult nsFocusManager::GetNextTabbableContent(
          }

          // Same as above but for out-of-process iframes
          RemoteFrameChild* rfc = RemoteFrameChild::GetFrom(currentContent);
          if (rfc) {
            rfc->NavigateByKey(aForward, aForDocumentNavigation);
          BrowserBridgeChild* bbc = BrowserBridgeChild::GetFrom(currentContent);
          if (bbc) {
            bbc->NavigateByKey(aForward, aForDocumentNavigation);
            return NS_SUCCESS_DOM_NO_OPERATION;
          }

+27 −27
Original line number Diff line number Diff line
@@ -104,7 +104,7 @@
#include "mozilla/dom/ChildSHistory.h"
#include "mozilla/dom/CanonicalBrowsingContext.h"
#include "mozilla/dom/ContentChild.h"
#include "mozilla/dom/RemoteFrameChild.h"
#include "mozilla/dom/BrowserBridgeChild.h"

#include "mozilla/dom/HTMLBodyElement.h"

@@ -344,15 +344,15 @@ nsresult nsFrameLoader::ReallyStartLoadingInternal() {
  AUTO_PROFILER_LABEL("nsFrameLoader::ReallyStartLoadingInternal", OTHER);

  if (IsRemoteFrame()) {
    if (!mRemoteBrowser && !mRemoteFrameChild && !TryRemoteBrowser()) {
    if (!mRemoteBrowser && !mBrowserBridgeChild && !TryRemoteBrowser()) {
      NS_WARNING("Couldn't create child process for iframe.");
      return NS_ERROR_FAILURE;
    }

    if (mRemoteFrameChild) {
    if (mBrowserBridgeChild) {
      nsAutoCString spec;
      mURIToLoad->GetSpec(spec);
      Unused << mRemoteFrameChild->SendLoadURL(spec);
      Unused << mBrowserBridgeChild->SendLoadURL(spec);
    } else {
      // FIXME get error codes from child
      mRemoteBrowser->LoadURL(mURIToLoad);
@@ -806,7 +806,7 @@ bool nsFrameLoader::ShowRemoteFrame(const ScreenIntSize& size,
  NS_ASSERTION(IsRemoteFrame(),
               "ShowRemote only makes sense on remote frames.");

  if (!mRemoteBrowser && !mRemoteFrameChild && !TryRemoteBrowser()) {
  if (!mRemoteBrowser && !mBrowserBridgeChild && !TryRemoteBrowser()) {
    NS_ERROR("Couldn't create child process.");
    return false;
  }
@@ -825,7 +825,7 @@ bool nsFrameLoader::ShowRemoteFrame(const ScreenIntSize& size,
      return false;
    }

    if (mRemoteFrameChild) {
    if (mBrowserBridgeChild) {
      nsCOMPtr<nsISupports> container =
          mOwnerContent->OwnerDoc()->GetContainer();
      nsCOMPtr<nsIBaseWindow> baseWindow = do_QueryInterface(container);
@@ -834,7 +834,7 @@ bool nsFrameLoader::ShowRemoteFrame(const ScreenIntSize& size,
      nsSizeMode sizeMode =
          mainWidget ? mainWidget->SizeMode() : nsSizeMode_Normal;

      Unused << mRemoteFrameChild->SendShow(
      Unused << mBrowserBridgeChild->SendShow(
          size, ParentWindowIsActive(mOwnerContent->OwnerDoc()), sizeMode);
      mRemoteBrowserShown = true;
      return true;
@@ -863,8 +863,8 @@ bool nsFrameLoader::ShowRemoteFrame(const ScreenIntSize& size,
    if (!aFrame || !(aFrame->GetStateBits() & NS_FRAME_FIRST_REFLOW)) {
      if (mRemoteBrowser) {
        mRemoteBrowser->UpdateDimensions(dimensions, size);
      } else if (mRemoteFrameChild) {
        mRemoteFrameChild->UpdateDimensions(dimensions, size);
      } else if (mBrowserBridgeChild) {
        mBrowserBridgeChild->UpdateDimensions(dimensions, size);
      }
    }
  }
@@ -955,7 +955,7 @@ nsresult nsFrameLoader::SwapWithOtherRemoteLoader(
  }

  // FIXME: Consider supporting FrameLoader swapping for remote sub frames.
  if (mRemoteFrameChild) {
  if (mBrowserBridgeChild) {
    return NS_ERROR_NOT_IMPLEMENTED;
  }

@@ -1686,9 +1686,9 @@ void nsFrameLoader::DestroyDocShell() {
    mRemoteBrowser->Destroy();
  }

  if (mRemoteFrameChild) {
    Unused << mRemoteFrameChild->Send__delete__(mRemoteFrameChild);
    mRemoteFrameChild = nullptr;
  if (mBrowserBridgeChild) {
    Unused << mBrowserBridgeChild->Send__delete__(mBrowserBridgeChild);
    mBrowserBridgeChild = nullptr;
  }

  // Fire the "unload" event if we're in-process.
@@ -1732,9 +1732,9 @@ void nsFrameLoader::DestroyComplete() {
    mRemoteBrowser = nullptr;
  }

  if (mRemoteFrameChild) {
    Unused << mRemoteFrameChild->Send__delete__(mRemoteFrameChild);
    mRemoteFrameChild = nullptr;
  if (mBrowserBridgeChild) {
    Unused << mBrowserBridgeChild->Send__delete__(mBrowserBridgeChild);
    mBrowserBridgeChild = nullptr;
  }

  if (mMessageManager) {
@@ -2298,7 +2298,7 @@ nsresult nsFrameLoader::GetWindowDimensions(nsIntRect& aRect) {

nsresult nsFrameLoader::UpdatePositionAndSize(nsSubDocumentFrame* aIFrame) {
  if (IsRemoteFrame()) {
    if (mRemoteBrowser || mRemoteFrameChild) {
    if (mRemoteBrowser || mBrowserBridgeChild) {
      ScreenIntSize size = aIFrame->GetSubdocumentSize();
      // If we were not able to show remote frame before, we should probably
      // retry now to send correct showInfo.
@@ -2310,8 +2310,8 @@ nsresult nsFrameLoader::UpdatePositionAndSize(nsSubDocumentFrame* aIFrame) {
      mLazySize = size;
      if (mRemoteBrowser) {
        mRemoteBrowser->UpdateDimensions(dimensions, size);
      } else if (mRemoteFrameChild) {
        mRemoteFrameChild->UpdateDimensions(dimensions, size);
      } else if (mBrowserBridgeChild) {
        mBrowserBridgeChild->UpdateDimensions(dimensions, size);
      }
    }
    return NS_OK;
@@ -2391,7 +2391,7 @@ static Tuple<ContentParent*, TabParent*> GetContentParent(Element* aBrowser) {
}

bool nsFrameLoader::TryRemoteBrowser() {
  NS_ASSERTION(!mRemoteBrowser && !mRemoteFrameChild,
  NS_ASSERTION(!mRemoteBrowser && !mBrowserBridgeChild,
               "TryRemoteBrowser called with a remote browser already?");

  if (!mOwnerContent) {
@@ -2508,11 +2508,11 @@ bool nsFrameLoader::TryRemoteBrowser() {

  nsCOMPtr<Element> ownerElement = mOwnerContent;

  // If we're in a content process, create a RemoteFrameChild actor.
  // If we're in a content process, create a BrowserBridgeChild actor.
  if (XRE_IsContentProcess()) {
    mRemoteFrameChild = RemoteFrameChild::Create(
    mBrowserBridgeChild = BrowserBridgeChild::Create(
        this, context, NS_LITERAL_STRING(DEFAULT_REMOTE_TYPE));
    return !!mRemoteFrameChild;
    return !!mBrowserBridgeChild;
  }

  mRemoteBrowser =
@@ -2586,8 +2586,8 @@ mozilla::dom::PBrowserParent* nsFrameLoader::GetRemoteBrowser() const {
  return mRemoteBrowser;
}

mozilla::dom::RemoteFrameChild* nsFrameLoader::GetRemoteFrameChild() const {
  return mRemoteFrameChild;
mozilla::dom::BrowserBridgeChild* nsFrameLoader::GetBrowserBridgeChild() const {
  return mBrowserBridgeChild;
}

mozilla::layers::LayersId nsFrameLoader::GetLayersId() const {
@@ -2595,8 +2595,8 @@ mozilla::layers::LayersId nsFrameLoader::GetLayersId() const {
  if (mRemoteBrowser) {
    return mRemoteBrowser->GetRenderFrame()->GetLayersId();
  }
  if (mRemoteFrameChild) {
    return mRemoteFrameChild->GetLayersId();
  if (mBrowserBridgeChild) {
    return mBrowserBridgeChild->GetLayersId();
  }
  return mozilla::layers::LayersId{};
}
+4 −4
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ class ProcessMessageManager;
class Promise;
class TabParent;
class MutableTabContext;
class RemoteFrameChild;
class BrowserBridgeChild;

namespace ipc {
class StructuredCloneData;
@@ -283,10 +283,10 @@ class nsFrameLoader final : public nsStubMutationObserver,
  PBrowserParent* GetRemoteBrowser() const;

  /**
   * Returns the RemoteFrameChild if this is an out-of-process iframe, or null
   * Returns the BrowserBridgeChild if this is an out-of-process iframe, or null
   * otherwise.
   */
  mozilla::dom::RemoteFrameChild* GetRemoteFrameChild() const;
  mozilla::dom::BrowserBridgeChild* GetBrowserBridgeChild() const;

  /**
   * Returns the layers ID that this remote frame is using to render.
@@ -455,7 +455,7 @@ class nsFrameLoader final : public nsStubMutationObserver,
  uint64_t mChildID;

  // This is used when this refers to a remote sub frame
  RefPtr<mozilla::dom::RemoteFrameChild> mRemoteFrameChild;
  RefPtr<mozilla::dom::BrowserBridgeChild> mBrowserBridgeChild;

  // Holds the last known size of the frame.
  mozilla::ScreenIntSize mLazySize;
+23 −21
Original line number Diff line number Diff line
@@ -4,21 +4,22 @@
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "mozilla/dom/RemoteFrameChild.h"

#include "mozilla/dom/BrowserBridgeChild.h"
#include "nsFrameLoader.h"
#include "nsFrameLoaderOwner.h"
#include "nsQueryObject.h"

using namespace mozilla::ipc;

namespace mozilla {
namespace dom {

RemoteFrameChild::RemoteFrameChild(nsFrameLoader* aFrameLoader)
BrowserBridgeChild::BrowserBridgeChild(nsFrameLoader* aFrameLoader)
    : mLayersId{0}, mIPCOpen(true), mFrameLoader(aFrameLoader) {}

RemoteFrameChild::~RemoteFrameChild() {}
BrowserBridgeChild::~BrowserBridgeChild() {}

already_AddRefed<RemoteFrameChild> RemoteFrameChild::Create(
already_AddRefed<BrowserBridgeChild> BrowserBridgeChild::Create(
    nsFrameLoader* aFrameLoader, const TabContext& aContext,
    const nsString& aRemoteType) {
  MOZ_ASSERT(XRE_IsContentProcess());
@@ -33,17 +34,18 @@ already_AddRefed<RemoteFrameChild> RemoteFrameChild::Create(
  RefPtr<TabChild> tabChild = TabChild::GetFrom(docShell);
  MOZ_DIAGNOSTIC_ASSERT(tabChild);

  RefPtr<RemoteFrameChild> remoteFrame = new RemoteFrameChild(aFrameLoader);
  // Reference is freed in TabChild::DeallocPRemoteFrameChild.
  tabChild->SendPRemoteFrameConstructor(
      do_AddRef(remoteFrame).take(),
  RefPtr<BrowserBridgeChild> browserBridge =
      new BrowserBridgeChild(aFrameLoader);
  // Reference is freed in TabChild::DeallocPBrowserBridgeChild.
  tabChild->SendPBrowserBridgeConstructor(
      do_AddRef(browserBridge).take(),
      PromiseFlatString(aContext.PresentationURL()), aRemoteType);
  remoteFrame->mIPCOpen = true;
  browserBridge->mIPCOpen = true;

  return remoteFrame.forget();
  return browserBridge.forget();
}

void RemoteFrameChild::UpdateDimensions(const nsIntRect& aRect,
void BrowserBridgeChild::UpdateDimensions(const nsIntRect& aRect,
                                          const mozilla::ScreenIntSize& aSize) {
  MOZ_DIAGNOSTIC_ASSERT(mIPCOpen);

@@ -75,23 +77,23 @@ void RemoteFrameChild::UpdateDimensions(const nsIntRect& aRect,
  Unused << SendUpdateDimensions(di);
}

void RemoteFrameChild::NavigateByKey(bool aForward,
void BrowserBridgeChild::NavigateByKey(bool aForward,
                                       bool aForDocumentNavigation) {
  Unused << SendNavigateByKey(aForward, aForDocumentNavigation);
}

void RemoteFrameChild::Activate() { Unused << SendActivate(); }
void BrowserBridgeChild::Activate() { Unused << SendActivate(); }

/*static*/
RemoteFrameChild* RemoteFrameChild::GetFrom(nsFrameLoader* aFrameLoader) {
BrowserBridgeChild* BrowserBridgeChild::GetFrom(nsFrameLoader* aFrameLoader) {
  if (!aFrameLoader) {
    return nullptr;
  }
  return aFrameLoader->GetRemoteFrameChild();
  return aFrameLoader->GetBrowserBridgeChild();
}

/*static*/
RemoteFrameChild* RemoteFrameChild::GetFrom(nsIContent* aContent) {
BrowserBridgeChild* BrowserBridgeChild::GetFrom(nsIContent* aContent) {
  RefPtr<nsFrameLoaderOwner> loaderOwner = do_QueryObject(aContent);
  if (!loaderOwner) {
    return nullptr;
@@ -100,14 +102,14 @@ RemoteFrameChild* RemoteFrameChild::GetFrom(nsIContent* aContent) {
  return GetFrom(frameLoader);
}

IPCResult RemoteFrameChild::RecvSetLayersId(
IPCResult BrowserBridgeChild::RecvSetLayersId(
    const mozilla::layers::LayersId& aLayersId) {
  MOZ_ASSERT(!mLayersId.IsValid() && aLayersId.IsValid());
  mLayersId = aLayersId;
  return IPC_OK();
}

void RemoteFrameChild::ActorDestroy(ActorDestroyReason aWhy) {
void BrowserBridgeChild::ActorDestroy(ActorDestroyReason aWhy) {
  mIPCOpen = false;
}

Loading