diff options
Diffstat (limited to 'layout/base/GeckoMVMContext.h')
-rw-r--r-- | layout/base/GeckoMVMContext.h | 69 |
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..296c816aa2 --- /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 final : 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_ |