Changeset 163277 in webkit


Ignore:
Timestamp:
Feb 2, 2014 5:05:01 PM (10 years ago)
Author:
akling@apple.com
Message:

SVGDocumentExtensions::resourcesCache() should return a reference.
<https://webkit.org/b/128087>

The SVGResourcesCache is always present when the Document is using
SVG extensions, so make this return a reference and propagate that
knowledge to the call site.

This gets rid of an assertion and some rickety looking ->'s.
Also converted a loop to use C++11 range for syntax.

Reviewed by Sam Weinig.

  • rendering/svg/SVGResourcesCache.cpp:

(WebCore::resourcesCacheFromRenderer):
(WebCore::SVGResourcesCache::cachedResourcesForRenderObject):
(WebCore::SVGResourcesCache::clientStyleChanged):
(WebCore::SVGResourcesCache::clientWasAddedToTree):
(WebCore::SVGResourcesCache::clientWillBeRemovedFromTree):
(WebCore::SVGResourcesCache::clientDestroyed):
(WebCore::SVGResourcesCache::resourceDestroyed):

  • svg/SVGDocumentExtensions.h:

(WebCore::SVGDocumentExtensions::resourcesCache):

Location:
trunk/Source/WebCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r163276 r163277  
     12014-02-02  Andreas Kling  <akling@apple.com>
     2
     3        SVGDocumentExtensions::resourcesCache() should return a reference.
     4        <https://webkit.org/b/128087>
     5
     6        The SVGResourcesCache is always present when the Document is using
     7        SVG extensions, so make this return a reference and propagate that
     8        knowledge to the call site.
     9
     10        This gets rid of an assertion and some rickety looking ->'s.
     11        Also converted a loop to use C++11 range for syntax.
     12
     13        Reviewed by Sam Weinig.
     14
     15        * rendering/svg/SVGResourcesCache.cpp:
     16        (WebCore::resourcesCacheFromRenderer):
     17        (WebCore::SVGResourcesCache::cachedResourcesForRenderObject):
     18        (WebCore::SVGResourcesCache::clientStyleChanged):
     19        (WebCore::SVGResourcesCache::clientWasAddedToTree):
     20        (WebCore::SVGResourcesCache::clientWillBeRemovedFromTree):
     21        (WebCore::SVGResourcesCache::clientDestroyed):
     22        (WebCore::SVGResourcesCache::resourceDestroyed):
     23        * svg/SVGDocumentExtensions.h:
     24        (WebCore::SVGDocumentExtensions::resourcesCache):
     25
    1262014-02-02  Andreas Kling  <akling@apple.com>
    227
  • trunk/Source/WebCore/rendering/svg/SVGResourcesCache.cpp

    r161418 r163277  
    7777}
    7878
    79 static inline SVGResourcesCache* resourcesCacheFromRenderObject(const RenderObject& renderer)
     79static inline SVGResourcesCache& resourcesCacheFromRenderer(const RenderObject& renderer)
    8080{
    8181    SVGDocumentExtensions* extensions = renderer.document().accessSVGExtensions();
    8282    ASSERT(extensions);
    83 
    84     SVGResourcesCache* cache = extensions->resourcesCache();
    85     ASSERT(cache);
    86 
    87     return cache;
     83    return extensions->resourcesCache();
    8884}
    8985
    9086SVGResources* SVGResourcesCache::cachedResourcesForRenderObject(const RenderObject& renderer)
    9187{
    92     return resourcesCacheFromRenderObject(renderer)->m_cache.get(&renderer);
     88    return resourcesCacheFromRenderer(renderer).m_cache.get(&renderer);
    9389}
    9490
     
    123119    // to be able to selectively rebuild individual resources, instead of all of them.
    124120    if (rendererCanHaveResources(renderer)) {
    125         SVGResourcesCache* cache = resourcesCacheFromRenderObject(renderer);
    126         cache->removeResourcesFromRenderer(renderer);
    127         cache->addResourcesFromRenderer(renderer, newStyle);
     121        auto& cache = resourcesCacheFromRenderer(renderer);
     122        cache.removeResourcesFromRenderer(renderer);
     123        cache.addResourcesFromRenderer(renderer, newStyle);
    128124    }
    129125
     
    144140        return;
    145141    RenderElement& elementRenderer = toRenderElement(renderer);
    146     SVGResourcesCache* cache = resourcesCacheFromRenderObject(elementRenderer);
    147     cache->addResourcesFromRenderer(elementRenderer, elementRenderer.style());
     142    resourcesCacheFromRenderer(elementRenderer).addResourcesFromRenderer(elementRenderer, elementRenderer.style());
    148143}
    149144
     
    158153        return;
    159154    RenderElement& elementRenderer = toRenderElement(renderer);
    160     SVGResourcesCache* cache = resourcesCacheFromRenderObject(elementRenderer);
    161     cache->removeResourcesFromRenderer(elementRenderer);
     155    resourcesCacheFromRenderer(elementRenderer).removeResourcesFromRenderer(elementRenderer);
    162156}
    163157
     
    168162        resources->removeClientFromCache(renderer);
    169163
    170     SVGResourcesCache* cache = resourcesCacheFromRenderObject(renderer);
    171     cache->removeResourcesFromRenderer(renderer);
     164    resourcesCacheFromRenderer(renderer).removeResourcesFromRenderer(renderer);
    172165}
    173166
    174167void SVGResourcesCache::resourceDestroyed(RenderSVGResourceContainer& resource)
    175168{
    176     SVGResourcesCache* cache = resourcesCacheFromRenderObject(resource);
     169    auto& cache = resourcesCacheFromRenderer(resource);
    177170
    178171    // The resource itself may have clients, that need to be notified.
    179     cache->removeResourcesFromRenderer(resource);
     172    cache.removeResourcesFromRenderer(resource);
    180173
    181     for (auto it = cache->m_cache.begin(), end = cache->m_cache.end(); it != end; ++it) {
    182         it->value->resourceDestroyed(resource);
     174    for (auto& it : cache.m_cache) {
     175        it.value->resourceDestroyed(resource);
    183176
    184177        // Mark users of destroyed resources as pending resolution based on the id of the old resource.
    185178        Element& resourceElement = resource.element();
    186         Element* clientElement = toElement(it->key->node());
     179        Element* clientElement = toElement(it.key->node());
    187180        SVGDocumentExtensions* extensions = clientElement->document().accessSVGExtensions();
    188181
  • trunk/Source/WebCore/svg/SVGDocumentExtensions.h

    r162119 r163277  
    6363    void reportError(const String&);
    6464
    65     SVGResourcesCache* resourcesCache() const { return m_resourcesCache.get(); }
     65    SVGResourcesCache& resourcesCache() { return *m_resourcesCache; }
    6666
    6767    HashSet<SVGElement*>* setOfElementsReferencingTarget(SVGElement* referencedElement) const;
Note: See TracChangeset for help on using the changeset viewer.