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

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

Issue 2633143002: SVG objects with same idrefs conflict when under different shadow root (Closed)
Patch Set: ensureSVGTreeScopedResources(); add comment Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
diff --git a/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp b/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
index 6cb6483e8790ad4cdf47b4a5143c0590c5cde502..2e525ba4da6790b1a34620f54a937f9447d0c803 100644
--- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
+++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
@@ -22,14 +22,15 @@
#include "core/layout/svg/SVGResources.h"
#include "core/layout/svg/SVGResourcesCache.h"
#include "core/svg/SVGElementProxy.h"
+#include "core/svg/SVGTreeScopeResources.h"
#include "wtf/AutoReset.h"
namespace blink {
-static inline SVGDocumentExtensions& svgExtensionsFromElement(
+static inline SVGTreeScopeResources& svgTreeScopeResourcesFromElement(
Element* element) {
- ASSERT(element);
- return element->document().accessSVGExtensions();
+ DCHECK(element);
+ return element->treeScope().ensureSVGTreeScopedResources();
}
LayoutSVGResourceContainer::LayoutSVGResourceContainer(SVGElement* node)
@@ -74,7 +75,7 @@ void LayoutSVGResourceContainer::willBeDestroyed() {
LayoutSVGHiddenContainer::willBeDestroyed();
if (m_registered)
- svgExtensionsFromElement(element()).removeResource(m_id);
+ svgTreeScopeResourcesFromElement(element()).removeResource(m_id);
}
void LayoutSVGResourceContainer::styleDidChange(StyleDifference diff,
@@ -99,7 +100,7 @@ void LayoutSVGResourceContainer::detachAllClients() {
// Add a pending resolution based on the id of the old resource.
Element* clientElement = toElement(client->node());
- svgExtensionsFromElement(clientElement)
+ svgTreeScopeResourcesFromElement(clientElement)
.addPendingResource(m_id, clientElement);
}
@@ -111,8 +112,9 @@ void LayoutSVGResourceContainer::idChanged() {
removeAllClientsFromCache();
// Remove old id, that is guaranteed to be present in cache.
- SVGDocumentExtensions& extensions = svgExtensionsFromElement(element());
- extensions.removeResource(m_id);
+ SVGTreeScopeResources& treeScopeResources =
+ svgTreeScopeResourcesFromElement(element());
+ treeScopeResources.removeResource(m_id);
m_id = element()->getIdAttribute();
registerResource();
@@ -208,22 +210,23 @@ void LayoutSVGResourceContainer::invalidateCacheAndMarkForLayout(
}
void LayoutSVGResourceContainer::registerResource() {
- SVGDocumentExtensions& extensions = svgExtensionsFromElement(element());
- if (!extensions.hasPendingResource(m_id)) {
- extensions.addResource(m_id, this);
+ SVGTreeScopeResources& treeScopeResources =
+ svgTreeScopeResourcesFromElement(element());
+ if (!treeScopeResources.hasPendingResource(m_id)) {
+ treeScopeResources.addResource(m_id, this);
return;
}
- SVGDocumentExtensions::SVGPendingElements* clients(
- extensions.removePendingResource(m_id));
+ SVGTreeScopeResources::SVGPendingElements* clients(
+ treeScopeResources.removePendingResource(m_id));
// Cache us with the new id.
- extensions.addResource(m_id, this);
+ treeScopeResources.addResource(m_id, this);
// Update cached resources of pending clients.
for (const auto& pendingClient : *clients) {
DCHECK(pendingClient->hasPendingResources());
- extensions.clearHasPendingResourcesIfPossible(pendingClient);
+ treeScopeResources.clearHasPendingResourcesIfPossible(pendingClient);
LayoutObject* layoutObject = pendingClient->layoutObject();
if (!layoutObject)
continue;

Powered by Google App Engine
This is Rietveld 408576698