Bug 1522579 - Part 1: Remove PContentBridge, r=mccr8
authorNika Layzell <nika@thelayzells.com>
Mon, 25 Feb 2019 20:04:45 +0000
changeset 460969 86948cd899191e4f6afbd374e40431663ede4b12
parent 460968 fcf3d5468b1f1838504b2b75f856f2beff73fab7
child 460970 1e8608ac029b80f3c190d80bd2253808383fc6ec
push id35613
push usernerli@mozilla.com
push dateTue, 26 Feb 2019 03:52:35 +0000
treeherdermozilla-central@faec87a80ed1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmccr8
bugs1522579
milestone67.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1522579 - Part 1: Remove PContentBridge, r=mccr8 This actor won't be being used anymore, and acts only as a maintenance burden for people working on this code (which we're doing pretty often these days!). Differential Revision: https://phabricator.services.mozilla.com/D20549
dom/base/nsContentUtils.cpp
dom/file/ipc/PIPCBlobInputStream.ipdl
dom/ipc/ContentBridgeChild.cpp
dom/ipc/ContentBridgeChild.h
dom/ipc/ContentBridgeParent.cpp
dom/ipc/ContentBridgeParent.h
dom/ipc/ContentChild.cpp
dom/ipc/ContentChild.h
dom/ipc/ContentParent.cpp
dom/ipc/ContentParent.h
dom/ipc/ContentProcessManager.cpp
dom/ipc/ContentProcessManager.h
dom/ipc/PBrowser.ipdl
dom/ipc/PContent.ipdl
dom/ipc/PContentBridge.ipdl
dom/ipc/TabParent.cpp
dom/ipc/moz.build
dom/ipc/nsIContentParent.cpp
dom/ipc/nsIContentParent.h
ipc/glue/PChildToParentStream.ipdl
ipc/glue/PFileDescriptorSet.ipdl
ipc/glue/PParentToChildStream.ipdl
ipc/ipdl/sync-messages.ini
js/ipc/PJavaScript.ipdl
security/manager/ssl/PSMContentListener.h
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
@@ -39,16 +39,17 @@
 #include "mozilla/BackgroundHangMonitor.h"
 #include "mozilla/Base64.h"
 #include "mozilla/BasePrincipal.h"
 #include "mozilla/CheckedInt.h"
 #include "mozilla/Components.h"
 #include "mozilla/DebugOnly.h"
 #include "mozilla/LoadInfo.h"
 #include "mozilla/dom/BlobURLProtocolHandler.h"
+#include "mozilla/dom/ContentParent.h"
 #include "mozilla/dom/ContentChild.h"
 #include "mozilla/dom/CustomElementRegistry.h"
 #include "mozilla/dom/Document.h"
 #include "mozilla/dom/MessageBroadcaster.h"
 #include "mozilla/dom/DocumentFragment.h"
 #include "mozilla/dom/DOMException.h"
 #include "mozilla/dom/DOMExceptionBinding.h"
 #include "mozilla/dom/DOMTypes.h"
--- a/dom/file/ipc/PIPCBlobInputStream.ipdl
+++ b/dom/file/ipc/PIPCBlobInputStream.ipdl
@@ -1,27 +1,26 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * 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 protocol PBackground;
 include protocol PChildToParentStream;
 include protocol PContent;
-include protocol PContentBridge;
 include protocol PFileDescriptorSet;
 include protocol PParentToChildStream;
 
 include IPCStream;
 
 namespace mozilla {
 namespace ipc {
 
 protocol PIPCBlobInputStream
 {
-  manager PBackground or PContent or PContentBridge;
+  manager PBackground or PContent;
 
 parent:
   async StreamNeeded();
 
   async LengthNeeded();
 
   // When this is called, the parent releases the inputStream and sends a
   // __delete__.
deleted file mode 100644
--- a/dom/ipc/ContentBridgeChild.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * 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/ContentBridgeChild.h"
-#include "mozilla/dom/ContentChild.h"
-#include "mozilla/dom/File.h"
-#include "mozilla/dom/TabChild.h"
-#include "mozilla/dom/TabGroup.h"
-#include "mozilla/jsipc/CrossProcessObjectWrappers.h"
-#include "mozilla/ipc/InputStreamUtils.h"
-#include "base/task.h"
-
-using namespace mozilla::ipc;
-using namespace mozilla::jsipc;
-
-namespace mozilla {
-namespace dom {
-
-NS_IMPL_ISUPPORTS(ContentBridgeChild, nsIContentChild)
-
-ContentBridgeChild::ContentBridgeChild() {}
-
-ContentBridgeChild::~ContentBridgeChild() {}
-
-void ContentBridgeChild::ActorDestroy(ActorDestroyReason aWhy) {
-  MessageLoop::current()->PostTask(
-      NewRunnableMethod("dom::ContentBridgeChild::DeferredDestroy", this,
-                        &ContentBridgeChild::DeferredDestroy));
-}
-
-/*static*/ void ContentBridgeChild::Create(
-    Endpoint<PContentBridgeChild>&& aEndpoint) {
-  RefPtr<ContentBridgeChild> bridge = new ContentBridgeChild();
-  bridge->mSelfRef = bridge;
-
-  DebugOnly<bool> ok = aEndpoint.Bind(bridge);
-  MOZ_ASSERT(ok);
-}
-
-void ContentBridgeChild::DeferredDestroy() {
-  mSelfRef = nullptr;
-  // |this| was just destroyed, hands off
-}
-
-mozilla::ipc::IPCResult ContentBridgeChild::RecvAsyncMessage(
-    const nsString& aMsg, InfallibleTArray<jsipc::CpowEntry>&& aCpows,
-    const IPC::Principal& aPrincipal, const ClonedMessageData& aData) {
-  return nsIContentChild::RecvAsyncMessage(aMsg, std::move(aCpows), aPrincipal,
-                                           aData);
-}
-
-bool ContentBridgeChild::SendPBrowserConstructor(
-    PBrowserChild* aActor, const TabId& aTabId, const TabId& aSameTabGroupAs,
-    const IPCTabContext& aContext, const uint32_t& aChromeFlags,
-    const ContentParentId& aCpID, const bool& aIsForBrowser) {
-  return PContentBridgeChild::SendPBrowserConstructor(
-      aActor, aTabId, aSameTabGroupAs, aContext, aChromeFlags, aCpID,
-      aIsForBrowser);
-}
-
-PFileDescriptorSetChild* ContentBridgeChild::SendPFileDescriptorSetConstructor(
-    const FileDescriptor& aFD) {
-  return PContentBridgeChild::SendPFileDescriptorSetConstructor(aFD);
-}
-
-PChildToParentStreamChild*
-ContentBridgeChild::SendPChildToParentStreamConstructor(
-    PChildToParentStreamChild* aActor) {
-  return PContentBridgeChild::SendPChildToParentStreamConstructor(aActor);
-}
-
-// This implementation is identical to ContentChild::GetCPOWManager but we can't
-// move it to nsIContentChild because it calls ManagedPJavaScriptChild() which
-// only exists in PContentChild and PContentBridgeChild.
-jsipc::CPOWManager* ContentBridgeChild::GetCPOWManager() {
-  if (PJavaScriptChild* c =
-          LoneManagedOrNullAsserts(ManagedPJavaScriptChild())) {
-    return CPOWManagerFor(c);
-  }
-  return CPOWManagerFor(SendPJavaScriptConstructor());
-}
-
-mozilla::jsipc::PJavaScriptChild* ContentBridgeChild::AllocPJavaScriptChild() {
-  return nsIContentChild::AllocPJavaScriptChild();
-}
-
-bool ContentBridgeChild::DeallocPJavaScriptChild(PJavaScriptChild* child) {
-  return nsIContentChild::DeallocPJavaScriptChild(child);
-}
-
-PBrowserChild* ContentBridgeChild::AllocPBrowserChild(
-    const TabId& aTabId, const TabId& aSameTabGroupAs,
-    const IPCTabContext& aContext, const uint32_t& aChromeFlags,
-    const ContentParentId& aCpID, const bool& aIsForBrowser) {
-  return nsIContentChild::AllocPBrowserChild(
-      aTabId, aSameTabGroupAs, aContext, aChromeFlags, aCpID, aIsForBrowser);
-}
-
-bool ContentBridgeChild::DeallocPBrowserChild(PBrowserChild* aChild) {
-  return nsIContentChild::DeallocPBrowserChild(aChild);
-}
-
-mozilla::ipc::IPCResult ContentBridgeChild::RecvPBrowserConstructor(
-    PBrowserChild* aActor, const TabId& aTabId, const TabId& aSameTabGroupAs,
-    const IPCTabContext& aContext, const uint32_t& aChromeFlags,
-    const ContentParentId& aCpID, const bool& aIsForBrowser) {
-  return nsIContentChild::RecvPBrowserConstructor(
-      aActor, aTabId, aSameTabGroupAs, aContext, aChromeFlags, aCpID,
-      aIsForBrowser);
-}
-
-PIPCBlobInputStreamChild* ContentBridgeChild::AllocPIPCBlobInputStreamChild(
-    const nsID& aID, const uint64_t& aSize) {
-  return nsIContentChild::AllocPIPCBlobInputStreamChild(aID, aSize);
-}
-
-bool ContentBridgeChild::DeallocPIPCBlobInputStreamChild(
-    PIPCBlobInputStreamChild* aActor) {
-  return nsIContentChild::DeallocPIPCBlobInputStreamChild(aActor);
-}
-
-PChildToParentStreamChild*
-ContentBridgeChild::AllocPChildToParentStreamChild() {
-  return nsIContentChild::AllocPChildToParentStreamChild();
-}
-
-bool ContentBridgeChild::DeallocPChildToParentStreamChild(
-    PChildToParentStreamChild* aActor) {
-  return nsIContentChild::DeallocPChildToParentStreamChild(aActor);
-}
-
-PParentToChildStreamChild*
-ContentBridgeChild::AllocPParentToChildStreamChild() {
-  return nsIContentChild::AllocPParentToChildStreamChild();
-}
-
-bool ContentBridgeChild::DeallocPParentToChildStreamChild(
-    PParentToChildStreamChild* aActor) {
-  return nsIContentChild::DeallocPParentToChildStreamChild(aActor);
-}
-
-PFileDescriptorSetChild* ContentBridgeChild::AllocPFileDescriptorSetChild(
-    const FileDescriptor& aFD) {
-  return nsIContentChild::AllocPFileDescriptorSetChild(aFD);
-}
-
-bool ContentBridgeChild::DeallocPFileDescriptorSetChild(
-    PFileDescriptorSetChild* aActor) {
-  return nsIContentChild::DeallocPFileDescriptorSetChild(aActor);
-}
-
-mozilla::ipc::IPCResult ContentBridgeChild::RecvActivate(PBrowserChild* aTab) {
-  TabChild* tab = static_cast<TabChild*>(aTab);
-  return tab->RecvActivate();
-}
-
-mozilla::ipc::IPCResult ContentBridgeChild::RecvDeactivate(
-    PBrowserChild* aTab) {
-  TabChild* tab = static_cast<TabChild*>(aTab);
-  return tab->RecvDeactivate();
-}
-
-already_AddRefed<nsIEventTarget> ContentBridgeChild::GetConstructedEventTarget(
-    const Message& aMsg) {
-  // Currently we only set targets for PBrowser.
-  if (aMsg.type() != PContentBridge::Msg_PBrowserConstructor__ID) {
-    return nullptr;
-  }
-
-  return nsIContentChild::GetConstructedEventTarget(aMsg);
-}
-
-already_AddRefed<nsIEventTarget> ContentBridgeChild::GetEventTargetFor(
-    TabChild* aTabChild) {
-  return IToplevelProtocol::GetActorEventTarget(aTabChild);
-}
-
-}  // namespace dom
-}  // namespace mozilla
deleted file mode 100644
--- a/dom/ipc/ContentBridgeChild.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * 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/. */
-
-#ifndef mozilla_dom_ContentBridgeChild_h
-#define mozilla_dom_ContentBridgeChild_h
-
-#include "mozilla/dom/PContentBridgeChild.h"
-#include "mozilla/dom/nsIContentChild.h"
-
-namespace mozilla {
-namespace dom {
-
-class ContentBridgeChild final : public PContentBridgeChild,
-                                 public nsIContentChild {
-  friend class PContentBridgeChild;
-
- public:
-  explicit ContentBridgeChild();
-
-  NS_DECL_ISUPPORTS
-
-  static void Create(Endpoint<PContentBridgeChild>&& aEndpoint);
-
-  virtual void ActorDestroy(ActorDestroyReason aWhy) override;
-  void DeferredDestroy();
-
-  virtual mozilla::ipc::IPCResult RecvAsyncMessage(
-      const nsString& aMsg, InfallibleTArray<jsipc::CpowEntry>&& aCpows,
-      const IPC::Principal& aPrincipal,
-      const ClonedMessageData& aData) override;
-
-  jsipc::CPOWManager* GetCPOWManager() override;
-
-  virtual bool SendPBrowserConstructor(
-      PBrowserChild* aActor, const TabId& aTabId, const TabId& aSameTabGroupAs,
-      const IPCTabContext& aContext, const uint32_t& aChromeFlags,
-      const ContentParentId& aCpID, const bool& aIsForBrowser) override;
-
-  virtual mozilla::ipc::PFileDescriptorSetChild*
-  SendPFileDescriptorSetConstructor(
-      const mozilla::ipc::FileDescriptor&) override;
-
-  virtual mozilla::ipc::PChildToParentStreamChild*
-  SendPChildToParentStreamConstructor(
-      mozilla::ipc::PChildToParentStreamChild*) override;
-
-  mozilla::ipc::IPCResult RecvActivate(PBrowserChild* aTab);
-
-  mozilla::ipc::IPCResult RecvDeactivate(PBrowserChild* aTab);
-
-  virtual already_AddRefed<nsIEventTarget> GetEventTargetFor(
-      TabChild* aTabChild) override;
-
-  FORWARD_SHMEM_ALLOCATOR_TO(PContentBridgeChild)
-
- protected:
-  virtual ~ContentBridgeChild();
-
-  virtual PBrowserChild* AllocPBrowserChild(const TabId& aTabId,
-                                            const TabId& aSameTabGroupAs,
-                                            const IPCTabContext& aContext,
-                                            const uint32_t& aChromeFlags,
-                                            const ContentParentId& aCpID,
-                                            const bool& aIsForBrowser) override;
-  virtual bool DeallocPBrowserChild(PBrowserChild*) override;
-  virtual mozilla::ipc::IPCResult RecvPBrowserConstructor(
-      PBrowserChild* aCctor, const TabId& aTabId, const TabId& aSameTabGroupAs,
-      const IPCTabContext& aContext, const uint32_t& aChromeFlags,
-      const ContentParentId& aCpID, const bool& aIsForBrowser) override;
-
-  virtual mozilla::jsipc::PJavaScriptChild* AllocPJavaScriptChild() override;
-  virtual bool DeallocPJavaScriptChild(
-      mozilla::jsipc::PJavaScriptChild*) override;
-
-  virtual PIPCBlobInputStreamChild* AllocPIPCBlobInputStreamChild(
-      const nsID& aID, const uint64_t& aSize) override;
-
-  virtual bool DeallocPIPCBlobInputStreamChild(
-      PIPCBlobInputStreamChild*) override;
-
-  virtual mozilla::ipc::PChildToParentStreamChild*
-  AllocPChildToParentStreamChild() override;
-
-  virtual bool DeallocPChildToParentStreamChild(
-      mozilla::ipc::PChildToParentStreamChild* aActor) override;
-
-  virtual PParentToChildStreamChild* AllocPParentToChildStreamChild() override;
-
-  virtual bool DeallocPParentToChildStreamChild(
-      PParentToChildStreamChild* aActor) override;
-
-  virtual PFileDescriptorSetChild* AllocPFileDescriptorSetChild(
-      const mozilla::ipc::FileDescriptor& aFD) override;
-
-  virtual bool DeallocPFileDescriptorSetChild(
-      mozilla::ipc::PFileDescriptorSetChild* aActor) override;
-
-  DISALLOW_EVIL_CONSTRUCTORS(ContentBridgeChild);
-
- private:
-  virtual already_AddRefed<nsIEventTarget> GetConstructedEventTarget(
-      const Message& aMsg) override;
-
- protected:  // members
-  RefPtr<ContentBridgeChild> mSelfRef;
-};
-
-}  // namespace dom
-}  // namespace mozilla
-
-#endif  // mozilla_dom_ContentBridgeChild_h
deleted file mode 100644
--- a/dom/ipc/ContentBridgeParent.cpp
+++ /dev/null
@@ -1,204 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * 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/ContentBridgeParent.h"
-#include "mozilla/dom/ProcessMessageManager.h"
-#include "mozilla/dom/TabParent.h"
-#include "mozilla/jsipc/CrossProcessObjectWrappers.h"
-#include "nsXULAppAPI.h"
-#include "nsIObserverService.h"
-#include "base/task.h"
-
-using namespace mozilla::ipc;
-using namespace mozilla::jsipc;
-
-namespace mozilla {
-namespace dom {
-
-NS_IMPL_ISUPPORTS(ContentBridgeParent, nsIContentParent, nsIObserver)
-
-ContentBridgeParent::ContentBridgeParent()
-    : mIsForBrowser(false), mIsForJSPlugin(false) {}
-
-ContentBridgeParent::~ContentBridgeParent() {}
-
-void ContentBridgeParent::ActorDestroy(ActorDestroyReason aWhy) {
-  nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService();
-  if (os) {
-    os->RemoveObserver(this, "content-child-shutdown");
-  }
-  MessageLoop::current()->PostTask(
-      NewRunnableMethod("dom::ContentBridgeParent::DeferredDestroy", this,
-                        &ContentBridgeParent::DeferredDestroy));
-}
-
-/*static*/ ContentBridgeParent* ContentBridgeParent::Create(
-    Endpoint<PContentBridgeParent>&& aEndpoint) {
-  RefPtr<ContentBridgeParent> bridge = new ContentBridgeParent();
-  bridge->mSelfRef = bridge;
-
-  DebugOnly<bool> ok = aEndpoint.Bind(bridge);
-  MOZ_ASSERT(ok);
-
-  nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService();
-  if (os) {
-    os->AddObserver(bridge, "content-child-shutdown", false);
-  }
-
-  // Initialize the message manager (and load delayed scripts) now that we
-  // have established communications with the child.
-  bridge->mMessageManager->InitWithCallback(bridge);
-
-  return bridge.get();
-}
-
-void ContentBridgeParent::DeferredDestroy() {
-  mSelfRef = nullptr;
-  // |this| was just destroyed, hands off
-}
-
-mozilla::ipc::IPCResult ContentBridgeParent::RecvSyncMessage(
-    const nsString& aMsg, const ClonedMessageData& aData,
-    InfallibleTArray<jsipc::CpowEntry>&& aCpows,
-    const IPC::Principal& aPrincipal, nsTArray<StructuredCloneData>* aRetvals) {
-  return nsIContentParent::RecvSyncMessage(aMsg, aData, std::move(aCpows),
-                                           aPrincipal, aRetvals);
-}
-
-mozilla::ipc::IPCResult ContentBridgeParent::RecvAsyncMessage(
-    const nsString& aMsg, InfallibleTArray<jsipc::CpowEntry>&& aCpows,
-    const IPC::Principal& aPrincipal, const ClonedMessageData& aData) {
-  return nsIContentParent::RecvAsyncMessage(aMsg, std::move(aCpows), aPrincipal,
-                                            aData);
-}
-
-PBrowserParent* ContentBridgeParent::SendPBrowserConstructor(
-    PBrowserParent* aActor, const TabId& aTabId, const TabId& aSameTabGroupAs,
-    const IPCTabContext& aContext, const uint32_t& aChromeFlags,
-    const ContentParentId& aCpID, const bool& aIsForBrowser) {
-  return PContentBridgeParent::SendPBrowserConstructor(
-      aActor, aTabId, aSameTabGroupAs, aContext, aChromeFlags, aCpID,
-      aIsForBrowser);
-}
-
-PParentToChildStreamParent*
-ContentBridgeParent::SendPParentToChildStreamConstructor(
-    PParentToChildStreamParent* aActor) {
-  return PContentBridgeParent::SendPParentToChildStreamConstructor(aActor);
-}
-
-PIPCBlobInputStreamParent*
-ContentBridgeParent::SendPIPCBlobInputStreamConstructor(
-    PIPCBlobInputStreamParent* aActor, const nsID& aID, const uint64_t& aSize) {
-  return PContentBridgeParent::SendPIPCBlobInputStreamConstructor(aActor, aID,
-                                                                  aSize);
-}
-
-PIPCBlobInputStreamParent* ContentBridgeParent::AllocPIPCBlobInputStreamParent(
-    const nsID& aID, const uint64_t& aSize) {
-  return nsIContentParent::AllocPIPCBlobInputStreamParent(aID, aSize);
-}
-
-bool ContentBridgeParent::DeallocPIPCBlobInputStreamParent(
-    PIPCBlobInputStreamParent* aActor) {
-  return nsIContentParent::DeallocPIPCBlobInputStreamParent(aActor);
-}
-
-mozilla::jsipc::PJavaScriptParent*
-ContentBridgeParent::AllocPJavaScriptParent() {
-  return nsIContentParent::AllocPJavaScriptParent();
-}
-
-bool ContentBridgeParent::DeallocPJavaScriptParent(PJavaScriptParent* parent) {
-  return nsIContentParent::DeallocPJavaScriptParent(parent);
-}
-
-PBrowserParent* ContentBridgeParent::AllocPBrowserParent(
-    const TabId& aTabId, const TabId& aSameTabGroupAs,
-    const IPCTabContext& aContext, const uint32_t& aChromeFlags,
-    const ContentParentId& aCpID, const bool& aIsForBrowser) {
-  return nsIContentParent::AllocPBrowserParent(
-      aTabId, aSameTabGroupAs, aContext, aChromeFlags, aCpID, aIsForBrowser);
-}
-
-bool ContentBridgeParent::DeallocPBrowserParent(PBrowserParent* aParent) {
-  return nsIContentParent::DeallocPBrowserParent(aParent);
-}
-
-mozilla::ipc::IPCResult ContentBridgeParent::RecvPBrowserConstructor(
-    PBrowserParent* actor, const TabId& tabId, const TabId& sameTabGroupAs,
-    const IPCTabContext& context, const uint32_t& chromeFlags,
-    const ContentParentId& cpId, const bool& isForBrowser) {
-  return nsIContentParent::RecvPBrowserConstructor(
-      actor, tabId, sameTabGroupAs, context, chromeFlags, cpId, isForBrowser);
-}
-
-void ContentBridgeParent::NotifyTabDestroyed() {
-  int32_t numLiveTabs = ManagedPBrowserParent().Count();
-  if (numLiveTabs == 1) {
-    MessageLoop::current()->PostTask(NewRunnableMethod(
-        "dom::ContentBridgeParent::Close", this, &ContentBridgeParent::Close));
-  }
-}
-
-// This implementation is identical to ContentParent::GetCPOWManager but we
-// can't move it to nsIContentParent because it calls ManagedPJavaScriptParent()
-// which only exists in PContentParent and PContentBridgeParent.
-jsipc::CPOWManager* ContentBridgeParent::GetCPOWManager() {
-  if (PJavaScriptParent* p =
-          LoneManagedOrNullAsserts(ManagedPJavaScriptParent())) {
-    return CPOWManagerFor(p);
-  }
-  return nullptr;
-}
-
-NS_IMETHODIMP
-ContentBridgeParent::Observe(nsISupports* aSubject, const char* aTopic,
-                             const char16_t* aData) {
-  if (!strcmp(aTopic, "content-child-shutdown")) {
-    Close();
-  }
-  return NS_OK;
-}
-
-PFileDescriptorSetParent*
-ContentBridgeParent::SendPFileDescriptorSetConstructor(
-    const FileDescriptor& aFD) {
-  return PContentBridgeParent::SendPFileDescriptorSetConstructor(aFD);
-}
-
-PFileDescriptorSetParent* ContentBridgeParent::AllocPFileDescriptorSetParent(
-    const FileDescriptor& aFD) {
-  return nsIContentParent::AllocPFileDescriptorSetParent(aFD);
-}
-
-bool ContentBridgeParent::DeallocPFileDescriptorSetParent(
-    PFileDescriptorSetParent* aActor) {
-  return nsIContentParent::DeallocPFileDescriptorSetParent(aActor);
-}
-
-PChildToParentStreamParent*
-ContentBridgeParent::AllocPChildToParentStreamParent() {
-  return nsIContentParent::AllocPChildToParentStreamParent();
-}
-
-bool ContentBridgeParent::DeallocPChildToParentStreamParent(
-    PChildToParentStreamParent* aActor) {
-  return nsIContentParent::DeallocPChildToParentStreamParent(aActor);
-}
-
-PParentToChildStreamParent*
-ContentBridgeParent::AllocPParentToChildStreamParent() {
-  return nsIContentParent::AllocPParentToChildStreamParent();
-}
-
-bool ContentBridgeParent::DeallocPParentToChildStreamParent(
-    PParentToChildStreamParent* aActor) {
-  return nsIContentParent::DeallocPParentToChildStreamParent(aActor);
-}
-
-}  // namespace dom
-}  // namespace mozilla
deleted file mode 100644
--- a/dom/ipc/ContentBridgeParent.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * 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/. */
-
-#ifndef mozilla_dom_ContentBridgeParent_h
-#define mozilla_dom_ContentBridgeParent_h
-
-#include "mozilla/dom/PContentBridgeParent.h"
-#include "mozilla/dom/nsIContentParent.h"
-#include "mozilla/dom/ipc/IdType.h"
-#include "nsIObserver.h"
-
-namespace mozilla {
-namespace dom {
-
-class ContentBridgeParent : public PContentBridgeParent,
-                            public nsIContentParent,
-                            public nsIObserver {
-  friend class PContentBridgeParent;
-
- public:
-  explicit ContentBridgeParent();
-
-  NS_DECL_ISUPPORTS
-  NS_DECL_NSIOBSERVER
-
-  virtual void ActorDestroy(ActorDestroyReason aWhy) override;
-  void DeferredDestroy();
-  virtual bool IsContentBridgeParent() const override { return true; }
-  void NotifyTabDestroyed();
-
-  static ContentBridgeParent* Create(
-      Endpoint<PContentBridgeParent>&& aEndpoint);
-
-  virtual PBrowserParent* SendPBrowserConstructor(
-      PBrowserParent* aActor, const TabId& aTabId, const TabId& aSameTabGroupAs,
-      const IPCTabContext& aContext, const uint32_t& aChromeFlags,
-      const ContentParentId& aCpID, const bool& aIsForBrowser) override;
-
-  virtual PFileDescriptorSetParent* SendPFileDescriptorSetConstructor(
-      const FileDescriptor&) override;
-
-  FORWARD_SHMEM_ALLOCATOR_TO(PContentBridgeParent)
-
-  jsipc::CPOWManager* GetCPOWManager() override;
-
-  virtual ContentParentId ChildID() const override { return mChildID; }
-  virtual bool IsForBrowser() const override { return mIsForBrowser; }
-  virtual int32_t Pid() const override {
-    // XXX: do we need this for ContentBridgeParent?
-    return -1;
-  }
-  virtual bool IsForJSPlugin() const override { return mIsForJSPlugin; }
-
-  virtual mozilla::ipc::PParentToChildStreamParent*
-  SendPParentToChildStreamConstructor(
-      mozilla::ipc::PParentToChildStreamParent*) override;
-
-  virtual bool SendActivate(PBrowserParent* aTab) override {
-    return PContentBridgeParent::SendActivate(aTab);
-  }
-
-  virtual bool SendDeactivate(PBrowserParent* aTab) override {
-    return PContentBridgeParent::SendDeactivate(aTab);
-  }
-
- protected:
-  virtual ~ContentBridgeParent();
-
-  void SetChildID(ContentParentId aId) { mChildID = aId; }
-
-  void SetIsForBrowser(bool aIsForBrowser) { mIsForBrowser = aIsForBrowser; }
-  void SetIsForJSPlugin(bool aIsForJSPlugin) {
-    mIsForJSPlugin = aIsForJSPlugin;
-  }
-
-  void Close() {
-    // Trick NewRunnableMethod
-    PContentBridgeParent::Close();
-  }
-
- protected:
-  virtual mozilla::ipc::IPCResult RecvSyncMessage(
-      const nsString& aMsg, const ClonedMessageData& aData,
-      InfallibleTArray<jsipc::CpowEntry>&& aCpows,
-      const IPC::Principal& aPrincipal,
-      nsTArray<StructuredCloneData>* aRetvals) override;
-
-  virtual mozilla::ipc::IPCResult RecvAsyncMessage(
-      const nsString& aMsg, InfallibleTArray<jsipc::CpowEntry>&& aCpows,
-      const IPC::Principal& aPrincipal,
-      const ClonedMessageData& aData) override;
-
-  virtual jsipc::PJavaScriptParent* AllocPJavaScriptParent() override;
-
-  virtual bool DeallocPJavaScriptParent(jsipc::PJavaScriptParent*) override;
-
-  virtual PBrowserParent* AllocPBrowserParent(
-      const TabId& aTabId, const TabId& aSameTabGroupAs,
-      const IPCTabContext& aContext, const uint32_t& aChromeFlags,
-      const ContentParentId& aCpID, const bool& aIsForBrowser) override;
-
-  virtual bool DeallocPBrowserParent(PBrowserParent*) override;
-
-  virtual mozilla::ipc::IPCResult RecvPBrowserConstructor(
-      PBrowserParent* actor, const TabId& tabId, const TabId& sameTabGroupAs,
-      const IPCTabContext& context, const uint32_t& chromeFlags,
-      const ContentParentId& cpId, const bool& isForBrowser) override;
-
-  virtual PIPCBlobInputStreamParent* SendPIPCBlobInputStreamConstructor(
-      PIPCBlobInputStreamParent* aActor, const nsID& aID,
-      const uint64_t& aSize) override;
-
-  virtual PIPCBlobInputStreamParent* AllocPIPCBlobInputStreamParent(
-      const nsID& aID, const uint64_t& aSize) override;
-
-  virtual bool DeallocPIPCBlobInputStreamParent(
-      PIPCBlobInputStreamParent*) override;
-
-  virtual PChildToParentStreamParent* AllocPChildToParentStreamParent()
-      override;
-
-  virtual bool DeallocPChildToParentStreamParent(
-      PChildToParentStreamParent* aActor) override;
-
-  virtual mozilla::ipc::PParentToChildStreamParent*
-  AllocPParentToChildStreamParent() override;
-
-  virtual bool DeallocPParentToChildStreamParent(
-      mozilla::ipc::PParentToChildStreamParent* aActor) override;
-
-  virtual PFileDescriptorSetParent* AllocPFileDescriptorSetParent(
-      const mozilla::ipc::FileDescriptor&) override;
-
-  virtual bool DeallocPFileDescriptorSetParent(
-      PFileDescriptorSetParent*) override;
-
-  DISALLOW_EVIL_CONSTRUCTORS(ContentBridgeParent);
-
- protected:  // members
-  RefPtr<ContentBridgeParent> mSelfRef;
-  ContentParentId mChildID;
-  bool mIsForBrowser;
-  bool mIsForJSPlugin;
-
- private:
-  friend class ContentParent;
-};
-
-}  // namespace dom
-}  // namespace mozilla
-
-#endif  // mozilla_dom_ContentBridgeParent_h
--- a/dom/ipc/ContentChild.cpp
+++ b/dom/ipc/ContentChild.cpp
@@ -26,18 +26,16 @@
 #include "mozilla/StaticPrefs.h"
 #include "mozilla/TelemetryIPC.h"
 #include "mozilla/VideoDecoderManagerChild.h"
 #include "mozilla/devtools/HeapSnapshotTempFileHelperChild.h"
 #include "mozilla/docshell/OfflineCacheUpdateChild.h"
 #include "mozilla/dom/ClientManager.h"
 #include "mozilla/dom/ClientOpenWindowOpActors.h"
 #include "mozilla/dom/ChildProcessMessageManager.h"
-#include "mozilla/dom/ContentBridgeChild.h"
-#include "mozilla/dom/ContentBridgeParent.h"
 #include "mozilla/dom/ContentProcessMessageManager.h"
 #include "mozilla/dom/DOMPrefs.h"
 #include "mozilla/dom/ContentParent.h"
 #include "mozilla/dom/DataTransfer.h"
 #include "mozilla/dom/DocGroup.h"
 #include "mozilla/dom/ExternalHelperAppChild.h"
 #include "mozilla/dom/FileCreatorHelper.h"
 #include "mozilla/dom/GetFilesHelper.h"
@@ -1311,22 +1309,16 @@ mozilla::ipc::IPCResult ContentChild::Re
 
 bool ContentChild::DeallocPCycleCollectWithLogsChild(
     PCycleCollectWithLogsChild* aActor) {
   RefPtr<CycleCollectWithLogsChild> actor =
       dont_AddRef(static_cast<CycleCollectWithLogsChild*>(aActor));
   return true;
 }
 
-mozilla::ipc::IPCResult ContentChild::RecvInitContentBridgeChild(
-    Endpoint<PContentBridgeChild>&& aEndpoint) {
-  ContentBridgeChild::Create(std::move(aEndpoint));
-  return IPC_OK();
-}
-
 mozilla::ipc::IPCResult ContentChild::RecvInitGMPService(
     Endpoint<PGMPServiceChild>&& aGMPService) {
   if (!GMPServiceChild::Create(std::move(aGMPService))) {
     return IPC_FAIL_NO_REASON(this);
   }
   return IPC_OK();
 }
 
@@ -3846,9 +3838,9 @@ nsresult GetRepoDir(nsIFile** aRepoDir) 
 }
 
 nsresult GetObjDir(nsIFile** aObjDir) {
   MOZ_ASSERT(IsDevelopmentBuild());
   return GetDirFromBundlePlist(NS_LITERAL_STRING(MAC_DEV_OBJ_KEY), aObjDir);
 }
 #endif /* XP_MACOSX */
 
-}  // namespace mozilla
+}  // namespace mozilla
\ No newline at end of file
--- a/dom/ipc/ContentChild.h
+++ b/dom/ipc/ContentChild.h
@@ -4,17 +4,16 @@
  * 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/. */
 
 #ifndef mozilla_dom_ContentChild_h
 #define mozilla_dom_ContentChild_h
 
 #include "mozilla/Atomics.h"
 #include "mozilla/Attributes.h"
-#include "mozilla/dom/ContentBridgeParent.h"
 #include "mozilla/dom/nsIContentChild.h"
 #include "mozilla/dom/PBrowserOrId.h"
 #include "mozilla/dom/PContentChild.h"
 #include "mozilla/StaticPtr.h"
 #include "nsAutoPtr.h"
 #include "nsHashKeys.h"
 #include "nsIObserver.h"
 #include "nsTHashtable.h"
@@ -151,19 +150,16 @@ class ContentChild final : public PConte
   bool IsShuttingDown() const;
 
   ipc::SharedMap* SharedData() { return mSharedData; };
 
   static void AppendProcessId(nsACString& aName);
 
   static void UpdateCookieStatus(nsIChannel* aChannel);
 
-  mozilla::ipc::IPCResult RecvInitContentBridgeChild(
-      Endpoint<PContentBridgeChild>&& aEndpoint);
-
   mozilla::ipc::IPCResult RecvInitGMPService(
       Endpoint<PGMPServiceChild>&& aGMPService);
 
   mozilla::ipc::IPCResult RecvInitProfiler(
       Endpoint<PProfilerChild>&& aEndpoint);
 
   mozilla::ipc::IPCResult RecvGMPsChanged(
       nsTArray<GMPCapabilityData>&& capabilities);
