Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(445)

Unified Diff: third_party/WebKit/Source/core/layout/svg/SVGLayoutTreeAsText.cpp

Issue 2763363002: Use SVGResources in SVGLayoutTreeAsText writeResources (Closed)
Patch Set: TEs Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/LayoutTests/svg/clip-path/clip-path-recursive-call-by-child-expected.txt ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/layout/svg/SVGLayoutTreeAsText.cpp
diff --git a/third_party/WebKit/Source/core/layout/svg/SVGLayoutTreeAsText.cpp b/third_party/WebKit/Source/core/layout/svg/SVGLayoutTreeAsText.cpp
index 8907cbac4f072df3e9c49b627ede9d91c2b82791..62fbfabb68b99a34d4285f52c749bb46143bda1c 100644
--- a/third_party/WebKit/Source/core/layout/svg/SVGLayoutTreeAsText.cpp
+++ b/third_party/WebKit/Source/core/layout/svg/SVGLayoutTreeAsText.cpp
@@ -45,6 +45,8 @@
#include "core/layout/svg/LayoutSVGShape.h"
#include "core/layout/svg/LayoutSVGText.h"
#include "core/layout/svg/SVGLayoutSupport.h"
+#include "core/layout/svg/SVGResources.h"
+#include "core/layout/svg/SVGResourcesCache.h"
#include "core/layout/svg/line/SVGInlineTextBox.h"
#include "core/layout/svg/line/SVGRootInlineBox.h"
#include "core/paint/PaintLayer.h"
@@ -706,68 +708,50 @@ void writeSVGGradientStop(TextStream& ts,
}
void writeResources(TextStream& ts, const LayoutObject& object, int indent) {
+ SVGResources* resources =
+ SVGResourcesCache::cachedResourcesForLayoutObject(&object);
+ if (!resources)
+ return;
const ComputedStyle& style = object.styleRef();
- const SVGComputedStyle& svgStyle = style.svgStyle();
TreeScope& treeScope = object.document();
- SVGTreeScopeResources& treeScopeResources =
- treeScope.ensureSVGTreeScopedResources();
-
- // FIXME: We want to use SVGResourcesCache to determine which resources are
- // present, instead of quering the resource <-> id cache.
- // For now leave the DRT output as is, but later on we should change this so
- // cycles are properly ignored in the DRT output.
- if (!svgStyle.maskerResource().isEmpty()) {
- if (LayoutSVGResourceMasker* masker =
- getLayoutSVGResourceById<LayoutSVGResourceMasker>(
- treeScopeResources, svgStyle.maskerResource())) {
- writeIndent(ts, indent);
- ts << " ";
- writeNameAndQuotedValue(ts, "masker", svgStyle.maskerResource());
- ts << " ";
- writeStandardPrefix(ts, *masker, 0);
- ts << " " << masker->resourceBoundingBox(&object) << "\n";
- }
+ if (LayoutSVGResourceMasker* masker = resources->masker()) {
+ writeIndent(ts, indent);
+ ts << " ";
+ writeNameAndQuotedValue(ts, "masker", style.svgStyle().maskerResource());
+ ts << " ";
+ writeStandardPrefix(ts, *masker, 0);
+ ts << " " << masker->resourceBoundingBox(&object) << "\n";
}
- if (ClipPathOperation* clipPathOperation = style.clipPath()) {
- if (clipPathOperation->type() == ClipPathOperation::REFERENCE) {
- const ReferenceClipPathOperation& clipPathReference =
- toReferenceClipPathOperation(*clipPathOperation);
- AtomicString id = SVGURIReference::fragmentIdentifierFromIRIString(
- clipPathReference.url(), treeScope);
- if (LayoutSVGResourceClipper* clipper =
- getLayoutSVGResourceById<LayoutSVGResourceClipper>(
- treeScopeResources, id)) {
- writeIndent(ts, indent);
- ts << " ";
- writeNameAndQuotedValue(ts, "clipPath", id);
- ts << " ";
- writeStandardPrefix(ts, *clipper, 0);
- ts << " " << clipper->resourceBoundingBox(object.objectBoundingBox())
- << "\n";
- }
- }
+ if (LayoutSVGResourceClipper* clipper = resources->clipper()) {
+ DCHECK(style.clipPath());
+ DCHECK_EQ(style.clipPath()->type(), ClipPathOperation::REFERENCE);
+ const ReferenceClipPathOperation& clipPathReference =
+ toReferenceClipPathOperation(*style.clipPath());
+ AtomicString id = SVGURIReference::fragmentIdentifierFromIRIString(
+ clipPathReference.url(), treeScope);
+ writeIndent(ts, indent);
+ ts << " ";
+ writeNameAndQuotedValue(ts, "clipPath", id);
+ ts << " ";
+ writeStandardPrefix(ts, *clipper, 0);
+ ts << " " << clipper->resourceBoundingBox(object.objectBoundingBox())
+ << "\n";
}
- if (style.hasFilter()) {
- const FilterOperations& filterOperations = style.filter();
- if (filterOperations.size() == 1) {
- const FilterOperation& filterOperation = *filterOperations.at(0);
- if (filterOperation.type() == FilterOperation::REFERENCE) {
- const auto& referenceFilterOperation =
- toReferenceFilterOperation(filterOperation);
- AtomicString id = SVGURIReference::fragmentIdentifierFromIRIString(
- referenceFilterOperation.url(), treeScope);
- if (LayoutSVGResourceFilter* filter =
- getLayoutSVGResourceById<LayoutSVGResourceFilter>(
- treeScopeResources, id)) {
- writeIndent(ts, indent);
- ts << " ";
- writeNameAndQuotedValue(ts, "filter", id);
- ts << " ";
- writeStandardPrefix(ts, *filter, 0);
- ts << " " << filter->resourceBoundingBox(&object) << "\n";
- }
- }
- }
+ if (LayoutSVGResourceFilter* filter = resources->filter()) {
+ DCHECK(style.hasFilter());
+ DCHECK_EQ(style.filter().size(), 1u);
+ const FilterOperation& filterOperation = *style.filter().at(0);
+ DCHECK_EQ(filterOperation.type(), FilterOperation::REFERENCE);
+ const auto& referenceFilterOperation =
+ toReferenceFilterOperation(filterOperation);
+ AtomicString id = SVGURIReference::fragmentIdentifierFromIRIString(
+ referenceFilterOperation.url(), treeScope);
+ writeIndent(ts, indent);
+ ts << " ";
+ writeNameAndQuotedValue(ts, "filter", id);
+ ts << " ";
+ writeStandardPrefix(ts, *filter, 0);
+ ts << " " << filter->resourceBoundingBox(&object) << "\n";
}
}
« no previous file with comments | « third_party/WebKit/LayoutTests/svg/clip-path/clip-path-recursive-call-by-child-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698