Move FilterData to svg_resources.{cc,h}
This class no longer has any affinity with LayoutSVGResourceFilter, so
move to another location (near the referencing class
SVGElementResourceClient).
Bug: 109224
Change-Id: I3a18d8df92e1b49b9f643309101515460ac0f7c9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2096742
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#748839}
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.cc
index 75a42df..09784e4 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.cc
@@ -23,24 +23,10 @@
#include "third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.h"
-#include "third_party/blink/renderer/core/svg/graphics/filters/svg_filter_builder.h"
#include "third_party/blink/renderer/core/svg/svg_filter_element.h"
-#include "third_party/blink/renderer/platform/graphics/filters/filter_effect.h"
namespace blink {
-void FilterData::Trace(Visitor* visitor) {
- visitor->Trace(last_effect);
- visitor->Trace(node_map);
-}
-
-void FilterData::Dispose() {
- node_map = nullptr;
- if (last_effect)
- last_effect->DisposeImageFiltersRecursive();
- last_effect = nullptr;
-}
-
LayoutSVGResourceFilter::LayoutSVGResourceFilter(SVGFilterElement* node)
: LayoutSVGResourceContainer(node) {}
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.h b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.h
index 9a71773a..e1584b2 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.h
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.h
@@ -29,38 +29,7 @@
namespace blink {
-class FilterEffect;
class SVGFilterElement;
-class SVGFilterGraphNodeMap;
-
-class FilterData final : public GarbageCollected<FilterData> {
- public:
- /*
- * The state transitions should follow the following:
- * Initial->RecordingContent->ReadyToPaint->PaintingFilter->ReadyToPaint
- * | ^ | ^
- * v | v |
- * RecordingContentCycleDetected PaintingFilterCycle
- */
- enum FilterDataState {
- kInitial,
- kRecordingContent,
- kRecordingContentCycleDetected,
- kReadyToPaint,
- kPaintingFilter,
- kPaintingFilterCycleDetected
- };
-
- FilterData() : state_(kInitial) {}
-
- void Dispose();
-
- void Trace(Visitor*);
-
- Member<FilterEffect> last_effect;
- Member<SVGFilterGraphNodeMap> node_map;
- FilterDataState state_;
-};
class LayoutSVGResourceFilter final : public LayoutSVGResourceContainer {
public:
diff --git a/third_party/blink/renderer/core/layout/svg/svg_resources.cc b/third_party/blink/renderer/core/layout/svg/svg_resources.cc
index 1613b92a..c5f55b4 100644
--- a/third_party/blink/renderer/core/layout/svg/svg_resources.cc
+++ b/third_party/blink/renderer/core/layout/svg/svg_resources.cc
@@ -39,6 +39,7 @@
#include "third_party/blink/renderer/core/svg/svg_tree_scope_resources.h"
#include "third_party/blink/renderer/core/svg/svg_uri_reference.h"
#include "third_party/blink/renderer/core/svg_names.h"
+#include "third_party/blink/renderer/platform/graphics/filters/filter_effect.h"
#if DCHECK_IS_ON()
#include <stdio.h>
@@ -670,6 +671,18 @@
marker_resource->RemoveClient(*client);
}
+void FilterData::Trace(Visitor* visitor) {
+ visitor->Trace(last_effect);
+ visitor->Trace(node_map);
+}
+
+void FilterData::Dispose() {
+ node_map = nullptr;
+ if (last_effect)
+ last_effect->DisposeImageFiltersRecursive();
+ last_effect = nullptr;
+}
+
SVGElementResourceClient::SVGElementResourceClient(SVGElement* element)
: element_(element) {}
diff --git a/third_party/blink/renderer/core/layout/svg/svg_resources.h b/third_party/blink/renderer/core/layout/svg/svg_resources.h
index a408479d..75323885 100644
--- a/third_party/blink/renderer/core/layout/svg/svg_resources.h
+++ b/third_party/blink/renderer/core/layout/svg/svg_resources.h
@@ -32,7 +32,7 @@
namespace blink {
class ComputedStyle;
-class FilterData;
+class FilterEffect;
class LayoutObject;
class LayoutSVGResourceClipper;
class LayoutSVGResourceFilter;
@@ -41,6 +41,7 @@
class LayoutSVGResourcePaintServer;
class SVGElement;
class SVGElementResourceClient;
+class SVGFilterGraphNodeMap;
// Holds a set of resources associated with a LayoutObject
class SVGResources {
@@ -192,6 +193,35 @@
DISALLOW_COPY_AND_ASSIGN(SVGResources);
};
+class FilterData final : public GarbageCollected<FilterData> {
+ public:
+ /*
+ * The state transitions should follow the following:
+ * Initial->RecordingContent->ReadyToPaint->PaintingFilter->ReadyToPaint
+ * | ^ | ^
+ * v | v |
+ * RecordingContentCycleDetected PaintingFilterCycle
+ */
+ enum FilterDataState {
+ kInitial,
+ kRecordingContent,
+ kRecordingContentCycleDetected,
+ kReadyToPaint,
+ kPaintingFilter,
+ kPaintingFilterCycleDetected
+ };
+
+ FilterData() : state_(kInitial) {}
+
+ void Dispose();
+
+ void Trace(Visitor*);
+
+ Member<FilterEffect> last_effect;
+ Member<SVGFilterGraphNodeMap> node_map;
+ FilterDataState state_;
+};
+
class SVGElementResourceClient final
: public GarbageCollected<SVGElementResourceClient>,
public SVGResourceClient {