Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /* vim: set ts=8 sts=2 et sw=2 tw=99: */
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_UiCompositorControllerParent_h
7 : #define include_gfx_ipc_UiCompositorControllerParent_h
8 :
9 : #include "mozilla/layers/PUiCompositorControllerParent.h"
10 : #if defined(MOZ_WIDGET_ANDROID)
11 : #include "mozilla/layers/AndroidDynamicToolbarAnimator.h"
12 : #endif // defined(MOZ_WIDGET_ANDROID)
13 : #include "mozilla/ipc/Shmem.h"
14 : #include "mozilla/RefPtr.h"
15 :
16 : namespace mozilla {
17 : namespace layers {
18 :
19 : class UiCompositorControllerParent final : public PUiCompositorControllerParent
20 : {
21 : // UiCompositorControllerChild needs to call the private constructor when running in process.
22 : friend class UiCompositorControllerChild;
23 : public:
24 0 : NS_INLINE_DECL_THREADSAFE_REFCOUNTING(UiCompositorControllerParent)
25 :
26 : static RefPtr<UiCompositorControllerParent> GetFromRootLayerTreeId(const uint64_t& aRootLayerTreeId);
27 : static RefPtr<UiCompositorControllerParent> Start(const uint64_t& aRootLayerTreeId, Endpoint<PUiCompositorControllerParent>&& aEndpoint);
28 :
29 : // PUiCompositorControllerParent functions
30 : mozilla::ipc::IPCResult RecvPause() override;
31 : mozilla::ipc::IPCResult RecvResume() override;
32 : mozilla::ipc::IPCResult RecvResumeAndResize(const int32_t& aHeight,
33 : const int32_t& aWidth) override;
34 : mozilla::ipc::IPCResult RecvInvalidateAndRender() override;
35 : mozilla::ipc::IPCResult RecvMaxToolbarHeight(const int32_t& aHeight) override;
36 : mozilla::ipc::IPCResult RecvPinned(const bool& aPinned, const int32_t& aReason) override;
37 : mozilla::ipc::IPCResult RecvToolbarAnimatorMessageFromUI(const int32_t& aMessage) override;
38 : mozilla::ipc::IPCResult RecvDefaultClearColor(const uint32_t& aColor) override;
39 : mozilla::ipc::IPCResult RecvRequestScreenPixels() override;
40 : mozilla::ipc::IPCResult RecvEnableLayerUpdateNotifications(const bool& aEnable) override;
41 : mozilla::ipc::IPCResult RecvToolbarPixelsToCompositor(Shmem&& aMem, const ScreenIntSize& aSize) override;
42 : void ActorDestroy(ActorDestroyReason aWhy) override;
43 : void DeallocPUiCompositorControllerParent() override;
44 :
45 : // Class specific functions
46 : #if defined(MOZ_WIDGET_ANDROID)
47 : void RegisterAndroidDynamicToolbarAnimator(AndroidDynamicToolbarAnimator* aAnimator);
48 : #endif // MOZ_WIDGET_ANDROID
49 : void ToolbarAnimatorMessageFromCompositor(int32_t aMessage);
50 : bool AllocPixelBuffer(const int32_t aSize, Shmem* aMem);
51 :
52 : private:
53 : explicit UiCompositorControllerParent(const uint64_t& aRootLayerTreeId);
54 : ~UiCompositorControllerParent();
55 : void InitializeForSameProcess();
56 : void InitializeForOutOfProcess();
57 : void Initialize();
58 : void Open(Endpoint<PUiCompositorControllerParent>&& aEndpoint);
59 : void Shutdown();
60 :
61 : uint64_t mRootLayerTreeId;
62 :
63 : #if defined(MOZ_WIDGET_ANDROID)
64 : RefPtr<AndroidDynamicToolbarAnimator> mAnimator;
65 : #endif // defined(MOZ_WIDGET_ANDROID)
66 :
67 : int32_t mMaxToolbarHeight;
68 : };
69 :
70 : } // namespace layers
71 : } // namespace mozilla
72 :
73 : #endif // include_gfx_ipc_UiCompositorControllerParent_h
|