1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef widget_headless_HeadlessCompositorWidget_h 7 #define widget_headless_HeadlessCompositorWidget_h 8 9 #include "mozilla/widget/CompositorWidget.h" 10 11 #include "HeadlessWidget.h" 12 13 namespace mozilla { 14 namespace widget { 15 16 class HeadlessCompositorWidgetInitData; 17 18 class HeadlessCompositorWidget final : public CompositorWidget, 19 public CompositorWidgetDelegate { 20 public: 21 HeadlessCompositorWidget(const HeadlessCompositorWidgetInitData& aInitData, 22 const layers::CompositorOptions& aOptions, 23 HeadlessWidget* aWindow); 24 25 void NotifyClientSizeChanged(const LayoutDeviceIntSize& aClientSize); 26 27 // CompositorWidget Overrides 28 29 uintptr_t GetWidgetKey() override; 30 31 LayoutDeviceIntSize GetClientSize() override; 32 33 nsIWidget* RealWidget() override; AsDelegate()34 CompositorWidgetDelegate* AsDelegate() override { return this; } 35 36 void ObserveVsync(VsyncObserver* aObserver) override; 37 38 // CompositorWidgetDelegate Overrides 39 AsHeadlessCompositorWidget()40 HeadlessCompositorWidget* AsHeadlessCompositorWidget() override { 41 return this; 42 } 43 44 private: 45 HeadlessWidget* mWidget; 46 47 LayoutDeviceIntSize mClientSize; 48 }; 49 50 } // namespace widget 51 } // namespace mozilla 52 53 #endif // widget_headless_HeadlessCompositor_h 54