Bug 1393791 - Hoist nsSVGUseFrame into a header. r=emilio
authorBobby Holley <bobbyholley@gmail.com>
Sun, 27 Aug 2017 11:08:26 -0700
changeset 377124 69e1415e3ca00e2e2a679d304ab9102f9631e77e
parent 377123 b564008830c4cacef0ccfb9d8232db0553d671d9
child 377125 34d0b762abdbed8153eb80387461300c9e9e452d
push id49754
push userbholley@mozilla.com
push dateSun, 27 Aug 2017 22:30:08 +0000
treeherderautoland@589f8ecf173b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersemilio
bugs1393791
milestone57.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
Bug 1393791 - Hoist nsSVGUseFrame into a header. r=emilio MozReview-Commit-ID: FcD2Nh7zcRO
layout/svg/moz.build
layout/svg/nsSVGUseFrame.cpp
layout/svg/nsSVGUseFrame.h
--- 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__