New issue
Advanced search Search tips

Issue 769774 link

Starred by 6 users

Issue metadata

Status: Assigned
Owner:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Task

Blocked on:
issue 534817
issue 454767
issue 661598

Blocking:
issue 109212



Sign in to add a comment

Fix url(...) reference resolution 'fill', 'stroke' and similar properties

Project Member Reported by f...@opera.com, Sep 28 2017

Issue description

We currently resolve url(...) (element) references by storing the 'id' / fragment bit in computed style. Resources are then registered during style recalc(!), and "clients" resolve/lookup references on style-recalc (or attach.)

Since resources are registered (using their layout objects) during the same phase as clients lookup references, the relative ordering of resources and their clients matter for the robustness with which these connections are made.

Also, since the resolution of references happens when creating the SVGResources, fragment identifiers can be resolved in the wrong tree scope (since the fragment identifier is what's inherited and not the actual resolved element reference.)

Change to a model where the DOM nodes are what's "registered" (should be more appropriate from a lifecycle PoV) and where references are resolved during (computed) style resolving.

This should provide a structure more suitable for implementation of additional resource features (such as issue 109212.)
 

Comment 1 by f...@opera.com, Nov 13 2017

Blocking: 751733

Comment 2 by f...@opera.com, Jan 16 2018

Blockedon: 661598
Project Member

Comment 3 by bugdroid1@chromium.org, Jan 22 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c36508a349b4bff18c73f2e2e2b46805ad091598

commit c36508a349b4bff18c73f2e2e2b46805ad091598
Author: Fredrik Söderquist <fs@opera.com>
Date: Mon Jan 22 19:01:26 2018

[CI] DOM-based SVG resource tracking (1/n)

This starts the transition away from tracking SVG resources based on LayoutObjects.
In the new (probably transitional) model, the resources are track via a Resource
object (inner class) on SVGTreeScopeResources. These Resource objects are
IdTargetObservers, meaning that id mutations no longer are tracked via hooks in
SVGElement. The "pending resource handling" mechanism is also moved to the Resource
objects in the form of a "pending clients" set. The old mechanism (i.e
NeedsPendingResourceHandling() and BuildPendingResourcesIfNeeded()) are no longer
needed and hence removed.

Next step will be to eliminate all remaining tracking logic from
LayoutSVGResourceContainer.

Somewhat independently, a new entry point ResourceReferenceChanged is added to
SVGResourcesCache, codifying the sequence that previously involved calls to
ClientStyleChanged and MarkForLayoutAndParentResourceInvalidation.

Bug:  454767 ,  661598 , 769774, 784435
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I268f2e2a2a5e2e01f077a6b0a5b6270f668a2a6f
Reviewed-on: https://chromium-review.googlesource.com/689998
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#530930}
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-late-marker-and-object-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-late-marker-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-late-mask-and-object-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/paint/invalidation/svg/js-late-mask-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/js-late-clipPath-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/js-late-gradient-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/platform/mac/paint/invalidation/svg/js-late-pattern-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/js-late-clipPath-and-object-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/js-late-clipPath-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/js-late-gradient-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/platform/win/paint/invalidation/svg/js-late-pattern-creation-expected.txt
[add] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/svg/custom/duplicate-ids-remove-first-expected.html
[add] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/svg/custom/duplicate-ids-remove-first.html
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/virtual/spv175/paint/invalidation/svg/js-late-gradient-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/virtual/spv175/paint/invalidation/svg/js-late-marker-and-object-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/virtual/spv175/paint/invalidation/svg/js-late-marker-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/virtual/spv175/paint/invalidation/svg/js-late-mask-and-object-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/virtual/spv175/paint/invalidation/svg/js-late-mask-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/LayoutTests/virtual/spv175/paint/invalidation/svg/js-late-pattern-creation-expected.txt
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/dom/Element.cpp
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/dom/IdTargetObserver.h
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.h
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/layout/svg/SVGResources.cpp
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/layout/svg/SVGResources.h
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/layout/svg/SVGResourcesCache.cpp
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/layout/svg/SVGResourcesCache.h
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/svg/SVGClipPathElement.h
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/svg/SVGElement.cpp
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/svg/SVGElement.h
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/svg/SVGFilterElement.h
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/svg/SVGGradientElement.h
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/svg/SVGMarkerElement.h
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/svg/SVGMaskElement.h
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/svg/SVGPatternElement.h
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/svg/SVGTreeScopeResources.cpp
[modify] https://crrev.com/c36508a349b4bff18c73f2e2e2b46805ad091598/third_party/WebKit/Source/core/svg/SVGTreeScopeResources.h

Project Member

Comment 4 by bugdroid1@chromium.org, Jan 23 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4984b61ecda63c05f602bbebabdb841ec2603bc0

commit 4984b61ecda63c05f602bbebabdb841ec2603bc0
Author: Fredrik Söderquist <fs@opera.com>
Date: Tue Jan 23 18:35:43 2018

[CI] Move SVG dependency graph notification into SVGElement

This moves a chunk of code pertaining to notifications of dependent
elements from a helper LayoutSVGResourceContainer.cpp, thus collection
all such operations within the realms of the SVGElement DOM.

Bug:  454767 ,  661598 , 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I18b9a982b43767f2d8f0b8f458ea93e5bdd5e786
Reviewed-on: https://chromium-review.googlesource.com/881502
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#531285}
[modify] https://crrev.com/4984b61ecda63c05f602bbebabdb841ec2603bc0/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/4984b61ecda63c05f602bbebabdb841ec2603bc0/third_party/WebKit/Source/core/svg/SVGElement.cpp
[modify] https://crrev.com/4984b61ecda63c05f602bbebabdb841ec2603bc0/third_party/WebKit/Source/core/svg/SVGElement.h

Project Member

Comment 5 by bugdroid1@chromium.org, Feb 6 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b140e5753624403fbf9902a2c008c4db7a8f5b89

commit b140e5753624403fbf9902a2c008c4db7a8f5b89
Author: Fredrik Söderquist <fs@opera.com>
Date: Tue Feb 06 21:00:47 2018

[CI] Reference-ify SVGResources/SVGResourcesCache

Make the SVGResources and SVGResourcesCache interfaces take a
LayoutObject& instead of a LayoutObject* where appropriate, and then
update users (transitively) as reasonable.

Bug: 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Idfa28bb01551332064ca1ab6d6260d29d3264145
Reviewed-on: https://chromium-review.googlesource.com/904529
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#534789}
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/LayoutObject.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGContainer.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGForeignObject.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGImage.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGInline.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGModelObject.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGPath.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceClipper.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceClipper.h
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.h
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceFilter.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceFilter.h
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceGradient.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceGradient.h
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceMarker.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceMarker.h
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceMasker.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceMasker.h
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourcePaintServer.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourcePattern.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourcePattern.h
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGRoot.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGShape.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/SVGLayoutSupport.h
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/SVGLayoutTreeAsText.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/SVGResources.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/SVGResources.h
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/SVGResourcesCache.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/SVGResourcesCache.h
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/layout/svg/SVGResourcesCycleSolver.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/paint/CSSMaskPainter.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/paint/ClipPathClipper.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/paint/PaintPropertyTreeBuilder.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/paint/SVGPaintContext.cpp
[modify] https://crrev.com/b140e5753624403fbf9902a2c008c4db7a8f5b89/third_party/WebKit/Source/core/paint/SVGShapePainter.cpp

Project Member

Comment 6 by bugdroid1@chromium.org, Feb 9 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e2005bdccfd6e9eb7ec0a3928a57e3771220fcb0

commit e2005bdccfd6e9eb7ec0a3928a57e3771220fcb0
Author: Fredrik Söderquist <fs@opera.com>
Date: Fri Feb 09 19:23:39 2018

[CI] Move SVGTreeScopeResources::Resource to its own file

Make it no longer be an inner class and rename to it SVGResource.

Bug: 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Ifb60050cf6d3ebea360f00209031dbc7b0995d23
Reviewed-on: https://chromium-review.googlesource.com/911112
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#535780}
[modify] https://crrev.com/e2005bdccfd6e9eb7ec0a3928a57e3771220fcb0/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/e2005bdccfd6e9eb7ec0a3928a57e3771220fcb0/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.h
[modify] https://crrev.com/e2005bdccfd6e9eb7ec0a3928a57e3771220fcb0/third_party/WebKit/Source/core/layout/svg/SVGResources.cpp
[modify] https://crrev.com/e2005bdccfd6e9eb7ec0a3928a57e3771220fcb0/third_party/WebKit/Source/core/svg/BUILD.gn
[add] https://crrev.com/e2005bdccfd6e9eb7ec0a3928a57e3771220fcb0/third_party/WebKit/Source/core/svg/SVGResource.cpp
[add] https://crrev.com/e2005bdccfd6e9eb7ec0a3928a57e3771220fcb0/third_party/WebKit/Source/core/svg/SVGResource.h
[modify] https://crrev.com/e2005bdccfd6e9eb7ec0a3928a57e3771220fcb0/third_party/WebKit/Source/core/svg/SVGTreeScopeResources.cpp
[modify] https://crrev.com/e2005bdccfd6e9eb7ec0a3928a57e3771220fcb0/third_party/WebKit/Source/core/svg/SVGTreeScopeResources.h

Project Member

Comment 7 by bugdroid1@chromium.org, Feb 12 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/945b08784087ba5df9ed3f504a3eb5986f6bcbce

commit 945b08784087ba5df9ed3f504a3eb5986f6bcbce
Author: Fredrik Söderquist <fs@opera.com>
Date: Mon Feb 12 16:57:19 2018

[CI] Add SVGGradientElement::InvalidateGradient

Add a new helper method on SVGGradientElement that encapsulates the code
that invalidates the gradient data/cache. Use this method where
appropriate.

Add an InvalidateCacheAndMarkForLayout overload taking a
LayoutInvalidationReason to LayoutSVGResourceContainer, and use it in
SVGElement::InvalidateRelativeLengthClients and the new method, which
also takes a LayoutInvalidationReason to improve fidelity of reporting.

The change to use SVGGradientElement::InvalidateGradient in
ChildrenChanged constitutes a minor change in behavior since it
previously didn't have the SelfNeedsLayout() check. Said check should be
reasonable to have in this code-path as well though.

Bug:  661598 , 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Ia5c318a4df958960aabb56f71ad3c384791a46b0
Reviewed-on: https://chromium-review.googlesource.com/913688
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#536107}
[modify] https://crrev.com/945b08784087ba5df9ed3f504a3eb5986f6bcbce/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/945b08784087ba5df9ed3f504a3eb5986f6bcbce/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.h
[modify] https://crrev.com/945b08784087ba5df9ed3f504a3eb5986f6bcbce/third_party/WebKit/Source/core/svg/SVGElement.cpp
[modify] https://crrev.com/945b08784087ba5df9ed3f504a3eb5986f6bcbce/third_party/WebKit/Source/core/svg/SVGGradientElement.cpp
[modify] https://crrev.com/945b08784087ba5df9ed3f504a3eb5986f6bcbce/third_party/WebKit/Source/core/svg/SVGGradientElement.h
[modify] https://crrev.com/945b08784087ba5df9ed3f504a3eb5986f6bcbce/third_party/WebKit/Source/core/svg/SVGLinearGradientElement.cpp
[modify] https://crrev.com/945b08784087ba5df9ed3f504a3eb5986f6bcbce/third_party/WebKit/Source/core/svg/SVGRadialGradientElement.cpp
[modify] https://crrev.com/945b08784087ba5df9ed3f504a3eb5986f6bcbce/third_party/WebKit/Source/core/svg/SVGStopElement.cpp

Project Member

Comment 8 by bugdroid1@chromium.org, Feb 26 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c6d8d968265068bc08c875a7471da32a0a2822cf

commit c6d8d968265068bc08c875a7471da32a0a2822cf
Author: Fredrik Söderquist <fs@opera.com>
Date: Mon Feb 26 18:38:03 2018

[CI] Reduce LayoutSVGResourcePaintServer dependencies on LayoutObject

In preparation for passing/using an SVGResourceClient as the 'client',
make sure the LayoutObject& is only used as a cache key by extracting
and passing the object bounding box as a separate argument.

Bug: 769774
Change-Id: I673ef74f2e65d645037a65d85e75846f37d3859b
Reviewed-on: https://chromium-review.googlesource.com/931465
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#539206}
[modify] https://crrev.com/c6d8d968265068bc08c875a7471da32a0a2822cf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceGradient.cpp
[modify] https://crrev.com/c6d8d968265068bc08c875a7471da32a0a2822cf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceGradient.h
[modify] https://crrev.com/c6d8d968265068bc08c875a7471da32a0a2822cf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourcePaintServer.cpp
[modify] https://crrev.com/c6d8d968265068bc08c875a7471da32a0a2822cf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourcePaintServer.h
[modify] https://crrev.com/c6d8d968265068bc08c875a7471da32a0a2822cf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourcePattern.cpp
[modify] https://crrev.com/c6d8d968265068bc08c875a7471da32a0a2822cf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourcePattern.h

Project Member

Comment 9 by bugdroid1@chromium.org, Mar 1 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24

commit 4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24
Author: Fredrik Söderquist <fs@opera.com>
Date: Thu Mar 01 17:09:03 2018

[CI] Sink invalidation out of LayoutSVGResource*::RemoveClientFromCache

This splits the various RemoveClientFromCache implementations into two
parts:

 1) removal of cached data from the resource, and
 2) invalidation of the client.

This avoids triggering invalidations as a side-effect of cache-
invalidation, and separates concerns to help future refactorings. This
also means that resources that perform no caching, or no per-client
caching, need not override RemoveClientFromCache, but can use a default
implementation.

Since a kParentOnlyInvalidation argument to MarkClientForInvalidation is
a no-op, it is removed in the relevant code-paths.

LayoutSVGResourceContainer::MarkClientForInvalidation is made static to
enable its use outside resource containers themselves.

RemoveClientFromCache gets a new semantic in that it returns a bool
indicating if anything was cached for the client (this is currently
needed for invalidation of clients of filters.)

Bug: 769774
Change-Id: I8deeaef8fdd46e6dcc171100e8d6394df483e232
Reviewed-on: https://chromium-review.googlesource.com/941332
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#540193}
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceClipper.cpp
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceClipper.h
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.h
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceFilter.cpp
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceFilter.h
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceGradient.cpp
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceGradient.h
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceMarker.cpp
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceMarker.h
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceMasker.cpp
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceMasker.h
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourcePattern.cpp
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourcePattern.h
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/SVGResources.cpp
[modify] https://crrev.com/4f9f3ba46c3eda2f0c0ad9bc6cc7e8bcf407cf24/third_party/WebKit/Source/core/layout/svg/SVGResources.h

Project Member

Comment 10 by bugdroid1@chromium.org, Mar 5 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c3c2abcf4a9fd83d0da5f4e8e84ab5003732bf77

commit c3c2abcf4a9fd83d0da5f4e8e84ab5003732bf77
Author: Fredrik Söderquist <fs@opera.com>
Date: Mon Mar 05 17:26:58 2018

[CI] Split kLayoutAndBoundariesInvalidation into two flags

Since we already have a kBoundariesInvalidation flag, this means we just
need to rename kLayoutAndBoundariesInvalidation and convert all uses to
bitwise-or the two flags.
The mask/bit checks in MarkAllClientsForInvalidation are adjusted to
reflect this change as well.
A typedef is added to try to better convey that something is a mask and
what of.

Bug: 769774
Change-Id: I30b69458aea8eaea1a3b6b3d023f18d21f2f51f4
Reviewed-on: https://chromium-review.googlesource.com/945928
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#540854}
[modify] https://crrev.com/c3c2abcf4a9fd83d0da5f4e8e84ab5003732bf77/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceClipper.cpp
[modify] https://crrev.com/c3c2abcf4a9fd83d0da5f4e8e84ab5003732bf77/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/c3c2abcf4a9fd83d0da5f4e8e84ab5003732bf77/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.h
[modify] https://crrev.com/c3c2abcf4a9fd83d0da5f4e8e84ab5003732bf77/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceFilter.cpp
[modify] https://crrev.com/c3c2abcf4a9fd83d0da5f4e8e84ab5003732bf77/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceMarker.cpp
[modify] https://crrev.com/c3c2abcf4a9fd83d0da5f4e8e84ab5003732bf77/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceMasker.cpp
[modify] https://crrev.com/c3c2abcf4a9fd83d0da5f4e8e84ab5003732bf77/third_party/WebKit/Source/core/layout/svg/SVGResources.cpp
[modify] https://crrev.com/c3c2abcf4a9fd83d0da5f4e8e84ab5003732bf77/third_party/WebKit/Source/core/layout/svg/SVGResources.h

Project Member

Comment 11 by bugdroid1@chromium.org, Mar 5 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9b313d9b9520b96d66c32118f1ffab4622601f39

commit 9b313d9b9520b96d66c32118f1ffab4622601f39
Author: Fredrik Söderquist <fs@opera.com>
Date: Mon Mar 05 19:51:57 2018

[CI] Move invalidation out of SVGResources::RemoveClientFromCache

This pushes the actual call to MarkClientForInvalidation out of said
function, leaving it to callers to perform the invalidation.

Bug: 769774
Change-Id: Ib9063899da132a8f31290205ace6a52d5fc8457b
Reviewed-on: https://chromium-review.googlesource.com/946092
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#540903}
[modify] https://crrev.com/9b313d9b9520b96d66c32118f1ffab4622601f39/third_party/WebKit/Source/core/layout/svg/SVGResources.cpp
[modify] https://crrev.com/9b313d9b9520b96d66c32118f1ffab4622601f39/third_party/WebKit/Source/core/layout/svg/SVGResources.h
[modify] https://crrev.com/9b313d9b9520b96d66c32118f1ffab4622601f39/third_party/WebKit/Source/core/layout/svg/SVGResourcesCache.cpp

Project Member

Comment 12 by bugdroid1@chromium.org, Mar 6 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cf2bcb2782e0be76c2b1cbd1aa9843bb31d6dfa7

commit cf2bcb2782e0be76c2b1cbd1aa9843bb31d6dfa7
Author: Fredrik Söderquist <fs@opera.com>
Date: Tue Mar 06 21:48:22 2018

[CI] Make SVGResource have an IdTargetObserver rather than be one

This switches SVGResource away from inheriting IdTargetObserver, and
makes it have one as a member instead. This should make future
subclassing of SVGResource easier (avoiding GC mixins.) It also has the
side-effect of allowing the SVGURIReference framework to be reused.

Bug: 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I77fed36a06b846f3cd4cbb7722faa3de1b081f59
Reviewed-on: https://chromium-review.googlesource.com/947956
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#541205}
[modify] https://crrev.com/cf2bcb2782e0be76c2b1cbd1aa9843bb31d6dfa7/third_party/WebKit/Source/core/svg/SVGResource.cpp
[modify] https://crrev.com/cf2bcb2782e0be76c2b1cbd1aa9843bb31d6dfa7/third_party/WebKit/Source/core/svg/SVGResource.h

Project Member

Comment 13 by bugdroid1@chromium.org, Mar 8 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/43db8c3666e41c337498ae066f0a2c012f888350

commit 43db8c3666e41c337498ae066f0a2c012f888350
Author: Fredrik Söderquist <fs@opera.com>
Date: Thu Mar 08 11:16:35 2018

Transition ReferenceClipPathOperation to SVGResource

This CL replaces the use of SVGElementProxy in
ReferenceClipPathOperation with SVGResource. The main change between the
two is when the element reference is resolved ("when used" versus
"when computed".)

This also, by extension, adds infrastructure for invalidation and other
things required to make SVGResource work.

Bug: 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Ia43f76256a251a15c4dc100461cff9bf728eb188
Reviewed-on: https://chromium-review.googlesource.com/951613
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#541771}
[add] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/LayoutTests/css3/masking/clip-path-inherit-across-scope-boundary-expected.html
[add] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/LayoutTests/css3/masking/clip-path-inherit-across-scope-boundary.html
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/css/CSSURIValue.h
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/css/resolver/ElementStyleResources.cpp
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/css/resolver/ElementStyleResources.h
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/css/resolver/StyleResolverState.cpp
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/css/resolver/StyleResolverState.h
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/html/canvas/CanvasFontCache.cpp
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/paint/ClipPathClipper.cpp
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/paint/PaintLayer.cpp
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/style/ClipPathOperation.cpp
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/style/ClipPathOperation.h
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/svg/SVGFilterElement.cpp
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/svg/SVGResource.cpp
[modify] https://crrev.com/43db8c3666e41c337498ae066f0a2c012f888350/third_party/WebKit/Source/core/svg/SVGResource.h

Project Member

Comment 14 by bugdroid1@chromium.org, Mar 9 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cd0b19ba0f3766e25e2f42b965076bdaf31bbddc

commit cd0b19ba0f3766e25e2f42b965076bdaf31bbddc
Author: Fredrik Söderquist <fs@opera.com>
Date: Fri Mar 09 09:48:33 2018

[CI] Split out LocalSVGResource from SVGResource

In preparation for adding an SVGResource subclass for external resources
this splits out a LocalSVGResource subclass from SVGResource and renames
usages appropriately. This is mostly to eliminate "noise" from a follow-
up CL.

Bug: 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I479ca0445e4eba5f0ba2b727460dfcda776347b8
Reviewed-on: https://chromium-review.googlesource.com/955463
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#542075}
[modify] https://crrev.com/cd0b19ba0f3766e25e2f42b965076bdaf31bbddc/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/cd0b19ba0f3766e25e2f42b965076bdaf31bbddc/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.h
[modify] https://crrev.com/cd0b19ba0f3766e25e2f42b965076bdaf31bbddc/third_party/WebKit/Source/core/layout/svg/SVGResources.cpp
[modify] https://crrev.com/cd0b19ba0f3766e25e2f42b965076bdaf31bbddc/third_party/WebKit/Source/core/svg/SVGResource.cpp
[modify] https://crrev.com/cd0b19ba0f3766e25e2f42b965076bdaf31bbddc/third_party/WebKit/Source/core/svg/SVGResource.h
[modify] https://crrev.com/cd0b19ba0f3766e25e2f42b965076bdaf31bbddc/third_party/WebKit/Source/core/svg/SVGTreeScopeResources.cpp
[modify] https://crrev.com/cd0b19ba0f3766e25e2f42b965076bdaf31bbddc/third_party/WebKit/Source/core/svg/SVGTreeScopeResources.h

Project Member

Comment 15 by bugdroid1@chromium.org, Mar 12 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/300288db7cf6093dce4bcb16a76dae84bdffca21

commit 300288db7cf6093dce4bcb16a76dae84bdffca21
Author: Fredrik Söderquist <fs@opera.com>
Date: Mon Mar 12 16:34:36 2018

Don't invalidate client in SVGResourcesCache::ClientDestroyed

We're just about to destroy said object, and since this is only issuing
"local" (client-only, no ancestors) invalidations they will have no
effect.

Bug: 769774
Change-Id: Ib8d0afecb65a80bd89990906940e792cadcc2dcb
Reviewed-on: https://chromium-review.googlesource.com/958903
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#542505}
[modify] https://crrev.com/300288db7cf6093dce4bcb16a76dae84bdffca21/third_party/WebKit/Source/core/layout/svg/SVGResourcesCache.cpp

Project Member

Comment 16 by bugdroid1@chromium.org, Mar 12 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/936e11cfc3e270abeb623bc0c67d5c7104a92f8d

commit 936e11cfc3e270abeb623bc0c67d5c7104a92f8d
Author: Fredrik Söderquist <fs@opera.com>
Date: Mon Mar 12 19:03:32 2018

Use the same initial type for both 'fill' and 'visited fill'

The initial value used here shouldn't make a difference, so use the
initial value of 'fill' since that looks less confusing. It will also
simplify conversion to a different computed <paint> representation.

Bug: 769774
Change-Id: I5a08f73d4affc28f5804f3c3164051197721b2a4
Reviewed-on: https://chromium-review.googlesource.com/959009
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#542552}
[modify] https://crrev.com/936e11cfc3e270abeb623bc0c67d5c7104a92f8d/third_party/WebKit/Source/core/style/SVGComputedStyleDefs.cpp

Project Member

Comment 17 by bugdroid1@chromium.org, Mar 13 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7

commit 40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7
Author: Fredrik Söderquist <fs@opera.com>
Date: Tue Mar 13 16:27:43 2018

[CI] Transition ReferenceFilterOperation to SVGResource

This CL transitions the ReferenceFilterOperation (used for 'filter')
from SVGElementProxy to SVGResource. It introduces ExternalSVGResource
as a new subclass of SVGResource.
ExternalSVGResource handles loading of an external document, and
notifies clients as needed when said document finishes loading.

Since this leaves SVGElementProxy unused, it is removed together with
some related structures. This also allows some code to be simplified
because we no longer need a TreeScope (or Node) in some places.

Bug: 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: If6cbbf32e0269878bdea897fcf0b8e41c062b0f6
Reviewed-on: https://chromium-review.googlesource.com/955684
Reviewed-by: Fernando Serboncini <fserb@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#542822}
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/animation/CompositorAnimations.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/css/CSSURIValue.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/css/CSSURIValue.h
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/css/resolver/ElementStyleResources.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/css/resolver/ElementStyleResources.h
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/css/resolver/FilterOperationResolver.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.h
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceFilter.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/paint/FilterEffectBuilder.h
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/paint/PaintLayer.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/paint/PaintLayerResourceInfo.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/paint/PaintLayerResourceInfo.h
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/paint/SVGFilterPainter.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/style/FilterOperation.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/style/FilterOperation.h
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/style/FilterOperations.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/style/FilterOperations.h
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/svg/BUILD.gn
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/svg/SVGElement.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/svg/SVGElement.h
[delete] https://crrev.com/0117469878380cefe143071e231e239d806ac048/third_party/WebKit/Source/core/svg/SVGElementProxy.cpp
[delete] https://crrev.com/0117469878380cefe143071e231e239d806ac048/third_party/WebKit/Source/core/svg/SVGElementProxy.h
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/svg/SVGElementRareData.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/svg/SVGElementRareData.h
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/svg/SVGFilterElement.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/svg/SVGFilterElement.h
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/svg/SVGResource.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/svg/SVGResource.h
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/core/svg/SVGResourceClient.h
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2D.cpp
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2D.h
[modify] https://crrev.com/40ac85caa6b0cbcb4f5c50a7e4fdf03412e5bbf7/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2DState.cpp

Project Member

Comment 18 by bugdroid1@chromium.org, Mar 15 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/dcbfc9508ee256065aa817af2996f1cd53efd733

commit dcbfc9508ee256065aa817af2996f1cd53efd733
Author: Fredrik Söderquist <fs@opera.com>
Date: Thu Mar 15 09:42:11 2018

Refactor computed <paint> value handling

Combine all the fields that make up a <paint> into a class: SVGPaint.
Move the bulk of the style builder function for <paint> from the
template to StyleBuilderConverter. This should make future work on
<paint> resolution easier.
Also split the existing setters on {SVG,}ComputedStyle to avoid having
bools to indicate if the "visited" portion should be set or not. The
new way more closely resemble other color properties.
Add accessors to SVGPaint to both make code easier to read, and reduce
the dependence on SVGPaintType.

Bug: 769774
Change-Id: Ifad043c9e423f0fc7aa79fef78e635b2abb4636c
Reviewed-on: https://chromium-review.googlesource.com/961062
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#543333}
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/build/scripts/templates/style_builder_functions.cc.tmpl
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/animation/CSSPaintInterpolationType.cpp
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/css/CSSPropertyEquality.cpp
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.cpp
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/css/properties/ComputedStyleUtils.h
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/css/properties/longhands/FillCustom.cpp
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/css/properties/longhands/StrokeCustom.cpp
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.h
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourcePaintServer.cpp
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/layout/svg/SVGResources.cpp
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/style/ComputedStyle.h
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/style/SVGComputedStyle.cpp
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/style/SVGComputedStyle.h
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/style/SVGComputedStyleDefs.cpp
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/style/SVGComputedStyleDefs.h
[modify] https://crrev.com/dcbfc9508ee256065aa817af2996f1cd53efd733/third_party/WebKit/Source/core/style/SVGComputedStyleTest.cpp

Project Member

Comment 19 by bugdroid1@chromium.org, Mar 16 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ce851e47bd77773970a805acd62ec1627b0aaa76

commit ce851e47bd77773970a805acd62ec1627b0aaa76
Author: Fredrik Söderquist <fs@opera.com>
Date: Fri Mar 16 13:43:42 2018

[CI] Stop tracking <*Gradient> 'href' references through SVGResources

Gradient resources are currently only using the 'linked' resource in the
SVGResources object for cycle breaking and change notifications. The
SVG*GradientElements also perform cycle breaking on their own,
disregarding what SVGResourcesCycleSolver has done. The 'href's
themselves are what risk introducing cycles for gradients at the moment,
so handling them explicitly (as is already done) doesn't add any
additional complexity. Mixing resources defined by the DOM with those
defined by style does add complexity though.

This CL stops tracking <*Gradient> href's using SVGResources, and starts
tracking them using an IdTargetObserver in SVGGradientElement, much like
how similar 'href's are tracked.

Bug:  661598 , 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I5538ede4170c7181098fe2308dbfa640506334f4
Reviewed-on: https://chromium-review.googlesource.com/880965
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#543685}
[modify] https://crrev.com/ce851e47bd77773970a805acd62ec1627b0aaa76/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/ce851e47bd77773970a805acd62ec1627b0aaa76/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceGradient.cpp
[modify] https://crrev.com/ce851e47bd77773970a805acd62ec1627b0aaa76/third_party/WebKit/Source/core/layout/svg/SVGResources.cpp
[modify] https://crrev.com/ce851e47bd77773970a805acd62ec1627b0aaa76/third_party/WebKit/Source/core/svg/SVGElement.cpp
[modify] https://crrev.com/ce851e47bd77773970a805acd62ec1627b0aaa76/third_party/WebKit/Source/core/svg/SVGElement.h
[modify] https://crrev.com/ce851e47bd77773970a805acd62ec1627b0aaa76/third_party/WebKit/Source/core/svg/SVGGradientElement.cpp
[modify] https://crrev.com/ce851e47bd77773970a805acd62ec1627b0aaa76/third_party/WebKit/Source/core/svg/SVGGradientElement.h

Comment 20 by f...@opera.com, Mar 16 2018

Blockedon: 534817
Project Member

Comment 21 by bugdroid1@chromium.org, Mar 16 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/41de0ebf3957b028ed9db5438e2666b4007b0f4f

commit 41de0ebf3957b028ed9db5438e2666b4007b0f4f
Author: Fredrik Söderquist <fs@opera.com>
Date: Fri Mar 16 15:40:00 2018

[CI] Cleanup SVG <pattern> attribute collection

Move the 'href' lookup to a helper function (as seen in the very similar
SVGGradientElement.) Use a similar setup in SVGGradientElement
equivalent method.
Move attribute synchronization from LayoutSVGResourcePattern into
SVGPatternElement::CollectPatternAttributes.
Change the SetPatternAttributes helper to take a SVGPatternElement
reference.
Remove the element null-check in the LayoutObject.

Bug: 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I16901de05437bbeea1981f5340bec1a3e4329b50
Reviewed-on: https://chromium-review.googlesource.com/966221
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#543709}
[modify] https://crrev.com/41de0ebf3957b028ed9db5438e2666b4007b0f4f/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourcePattern.cpp
[modify] https://crrev.com/41de0ebf3957b028ed9db5438e2666b4007b0f4f/third_party/WebKit/Source/core/svg/SVGGradientElement.cpp
[modify] https://crrev.com/41de0ebf3957b028ed9db5438e2666b4007b0f4f/third_party/WebKit/Source/core/svg/SVGPatternElement.cpp
[modify] https://crrev.com/41de0ebf3957b028ed9db5438e2666b4007b0f4f/third_party/WebKit/Source/core/svg/SVGPatternElement.h

Project Member

Comment 22 by bugdroid1@chromium.org, Mar 19 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/570f299060fe6ee1f1cb596069af884fd3bcf040

commit 570f299060fe6ee1f1cb596069af884fd3bcf040
Author: Fredrik Söderquist <fs@opera.com>
Date: Mon Mar 19 15:22:01 2018

[CI] Restructure SVGResourcesCycleSolver

Restructure the code so that traversing a LayoutObject's resources is
shared, and rename ResourceContainsCycles to TraverseResourceContainer.
Hoist the side-effects (clearing out resources with cycles) to the
caller.

Bug: 534817, 769774
Change-Id: Icd8200a2cd9073487479e32827a9fdeb1d8d04c4
Reviewed-on: https://chromium-review.googlesource.com/966661
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#544037}
[add] https://crrev.com/570f299060fe6ee1f1cb596069af884fd3bcf040/third_party/WebKit/LayoutTests/svg/custom/multiple-resource-cycles-expected.html
[add] https://crrev.com/570f299060fe6ee1f1cb596069af884fd3bcf040/third_party/WebKit/LayoutTests/svg/custom/multiple-resource-cycles.html
[modify] https://crrev.com/570f299060fe6ee1f1cb596069af884fd3bcf040/third_party/WebKit/Source/core/layout/svg/SVGResourcesCache.cpp
[modify] https://crrev.com/570f299060fe6ee1f1cb596069af884fd3bcf040/third_party/WebKit/Source/core/layout/svg/SVGResourcesCycleSolver.cpp
[modify] https://crrev.com/570f299060fe6ee1f1cb596069af884fd3bcf040/third_party/WebKit/Source/core/layout/svg/SVGResourcesCycleSolver.h

Project Member

Comment 23 by bugdroid1@chromium.org, Mar 20 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2df427946b090559b8a9a66c03a3b032e28f6511

commit 2df427946b090559b8a9a66c03a3b032e28f6511
Author: Fredrik Söderquist <fs@opera.com>
Date: Tue Mar 20 17:49:33 2018

[PE] Don't use callbacks for SVGElement::NotifyIncomingReferences

Dispatch overhead is high.

Bug:  661598 , 769774,  823473 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I4b200d0076c209584a033be810f95c504e81c102
Reviewed-on: https://chromium-review.googlesource.com/970422
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#544431}
[modify] https://crrev.com/2df427946b090559b8a9a66c03a3b032e28f6511/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/2df427946b090559b8a9a66c03a3b032e28f6511/third_party/WebKit/Source/core/svg/SVGElement.cpp
[modify] https://crrev.com/2df427946b090559b8a9a66c03a3b032e28f6511/third_party/WebKit/Source/core/svg/SVGElement.h
[modify] https://crrev.com/2df427946b090559b8a9a66c03a3b032e28f6511/third_party/WebKit/Source/core/svg/SVGGradientElement.cpp

Project Member

Comment 24 by bugdroid1@chromium.org, Mar 22 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a9180739d0221607286aee5bb6858ef072d98d73

commit a9180739d0221607286aee5bb6858ef072d98d73
Author: Fredrik Söderquist <fs@opera.com>
Date: Thu Mar 22 10:21:02 2018

[CI] Add LayoutSVGBlock::GetElement helper

Like the equivalent helper on LayoutSVGModelObject, this provides a more
specific type of Node (an SVGElement), since is guaranteed for
subclasses of LayoutSVGBlock.
Also update the documentation in LayoutSVGModelObject to reflect the
current name.

Bug: 769774
Change-Id: I720af53e5a24e960773059f7d2a113e74bd5bdc5
Reviewed-on: https://chromium-review.googlesource.com/973378
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#545034}
[modify] https://crrev.com/a9180739d0221607286aee5bb6858ef072d98d73/third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.cpp
[modify] https://crrev.com/a9180739d0221607286aee5bb6858ef072d98d73/third_party/WebKit/Source/core/layout/svg/LayoutSVGBlock.h
[modify] https://crrev.com/a9180739d0221607286aee5bb6858ef072d98d73/third_party/WebKit/Source/core/layout/svg/LayoutSVGForeignObject.cpp
[modify] https://crrev.com/a9180739d0221607286aee5bb6858ef072d98d73/third_party/WebKit/Source/core/layout/svg/LayoutSVGModelObject.h
[modify] https://crrev.com/a9180739d0221607286aee5bb6858ef072d98d73/third_party/WebKit/Source/core/layout/svg/LayoutSVGText.cpp

Project Member

Comment 25 by bugdroid1@chromium.org, Mar 23 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c06521327faea1fcabdd6bfafa27319f00a80fbf

commit c06521327faea1fcabdd6bfafa27319f00a80fbf
Author: Fredrik Söderquist <fs@opera.com>
Date: Fri Mar 23 09:27:01 2018

[CI] Move InvalidationMode to SVGResourceClient; pass to clients

In preparation for always invalidating through SVGResourceClient.

TBR=fserb@chromium.org

Bug: 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I733987de91d1051a72652aba3115e387dc909dbf
Reviewed-on: https://chromium-review.googlesource.com/976063
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#545393}
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceClipper.cpp
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.h
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceFilter.cpp
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceGradient.cpp
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceMarker.cpp
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceMasker.cpp
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourcePattern.cpp
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/layout/svg/SVGResources.cpp
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/paint/PaintLayerResourceInfo.cpp
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/paint/PaintLayerResourceInfo.h
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/svg/SVGFilterElement.cpp
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/svg/SVGResource.cpp
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/svg/SVGResource.h
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/core/svg/SVGResourceClient.h
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2D.cpp
[modify] https://crrev.com/c06521327faea1fcabdd6bfafa27319f00a80fbf/third_party/WebKit/Source/modules/canvas/canvas2d/CanvasRenderingContext2D.h

Project Member

Comment 26 by bugdroid1@chromium.org, Mar 23 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2e4b433f9dac35b965e797247b8d15f287cad05c

commit 2e4b433f9dac35b965e797247b8d15f287cad05c
Author: Fredrik Söderquist <fs@opera.com>
Date: Fri Mar 23 16:03:25 2018

[PE] Restore LayoutObject check in SVGElement::NotifyIncomingReferences

When an element has incoming references that are not in the layout tree
(like an element animated by [multiple] SMIL elements), the overhead of
the hash set insert/erase can be noticable (like for instance in
balls_svg_animation.html.)

Bug:  661598 , 769774,  823473 
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I8a5879186dabd5e071f708ac953b8f1e91b62847
Reviewed-on: https://chromium-review.googlesource.com/978213
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#545467}
[modify] https://crrev.com/2e4b433f9dac35b965e797247b8d15f287cad05c/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
[modify] https://crrev.com/2e4b433f9dac35b965e797247b8d15f287cad05c/third_party/WebKit/Source/core/svg/SVGElement.h

Project Member

Comment 27 by bugdroid1@chromium.org, May 8 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b

commit 3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b
Author: Fredrik Söderquist <fs@opera.com>
Date: Tue May 08 10:00:41 2018

[CI] Convert SVG resources to use SVGResource

From using AtomicString (for 'mask', 'marker-*', 'fill' and 'stroke') or
the string representation of SVGResources ('filter' and 'clip-path'),
convert to using SVGResources.
Add an implementation of SVGResourceClient (SVGElementResourceClient)
and register it with the existing resources. Invalidation code is moved
here. This makes the invalidation code slightly more homogeneous between
the various code-paths.

The new SVGResourceClient implementation is stored in SVGElementRareData
as needed.
The various computed style representations are converted to use the new
StyleSVGResource, which is a ref-counted wrapper around an SVGResource
and its underlying string representation (which is needed for
serialization.) Style building is changed to produce this new wrapper
(rather than an AtomicString.) A helper for serialization is added to
ComputedStyleUtils.
The kHasPendingResources flag is removed since it no longer used, and
the hook in Element is removed.
All LayoutSVGResource* subclasses are changed to take SVGResourceClients
instead of LayoutObjects, and the |clients_| set is removed in favor of
the set in SVGResource.
A bunch of helpers are added for updating (adding/removing) the client
registrations. The various LayoutSVG subclasses are updated to call
these helpers.

TBR=junov@chromium.org

