Backed out changeset 0a133d5fd155 (bug 1864534) for causing screenshot related failur...
[gecko.git] / widget / headless / HeadlessCompositorWidget.h
blobfacd2bc65afab8ec1aa322faa20a67464964dfb9
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/. */
6 #ifndef widget_headless_HeadlessCompositorWidget_h
7 #define widget_headless_HeadlessCompositorWidget_h
9 #include "mozilla/widget/CompositorWidget.h"
11 #include "HeadlessWidget.h"
13 namespace mozilla {
14 namespace widget {
16 class HeadlessCompositorWidgetInitData;
18 class HeadlessCompositorWidget final : public CompositorWidget,
19 public CompositorWidgetDelegate {
20 public:
21 HeadlessCompositorWidget(const HeadlessCompositorWidgetInitData& aInitData,
22 const layers::CompositorOptions& aOptions,
23 HeadlessWidget* aWindow);
25 void NotifyClientSizeChanged(const LayoutDeviceIntSize& aClientSize);
27 // CompositorWidget Overrides
29 uintptr_t GetWidgetKey() override;
31 LayoutDeviceIntSize GetClientSize() override;
33 nsIWidget* RealWidget() override;
34 CompositorWidgetDelegate* AsDelegate() override { return this; }
36 void ObserveVsync(VsyncObserver* aObserver) override;
38 // CompositorWidgetDelegate Overrides
40 HeadlessCompositorWidget* AsHeadlessCompositorWidget() override {
41 return this;
44 private:
45 HeadlessWidget* mWidget;
47 // See GtkCompositorWidget for the justification for this mutex.
48 DataMutex<LayoutDeviceIntSize> mClientSize;
51 } // namespace widget
52 } // namespace mozilla
54 #endif // widget_headless_HeadlessCompositor_h