Bug 1667594 - Move nsLayoutUtils::RectCallback to namespace scope. r=emilio,jgilbert

This allows it to be forward-declared (while a nested class cannot be),
such that headers files that use RectCallback by pointer or reference
do not need to include nsLayoutUtils.h.

This avoids including nsLayoutUtils.h in nsRange.h.

Differential Revision: https://phabricator.services.mozilla.com/D91685
This commit is contained in:
Botond Ballo 2020-09-30 21:06:47 +00:00
Родитель e6c29de3e7
Коммит 01b3c7969d
35 изменённых файлов: 90 добавлений и 48 удалений

Просмотреть файл

@ -12,6 +12,7 @@
#include "nsIAnonymousContentCreator.h"
#include "nsIFrame.h"
#include "nsCSSAnonBoxes.h"
#include "nsLayoutUtils.h"
namespace mozilla {
namespace dom {

Просмотреть файл

@ -2705,7 +2705,7 @@ bool Selection::ContainsNode(nsINode& aNode, bool aAllowPartial,
return false;
}
class PointInRectChecker : public nsLayoutUtils::RectCallback {
class PointInRectChecker : public mozilla::RectCallback {
public:
explicit PointInRectChecker(const nsPoint& aPoint)
: mPoint(aPoint), mMatchFound(false) {}

Просмотреть файл

@ -214,6 +214,7 @@
#include "nsIWindowMediator.h"
#include "nsIXPConnect.h"
#include "nsJSUtils.h"
#include "nsLayoutUtils.h"
#include "nsMappedAttributes.h"
#include "nsNetCID.h"
#include "nsNetUtil.h"

Просмотреть файл

@ -83,6 +83,7 @@
#include "js/friend/WindowProxy.h" // js::IsWindowProxy, js::SetWindowProxy
#include "js/PropertySpec.h"
#include "js/Wrapper.h"
#include "nsLayoutUtils.h"
#include "nsReadableUtils.h"
#include "nsJSEnvironment.h"
#include "mozilla/dom/ScriptSettings.h"

Просмотреть файл

@ -20,6 +20,7 @@
#include "nsINodeList.h"
#include "nsGkAtoms.h"
#include "nsContentUtils.h"
#include "nsLayoutUtils.h"
#include "nsTextFrame.h"
#include "mozilla/Assertions.h"
#include "mozilla/CheckedInt.h"
@ -2582,7 +2583,7 @@ static nsTextFrame* GetTextFrameForContent(nsIContent* aContent,
return static_cast<nsTextFrame*>(frame);
}
static nsresult GetPartialTextRect(nsLayoutUtils::RectCallback* aCallback,
static nsresult GetPartialTextRect(RectCallback* aCallback,
Sequence<nsString>* aTextList,
nsIContent* aContent, int32_t aStartOffset,
int32_t aEndOffset, bool aClampToEdge,
@ -2639,10 +2640,9 @@ static nsresult GetPartialTextRect(nsLayoutUtils::RectCallback* aCallback,
/* static */
void nsRange::CollectClientRectsAndText(
nsLayoutUtils::RectCallback* aCollector, Sequence<nsString>* aTextList,
nsRange* aRange, nsINode* aStartContainer, uint32_t aStartOffset,
nsINode* aEndContainer, uint32_t aEndOffset, bool aClampToEdge,
bool aFlushLayout) {
RectCallback* aCollector, Sequence<nsString>* aTextList, nsRange* aRange,
nsINode* aStartContainer, uint32_t aStartOffset, nsINode* aEndContainer,
uint32_t aEndOffset, bool aClampToEdge, bool aFlushLayout) {
// Currently, this method is called with start of end offset of nsRange.
// So, they must be between 0 - INT32_MAX.
MOZ_ASSERT(RangeUtils::IsValidOffset(aStartOffset));

Просмотреть файл

@ -13,7 +13,6 @@
#include "nsCOMPtr.h"
#include "mozilla/dom/AbstractRange.h"
#include "nsLayoutUtils.h"
#include "prmon.h"
#include "nsStubMutationObserver.h"
#include "nsWrapperCache.h"
@ -23,6 +22,7 @@
#include "mozilla/RangeBoundary.h"
namespace mozilla {
class RectCallback;
namespace dom {
struct ClientRectsAndTexts;
class DocGroup;
@ -321,7 +321,7 @@ class nsRange final : public mozilla::dom::AbstractRange,
* @param aTextList optional where nullptr = don't retrieve text
*/
static void CollectClientRectsAndText(
nsLayoutUtils::RectCallback* aCollector,
mozilla::RectCallback* aCollector,
mozilla::dom::Sequence<nsString>* aTextList, nsRange* aRange,
nsINode* aStartContainer, uint32_t aStartOffset, nsINode* aEndContainer,
uint32_t aEndOffset, bool aClampToEdge, bool aFlushLayout);

Просмотреть файл

@ -111,6 +111,7 @@
#include "nsGlobalWindow.h"
#include "nsDeviceContext.h"
#include "nsFontMetrics.h"
#include "nsLayoutUtils.h"
#include "Units.h"
#include "CanvasUtils.h"
#include "mozilla/CycleCollectedJSRuntime.h"
@ -4586,8 +4587,8 @@ void CanvasRenderingContext2D::DrawImage(const CanvasImageSource& aImage,
}
void CanvasRenderingContext2D::DrawDirectlyToCanvas(
const DirectDrawInfo& aImage, gfx::Rect* aBounds,
gfx::Rect aDest, gfx::Rect aSrc, gfx::IntSize aImgSize) {
const DirectDrawInfo& aImage, gfx::Rect* aBounds, gfx::Rect aDest,
gfx::Rect aSrc, gfx::IntSize aImgSize) {
MOZ_ASSERT(aSrc.width > 0 && aSrc.height > 0,
"Need positive source width and height");

Просмотреть файл

@ -14,6 +14,7 @@
#include "nsWrapperCache.h"
#include "mozilla/dom/WebGLRenderingContextBinding.h"
#include "mozilla/dom/WebGL2RenderingContextBinding.h"
#include "mozilla/layers/LayersSurfaces.h"
#include "WebGLFormats.h"
#include "WebGLStrongTypes.h"
#include "WebGLTypes.h"

Просмотреть файл

@ -6,10 +6,17 @@
#include "mozilla/dom/ImageBitmap.h"
#include "mozilla/CheckedInt.h"
#include "mozilla/dom/CanvasRenderingContext2D.h"
#include "mozilla/dom/CanvasUtils.h"
#include "mozilla/dom/HTMLCanvasElement.h"
#include "mozilla/dom/HTMLImageElement.h"
#include "mozilla/dom/HTMLMediaElementBinding.h"
#include "mozilla/dom/HTMLVideoElement.h"
#include "mozilla/dom/ImageBitmapBinding.h"
#include "mozilla/dom/OffscreenCanvas.h"
#include "mozilla/dom/Promise.h"
#include "mozilla/dom/StructuredCloneTags.h"
#include "mozilla/dom/SVGImageElement.h"
#include "mozilla/dom/WorkerPrivate.h"
#include "mozilla/dom/WorkerRef.h"
#include "mozilla/dom/WorkerRunnable.h"
@ -17,7 +24,10 @@
#include "mozilla/gfx/Swizzle.h"
#include "mozilla/Mutex.h"
#include "mozilla/ScopeExit.h"
#include "nsGlobalWindowInner.h"
#include "nsIAsyncInputStream.h"
#include "nsNetUtil.h"
#include "nsLayoutUtils.h"
#include "nsStreamUtils.h"
#include "ImageUtils.h"
#include "imgLoader.h"
@ -775,8 +785,8 @@ already_AddRefed<ImageBitmap> ImageBitmap::CreateInternal(
nsCOMPtr<nsIPrincipal> principal = aVideoEl.GetCurrentVideoPrincipal();
bool hadCrossOriginRedirects = aVideoEl.HadCrossOriginRedirects();
bool CORSUsed = aVideoEl.GetCORSMode() != CORS_NONE;
bool writeOnly =
CheckWriteOnlySecurity(CORSUsed, principal, hadCrossOriginRedirects);
bool writeOnly = CanvasUtils::CheckWriteOnlySecurity(CORSUsed, principal,
hadCrossOriginRedirects);
// Create ImageBitmap.
RefPtr<layers::Image> data = aVideoEl.GetCurrentImage();

Просмотреть файл

@ -22,6 +22,7 @@
#include "mozilla/Scoped.h"
#include "mozilla/StaticPrefs_webgl.h"
#include "mozilla/Unused.h"
#include "nsLayoutUtils.h"
#include "ScopedGLHelpers.h"
#include "TexUnpackBlob.h"
#include "WebGLBuffer.h"

Просмотреть файл

@ -11,6 +11,7 @@
#include "mozilla/dom/SVGRect.h"
#include "nsBidiUtils.h"
#include "DOMSVGPoint.h"
#include "nsLayoutUtils.h"
#include "nsTextFragment.h"
#include "nsTextFrameUtils.h"
#include "nsTextNode.h"

Просмотреть файл

@ -19,6 +19,7 @@
#include "mozilla/SVGUtils.h"
#include "nsContentUtils.h"
#include "nsIFrame.h"
#include "nsLayoutUtils.h"
using namespace mozilla::gfx;

Просмотреть файл

@ -15,6 +15,7 @@
#include "mozilla/EffectSet.h"
#include "mozilla/StaticPrefs_layout.h"
#include "nsIContent.h"
#include "nsLayoutUtils.h"
#include "nsStyleTransformMatrix.h"
#include "PuppetWidget.h"

Просмотреть файл

@ -18,6 +18,7 @@
#include "mozilla/webrender/WebRenderTypes.h" // for ToWrTransformProperty, etc
#include "nsDeviceContext.h" // for AppUnitsPerCSSPixel
#include "nsDisplayList.h" // for nsDisplayTransform, etc
#include "nsLayoutUtils.h"
#include "TreeTraversal.h" // for ForEachNode, BreadthFirstSearch
namespace mozilla {

Просмотреть файл

@ -78,8 +78,9 @@
#include "nsAlgorithm.h" // for clamped
#include "nsCOMPtr.h" // for already_AddRefed
#include "nsDebug.h" // for NS_WARNING
#include "nsMathUtils.h" // for NS_hypot
#include "nsPoint.h" // for nsIntPoint
#include "nsLayoutUtils.h"
#include "nsMathUtils.h" // for NS_hypot
#include "nsPoint.h" // for nsIntPoint
#include "nsStyleConsts.h"
#include "nsTimingFunction.h"
#include "nsTArray.h" // for nsTArray, nsTArray_Impl, etc

Просмотреть файл

@ -28,6 +28,7 @@
#include "nsAString.h"
#include "nsDisplayList.h"
#include "nsIWidgetListener.h"
#include "nsLayoutUtils.h"
#include "nsTArray.h" // for AutoTArray
#include "nsXULAppAPI.h" // for XRE_GetProcessType, etc
#include "TiledLayerBuffer.h"

Просмотреть файл

@ -22,6 +22,7 @@
#include "mozilla/Preferences.h" // for Preferences
#include "mozilla/StaticPrefs_gfx.h"
#include "mozilla/StaticPrefs_layers.h"
#include "mozilla/StaticPrefs_nglayout.h"
#include "mozilla/gfx/BasePoint.h" // for BasePoint
#include "mozilla/gfx/Matrix.h" // for Matrix4x4, Matrix
#include "mozilla/gfx/Triangle.h" // for Triangle

Просмотреть файл

@ -31,6 +31,7 @@
#include "UnitTransforms.h"
#include "gfxEnv.h"
#include "nsDisplayListInvalidation.h"
#include "nsLayoutUtils.h"
#include "WebRenderCanvasRenderer.h"
#include "LayersLogging.h"
#include "LayerTreeInvalidation.h"

Просмотреть файл

@ -21,6 +21,7 @@
#include "mozilla/layers/WebRenderBridgeChild.h"
#include "mozilla/layers/UpdateImageHelper.h"
#include "nsDisplayList.h"
#include "nsLayoutUtils.h"
#include "WebRenderCanvasRenderer.h"
#ifdef XP_WIN

Просмотреть файл

@ -16,6 +16,7 @@
#include "nsCSSFrameConstructor.h"
#include "nsDOMTokenList.h"
#include "nsIFrame.h"
#include "nsLayoutUtils.h"
#include "nsPlaceholderFrame.h"
namespace mozilla {

Просмотреть файл

@ -24,6 +24,7 @@
#include "nsFocusManager.h"
#include "nsFrameSelection.h"
#include "nsITimer.h"
#include "nsLayoutUtils.h"
#include "nsPresContext.h"
using namespace mozilla;

Просмотреть файл

@ -7,6 +7,7 @@
#ifndef mozilla_AccessibleCaretEventHub_h
#define mozilla_AccessibleCaretEventHub_h
#include "LayoutConstants.h"
#include "mozilla/EventForwards.h"
#include "mozilla/MouseEvents.h"
#include "mozilla/UniquePtr.h"

Просмотреть файл

@ -4569,11 +4569,11 @@ nsIFrame* nsLayoutUtils::GetFirstNonAnonymousFrame(nsIFrame* aFrame) {
struct BoxToRect : public nsLayoutUtils::BoxCallback {
const nsIFrame* mRelativeTo;
nsLayoutUtils::RectCallback* mCallback;
RectCallback* mCallback;
uint32_t mFlags;
bool mRelativeToIsRoot;
BoxToRect(const nsIFrame* aRelativeTo, nsLayoutUtils::RectCallback* aCallback,
BoxToRect(const nsIFrame* aRelativeTo, RectCallback* aCallback,
uint32_t aFlags)
: mRelativeTo(aRelativeTo), mCallback(aCallback), mFlags(aFlags),
mRelativeToIsRoot(!aRelativeTo->GetParent()) {}
@ -4613,8 +4613,7 @@ struct BoxToRect : public nsLayoutUtils::BoxCallback {
struct MOZ_RAII BoxToRectAndText : public BoxToRect {
Sequence<nsString>* mTextList;
BoxToRectAndText(const nsIFrame* aRelativeTo,
nsLayoutUtils::RectCallback* aCallback,
BoxToRectAndText(const nsIFrame* aRelativeTo, RectCallback* aCallback,
Sequence<nsString>* aTextList, uint32_t aFlags)
: BoxToRect(aRelativeTo, aCallback, aFlags), mTextList(aTextList) {}
@ -7755,10 +7754,9 @@ bool nsLayoutUtils::IsInPositionFixedSubtree(const nsIFrame* aFrame) {
return false;
}
SurfaceFromElementResult
nsLayoutUtils::SurfaceFromOffscreenCanvas(OffscreenCanvas* aOffscreenCanvas,
uint32_t aSurfaceFlags,
RefPtr<DrawTarget>& aTarget) {
SurfaceFromElementResult nsLayoutUtils::SurfaceFromOffscreenCanvas(
OffscreenCanvas* aOffscreenCanvas, uint32_t aSurfaceFlags,
RefPtr<DrawTarget>& aTarget) {
SurfaceFromElementResult result;
IntSize size = aOffscreenCanvas->GetWidthHeight();

Просмотреть файл

@ -144,6 +144,15 @@ MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(DrawStringFlags)
enum class ScrollableDirection { Horizontal, Vertical, Either };
namespace mozilla {
class RectCallback {
public:
virtual void AddRect(const nsRect& aRect) = 0;
};
} // namespace mozilla
/**
* nsLayoutUtils is a namespace class used for various helper
* functions that are useful in multiple places in layout. The goal
@ -1312,12 +1321,7 @@ class nsLayoutUtils {
*/
static nsIFrame* GetFirstNonAnonymousFrame(nsIFrame* aFrame);
class RectCallback {
public:
virtual void AddRect(const nsRect& aRect) = 0;
};
struct RectAccumulator : public RectCallback {
struct RectAccumulator : public mozilla::RectCallback {
nsRect mResultRect;
nsRect mFirstRect;
bool mSeenFirstRect;
@ -1327,7 +1331,7 @@ class nsLayoutUtils {
virtual void AddRect(const nsRect& aRect) override;
};
struct RectListBuilder : public RectCallback {
struct RectListBuilder : public mozilla::RectCallback {
DOMRectList* mRectList;
explicit RectListBuilder(DOMRectList* aList);
@ -1361,10 +1365,12 @@ class nsLayoutUtils {
* Otherwise (by default), the border box is used.
*/
static void GetAllInFlowRects(nsIFrame* aFrame, const nsIFrame* aRelativeTo,
RectCallback* aCallback, uint32_t aFlags = 0);
mozilla::RectCallback* aCallback,
uint32_t aFlags = 0);
static void GetAllInFlowRectsAndTexts(
nsIFrame* aFrame, const nsIFrame* aRelativeTo, RectCallback* aCallback,
nsIFrame* aFrame, const nsIFrame* aRelativeTo,
mozilla::RectCallback* aCallback,
mozilla::dom::Sequence<nsString>* aTextList, uint32_t aFlags = 0);
/**

Просмотреть файл

@ -122,6 +122,7 @@
#include "mozilla/dom/localstorage/ActorsParent.h"
#include "mozilla/net/UrlClassifierFeatureFactory.h"
#include "mozilla/RemoteLazyInputStreamStorage.h"
#include "nsLayoutUtils.h"
#include "nsThreadManager.h"
#include "mozilla/css/ImageLoader.h"
#include "gfxUserFontSet.h"

Просмотреть файл

@ -9,6 +9,7 @@
#include "mozilla/dom/ElementInlines.h"
#include "nsContainerFrame.h"
#include "nsLayoutUtils.h"
#include "nsPlaceholderFrame.h"
#include "nsStyleStructInlines.h"
#include "nsCSSAnonBoxes.h"

Просмотреть файл

@ -3782,6 +3782,23 @@ void nsTextFrame::PropertyProvider::SetupJustificationSpacing(
}
}
void nsTextFrame::PropertyProvider::InitFontGroupAndFontMetrics() const {
if (!mFontMetrics) {
if (mWhichTextRun == nsTextFrame::eInflated) {
if (!mFrame->InflatedFontMetrics()) {
float inflation = mFrame->GetFontSizeInflation();
mFontMetrics = nsLayoutUtils::GetFontMetricsForFrame(mFrame, inflation);
mFrame->SetInflatedFontMetrics(mFontMetrics);
} else {
mFontMetrics = mFrame->InflatedFontMetrics();
}
} else {
mFontMetrics = nsLayoutUtils::GetFontMetricsForFrame(mFrame, 1.0f);
}
}
mFontGroup = mFontMetrics->GetThebesFontGroup();
}
//----------------------------------------------------------------------
static nscolor EnsureDifferentColors(nscolor colorA, nscolor colorB) {

Просмотреть файл

@ -161,23 +161,7 @@ class nsTextFrame : public nsIFrame {
protected:
void SetupJustificationSpacing(bool aPostReflow);
void InitFontGroupAndFontMetrics() const {
if (!mFontMetrics) {
if (mWhichTextRun == nsTextFrame::eInflated) {
if (!mFrame->InflatedFontMetrics()) {
float inflation = mFrame->GetFontSizeInflation();
mFontMetrics =
nsLayoutUtils::GetFontMetricsForFrame(mFrame, inflation);
mFrame->SetInflatedFontMetrics(mFontMetrics);
} else {
mFontMetrics = mFrame->InflatedFontMetrics();
}
} else {
mFontMetrics = nsLayoutUtils::GetFontMetricsForFrame(mFrame, 1.0f);
}
}
mFontGroup = mFontMetrics->GetThebesFontGroup();
}
void InitFontGroupAndFontMetrics() const;
const RefPtr<gfxTextRun> mTextRun;
mutable gfxFontGroup* mFontGroup;

Просмотреть файл

@ -25,6 +25,7 @@
#include "nsImageFrame.h"
#include "nsIImageLoadingContent.h"
#include "nsContentUtils.h"
#include "nsLayoutUtils.h"
#include "ImageContainer.h"
#include "ImageLayers.h"
#include "nsStyleUtil.h"

Просмотреть файл

@ -22,6 +22,7 @@
#include "nsCSSRenderingGradients.h"
#include "nsDeviceContext.h"
#include "nsIFrame.h"
#include "nsLayoutUtils.h"
#include "nsStyleStructInlines.h"
#include "mozilla/ISVGDisplayableFrame.h"
#include "mozilla/SVGIntegrationUtils.h"

Просмотреть файл

@ -47,6 +47,7 @@
#include "mozilla/dom/Link.h"
#include "mozilla/dom/RangeBinding.h"
#include "mozilla/dom/Selection.h"
#include "nsLayoutUtils.h"
#include "nsRange.h"
#include "nsTypeAheadFind.h"

Просмотреть файл

@ -43,6 +43,7 @@
#include "mozilla/StaticPrefs_layout.h"
#include "mozilla/StaticPrefs_widget.h"
#include "nsWindow.h"
#include "nsLayoutUtils.h"
#include "nsNativeBasicTheme.h"
#ifdef MOZ_X11

Просмотреть файл

@ -73,6 +73,7 @@
#include "mozilla/Preferences.h"
#include "nsGfxCIID.h"
#include "nsGtkUtils.h"
#include "nsLayoutUtils.h"
#include "mozilla/layers/LayersTypes.h"
#include "nsIUserIdleServiceInternal.h"
#include "GLContext.h"

Просмотреть файл

@ -6,6 +6,7 @@
#include "nsNativeBasicTheme.h"
#include "nsCSSRendering.h"
#include "nsLayoutUtils.h"
#include "PathHelpers.h"
using namespace mozilla;

Просмотреть файл

@ -20,6 +20,7 @@
#include "nsMenuFrame.h"
#include "nsRangeFrame.h"
#include "nsCSSRendering.h"
#include "ImageContainer.h"
#include "mozilla/ComputedStyle.h"
#include "mozilla/EventStates.h"
#include "mozilla/dom/Element.h"