@@ -821,9 +817,9 @@ class ContentChild final : public PConte
   DISALLOW_EVIL_CONSTRUCTORS(ContentChild);
 };
 
 uint64_t NextWindowID();
 
 }  // namespace dom
 }  // namespace mozilla
 
-#endif  // mozilla_dom_ContentChild_h
+#endif  // mozilla_dom_ContentChild_h
\ No newline at end of file
--- a/dom/ipc/ContentParent.cpp
+++ b/dom/ipc/ContentParent.cpp
@@ -38,30 +38,30 @@
 #include "mozilla/DataStorage.h"
 #include "mozilla/devtools/HeapSnapshotTempFileHelperParent.h"
 #include "mozilla/docshell/OfflineCacheUpdateParent.h"
 #include "mozilla/dom/BrowsingContext.h"
 #include "mozilla/dom/BrowsingContextGroup.h"
 #include "mozilla/dom/CanonicalBrowsingContext.h"
 #include "mozilla/dom/ClientManager.h"
 #include "mozilla/dom/ClientOpenWindowOpActors.h"
+#include "mozilla/dom/ContentChild.h"
 #include "mozilla/dom/DataTransfer.h"
 #include "mozilla/dom/Element.h"
 #include "mozilla/dom/File.h"
 #include "mozilla/dom/FileCreatorHelper.h"
 #include "mozilla/dom/FileSystemSecurity.h"
 #include "mozilla/dom/IPCBlobUtils.h"
 #include "mozilla/dom/ExternalHelperAppParent.h"
 #include "mozilla/dom/GetFilesHelper.h"
 #include "mozilla/dom/GeolocationBinding.h"
 #include "mozilla/dom/JSWindowActorService.h"
 #include "mozilla/dom/LocalStorageCommon.h"
 #include "mozilla/dom/MemoryReportRequest.h"
 #include "mozilla/dom/Notification.h"
-#include "mozilla/dom/PContentBridgeParent.h"
 #include "mozilla/dom/PContentPermissionRequestParent.h"
 #include "mozilla/dom/PCycleCollectWithLogsParent.h"
 #include "mozilla/dom/PositionError.h"
 #include "mozilla/dom/ServiceWorkerRegistrar.h"
 #include "mozilla/dom/power/PowerManagerService.h"
 #include "mozilla/dom/Permissions.h"
 #include "mozilla/dom/PresentationParent.h"
 #include "mozilla/dom/PPresentationParent.h"
@@ -945,105 +945,16 @@ extern const wchar_t* kPluginWidgetConte
   ContentParent* cp = reinterpret_cast<ContentParent*>(
       ::GetPropW(hwnd, kPluginWidgetContentParentProperty));
   if (cp && !cp->IsDestroyed()) {
     Unused << cp->SendUpdateWindow((uintptr_t)hwnd);
   }
 }
 #endif  // defined(XP_WIN)
 
