Commit 695561b2 authored by Fredrik Söderquist's avatar Fredrik Söderquist Committed by Commit Bot

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/+/2096742Reviewed-by: default avatarStephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#748839}
parent 73e2d942
......@@ -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) {}
......
......@@ -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:
......
......@@ -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 @@ void SVGResources::ClearMarkers(SVGElement& element,
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) {}
......
......@@ -32,7 +32,7 @@
namespace blink {
class ComputedStyle;
class FilterData;
class FilterEffect;
class LayoutObject;
class LayoutSVGResourceClipper;
class LayoutSVGResourceFilter;
......@@ -41,6 +41,7 @@ class LayoutSVGResourceMasker;
class LayoutSVGResourcePaintServer;
class SVGElement;
class SVGElementResourceClient;
class SVGFilterGraphNodeMap;
// Holds a set of resources associated with a LayoutObject
class SVGResources {
......@@ -192,6 +193,35 @@ class SVGResources {
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 {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment