From 43a97878ce14b72f0981164f87f2e35e14151312 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 11:22:09 +0200 Subject: Adding upstream version 110.0.1. Signed-off-by: Daniel Baumann --- dom/base/nsDOMWindowUtils.h | 117 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 dom/base/nsDOMWindowUtils.h (limited to 'dom/base/nsDOMWindowUtils.h') diff --git a/dom/base/nsDOMWindowUtils.h b/dom/base/nsDOMWindowUtils.h new file mode 100644 index 0000000000..63968c9b7a --- /dev/null +++ b/dom/base/nsDOMWindowUtils.h @@ -0,0 +1,117 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* 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 nsDOMWindowUtils_h_ +#define nsDOMWindowUtils_h_ + +#include "nsWeakReference.h" + +#include "nsIDOMWindowUtils.h" +#include "mozilla/Attributes.h" +#include "mozilla/BasicEvents.h" +#include "mozilla/Result.h" + +class nsGlobalWindowOuter; +class nsIDocShell; +class nsIWidget; +class nsPresContext; +class nsView; +struct nsPoint; + +namespace mozilla { +class PresShell; +namespace dom { +class Document; +class Element; +} // namespace dom +namespace layers { +class LayerTransactionChild; +class WebRenderBridgeChild; +} // namespace layers +} // namespace mozilla + +class nsTranslationNodeList final : public nsITranslationNodeList { + public: + nsTranslationNodeList() { + mNodes.SetCapacity(1000); + mNodeIsRoot.SetCapacity(1000); + mLength = 0; + } + + NS_DECL_ISUPPORTS + NS_DECL_NSITRANSLATIONNODELIST + + void AppendElement(nsINode* aElement, bool aIsRoot) { + mNodes.AppendElement(aElement); + mNodeIsRoot.AppendElement(aIsRoot); + mLength++; + } + + private: + ~nsTranslationNodeList() = default; + + nsTArray > mNodes; + nsTArray mNodeIsRoot; + uint32_t mLength; +}; + +class nsDOMWindowUtils final : public nsIDOMWindowUtils, + public nsSupportsWeakReference { + using TextEventDispatcher = mozilla::widget::TextEventDispatcher; + + public: + explicit nsDOMWindowUtils(nsGlobalWindowOuter* aWindow); + NS_DECL_ISUPPORTS + NS_DECL_NSIDOMWINDOWUTILS + + protected: + ~nsDOMWindowUtils(); + + nsWeakPtr mWindow; + + // If aOffset is non-null, it gets filled in with the offset of the root + // frame of our window to the nearest widget in the app units of our window. + // Add this offset to any event offset we're given to make it relative to the + // widget returned by GetWidget. + nsIWidget* GetWidget(nsPoint* aOffset = nullptr); + nsIWidget* GetWidgetForElement(mozilla::dom::Element* aElement); + + nsIDocShell* GetDocShell(); + mozilla::PresShell* GetPresShell(); + nsPresContext* GetPresContext(); + mozilla::dom::Document* GetDocument(); + mozilla::layers::WebRenderBridgeChild* GetWebRenderBridge(); + mozilla::layers::CompositorBridgeChild* GetCompositorBridge(); + + // Until callers are annotated. + MOZ_CAN_RUN_SCRIPT + NS_IMETHOD SendMouseEventCommon( + const nsAString& aType, float aX, float aY, int32_t aButton, + int32_t aClickCount, int32_t aModifiers, bool aIgnoreRootScrollFrame, + float aPressure, unsigned short aInputSourceArg, uint32_t aIdentifier, + bool aToWindow, bool* aPreventDefault, bool aIsDOMEventSynthesized, + bool aIsWidgetEventSynthesized, int32_t aButtons); + + MOZ_CAN_RUN_SCRIPT + nsresult SendTouchEventCommon( + const nsAString& aType, const nsTArray& aIdentifiers, + const nsTArray& aXs, const nsTArray& aYs, + const nsTArray& aRxs, const nsTArray& aRys, + const nsTArray& aRotationAngles, const nsTArray& aForces, + const nsTArray& aTiltXs, const nsTArray& aTiltYs, + const nsTArray& aTwists, int32_t aModifiers, + bool aIgnoreRootScrollFrame, bool aToWindow, bool* aPreventDefault); + + void ReportErrorMessageForWindow(const nsAString& aErrorMessage, + const char* aClassification, + bool aFromChrome); + + private: + mozilla::Result ConvertToScreenRect( + float aX, float aY, float aWidth, float aHeight); +}; + +#endif -- cgit v1.2.3