-mozilla::ipc::IPCResult ContentParent::RecvCreateChildProcess(
-    const IPCTabContext& aContext, const hal::ProcessPriority& aPriority,
-    const TabId& aOpenerTabId, const TabId& aTabId, ContentParentId* aCpId,
-    bool* aIsForBrowser) {
-#if 0
-  if (!CanOpenBrowser(aContext)) {
-      return false;
-  }
-#endif
-  RefPtr<ContentParent> cp;
-  MaybeInvalidTabContext tc(aContext);
-  if (!tc.IsValid()) {
-    NS_ERROR(nsPrintfCString("Received an invalid TabContext from "
-                             "the child process. (%s)",
-                             tc.GetInvalidReason())
-                 .get());
-    return IPC_FAIL_NO_REASON(this);
-  }
-
-  if (tc.GetTabContext().IsJSPlugin()) {
-    cp =
-        GetNewOrUsedJSPluginProcess(tc.GetTabContext().JSPluginId(), aPriority);
-  } else {
-    cp = GetNewOrUsedBrowserProcess(
-        nullptr, NS_LITERAL_STRING(DEFAULT_REMOTE_TYPE), aPriority, this);
-  }
-
-  if (!cp) {
-    *aCpId = 0;
-    *aIsForBrowser = false;
-    return IPC_OK();
-  }
-
-  *aCpId = cp->ChildID();
-  *aIsForBrowser = cp->IsForBrowser();
-
-  ContentProcessManager* cpm = ContentProcessManager::GetSingleton();
-  if (cp->IsForJSPlugin()) {
-    // We group all the iframes for a specific JS plugin into one process,
-    // regardless of origin. As a consequence that process can't be a child of
-    // the content process that contains the document with the element loading
-    // the plugin. All content processes need to be able to communicate with the
-    // process for the JS plugin.
-    cpm->RegisterRemoteFrame(aTabId, ChildID(), aOpenerTabId, aContext,
-                             cp->ChildID());
-    return IPC_OK();
-  }
-
-  // cp was already added to the ContentProcessManager, this just sets the
-  // parent ID.
-  cpm->AddContentProcess(cp, this->ChildID());
-
-  if (cpm->AddGrandchildProcess(this->ChildID(), cp->ChildID()) &&
-      cpm->RegisterRemoteFrame(aTabId, ChildID(), aOpenerTabId, aContext,
-                               cp->ChildID())) {
-    return IPC_OK();
-  }
-
-  return IPC_FAIL_NO_REASON(this);
-}
-
-mozilla::ipc::IPCResult ContentParent::RecvBridgeToChildProcess(
-    const ContentParentId& aCpId, Endpoint<PContentBridgeParent>* aEndpoint) {
-  ContentProcessManager* cpm = ContentProcessManager::GetSingleton();
-  ContentParent* cp = cpm->GetContentProcessById(aCpId);
-
-  if (cp && cp->CanCommunicateWith(ChildID())) {
-    Endpoint<PContentBridgeParent> parent;
-    Endpoint<PContentBridgeChild> child;
-
-    if (NS_FAILED(PContentBridge::CreateEndpoints(OtherPid(), cp->OtherPid(),
-                                                  &parent, &child))) {
-      return IPC_FAIL(this, "CreateEndpoints failed");
-    }
-
-    *aEndpoint = std::move(parent);
-
-    if (!cp->SendInitContentBridgeChild(std::move(child))) {
-      return IPC_FAIL(this, "SendInitContentBridgeChild failed");
-    }
-
-    return IPC_OK();
-  }
-
-  // You can't bridge to a process you didn't open!
-  KillHard("BridgeToChildProcess");
-  return IPC_FAIL_NO_REASON(this);
-}
-
 static nsIDocShell* GetOpenerDocShellHelper(Element* aFrameElement) {
   // Propagate the private-browsing status of the element's parent
   // docshell to the remote docshell, via the chrome flags.
   MOZ_ASSERT(aFrameElement);
   nsPIDOMWindowOuter* win = aFrameElement->OwnerDoc()->GetWindow();
   if (!win) {
     NS_WARNING("Remote frame has no window");
     return nullptr;
@@ -1170,58 +1081,53 @@ mozilla::ipc::IPCResult ContentParent::R
       MOZ_ASSERT(!parent->GetOwnerElement(),
                  "Shouldn't have an owner elemnt before");
       parent->SetOwnerElement(aFrameElement);
       return parent;
     }
   }
 
   ProcessPriority initialPriority = GetInitialProcessPriority(aFrameElement);
-  bool isInContentProcess = !XRE_IsParentProcess();
   TabId tabId(nsContentUtils::GenerateTabId());
 
   nsIDocShell* docShell = GetOpenerDocShellHelper(aFrameElement);
   TabId openerTabId;
   if (docShell) {
     openerTabId = TabParent::GetTabIdFrom(docShell);
   }
 
   bool isPreloadBrowser = false;
   nsAutoString isPreloadBrowserStr;
   if (aFrameElement->GetAttr(kNameSpaceID_None, nsGkAtoms::preloadedState,
                              isPreloadBrowserStr)) {
     isPreloadBrowser = isPreloadBrowserStr.EqualsLiteral("preloaded");
   }
 
   RefPtr<nsIContentParent> constructorSender;
-  if (isInContentProcess) {
-    MOZ_ASSERT(aContext.IsMozBrowserElement() || aContext.IsJSPlugin());
-    constructorSender = CreateContentBridgeParent(aContext, initialPriority,
-                                                  openerTabId, tabId);
+  MOZ_RELEASE_ASSERT(XRE_IsParentProcess(), "Cannot allocate TabParent in content process");
+  if (aOpenerContentParent) {
+    constructorSender = aOpenerContentParent;
   } else {
-    if (aOpenerContentParent) {
-      constructorSender = aOpenerContentParent;
+    if (aContext.IsJSPlugin()) {
+      constructorSender =
+          GetNewOrUsedJSPluginProcess(aContext.JSPluginId(), initialPriority);
     } else {
-      if (aContext.IsJSPlugin()) {
-        constructorSender =
-            GetNewOrUsedJSPluginProcess(aContext.JSPluginId(), initialPriority);
-      } else {
-        constructorSender = GetNewOrUsedBrowserProcess(
-            aFrameElement, remoteType, initialPriority, nullptr,
-            isPreloadBrowser);
-      }
-      if (!constructorSender) {
-        return nullptr;
-      }
+      constructorSender = GetNewOrUsedBrowserProcess(
+          aFrameElement, remoteType, initialPriority, nullptr,
+          isPreloadBrowser);
+    }
+    if (!constructorSender) {
+      return nullptr;
     }
-    ContentProcessManager* cpm = ContentProcessManager::GetSingleton();
-    cpm->RegisterRemoteFrame(tabId, ContentParentId(0), openerTabId,
-                             aContext.AsIPCTabContext(),
-                             constructorSender->ChildID());
-  }
+  }
+  ContentProcessManager* cpm = ContentProcessManager::GetSingleton();
+  cpm->RegisterRemoteFrame(tabId, ContentParentId(0), openerTabId,
+                            aContext.AsIPCTabContext(),
+                            constructorSender->ChildID());
+
   if (constructorSender) {
     nsCOMPtr<nsIDocShellTreeOwner> treeOwner;
     docShell->GetTreeOwner(getter_AddRefs(treeOwner));
     if (!treeOwner) {
       return nullptr;
     }
 
     nsCOMPtr<nsIWebBrowserChrome> wbc = do_GetInterface(treeOwner);
@@ -1262,44 +1168,16 @@ mozilla::ipc::IPCResult ContentParent::R
       RefPtr<TabParent> constructedTabParent = TabParent::GetFrom(browser);
       constructedTabParent->SetOwnerElement(aFrameElement);
       return constructedTabParent;
     }
   }
   return nullptr;
 }
 
-/*static*/ ContentBridgeParent* ContentParent::CreateContentBridgeParent(
-    const TabContext& aContext, const hal::ProcessPriority& aPriority,
-    const TabId& aOpenerTabId, const TabId& aTabId) {
-  MOZ_ASSERT(aTabId);
-
-  ContentChild* child = ContentChild::GetSingleton();
-  ContentParentId cpId;
-  bool isForBrowser;
-  if (!child->SendCreateChildProcess(aContext.AsIPCTabContext(), aPriority,
-                                     aOpenerTabId, aTabId, &cpId,
-                                     &isForBrowser)) {
-    return nullptr;
-  }
-  if (cpId == 0) {
-    return nullptr;
-  }
-  Endpoint<PContentBridgeParent> endpoint;
-  if (!child->SendBridgeToChildProcess(cpId, &endpoint)) {
-    return nullptr;
-  }
-  ContentBridgeParent* parent =
-      ContentBridgeParent::Create(std::move(endpoint));
-  parent->SetChildID(cpId);
-  parent->SetIsForBrowser(isForBrowser);
-  parent->SetIsForJSPlugin(aContext.IsJSPlugin());
-  return parent;
-}
-
 void ContentParent::GetAll(nsTArray<ContentParent*>& aArray) {
   aArray.Clear();
 
   for (auto* cp : AllProcesses(eLive)) {
     aArray.AppendElement(cp);
   }
 }
 
@@ -5511,30 +5389,16 @@ mozilla::ipc::IPCResult ContentParent::R
 
   if (!SendFileCreationResponse(aID, FileCreationSuccessResult(ipcBlob))) {
     return IPC_FAIL_NO_REASON(this);
   }
 
   return IPC_OK();
 }
 
