Files
palemoon27/dom/base/nsDOMWindowUtils.h
T
roytam1 5231e1d799 import changes from `dev' branch of rmottola/Arctic-Fox:
- Bug 1151703 - Part 1: Add timeline tracing markers for HTML and XML parsing; r=smaug (f18723780)
- Bug 1151703 - Part 2: Show XML and HTML parsing markers in the performance tool; r=jsantell (d7a56c7af)
- Bug 1151703 - Part 3: Add a test for HTML parsing markers; r=jsantell (0e0cdaf79)
- Bug 1145247 - Add AutoTimelineMarker RAII class; r=smaug (03f8f0b68)
- Bug 1148650 - Strengthen assertion that RemoveScriptBlocker is called on the main thread. r=smaug (23c32f7e6)
- Bug 1154812. Fix location.pathname to return the right thing in workers. r=baku (1da68d18e)
- Bug 1039818 - Extract the implementation of nsIDOMWindowUtils::GetResolution into nsLayoutUtils. r=ehsan (16001c475)
- Bug 1039818 - Do not allow an older APZ repaint request to clobber a newer pres shell resolution in Layout. r=kats (928c128b8)
- Bug 1152479 - Extract the implementations of layout-related nsIDOMWindowUtils APIs used by APZ into nsLayoutUtils. r=ehsan (56dbd653e)
- Bug 1152479 - Do not use layout-related nsIDOMWindowUtils APIs from C++ APZ code. r=kats (73a316e28)
- Bug 1152479 - Assert IsCallerChrome() in some layout-related nsIDOMWindowUtils APIs. r=ehsan (d02bc426a)
- Bug 1155387: Add missing #include for imgIContainer.h to ContentParent.cpp. r=enndeakin (d2c53efea)
- Bug 1071562, e10s, support non-text types in clipboard (html, images, etc), r=smaug (9b13a7e62)
- Bug 1157193, fix null pointer check when dragging images, r=smaug (78198c3ce)
- Bug 1152479 - Extract the implementations of nsIDOMWindowUtils::Send{KeyEvent,MouseEvent} into nsContentUtils. r=ehsan (432b1cb4a)
- Bug 1152479 - In C++ APZ code, use nsContentUtils rather than nsIDOMWindowUtils to send key and mouse events. r=kats (8917cddda)
2020-07-11 00:37:02 +08:00

134 lines
4.5 KiB
C++

/* -*- 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"
class nsGlobalWindow;
class nsIPresShell;
class nsIWidget;
class nsPresContext;
class nsIDocument;
class nsView;
struct nsPoint;
namespace mozilla {
namespace layers {
class LayerTransactionChild;
} // 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(nsIDOMNode* aElement, bool aIsRoot)
{
mNodes.AppendElement(aElement);
mNodeIsRoot.AppendElement(aIsRoot);
mLength++;
}
private:
~nsTranslationNodeList() {}
nsTArray<nsCOMPtr<nsIDOMNode> > mNodes;
nsTArray<bool> mNodeIsRoot;
uint32_t mLength;
};
class nsDOMWindowUtils final : public nsIDOMWindowUtils,
public nsSupportsWeakReference
{
typedef mozilla::widget::TextEventDispatcher
TextEventDispatcher;
public:
explicit nsDOMWindowUtils(nsGlobalWindow *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(nsIDOMElement* aElement);
nsIPresShell* GetPresShell();
nsPresContext* GetPresContext();
nsIDocument* GetDocument();
mozilla::layers::LayerTransactionChild* GetLayerTransaction();
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,
bool aToWindow,
bool *aPreventDefault,
bool aIsSynthesized);
NS_IMETHOD SendPointerEventCommon(const nsAString& aType,
float aX,
float aY,
int32_t aButton,
int32_t aClickCount,
int32_t aModifiers,
bool aIgnoreRootScrollFrame,
float aPressure,
unsigned short aInputSourceArg,
int32_t aPointerId,
int32_t aWidth,
int32_t aHeight,
int32_t aTiltX,
int32_t aTiltY,
bool aIsPrimary,
bool aIsSynthesized,
uint8_t aOptionalArgCount,
bool aToWindow,
bool* aPreventDefault);
NS_IMETHOD SendTouchEventCommon(const nsAString& aType,
uint32_t* aIdentifiers,
int32_t* aXs,
int32_t* aYs,
uint32_t* aRxs,
uint32_t* aRys,
float* aRotationAngles,
float* aForces,
uint32_t aCount,
int32_t aModifiers,
bool aIgnoreRootScrollFrame,
bool aToWindow,
bool* aPreventDefault);
};
#endif