dom/ipc/BrowserBridgeParent.h
author Ryan Hunt <rhunt@eqrion.net>
Mon, 04 Mar 2019 20:15:58 -0600
changeset 521235 48241ea6a125e5ec01dbb323da92adabfb4ea480
parent 520367 dom/ipc/RemoteFrameParent.h@627cd6785c62546797d2859a6ff3ea2a50c61df0
child 521896 b7184b1a3d78d8ab80d3a4dabd4f7836621d32b6
permissions -rw-r--r--
Bug 1532725 - Rename PRemoteFrame to PBrowserBridge. r=nika Differential Revision: https://phabricator.services.mozilla.com/D22132

/* -*- 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_BrowserBridgeParent_h
#define mozilla_dom_BrowserBridgeParent_h

#include "mozilla/dom/PBrowserBridgeParent.h"
#include "mozilla/dom/TabParent.h"

namespace mozilla {
namespace dom {

class BrowserBridgeParent : public PBrowserBridgeParent {
 public:
  NS_INLINE_DECL_REFCOUNTING(BrowserBridgeParent);

  BrowserBridgeParent();

  // Initialize this actor after performing startup.
  nsresult Init(const nsString& aPresentationURL, const nsString& aRemoteType);

  TabParent* GetTabParent() { return mTabParent; }

  // Get our manager actor.
  TabParent* Manager() {
    MOZ_ASSERT(mIPCOpen);
    return static_cast<TabParent*>(PBrowserBridgeParent::Manager());
  }

 protected:
  friend class PBrowserBridgeParent;

  mozilla::ipc::IPCResult RecvShow(const ScreenIntSize& aSize,
                                   const bool& aParentIsActive,
                                   const nsSizeMode& aSizeMode);
  mozilla::ipc::IPCResult RecvLoadURL(const nsCString& aUrl);
  mozilla::ipc::IPCResult RecvUpdateDimensions(
      const DimensionInfo& aDimensions);
  mozilla::ipc::IPCResult RecvRenderLayers(const bool& aEnabled,
                                           const bool& aForceRepaint,
                                           const LayersObserverEpoch& aEpoch);

  mozilla::ipc::IPCResult RecvNavigateByKey(const bool& aForward,
                                            const bool& aForDocumentNavigation);

  mozilla::ipc::IPCResult RecvActivate();

  void ActorDestroy(ActorDestroyReason aWhy) override;

 private:
  ~BrowserBridgeParent();

  RefPtr<TabParent> mTabParent;
  bool mIPCOpen;
};

}  // namespace dom
}  // namespace mozilla

#endif  // !defined(mozilla_dom_BrowserBridgeParent_h)