From d3e80c057b410a8d0de86a97a376c32fe3c24a19 Mon Sep 17 00:00:00 2001 From: Bobby Holley Date: Sun, 27 Aug 2017 11:08:26 -0700 Subject: [PATCH] Bug 1393791 - Hoist nsSVGUseFrame into a header. r=emilio MozReview-Commit-ID: FcD2Nh7zcRO --- layout/svg/moz.build | 1 + layout/svg/nsSVGUseFrame.cpp | 55 ++------------------------------ layout/svg/nsSVGUseFrame.h | 62 ++++++++++++++++++++++++++++++++++++ 3 files changed, 66 insertions(+), 52 deletions(-) create mode 100644 layout/svg/nsSVGUseFrame.h diff --git a/layout/svg/moz.build b/layout/svg/moz.build index 0b2ef7dddd194..b96cde0bec251 100644 --- a/layout/svg/moz.build +++ b/layout/svg/moz.build @@ -22,6 +22,7 @@ EXPORTS += [ 'nsSVGForeignObjectFrame.h', 'nsSVGImageFrame.h', 'nsSVGIntegrationUtils.h', + 'nsSVGUseFrame.h', 'nsSVGUtils.h', 'SVGImageContext.h', ] diff --git a/layout/svg/nsSVGUseFrame.cpp b/layout/svg/nsSVGUseFrame.cpp index 3172d4a371f01..9c0b6923c5cad 100644 --- a/layout/svg/nsSVGUseFrame.cpp +++ b/layout/svg/nsSVGUseFrame.cpp @@ -3,63 +3,14 @@ * 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/. */ -// Keep in (case-insensitive) order: -#include "nsIAnonymousContentCreator.h" -#include "nsSVGEffects.h" -#include "nsSVGGFrame.h" +#include "nsSVGUseFrame.h" + #include "mozilla/dom/SVGUseElement.h" #include "nsContentList.h" +#include "nsSVGEffects.h" using namespace mozilla::dom; -class nsSVGUseFrame final - : public nsSVGGFrame - , public nsIAnonymousContentCreator -{ - friend nsIFrame* - NS_NewSVGUseFrame(nsIPresShell* aPresShell, nsStyleContext* aContext); - -protected: - explicit nsSVGUseFrame(nsStyleContext* aContext) - : nsSVGGFrame(aContext, kClassID) - , mHasValidDimensions(true) - {} - -public: - NS_DECL_QUERYFRAME - NS_DECL_FRAMEARENA_HELPERS(nsSVGUseFrame) - - // nsIFrame interface: - virtual void Init(nsIContent* aContent, - nsContainerFrame* aParent, - nsIFrame* aPrevInFlow) override; - - virtual nsresult AttributeChanged(int32_t aNameSpaceID, - nsIAtom* aAttribute, - int32_t aModType) override; - - virtual void DestroyFrom(nsIFrame* aDestructRoot) override; - -#ifdef DEBUG_FRAME_DUMP - virtual nsresult GetFrameName(nsAString& aResult) const override - { - return MakeFrameName(NS_LITERAL_STRING("SVGUse"), aResult); - } -#endif - - // nsSVGDisplayableFrame interface: - virtual void ReflowSVG() override; - virtual void NotifySVGChanged(uint32_t aFlags) override; - - // nsIAnonymousContentCreator - virtual nsresult CreateAnonymousContent(nsTArray& aElements) override; - virtual void AppendAnonymousContentTo(nsTArray& aElements, - uint32_t aFilter) override; - -private: - bool mHasValidDimensions; -}; - //---------------------------------------------------------------------- // Implementation diff --git a/layout/svg/nsSVGUseFrame.h b/layout/svg/nsSVGUseFrame.h new file mode 100644 index 0000000000000..fe72ac6321b3d --- /dev/null +++ b/layout/svg/nsSVGUseFrame.h @@ -0,0 +1,62 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* 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 __NS_SVGUSEFRAME_H__ +#define __NS_SVGUSEFRAME_H__ + +// Keep in (case-insensitive) order: +#include "nsIAnonymousContentCreator.h" +#include "nsSVGGFrame.h" + +class nsSVGUseFrame final + : public nsSVGGFrame + , public nsIAnonymousContentCreator +{ + friend nsIFrame* NS_NewSVGUseFrame(nsIPresShell* aPresShell, + nsStyleContext* aContext); + +protected: + explicit nsSVGUseFrame(nsStyleContext* aContext) + : nsSVGGFrame(aContext, kClassID) + , mHasValidDimensions(true) + { + } + +public: + NS_DECL_QUERYFRAME + NS_DECL_FRAMEARENA_HELPERS(nsSVGUseFrame) + + // nsIFrame interface: + void Init(nsIContent* aContent, + nsContainerFrame* aParent, + nsIFrame* aPrevInFlow) override; + + nsresult AttributeChanged(int32_t aNameSpaceID, + nsIAtom* aAttribute, + int32_t aModType) override; + + void DestroyFrom(nsIFrame* aDestructRoot) override; + +#ifdef DEBUG_FRAME_DUMP + nsresult GetFrameName(nsAString& aResult) const override + { + return MakeFrameName(NS_LITERAL_STRING("SVGUse"), aResult); + } +#endif + + // nsSVGDisplayableFrame interface: + void ReflowSVG() override; + void NotifySVGChanged(uint32_t aFlags) override; + + // nsIAnonymousContentCreator + nsresult CreateAnonymousContent(nsTArray& aElements) override; + void AppendAnonymousContentTo(nsTArray& aElements, + uint32_t aFilter) override; + +private: + bool mHasValidDimensions; +}; + +#endif // __NS_SVGUSEFRAME_H__