| 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 f50247e0199b30ce70d3f2634876f15ba3c8931e..cf36a430aa6198a3035699bd6d8320e0787262d6 100644
 | 
| --- a/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
 | 
| +++ b/third_party/WebKit/Source/core/layout/svg/LayoutSVGResourceContainer.cpp
 | 
| @@ -67,31 +67,22 @@ void LayoutSVGResourceContainer::notifyContentChanged() {
 | 
|  }
 | 
|  
 | 
|  void LayoutSVGResourceContainer::willBeDestroyed() {
 | 
| -  // Detach all clients referring to this resource. If the resource itself is
 | 
| -  // a client, it will be detached from any such resources by the call to
 | 
| -  // LayoutSVGHiddenContainer::willBeDestroyed() below.
 | 
| -  detachAllClients();
 | 
| -
 | 
|    LayoutSVGHiddenContainer::willBeDestroyed();
 | 
| -  if (!m_registered)
 | 
| -    return;
 | 
|    svgTreeScopeResourcesFromElement(element()).removeResource(
 | 
| -      element()->getIdAttribute());
 | 
| +      element()->getIdAttribute(), this);
 | 
| +  DCHECK(m_clients.isEmpty());
 | 
|  }
 | 
|  
 | 
|  void LayoutSVGResourceContainer::styleDidChange(StyleDifference diff,
 | 
|                                                  const ComputedStyle* oldStyle) {
 | 
|    LayoutSVGHiddenContainer::styleDidChange(diff, oldStyle);
 | 
| -
 | 
| -  if (m_registered)
 | 
| -    return;
 | 
| -  m_registered = true;
 | 
|    svgTreeScopeResourcesFromElement(element()).updateResource(
 | 
|        element()->getIdAttribute(), this);
 | 
|  }
 | 
|  
 | 
| -void LayoutSVGResourceContainer::detachAllClients() {
 | 
| -  const AtomicString& id = element()->getIdAttribute();
 | 
| +void LayoutSVGResourceContainer::detachAllClients(const AtomicString& toId) {
 | 
| +  removeAllClientsFromCache();
 | 
| +
 | 
|    for (auto* client : m_clients) {
 | 
|      // Unlink the resource from the client's SVGResources. (The actual
 | 
|      // removal will be signaled after processing all the clients.)
 | 
| @@ -104,22 +95,15 @@ void LayoutSVGResourceContainer::detachAllClients() {
 | 
|      // Add a pending resolution based on the id of the old resource.
 | 
|      Element* clientElement = toElement(client->node());
 | 
|      svgTreeScopeResourcesFromElement(clientElement)
 | 
| -        .addPendingResource(id, *clientElement);
 | 
| +        .addPendingResource(toId, *clientElement);
 | 
|    }
 | 
| -
 | 
| -  removeAllClientsFromCache();
 | 
| +  m_clients.clear();
 | 
|  }
 | 
|  
 | 
|  void LayoutSVGResourceContainer::idChanged(const AtomicString& oldId,
 | 
|                                             const AtomicString& newId) {
 | 
| -  // Invalidate all our current clients.
 | 
| -  removeAllClientsFromCache();
 | 
| -
 | 
| -  // Remove old id, that is guaranteed to be present in cache.
 | 
| -  SVGTreeScopeResources& treeScopeResources =
 | 
| -      svgTreeScopeResourcesFromElement(element());
 | 
| -  treeScopeResources.removeResource(oldId);
 | 
| -  treeScopeResources.updateResource(newId, this);
 | 
| +  svgTreeScopeResourcesFromElement(element()).updateResource(oldId, newId,
 | 
| +                                                             this);
 | 
|  }
 | 
|  
 | 
|  void LayoutSVGResourceContainer::markAllClientsForInvalidation(
 | 
| 
 |