tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

CanvasManagerParent.h (2772B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 #ifndef _include_gfx_ipc_CanvasManagerParent_h__
      7 #define _include_gfx_ipc_CanvasManagerParent_h__
      8 
      9 #include "mozilla/gfx/PCanvasManagerParent.h"
     10 #include "mozilla/dom/ipc/IdType.h"
     11 #include "mozilla/StaticMonitor.h"
     12 #include "nsHashtablesFwd.h"
     13 #include "nsTArray.h"
     14 
     15 namespace mozilla {
     16 namespace layers {
     17 class CanvasTranslator;
     18 class HostIPCAllocator;
     19 class SharedSurfacesHolder;
     20 class SurfaceDescriptor;
     21 }  // namespace layers
     22 
     23 namespace gfx {
     24 
     25 class CanvasManagerParent final : public PCanvasManagerParent {
     26 public:
     27  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(CanvasManagerParent, override);
     28 
     29  static void Init(Endpoint<PCanvasManagerParent>&& aEndpoint,
     30                   layers::SharedSurfacesHolder* aSharedSurfacesHolder,
     31                   const dom::ContentParentId& aContentId);
     32 
     33  static void Shutdown();
     34 
     35  static void DisableRemoteCanvas();
     36 
     37  CanvasManagerParent(layers::SharedSurfacesHolder* aSharedSurfacesHolder,
     38                      const dom::ContentParentId& aContentId);
     39 
     40  void Bind(Endpoint<PCanvasManagerParent>&& aEndpoint);
     41  void ActorDestroy(ActorDestroyReason aWhy) override;
     42 
     43  already_AddRefed<dom::PWebGLParent> AllocPWebGLParent();
     44  already_AddRefed<webgpu::PWebGPUParent> AllocPWebGPUParent();
     45  already_AddRefed<layers::PCanvasParent> AllocPCanvasParent();
     46 
     47  mozilla::ipc::IPCResult RecvInitialize(const uint32_t& aId);
     48  mozilla::ipc::IPCResult RecvGetSnapshot(
     49      const uint32_t& aManagerId, const ActorId& aProtocolId,
     50      const Maybe<RemoteTextureOwnerId>& aOwnerId,
     51      const Maybe<RawId>& aCommandEncoderId,
     52      const Maybe<RawId>& aCommandBufferId,
     53      webgl::FrontBufferSnapshotIpc* aResult);
     54 
     55  static mozilla::ipc::IProtocol* GetCanvasActor(
     56      dom::ContentParentId aContentId, uint32_t aManagerId, ActorId aCanvasId);
     57 
     58  static already_AddRefed<SourceSurface> GetCanvasSurface(
     59      dom::ContentParentId aContentId, uint32_t aManagerId, ActorId aCanvasId,
     60      uintptr_t aSurfaceId, Maybe<layers::SurfaceDescriptor>* aDesc = nullptr);
     61 
     62 private:
     63  static void ShutdownInternal();
     64  static void DisableRemoteCanvasInternal();
     65 
     66  ~CanvasManagerParent() override;
     67 
     68  RefPtr<layers::SharedSurfacesHolder> mSharedSurfacesHolder;
     69  const dom::ContentParentId mContentId;
     70  uint32_t mId = 0;
     71 
     72  using ManagerSet = nsTHashSet<RefPtr<CanvasManagerParent>>;
     73  static ManagerSet sManagers;
     74 };
     75 
     76 }  // namespace gfx
     77 }  // namespace mozilla
     78 
     79 #endif  // _include_gfx_ipc_CanvasManagerParent_h__