-bool ContentParent::CanCommunicateWith(ContentParentId aOtherProcess) {
-  // Normally a process can only communicate with its parent, but a JS plugin
-  // process can communicate with any process.
-  ContentProcessManager* cpm = ContentProcessManager::GetSingleton();
-  ContentParentId parentId;
-  if (!cpm->GetParentProcessId(ChildID(), &parentId)) {
-    return false;
-  }
-  if (IsForJSPlugin()) {
-    return parentId == ContentParentId(0);
-  }
-  return parentId == aOtherProcess;
-}
-
 nsresult ContentParent::SaveRecording(nsIFile* aFile, bool* aRetval) {
   if (mRecordReplayState != eRecording) {
     *aRetval = false;
     return NS_OK;
   }
 
   PRFileDesc* prfd;
   nsresult rv = aFile->OpenNSPRFileDesc(
@@ -5863,9 +5727,9 @@ mozilla::ipc::IPCResult ContentParent::R
 NS_IMPL_ISUPPORTS(ParentIdleListener, nsIObserver)
 
 NS_IMETHODIMP
 ParentIdleListener::Observe(nsISupports*, const char* aTopic,
                             const char16_t* aData) {
   mozilla::Unused << mParent->SendNotifyIdleObserver(
       mObserver, nsDependentCString(aTopic), nsDependentString(aData));
   return NS_OK;
-}
+}
\ No newline at end of file
--- a/dom/ipc/ContentParent.h
+++ b/dom/ipc/ContentParent.h
@@ -98,17 +98,16 @@ struct TextureFactoryIdentifier;
 namespace dom {
 
 class BrowsingContextGroup;
 class Element;
 class TabParent;
 class ClonedMessageData;
 class MemoryReport;
 class TabContext;
-class ContentBridgeParent;
 class GetFilesHelper;
 class MemoryReportRequestHost;
 
 class ContentParent final : public PContentParent,
                             public nsIContentParent,
                             public nsIObserver,
                             public nsIDOMGeoPositionCallback,
                             public nsIDOMGeoPositionErrorCallback,
@@ -275,24 +274,16 @@ class ContentParent final : public PCont
    *           this plugin window.
    */
   static void SendAsyncUpdate(nsIWidget* aWidget);
 #endif
 
   // Let managees query if it is safe to send messages.
   bool IsDestroyed() const { return !mIPCOpen; }
 
-  mozilla::ipc::IPCResult RecvCreateChildProcess(
-      const IPCTabContext& aContext, const hal::ProcessPriority& aPriority,
-      const TabId& aOpenerTabId, const TabId& aTabId, ContentParentId* aCpId,
-      bool* aIsForBrowser);
-
-  mozilla::ipc::IPCResult RecvBridgeToChildProcess(
-      const ContentParentId& aCpId, Endpoint<PContentBridgeParent>* aEndpoint);
-
   mozilla::ipc::IPCResult RecvOpenRecordReplayChannel(
       const uint32_t& channelId, FileDescriptor* connection);
   mozilla::ipc::IPCResult RecvCreateReplayingProcess(
       const uint32_t& aChannelId);
 
   mozilla::ipc::IPCResult RecvCreateGMPService();
 
   mozilla::ipc::IPCResult RecvLoadPlugin(
@@ -663,20 +654,16 @@ class ContentParent final : public PCont
    */
   static nsClassHashtable<nsStringHashKey, nsTArray<ContentParent*>>*
       sBrowserContentParents;
   static nsTArray<ContentParent*>* sPrivateContent;
   static nsDataHashtable<nsUint32HashKey, ContentParent*>*
       sJSPluginContentParents;
   static StaticAutoPtr<LinkedList<ContentParent>> sContentParents;
 
-  static ContentBridgeParent* CreateContentBridgeParent(
-      const TabContext& aContext, const hal::ProcessPriority& aPriority,
-      const TabId& aOpenerTabId, const TabId& aTabId);
-
 #if defined(XP_MACOSX) && defined(MOZ_CONTENT_SANDBOX)
   // Cached Mac sandbox params used when launching content processes.
   static StaticAutoPtr<std::vector<std::string>> sMacSandboxParams;
 #endif
 
   // Hide the raw constructor methods since we don't want client code
   // using them.
   virtual PBrowserParent* SendPBrowserConstructor(
@@ -1184,18 +1171,16 @@ class ContentParent final : public PCont
   void SendGetFilesResponseAndForget(const nsID& aID,
                                      const GetFilesResponseResult& aResult);
 
   bool SendRequestMemoryReport(const uint32_t& aGeneration,
                                const bool& aAnonymize,
                                const bool& aMinimizeMemoryUsage,
                                const MaybeFileDesc& aDMDFile) override;
 
-  bool CanCommunicateWith(ContentParentId aOtherProcess);
-
   nsresult SaveRecording(nsIFile* aFile, bool* aRetval);
 
   bool IsRecordingOrReplaying() const {
     return mRecordReplayState != eNotRecordingOrReplaying;
   }
 
   void OnBrowsingContextGroupSubscribe(BrowsingContextGroup* aGroup);
   void OnBrowsingContextGroupUnsubscribe(BrowsingContextGroup* aGroup);
--- a/dom/ipc/ContentProcessManager.cpp
+++ b/dom/ipc/ContentProcessManager.cpp
@@ -63,29 +63,16 @@ void ContentProcessManager::RemoveConten
   for (auto iter = mContentParentMap.begin(); iter != mContentParentMap.end();
        ++iter) {
     if (!iter->second.mChildrenCpId.empty()) {
       iter->second.mChildrenCpId.erase(aChildCpId);
     }
   }
 }
 
-bool ContentProcessManager::AddGrandchildProcess(
-    const ContentParentId& aParentCpId, const ContentParentId& aChildCpId) {
-  MOZ_ASSERT(NS_IsMainThread());
-
-  auto iter = mContentParentMap.find(aParentCpId);
-  if (NS_WARN_IF(iter == mContentParentMap.end())) {
-    ASSERT_UNLESS_FUZZING("Parent process should be already in map!");
-    return false;
-  }
-  iter->second.mChildrenCpId.insert(aChildCpId);
-  return true;
-}
-
 bool ContentProcessManager::GetParentProcessId(
     const ContentParentId& aChildCpId,
     /*out*/ ContentParentId* aParentCpId) {
   MOZ_ASSERT(NS_IsMainThread());
 
   auto iter = mContentParentMap.find(aChildCpId);
   if (NS_WARN_IF(iter == mContentParentMap.end())) {
     ASSERT_UNLESS_FUZZING();
--- a/dom/ipc/ContentProcessManager.h
+++ b/dom/ipc/ContentProcessManager.h
@@ -43,22 +43,16 @@ class ContentProcessManager final {
   void AddContentProcess(
       ContentParent* aChildCp,
       const ContentParentId& aParentCpId = ContentParentId(0));
   /**
    * Remove the content process by id.
    */
   void RemoveContentProcess(const ContentParentId& aChildCpId);
   /**
-   * Add a grandchild content process into the map.
-   * aParentCpId must be already added in the map by AddContentProcess().
-   */
-  bool AddGrandchildProcess(const ContentParentId& aParentCpId,
-                            const ContentParentId& aChildCpId);
-  /**
    * Get the parent process's id by child process's id.
    * Used to check if a child really belongs to the parent.
    */
   bool GetParentProcessId(const ContentParentId& aChildCpId,
                           /*out*/ ContentParentId* aParentCpId);
   /**
    * Return the ContentParent pointer by id.
    */
--- a/dom/ipc/PBrowser.ipdl
+++ b/dom/ipc/PBrowser.ipdl
@@ -2,17 +2,16 @@
 /* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
 
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * 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 protocol PColorPicker;
 include protocol PContent;
-include protocol PContentBridge;
 include protocol PDocAccessible;
 include protocol PFilePicker;
 include protocol PIndexedDBPermissionRequest;
 include protocol PPluginWidget;
 include protocol PRemotePrintJob;
 include protocol PChildToParentStream;
 include protocol PParentToChildStream;
 include protocol PFileDescriptorSet;
@@ -129,17 +128,17 @@ struct RequestData
 union OptionalShmem
 {
   void_t;
   Shmem;
 };
 
 nested(upto inside_cpow) sync protocol PBrowser
 {
-    manager PContent or PContentBridge;
+    manager PContent;
 
     manages PColorPicker;
     manages PDocAccessible;
     manages PFilePicker;
     manages PIndexedDBPermissionRequest;
     manages PPluginWidget;
     manages PPaymentRequest;
     manages PWindowGlobal;
--- a/dom/ipc/PContent.ipdl
+++ b/dom/ipc/PContent.ipdl
@@ -3,17 +3,16 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * 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 protocol PBackground;
 include protocol PBrowser;
 include protocol PClientOpenWindowOp;
 include protocol PCompositorManager;
-include protocol PContentBridge;
 include protocol PContentPermissionRequest;
 include protocol PCycleCollectWithLogs;
 include protocol PPSMContentDownloader;
 include protocol PExternalHelperApp;
 include protocol PHandlerService;
 include protocol PFileDescriptorSet;
 include protocol PHal;
 include protocol PHeapSnapshotTempFileHelper;
@@ -59,21 +58,16 @@ include PContentPermission;
 include ServiceWorkerConfiguration;
 include GraphicsMessages;
 include MemoryReportTypes;
 include ClientIPCTypes;
 include HangTypes;
 include PrefsTypes;
 include NeckoChannelParams;
 
-// Workaround to prevent error if PContentChild.cpp & PContentBridgeParent.cpp
-// are put into different UnifiedProtocolsXX.cpp files.
-// XXX Remove this once bug 1069073 is fixed
-include "mozilla/dom/PContentBridgeParent.h";
-
 using refcounted class nsIDOMGeoPosition from "nsGeoPositionIPCSerialiser.h";
 using refcounted class nsIAlertNotification from "mozilla/AlertNotificationIPCSerializer.h";
 
 using struct ChromePackage from "mozilla/chrome/RegistryMessageUtils.h";
 using struct SubstitutionMapping from "mozilla/chrome/RegistryMessageUtils.h";
 using struct OverrideMapping from "mozilla/chrome/RegistryMessageUtils.h";
 using base::ProcessId from "base/process.h";
 using struct IPC::Permission from "mozilla/net/NeckoMessageUtils.h";
@@ -406,17 +400,16 @@ both:
     // to persist a subdocument.  For child->parent, arguments are
     // ignored and should be null/zero.
     async PWebBrowserPersistDocument(nullable PBrowser aBrowser,
                                      uint64_t aOuterWindowID);
 
 child:
     async InitGMPService(Endpoint<PGMPServiceChild> service);
     async InitProcessHangMonitor(Endpoint<PProcessHangMonitorChild> hangMonitor);
-    async InitContentBridgeChild(Endpoint<PContentBridgeChild> endpoint);
     async InitProfiler(Endpoint<PProfilerChild> aEndpoint);
 
     // Give the content process its endpoints to the compositor.
     async InitRendering(
       Endpoint<PCompositorManagerChild> compositor,
       Endpoint<PImageBridgeChild> imageBridge,
       Endpoint<PVRManagerChild> vr,
       Endpoint<PVideoDecoderManagerChild> video,
@@ -782,24 +775,16 @@ child:
                                OptionalLoadInfoArgs aLoadInfo,
                                uint64_t aChannelId,
                                nsIURI aOriginalURI,
                                uint64_t aIdentifier);
 
 parent:
     async InitBackground(Endpoint<PBackgroundParent> aEndpoint);
 
-    sync CreateChildProcess(IPCTabContext context,
-                            ProcessPriority priority,
-                            TabId openerTabId,
-                            TabId tabId)
-        returns (ContentParentId cpId, bool isForBrowser);
-    sync BridgeToChildProcess(ContentParentId cpId)
-        returns (Endpoint<PContentBridgeParent> endpoint);
-
     sync OpenRecordReplayChannel(uint32_t channelId)
         returns (FileDescriptor connection);
     async CreateReplayingProcess(uint32_t channelId);
 
     async CreateGMPService();
 
     async InitStreamFilter(uint64_t channelId, nsString addonId)
         returns (Endpoint<PStreamFilterChild> aEndpoint);
@@ -1304,9 +1289,9 @@ both:
     async WindowClose(BrowsingContext aContext, bool aTrustedCaller);
     async WindowFocus(BrowsingContext aContext);
     async WindowBlur(BrowsingContext aContext);
     async WindowPostMessage(BrowsingContext aContext, ClonedMessageData aMessage,
                             PostMessageData aData);
 };
 
 }
-}
+}
\ No newline at end of file
deleted file mode 100644
--- a/dom/ipc/PContentBridge.ipdl
+++ /dev/null
@@ -1,82 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * 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 protocol PBrowser;
-include protocol PContent;
-include protocol PJavaScript;
-include protocol PFileDescriptorSet;
-include protocol PChildToParentStream;
-include protocol PParentToChildStream;
-include protocol PIPCBlobInputStream;
-
-include DOMTypes;
-include JavaScriptTypes;
-include ProtocolTypes;
-include PTabContext;
-
-using class IPC::Principal from "mozilla/dom/PermissionMessageUtils.h";
-using mozilla::dom::TabId from "mozilla/dom/ipc/IdType.h";
-using mozilla::dom::ContentParentId from "mozilla/dom/ipc/IdType.h";
-using class mozilla::dom::MessagePort from "mozilla/dom/MessagePort.h";
-using class mozilla::dom::ipc::StructuredCloneData from "mozilla/dom/ipc/StructuredCloneData.h";
-
-namespace mozilla {
-namespace dom {
-
-/*
- * PContentBridge allows us to represent a parent/child relationship between two
- * child processes.  When a child process wants to open its own child, it asks
- * the root process to create a new process and then bridge them.  The first
- * child will allocate the PContentBridgeParent, and the newly opened child will
- * allocate the PContentBridgeChild.  This protocol allows these processes to
- * share PBrowsers and send messages to each other.
- */
-nested(upto inside_cpow) sync protocol PContentBridge
-{
-    manages PBrowser;
-    manages PFileDescriptorSet;
-    manages PJavaScript;
-    manages PChildToParentStream;
-    manages PParentToChildStream;
-    manages PIPCBlobInputStream;
-
-child:
-    async PParentToChildStream();
-
-child:
-   /**
-     * Sending an activate message moves focus to the child.
-     */
-    async Activate(PBrowser aTab);
-
-    async Deactivate(PBrowser aTab);
-
-    async PIPCBlobInputStream(nsID aID, uint64_t aSize);
-
-parent:
-    sync SyncMessage(nsString aMessage, ClonedMessageData aData,
-                     CpowEntry[] aCpows, Principal aPrincipal)
-      returns (StructuredCloneData[] retval);
-
-    async PJavaScript();
-
-    async PChildToParentStream();
-
-both:
-    // Both the parent and the child can construct the PBrowser.
-    // See the comment in PContent::PBrowser().
-    async PBrowser(TabId tabId, TabId sameTabGroupAs,
-                   IPCTabContext context, uint32_t chromeFlags,
-                   ContentParentId cpId, bool isForBrowser);
-
-    async PFileDescriptorSet(FileDescriptor fd);
-
-    async AsyncMessage(nsString aMessage, CpowEntry[] aCpows,
-                       Principal aPrincipal, ClonedMessageData aData);
-};
-
-}
-}
--- a/dom/ipc/TabParent.cpp
+++ b/dom/ipc/TabParent.cpp
@@ -9,17 +9,16 @@
 #include "TabParent.h"
 
 #ifdef ACCESSIBILITY
 #  include "mozilla/a11y/DocAccessibleParent.h"
 #  include "nsAccessibilityService.h"
 #endif
 #include "mozilla/BrowserElementParent.h"
 #include "mozilla/dom/ChromeMessageSender.h"
-#include "mozilla/dom/ContentBridgeParent.h"
 #include "mozilla/dom/ContentParent.h"
 #include "mozilla/dom/DataTransfer.h"
 #include "mozilla/dom/DataTransferItemList.h"
 #include "mozilla/dom/Event.h"
 #include "mozilla/dom/indexedDB/ActorsParent.h"
 #include "mozilla/dom/IPCBlobUtils.h"
 #include "mozilla/dom/PaymentRequestParent.h"
 #include "mozilla/dom/RemoteFrameParent.h"
@@ -381,43 +380,34 @@ void TabParent::Destroy() {
   if (mIsDestroyed) {
     return;
   }
 
   DestroyInternal();
 
   mIsDestroyed = true;
 
-  if (XRE_IsParentProcess()) {
-    ContentParent::NotifyTabDestroying(this->GetTabId(),
-                                       Manager()->AsContentParent()->ChildID());
-  } else {
-    ContentParent::NotifyTabDestroying(this->GetTabId(), Manager()->ChildID());
-  }
+  ContentParent::NotifyTabDestroying(this->GetTabId(),
+                                     Manager()->AsContentParent()->ChildID());
 
   mMarkedDestroying = true;
 }
 
 mozilla::ipc::IPCResult TabParent::RecvEnsureLayersConnected(
     CompositorOptions* aCompositorOptions) {
   if (mRenderFrame.IsInitialized()) {
     mRenderFrame.EnsureLayersConnected(aCompositorOptions);
   }
   return IPC_OK();
 }
 
 mozilla::ipc::IPCResult TabParent::Recv__delete__() {
-  if (XRE_IsParentProcess()) {
-    ContentParent::UnregisterRemoteFrame(
-        mTabId, Manager()->AsContentParent()->ChildID(), mMarkedDestroying);
-  } else {
-    Manager()->AsContentBridgeParent()->NotifyTabDestroyed();
-    ContentParent::UnregisterRemoteFrame(mTabId, Manager()->ChildID(),
-                                         mMarkedDestroying);
-  }
+  MOZ_RELEASE_ASSERT(XRE_IsParentProcess());
+  ContentParent::UnregisterRemoteFrame(
+      mTabId, Manager()->AsContentParent()->ChildID(), mMarkedDestroying);
 
   return IPC_OK();
 }
 
 void TabParent::ActorDestroy(ActorDestroyReason why) {
   if (mRenderFrame.IsInitialized()) {
     // It's important to unmap layers after the remote browser has been
     // destroyed, otherwise it may still send messages to the compositor which
--- a/dom/ipc/moz.build
+++ b/dom/ipc/moz.build
@@ -26,18 +26,16 @@ EXPORTS.mozilla.dom.ipc += [
     'StringTable.h',
     'StructuredCloneData.h',
 ]
 
 EXPORTS.mozilla.dom += [
     'CoalescedInputData.h',
     'CoalescedMouseData.h',
     'CoalescedWheelData.h',
-    'ContentBridgeChild.h',
-    'ContentBridgeParent.h',
     'ContentChild.h',
     'ContentParent.h',
     'ContentProcess.h',
     'ContentProcessManager.h',
     'CPOWManagerGetter.h',
     'CSPMessageUtils.h',
     'DocShellMessageUtils.h',
     'FilePickerParent.h',
@@ -66,18 +64,16 @@ EXPORTS.mozilla += [
     'ProcessHangMonitorIPC.h',
     'ProcessPriorityManager.h',
 ]
 
 UNIFIED_SOURCES += [
     'CoalescedMouseData.cpp',
     'CoalescedWheelData.cpp',
     'ColorPickerParent.cpp',
-    'ContentBridgeChild.cpp',
-    'ContentBridgeParent.cpp',
     'ContentParent.cpp',
     'ContentProcess.cpp',
     'ContentProcessManager.cpp',
     'CSPMessageUtils.cpp',
     'DocShellMessageUtils.cpp',
     'FilePickerParent.cpp',
     'JSWindowActorChild.cpp',
     'JSWindowActorParent.cpp',
@@ -112,17 +108,16 @@ SOURCES += [
 
 IPDL_SOURCES += [
     'DOMTypes.ipdlh',
     'MemoryReportTypes.ipdlh',
     'PBrowser.ipdl',
     'PBrowserOrId.ipdlh',
     'PColorPicker.ipdl',
     'PContent.ipdl',
-    'PContentBridge.ipdl',
     'PContentPermission.ipdlh',
     'PContentPermissionRequest.ipdl',
     'PCycleCollectWithLogs.ipdl',
     'PFilePicker.ipdl',
     'PLoginReputation.ipdl',
     'PPluginWidget.ipdl',
     'PProcessHangMonitor.ipdl',
     'PrefsTypes.ipdlh',
--- a/dom/ipc/nsIContentParent.cpp
+++ b/dom/ipc/nsIContentParent.cpp
@@ -4,17 +4,16 @@
  * 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 "nsIContentParent.h"
 
 #include "mozilla/Preferences.h"
 #include "mozilla/dom/File.h"
 #include "mozilla/dom/ContentParent.h"
-#include "mozilla/dom/ContentBridgeParent.h"
 #include "mozilla/dom/ContentProcessManager.h"
 #include "mozilla/dom/PTabContext.h"
 #include "mozilla/dom/PermissionMessageUtils.h"
 #include "mozilla/dom/ProcessMessageManager.h"
 #include "mozilla/dom/TabParent.h"
 #include "mozilla/dom/ipc/IPCBlobInputStreamParent.h"
 #include "mozilla/dom/ipc/StructuredCloneData.h"
 #include "mozilla/jsipc/CrossProcessObjectWrappers.h"
@@ -50,21 +49,16 @@ nsIContentParent::nsIContentParent() {
   mMessageManager = nsFrameMessageManager::NewProcessMessageManager(true);
 }
 
 ContentParent* nsIContentParent::AsContentParent() {
   MOZ_ASSERT(IsContentParent());
   return static_cast<ContentParent*>(this);
 }
 
-ContentBridgeParent* nsIContentParent::AsContentBridgeParent() {
-  MOZ_ASSERT(IsContentBridgeParent());
-  return static_cast<ContentBridgeParent*>(this);
-}
-
 PJavaScriptParent* nsIContentParent::AllocPJavaScriptParent() {
   return NewJavaScriptParent();
 }
 
 bool nsIContentParent::DeallocPJavaScriptParent(PJavaScriptParent* aParent) {
   ReleaseJavaScriptParent(aParent);
   return true;
 }
@@ -158,23 +152,16 @@ PBrowserParent* nsIContentParent::AllocP
     loadContext->GetUsePrivateBrowsing(&isPrivate);
     if (isPrivate) {
       chromeFlags |= nsIWebBrowserChrome::CHROME_PRIVATE_WINDOW;
     }
   }
 
   if (openerTabId > 0 ||
       aContext.type() == IPCTabContext::TUnsafeIPCTabContext) {
-    // Creation of PBrowser triggered from grandchild process is currently
-    // broken and not supported (i.e. this code path doesn't work in
-    // ContentBridgeParent).
-    //
-    // If you're working on fixing the code path for ContentBridgeParent,
-    // remember to handle the remote frame registration below carefully as it
-    // has to be registered in parent process.
     MOZ_ASSERT(XRE_IsParentProcess());
     if (!XRE_IsParentProcess()) {
       return nullptr;
     }
 
     // The creation of PBrowser was triggered from content process through
     // either window.open() or service worker's openWindow().
     // We need to register remote frame with the child generated tab id.
--- a/dom/ipc/nsIContentParent.h
+++ b/dom/ipc/nsIContentParent.h
@@ -44,17 +44,16 @@ class PIPCBlobInputStreamParent;
 
 namespace dom {
 
 class Blob;
 class BlobConstructorParams;
 class BlobImpl;
 class ProcessMessageManager;
 class ContentParent;
-class ContentBridgeParent;
 class IPCTabContext;
 class PBrowserParent;
 
 class nsIContentParent : public nsISupports,
                          public mozilla::dom::ipc::MessageManagerCallback,
                          public CPOWManagerGetter,
                          public mozilla::ipc::IShmemAllocator {
  public:
@@ -78,20 +77,16 @@ class nsIContentParent : public nsISuppo
 
   virtual mozilla::ipc::PFileDescriptorSetParent*
   SendPFileDescriptorSetConstructor(const mozilla::ipc::FileDescriptor&) = 0;
 
   virtual bool IsContentParent() const { return false; }
 
   ContentParent* AsContentParent();
 
-  virtual bool IsContentBridgeParent() const { return false; }
-
-  ContentBridgeParent* AsContentBridgeParent();
-
   mozilla::dom::ProcessMessageManager* GetMessageManager() const {
     return mMessageManager;
   }
 
   virtual bool SendActivate(PBrowserParent* aTab) = 0;
 
   virtual bool SendDeactivate(PBrowserParent* aTab) = 0;
 
--- a/ipc/glue/PChildToParentStream.ipdl
+++ b/ipc/glue/PChildToParentStream.ipdl
@@ -1,28 +1,27 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * 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 protocol PBackground;
 include protocol PContent;
-include protocol PContentBridge;
 
 include "mozilla/layers/WebRenderMessageUtils.h";
 
 using mozilla::wr::ByteBuffer from "mozilla/webrender/WebRenderTypes.h";
 
 namespace mozilla {
 namespace ipc {
 
 // This is protocol is the opposite of PParentToChildStream. Please keep these
 // protocols in sync.
 protocol PChildToParentStream
 {
-  manager PBackground or PContent or PContentBridge;
+  manager PBackground or PContent;
 
 parent:
   async Buffer(ByteBuffer aBuffer);
   async Close(nsresult aRv);
 
 child:
   // The remote stream can be used in 2 ways: it can start receiving data
   // immediately after the creation of the child actor, or it can wait until
--- a/ipc/glue/PFileDescriptorSet.ipdl
+++ b/ipc/glue/PFileDescriptorSet.ipdl
@@ -1,22 +1,21 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * 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 protocol PBackground;
 include protocol PContent;
-include protocol PContentBridge;
 
 namespace mozilla {
 namespace ipc {
 
 protocol PFileDescriptorSet
 {
-  manager PBackground or PContent or PContentBridge;
+  manager PBackground or PContent;
 
 both:
   async AddFileDescriptor(FileDescriptor fd);
 
   async __delete__();
 };
 
 } // namespace ipc
--- a/ipc/glue/PParentToChildStream.ipdl
+++ b/ipc/glue/PParentToChildStream.ipdl
@@ -1,28 +1,27 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * 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 protocol PBackground;
 include protocol PContent;
-include protocol PContentBridge;
 
 include "mozilla/layers/WebRenderMessageUtils.h";
 
 using mozilla::wr::ByteBuffer from "mozilla/webrender/WebRenderTypes.h";
 
 namespace mozilla {
 namespace ipc {
 
 // This is protocol is the opposite of PChildToParentStream. Please keep these
 // protocols in sync.
 protocol PParentToChildStream
 {
-  manager PBackground or PContent or PContentBridge;
+  manager PBackground or PContent;
 
 child:
   async Buffer(ByteBuffer aBuffer);
   async Close(nsresult aRv);
 
 parent:
   // The remote stream can be used in 2 ways: it can start receiving data
   // immediately after the creation of the child actor, or it can wait until
--- a/ipc/ipdl/sync-messages.ini
+++ b/ipc/ipdl/sync-messages.ini
@@ -843,20 +843,16 @@ description = test only
 [PBrowser::GetSystemFont]
 description = test only
 [PBrowser::SetPrefersReducedMotionOverrideForTest]
 description = test only
 [PBrowser::ResetPrefersReducedMotionOverrideForTest]
 description = test only
 [PContent::SyncMessage]
 description =
-[PContent::CreateChildProcess]
-description =
-[PContent::BridgeToChildProcess]
-description =
 [PContent::OpenRecordReplayChannel]
 description = bug 1475898 this could be async
 [PContent::LoadPlugin]
 description =
 [PContent::ConnectPluginBridge]
 description =
 [PContent::IsSecureURI]
 description =
@@ -891,18 +887,16 @@ description =
 [PContent::GetGraphicsDeviceInitData]
 description =
 [PContent::UngrabPointer]
 description =
 [PContent::RemovePermission]
 description =
 [PContent::GetA11yContentId]
 description =
-[PContentBridge::SyncMessage]
-description =
 [PGMP::StartPlugin]
 description =
 [PGMPService::LaunchGMP]
 description =
 [PGMPService::LaunchGMPForNodeId]
 description =
 [PGMPService::GetGMPNodeId]
 description =
--- a/js/ipc/PJavaScript.ipdl
+++ b/js/ipc/PJavaScript.ipdl
@@ -1,28 +1,27 @@
 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
  * vim: set ts=4 sw=4 et tw=80:
  *
  * This Source Code Form is subject to the terms of the Mozilla Public
  * 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 protocol PContent;
-include protocol PContentBridge;
 include DOMTypes;
 include JavaScriptTypes;
 
 using struct mozilla::void_t from "ipc/IPCMessageUtils.h";
 
 namespace mozilla {
 namespace jsipc {
 
 nested(upto inside_sync) sync protocol PJavaScript
 {
-    manager PContent or PContentBridge;
+    manager PContent;
 
 both:
     // Sent when a CPOW has been finalized and table entries can be freed up.
     async DropObject(uint64_t objId);
 
     // These roughly map to the ProxyHandler hooks that CPOWs need.
     nested(inside_sync) sync PreventExtensions(uint64_t objId) returns (ReturnStatus rs);
     nested(inside_sync) sync GetOwnPropertyDescriptor(uint64_t objId, JSIDVariant id) returns (ReturnStatus rs, PPropertyDescriptor result);
--- a/security/manager/ssl/PSMContentListener.h
+++ b/security/manager/ssl/PSMContentListener.h
@@ -4,16 +4,17 @@
  * 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/. */
 
 #ifndef mozilla_psm_PSMCOntentListener_h_
 #define mozilla_psm_PSMCOntentListener_h_
 
 #include "nsCOMPtr.h"
 #include "nsIURIContentListener.h"
+#include "nsIStreamListener.h"
 #include "nsWeakReference.h"
 #include "mozilla/psm/PPSMContentDownloaderChild.h"
 #include "mozilla/psm/PPSMContentDownloaderParent.h"
 
 #define NS_PSMCONTENTLISTEN_CID                      \
   {                                                  \
     0xc94f4a30, 0x64d7, 0x11d4, {                    \
       0x99, 0x60, 0x00, 0xb0, 0xd0, 0x23, 0x54, 0xa0 \