author | Bobby Holley <bobbyholley@gmail.com> |
Sun, 27 Aug 2017 11:08:26 -0700 | |
changeset 377139 | 69e1415e3ca00e2e2a679d304ab9102f9631e77e |
parent 377138 | b564008830c4cacef0ccfb9d8232db0553d671d9 |
child 377140 | 34d0b762abdbed8153eb80387461300c9e9e452d |
push id | 32402 |
push user | archaeopteryx@coole-files.de |
push date | Mon, 28 Aug 2017 14:47:04 +0000 |
treeherder | mozilla-central@d5b6d113cf17 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | emilio |
bugs | 1393791 |
milestone | 57.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/layout/svg/moz.build +++ b/layout/svg/moz.build @@ -17,16 +17,17 @@ if CONFIG['ENABLE_TESTS']: EXPORTS += [ 'nsFilterInstance.h', 'nsSVGEffects.h', 'nsSVGFilterInstance.h', 'nsSVGForeignObjectFrame.h', 'nsSVGImageFrame.h', 'nsSVGIntegrationUtils.h', + 'nsSVGUseFrame.h', 'nsSVGUtils.h', 'SVGImageContext.h', ] EXPORTS.mozilla += [ 'SVGContextPaint.h', ]
--- a/layout/svg/nsSVGUseFrame.cpp +++ b/layout/svg/nsSVGUseFrame.cpp @@ -1,70 +1,21 @@ /* -*- 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/. */ -// 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<ContentInfo>& aElements) override; - virtual void AppendAnonymousContentTo(nsTArray<nsIContent*>& aElements, - uint32_t aFilter) override; - -private: - bool mHasValidDimensions; -}; - //---------------------------------------------------------------------- // Implementation nsIFrame* NS_NewSVGUseFrame(nsIPresShell* aPresShell, nsStyleContext* aContext) { return new (aPresShell) nsSVGUseFrame(aContext); }
new file mode 100644 --- /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<ContentInfo>& aElements) override; + void AppendAnonymousContentTo(nsTArray<nsIContent*>& aElements, + uint32_t aFilter) override; + +private: + bool mHasValidDimensions; +}; + +#endif // __NS_SVGUSEFRAME_H__