summaryrefslogtreecommitdiffstats
path: root/layout/base/GeckoMVMContext.h
diff options
context:
space:
mode:
Diffstat (limited to 'layout/base/GeckoMVMContext.h')
-rw-r--r--layout/base/GeckoMVMContext.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/layout/base/GeckoMVMContext.h b/layout/base/GeckoMVMContext.h
new file mode 100644
index 0000000000..97571079ba
--- /dev/null
+++ b/layout/base/GeckoMVMContext.h
@@ -0,0 +1,69 @@
+/* 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 GeckoMVMContext_h_
+#define GeckoMVMContext_h_
+
+#include "MVMContext.h"
+
+#include "mozilla/Attributes.h" // for MOZ_NON_OWNING_REF
+#include "mozilla/RefPtr.h"
+#include "nsCOMPtr.h"
+
+namespace mozilla {
+class PresShell;
+namespace dom {
+class Document;
+class EventTarget;
+} // namespace dom
+
+/**
+ * An implementation of MVMContext that uses actual Gecko components.
+ * This is intended for production use (whereas TestMVMContext is intended for
+ * testing.)
+ */
+class GeckoMVMContext : public MVMContext {
+ public:
+ explicit GeckoMVMContext(dom::Document* aDocument, PresShell* aPresShell);
+ void AddEventListener(const nsAString& aType, nsIDOMEventListener* aListener,
+ bool aUseCapture) override;
+ void RemoveEventListener(const nsAString& aType,
+ nsIDOMEventListener* aListener,
+ bool aUseCapture) override;
+ void AddObserver(nsIObserver* aObserver, const char* aTopic,
+ bool aOwnsWeak) override;
+ void RemoveObserver(nsIObserver* aObserver, const char* aTopic) override;
+ void Destroy() override;
+
+ nsViewportInfo GetViewportInfo(
+ const ScreenIntSize& aDisplaySize) const override;
+ CSSToLayoutDeviceScale CSSToDevPixelScale() const override;
+ float GetResolution() const override;
+ bool SubjectMatchesDocument(nsISupports* aSubject) const override;
+ Maybe<CSSRect> CalculateScrollableRectForRSF() const override;
+ bool IsResolutionUpdatedByApz() const override;
+ LayoutDeviceMargin ScrollbarAreaToExcludeFromCompositionBounds()
+ const override;
+ Maybe<LayoutDeviceIntSize> GetContentViewerSize() const override;
+ bool AllowZoomingForDocument() const override;
+ bool IsInReaderMode() const override;
+ bool IsDocumentLoading() const override;
+
+ void SetResolutionAndScaleTo(float aResolution,
+ ResolutionChangeOrigin aOrigin) override;
+ void SetVisualViewportSize(const CSSSize& aSize) override;
+ void PostVisualViewportResizeEventByDynamicToolbar() override;
+ void UpdateDisplayPortMargins() override;
+ MOZ_CAN_RUN_SCRIPT_BOUNDARY void Reflow(const CSSSize& aNewSize) override;
+
+ private:
+ RefPtr<dom::Document> mDocument;
+ // raw ref since the presShell owns this
+ PresShell* MOZ_NON_OWNING_REF mPresShell;
+ nsCOMPtr<dom::EventTarget> mEventTarget;
+};
+
+} // namespace mozilla
+
+#endif // GeckoMVMContext_h_