Blame dom/ipc/ContentBridgeParent.h

Packit f0b94e
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
Packit f0b94e
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
Packit f0b94e
/* This Source Code Form is subject to the terms of the Mozilla Public
Packit f0b94e
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
Packit f0b94e
 * You can obtain one at http://mozilla.org/MPL/2.0/. */
Packit f0b94e
Packit f0b94e
#ifndef mozilla_dom_ContentBridgeParent_h
Packit f0b94e
#define mozilla_dom_ContentBridgeParent_h
Packit f0b94e
Packit f0b94e
#include "mozilla/dom/PContentBridgeParent.h"
Packit f0b94e
#include "mozilla/dom/nsIContentParent.h"
Packit f0b94e
#include "mozilla/dom/ipc/IdType.h"
Packit f0b94e
#include "nsIObserver.h"
Packit f0b94e
Packit f0b94e
namespace mozilla {
Packit f0b94e
namespace dom {
Packit f0b94e
Packit f0b94e
class ContentBridgeParent : public PContentBridgeParent,
Packit f0b94e
                            public nsIContentParent,
Packit f0b94e
                            public nsIObserver {
Packit f0b94e
 public:
Packit f0b94e
  explicit ContentBridgeParent();
Packit f0b94e
Packit f0b94e
  NS_DECL_ISUPPORTS
Packit f0b94e
  NS_DECL_NSIOBSERVER
Packit f0b94e
Packit f0b94e
  virtual void ActorDestroy(ActorDestroyReason aWhy) override;
Packit f0b94e
  void DeferredDestroy();
Packit f0b94e
  virtual bool IsContentBridgeParent() const override { return true; }
Packit f0b94e
  void NotifyTabDestroyed();
Packit f0b94e
Packit f0b94e
  static ContentBridgeParent* Create(
Packit f0b94e
      Endpoint<PContentBridgeParent>&& aEndpoint);
Packit f0b94e
Packit f0b94e
  virtual PBrowserParent* SendPBrowserConstructor(
Packit f0b94e
      PBrowserParent* aActor, const TabId& aTabId, const TabId& aSameTabGroupAs,
Packit f0b94e
      const IPCTabContext& aContext, const uint32_t& aChromeFlags,
Packit f0b94e
      const ContentParentId& aCpID, const bool& aIsForBrowser) override;
Packit f0b94e
Packit f0b94e
  virtual PFileDescriptorSetParent* SendPFileDescriptorSetConstructor(
Packit f0b94e
      const FileDescriptor&) override;
Packit f0b94e
Packit f0b94e
  FORWARD_SHMEM_ALLOCATOR_TO(PContentBridgeParent)
Packit f0b94e
Packit f0b94e
  jsipc::CPOWManager* GetCPOWManager() override;
Packit f0b94e
Packit f0b94e
  virtual ContentParentId ChildID() const override { return mChildID; }
Packit f0b94e
  virtual bool IsForBrowser() const override { return mIsForBrowser; }
Packit f0b94e
  virtual int32_t Pid() const override {
Packit f0b94e
    // XXX: do we need this for ContentBridgeParent?
Packit f0b94e
    return -1;
Packit f0b94e
  }
Packit f0b94e
  virtual bool IsForJSPlugin() const override { return mIsForJSPlugin; }
Packit f0b94e
Packit f0b94e
  virtual mozilla::ipc::PParentToChildStreamParent*
Packit f0b94e
  SendPParentToChildStreamConstructor(
Packit f0b94e
      mozilla::ipc::PParentToChildStreamParent*) override;
Packit f0b94e
Packit f0b94e
  virtual bool SendActivate(PBrowserParent* aTab) override {
Packit f0b94e
    return PContentBridgeParent::SendActivate(aTab);
Packit f0b94e
  }
Packit f0b94e
Packit f0b94e
  virtual bool SendDeactivate(PBrowserParent* aTab) override {
Packit f0b94e
    return PContentBridgeParent::SendDeactivate(aTab);
Packit f0b94e
  }
Packit f0b94e
Packit f0b94e
 protected:
Packit f0b94e
  virtual ~ContentBridgeParent();
Packit f0b94e
Packit f0b94e
  void SetChildID(ContentParentId aId) { mChildID = aId; }
Packit f0b94e
Packit f0b94e
  void SetIsForBrowser(bool aIsForBrowser) { mIsForBrowser = aIsForBrowser; }
Packit f0b94e
  void SetIsForJSPlugin(bool aIsForJSPlugin) {
Packit f0b94e
    mIsForJSPlugin = aIsForJSPlugin;
Packit f0b94e
  }
Packit f0b94e
Packit f0b94e
  void Close() {
Packit f0b94e
    // Trick NewRunnableMethod
Packit f0b94e
    PContentBridgeParent::Close();
Packit f0b94e
  }
Packit f0b94e
Packit f0b94e
 protected:
Packit f0b94e
  virtual mozilla::ipc::IPCResult RecvSyncMessage(
Packit f0b94e
      const nsString& aMsg, const ClonedMessageData& aData,
Packit f0b94e
      InfallibleTArray<jsipc::CpowEntry>&& aCpows,
Packit f0b94e
      const IPC::Principal& aPrincipal,
Packit f0b94e
      nsTArray<StructuredCloneData>* aRetvals) override;
Packit f0b94e
Packit f0b94e
  virtual mozilla::ipc::IPCResult RecvAsyncMessage(
Packit f0b94e
      const nsString& aMsg, InfallibleTArray<jsipc::CpowEntry>&& aCpows,
Packit f0b94e
      const IPC::Principal& aPrincipal,
Packit f0b94e
      const ClonedMessageData& aData) override;
Packit f0b94e
Packit f0b94e
  virtual jsipc::PJavaScriptParent* AllocPJavaScriptParent() override;
Packit f0b94e
Packit f0b94e
  virtual bool DeallocPJavaScriptParent(jsipc::PJavaScriptParent*) override;
Packit f0b94e
Packit f0b94e
  virtual PBrowserParent* AllocPBrowserParent(
Packit f0b94e
      const TabId& aTabId, const TabId& aSameTabGroupAs,
Packit f0b94e
      const IPCTabContext& aContext, const uint32_t& aChromeFlags,
Packit f0b94e
      const ContentParentId& aCpID, const bool& aIsForBrowser) override;
Packit f0b94e
Packit f0b94e
  virtual bool DeallocPBrowserParent(PBrowserParent*) override;
Packit f0b94e
Packit f0b94e
  virtual mozilla::ipc::IPCResult RecvPBrowserConstructor(
Packit f0b94e
      PBrowserParent* actor, const TabId& tabId, const TabId& sameTabGroupAs,
Packit f0b94e
      const IPCTabContext& context, const uint32_t& chromeFlags,
Packit f0b94e
      const ContentParentId& cpId, const bool& isForBrowser) override;
Packit f0b94e
Packit f0b94e
  virtual PIPCBlobInputStreamParent* SendPIPCBlobInputStreamConstructor(
Packit f0b94e
      PIPCBlobInputStreamParent* aActor, const nsID& aID,
Packit f0b94e
      const uint64_t& aSize) override;
Packit f0b94e
Packit f0b94e
  virtual PIPCBlobInputStreamParent* AllocPIPCBlobInputStreamParent(
Packit f0b94e
      const nsID& aID, const uint64_t& aSize) override;
Packit f0b94e
Packit f0b94e
  virtual bool DeallocPIPCBlobInputStreamParent(
Packit f0b94e
      PIPCBlobInputStreamParent*) override;
Packit f0b94e
Packit f0b94e
  virtual PChildToParentStreamParent* AllocPChildToParentStreamParent()
Packit f0b94e
      override;
Packit f0b94e
Packit f0b94e
  virtual bool DeallocPChildToParentStreamParent(
Packit f0b94e
      PChildToParentStreamParent* aActor) override;
Packit f0b94e
Packit f0b94e
  virtual mozilla::ipc::PParentToChildStreamParent*
Packit f0b94e
  AllocPParentToChildStreamParent() override;
Packit f0b94e
Packit f0b94e
  virtual bool DeallocPParentToChildStreamParent(
Packit f0b94e
      mozilla::ipc::PParentToChildStreamParent* aActor) override;
Packit f0b94e
Packit f0b94e
  virtual PFileDescriptorSetParent* AllocPFileDescriptorSetParent(
Packit f0b94e
      const mozilla::ipc::FileDescriptor&) override;
Packit f0b94e
Packit f0b94e
  virtual bool DeallocPFileDescriptorSetParent(
Packit f0b94e
      PFileDescriptorSetParent*) override;
Packit f0b94e
Packit f0b94e
  DISALLOW_EVIL_CONSTRUCTORS(ContentBridgeParent);
Packit f0b94e
Packit f0b94e
 protected:  // members
Packit f0b94e
  RefPtr<ContentBridgeParent> mSelfRef;
Packit f0b94e
  ContentParentId mChildID;
Packit f0b94e
  bool mIsForBrowser;
Packit f0b94e
  bool mIsForJSPlugin;
Packit f0b94e
Packit f0b94e
 private:
Packit f0b94e
  friend class ContentParent;
Packit f0b94e
};
Packit f0b94e
Packit f0b94e
}  // namespace dom
Packit f0b94e
}  // namespace mozilla
Packit f0b94e
Packit f0b94e
#endif  // mozilla_dom_ContentBridgeParent_h