Bug: 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I62418465251532240c4e895e5c4d253ed9e53b9a
Reviewed-on: https://chromium-review.googlesource.com/977965
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Reviewed-by: Fredrik Söderquist <fs@opera.com>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Cr-Commit-Position: refs/heads/master@{#556743}
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animate-fill-expected.txt
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/WebKit/LayoutTests/paint/invalidation/svg/animate-fill-expected.txt
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/WebKit/LayoutTests/paint/invalidation/svg/filter-refresh-expected.txt
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/WebKit/LayoutTests/paint/invalidation/svg/paintorder-filtered-expected.txt
[add] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animate-fill-expected.txt
[add] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/filter-refresh-expected.txt
[add] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.txt
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/css/CSSProperties.json5
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/css/properties/computed_style_utils.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/css/properties/computed_style_utils.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/css/properties/longhands/marker_end_custom.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/css/properties/longhands/marker_mid_custom.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/css/properties/longhands/marker_start_custom.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/css/properties/longhands/mask_custom.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/css/resolver/element_style_resources.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/css/resolver/style_builder_converter.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/dom/element.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/dom/element.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/dom/node_rare_data.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_block.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_inline.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_path.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_path.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_paint_server.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_paint_server.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_pattern.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_resource_pattern.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_shape.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_text.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/layout_svg_text.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/svg_layout_tree_as_text.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/svg_resources.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/svg_resources.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/svg_resources_cache.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/layout/svg/svg_resources_cache.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/paint/svg_filter_painter.cc
[add] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/style/style_svg_resource.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/style/svg_computed_style.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/style/svg_computed_style_defs.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/style/svg_computed_style_defs.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/svg/svg_element.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/svg/svg_element.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/svg/svg_element_rare_data.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/svg/svg_element_rare_data.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/svg/svg_pattern_element.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/svg/svg_pattern_element.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/svg/svg_resource.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/svg/svg_resource.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/svg/svg_resource_client.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/svg/svg_tree_scope_resources.cc
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/core/svg/svg_tree_scope_resources.h
[modify] https://crrev.com/3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc

Project Member

Comment 28 by bugdroid1@chromium.org, May 9 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e0f2875c28b26362288a528202934f8b5d174578

commit e0f2875c28b26362288a528202934f8b5d174578
Author: Fredrik Söderquist <fs@opera.com>
Date: Wed May 09 08:13:16 2018

Revert "[CI] Convert SVG resources to use SVGResource"

This reverts commit 3431b89c8be2d7b1a60f5eb135b1d27ce432ce9b.

Reason for revert: Tickled fuzzers

Original change's description:
> [CI] Convert SVG resources to use SVGResource
> 
> From using AtomicString (for 'mask', 'marker-*', 'fill' and 'stroke') or
> the string representation of SVGResources ('filter' and 'clip-path'),
> convert to using SVGResources.
> Add an implementation of SVGResourceClient (SVGElementResourceClient)
> and register it with the existing resources. Invalidation code is moved
> here. This makes the invalidation code slightly more homogeneous between
> the various code-paths.
> 
> The new SVGResourceClient implementation is stored in SVGElementRareData
> as needed.
> The various computed style representations are converted to use the new
> StyleSVGResource, which is a ref-counted wrapper around an SVGResource
> and its underlying string representation (which is needed for
> serialization.) Style building is changed to produce this new wrapper
> (rather than an AtomicString.) A helper for serialization is added to
> ComputedStyleUtils.
> The kHasPendingResources flag is removed since it no longer used, and
> the hook in Element is removed.
> All LayoutSVGResource* subclasses are changed to take SVGResourceClients
> instead of LayoutObjects, and the |clients_| set is removed in favor of
> the set in SVGResource.
> A bunch of helpers are added for updating (adding/removing) the client
> registrations. The various LayoutSVG subclasses are updated to call
> these helpers.
> 
> TBR=junov@chromium.org
> 
> Bug: 769774
> Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
> Change-Id: I62418465251532240c4e895e5c4d253ed9e53b9a
> Reviewed-on: https://chromium-review.googlesource.com/977965
> Commit-Queue: Fredrik Söderquist <fs@opera.com>
> Reviewed-by: Fredrik Söderquist <fs@opera.com>
> Reviewed-by: Philip Rogers <pdr@chromium.org>
> Reviewed-by: Stephen Chenney <schenney@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#556743}

TBR=pdr@chromium.org,fs@opera.com,junov@chromium.org,schenney@chromium.org

Change-Id: I695b3eed793bb000b057bca52364265d201f0bae
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Reviewed-on: https://chromium-review.googlesource.com/1051345
Reviewed-by: Fredrik Söderquist <fs@opera.com>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#557120}
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animate-fill-expected.txt
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/WebKit/LayoutTests/paint/invalidation/svg/animate-fill-expected.txt
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/WebKit/LayoutTests/paint/invalidation/svg/filter-refresh-expected.txt
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/WebKit/LayoutTests/paint/invalidation/svg/paintorder-filtered-expected.txt
[delete] https://crrev.com/6bb878101be294b3af7dd50509d7fa6ac7a3a9f9/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animate-fill-expected.txt
[delete] https://crrev.com/6bb878101be294b3af7dd50509d7fa6ac7a3a9f9/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/filter-refresh-expected.txt
[delete] https://crrev.com/6bb878101be294b3af7dd50509d7fa6ac7a3a9f9/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.txt
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/css/CSSProperties.json5
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/css/properties/computed_style_utils.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/css/properties/computed_style_utils.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/css/properties/longhands/marker_end_custom.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/css/properties/longhands/marker_mid_custom.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/css/properties/longhands/marker_start_custom.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/css/properties/longhands/mask_custom.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/css/resolver/element_style_resources.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/css/resolver/style_builder_converter.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/dom/element.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/dom/element.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/dom/node_rare_data.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_block.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_inline.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_path.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_path.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_resource_paint_server.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_resource_paint_server.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_resource_pattern.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_resource_pattern.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_shape.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_text.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/layout_svg_text.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/svg_layout_tree_as_text.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/svg_resources.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/svg_resources.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/svg_resources_cache.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/layout/svg/svg_resources_cache.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/paint/svg_filter_painter.cc
[delete] https://crrev.com/6bb878101be294b3af7dd50509d7fa6ac7a3a9f9/third_party/blink/renderer/core/style/style_svg_resource.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/style/svg_computed_style.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/style/svg_computed_style_defs.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/style/svg_computed_style_defs.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/svg/svg_element.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/svg/svg_element.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/svg/svg_element_rare_data.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/svg/svg_element_rare_data.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/svg/svg_pattern_element.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/svg/svg_pattern_element.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/svg/svg_resource.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/svg/svg_resource.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/svg/svg_resource_client.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/svg/svg_tree_scope_resources.cc
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/core/svg/svg_tree_scope_resources.h
[modify] https://crrev.com/e0f2875c28b26362288a528202934f8b5d174578/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc

Project Member

Comment 29 by bugdroid1@chromium.org, May 17 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7004d7e19279e2d31f92fb295e06a8b987700f18

commit 7004d7e19279e2d31f92fb295e06a8b987700f18
Author: Fredrik Söderquist <fs@opera.com>
Date: Thu May 17 10:33:40 2018

Reland: "[CI] Convert SVG resources to use SVGResource"

From using AtomicString (for 'mask', 'marker-*', 'fill' and 'stroke') or
the string representation of SVGResources ('filter' and 'clip-path'),
convert to using SVGResources.
Add an implementation of SVGResourceClient (SVGElementResourceClient)
and register it with the existing resources. Invalidation code is moved
here. This makes the invalidation code slightly more homogeneous between
the various code-paths.

The new SVGResourceClient implementation is stored in SVGElementRareData
as needed.
The various computed style representations are converted to use the new
StyleSVGResource, which is a ref-counted wrapper around an SVGResource
and its underlying string representation (which is needed for
serialization.) Style building is changed to produce this new wrapper
(rather than an AtomicString.) A helper for serialization is added to
ComputedStyleUtils.
The kHasPendingResources flag is removed since it no longer used, and
the hook in Element is removed.
All LayoutSVGResource* subclasses are changed to take SVGResourceClients
instead of LayoutObjects, and the |clients_| set is removed in favor of
the set in SVGResource.
A bunch of helpers are added for updating (adding/removing) the client
registrations. The various LayoutSVG subclasses are updated to call
these helpers.

Changes on reland: LocalSVGResources are now tracked using WeakMember, and
the associated IdTargetObservers are cleaned up when weak references are
cleared.

Bug: 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Ie0b42471aea5ea5afb5d239662b4ba195281f764
Reviewed-on: https://chromium-review.googlesource.com/1057330
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Reviewed-by: Justin Novosad <junov@chromium.org>
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Cr-Commit-Position: refs/heads/master@{#559479}
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/flag-specific/enable-slimming-paint-v2/paint/invalidation/svg/animate-fill-expected.txt
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/paint/invalidation/svg/animate-fill-expected.txt
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/paint/invalidation/svg/filter-refresh-expected.txt
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/paint/invalidation/svg/paintorder-filtered-expected.txt
[add] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/animate-fill-expected.txt
[add] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/filter-refresh-expected.txt
[add] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/platform/linux/virtual/disable-spv175/paint/invalidation/svg/paintorder-filtered-expected.txt
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/platform/mac/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/accumulation-per-property-expected.txt
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/addition-per-property-expected.txt
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/platform/win/external/wpt/web-animations/animation-model/animation-types/interpolation-per-property-expected.txt
[add] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/svg/custom/fill-fallback-after-reattach-and-removal-expected.html
[add] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/WebKit/LayoutTests/svg/custom/fill-fallback-after-reattach-and-removal.html
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/css/CSSProperties.json5
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/css/properties/computed_style_utils.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/css/properties/computed_style_utils.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/css/properties/longhands/marker_end_custom.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/css/properties/longhands/marker_mid_custom.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/css/properties/longhands/marker_start_custom.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/css/properties/longhands/mask_custom.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/css/resolver/element_style_resources.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/css/resolver/style_builder_converter.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/css/resolver/style_builder_converter.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/dom/element.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/dom/element.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/dom/node_rare_data.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_block.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_inline.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_model_object.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_path.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_path.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_resource_container.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_resource_gradient.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_resource_paint_server.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_resource_paint_server.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_resource_pattern.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_resource_pattern.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_root.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_shape.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_text.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/layout_svg_text.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/svg_layout_tree_as_text.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/svg_resources.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/svg_resources.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/svg_resources_cache.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/layout/svg/svg_resources_cache.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/paint/svg_filter_painter.cc
[add] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/style/style_svg_resource.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/style/svg_computed_style.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/style/svg_computed_style_defs.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/style/svg_computed_style_defs.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/svg/svg_element.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/svg/svg_element.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/svg/svg_element_rare_data.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/svg/svg_element_rare_data.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/svg/svg_pattern_element.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/svg/svg_pattern_element.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/svg/svg_resource.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/svg/svg_resource.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/svg/svg_resource_client.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/svg/svg_tree_scope_resources.cc
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/core/svg/svg_tree_scope_resources.h
[modify] https://crrev.com/7004d7e19279e2d31f92fb295e06a8b987700f18/third_party/blink/renderer/modules/canvas/canvas2d/canvas_rendering_context_2d.cc

Project Member

Comment 30 by bugdroid1@chromium.org, May 22 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/73cd3ea9024af5e2668d602bf5ce072a30abb588

commit 73cd3ea9024af5e2668d602bf5ce072a30abb588
Author: Fredrik Söderquist <fs@opera.com>
Date: Tue May 22 11:00:18 2018

Allow more selective invalidations for 'filter'

Add a new InvalidationMode flag (kSkipAncestorInvalidation) to allow skipping
the invalidation of ancestors, and then use that for the "fine-grained"
invalidation in LayoutSVGResourceFilter to restore the more efficient method
for clients which have a usable FilterData.

For filters referenced by SVG content, this restores the behavior (by not
invalidating more than needed, avoiding caches being dropped.) For non-SVG
content the behavior remains the same (flags are not used/ignored.)

Bug: 769774
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: I41ccbbb6552558297329050dbe7630a2d624273a
Reviewed-on: https://chromium-review.googlesource.com/1065910
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#560529}
[modify] https://crrev.com/73cd3ea9024af5e2668d602bf5ce072a30abb588/third_party/blink/renderer/core/layout/svg/layout_svg_resource_filter.cc
[modify] https://crrev.com/73cd3ea9024af5e2668d602bf5ce072a30abb588/third_party/blink/renderer/core/layout/svg/svg_resources.cc
[modify] https://crrev.com/73cd3ea9024af5e2668d602bf5ce072a30abb588/third_party/blink/renderer/core/layout/svg/svg_resources.h
[modify] https://crrev.com/73cd3ea9024af5e2668d602bf5ce072a30abb588/third_party/blink/renderer/core/svg/svg_resource_client.h

Project Member

Comment 31 by bugdroid1@chromium.org, Jun 5 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ec21fc1705b051bd49d6e5e19f000e52df3689e1

commit ec21fc1705b051bd49d6e5e19f000e52df3689e1
Author: Fredrik Söderquist <fs@opera.com>
Date: Tue Jun 05 18:40:55 2018

Fold marker methods in LayoutSVGPath

Fold all of ProcessMarkerPositions, ShouldGenerateMarkerPositions,
MarkerRect and CalculateUpdatedStrokeBoundingBox into a larger, but
still manageable, single function (UpdateMarkers). Shorter term this
makes for less (and slightly more efficient) code. Longer term this
should make future changes to resource handling easier.

Also take this opportunity to make some minor cleanups (use a range-
based for loop; replace a ternary expression with an equivalent.)

Bug: 769774
Change-Id: I029fcdfa388c786fa30ebe861ba78d15d3a3d792
Reviewed-on: https://chromium-review.googlesource.com/1086943
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#564593}
[modify] https://crrev.com/ec21fc1705b051bd49d6e5e19f000e52df3689e1/third_party/blink/renderer/core/layout/svg/layout_svg_path.cc
[modify] https://crrev.com/ec21fc1705b051bd49d6e5e19f000e52df3689e1/third_party/blink/renderer/core/layout/svg/layout_svg_path.h

Project Member

Comment 32 by bugdroid1@chromium.org, Jun 28 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b23891f21c36828e751aa30f0544915bd6749deb

commit b23891f21c36828e751aa30f0544915bd6749deb
Author: Fredrik Söderquist <fs@opera.com>
Date: Thu Jun 28 13:20:53 2018

Use DataEquivalent(...) when comparing StyleSVGResources

While the underlying SVGResource should be unique (or nullptr - for
invalid cases), the StyleSVGResource wrapper usually isn't. Hence we
need to use DataEquivalent(...) to properly determine equality.

Bug: 769774,  855914 
Change-Id: I333bc7a737d0635aabe35e39bb066edbc4282790
Reviewed-on: https://chromium-review.googlesource.com/1118219
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#571099}
[modify] https://crrev.com/b23891f21c36828e751aa30f0544915bd6749deb/third_party/blink/renderer/core/style/svg_computed_style_defs.cc

Blocking: -751733

Sign in to add a comment