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

Side by Side Diff: Source/WebCore/rendering/svg/SVGResourcesCache.cpp

Issue 10447082: Merge 117971 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1132/
Patch Set: Created 8 years, 6 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 unified diff | Download patch
« no previous file with comments | « Source/WebCore/rendering/svg/SVGResourcesCache.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) Research In Motion Limited 2010. All rights reserved. 2 * Copyright (C) Research In Motion Limited 2010. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 HashSet<RenderSVGResourceContainer*> resourceSet; 82 HashSet<RenderSVGResourceContainer*> resourceSet;
83 resources->buildSetOfResources(resourceSet); 83 resources->buildSetOfResources(resourceSet);
84 84
85 HashSet<RenderSVGResourceContainer*>::iterator end = resourceSet.end(); 85 HashSet<RenderSVGResourceContainer*>::iterator end = resourceSet.end();
86 for (HashSet<RenderSVGResourceContainer*>::iterator it = resourceSet.begin() ; it != end; ++it) 86 for (HashSet<RenderSVGResourceContainer*>::iterator it = resourceSet.begin() ; it != end; ++it)
87 (*it)->removeClient(object); 87 (*it)->removeClient(object);
88 88
89 delete m_cache.take(object); 89 delete m_cache.take(object);
90 } 90 }
91 91
92 static inline SVGResourcesCache* resourcesCacheFromRenderObject(RenderObject* re nderer) 92 static inline SVGResourcesCache* resourcesCacheFromRenderObject(const RenderObje ct* renderer)
93 { 93 {
94 Document* document = renderer->document(); 94 Document* document = renderer->document();
95 ASSERT(document); 95 ASSERT(document);
96 96
97 SVGDocumentExtensions* extensions = document->accessSVGExtensions(); 97 SVGDocumentExtensions* extensions = document->accessSVGExtensions();
98 ASSERT(extensions); 98 ASSERT(extensions);
99 99
100 SVGResourcesCache* cache = extensions->resourcesCache(); 100 SVGResourcesCache* cache = extensions->resourcesCache();
101 ASSERT(cache); 101 ASSERT(cache);
102 102
103 return cache; 103 return cache;
104 } 104 }
105 105
106 SVGResources* SVGResourcesCache::cachedResourcesForRenderObject(RenderObject* re nderer) 106 SVGResources* SVGResourcesCache::cachedResourcesForRenderObject(const RenderObje ct* renderer)
107 { 107 {
108 ASSERT(renderer); 108 ASSERT(renderer);
109 SVGResourcesCache* cache = resourcesCacheFromRenderObject(renderer); 109 SVGResourcesCache* cache = resourcesCacheFromRenderObject(renderer);
110 if (!cache->m_cache.contains(renderer)) 110 if (!cache->m_cache.contains(renderer))
111 return 0; 111 return 0;
112 112
113 return cache->m_cache.get(renderer); 113 return cache->m_cache.get(renderer);
114 } 114 }
115 115
116 void SVGResourcesCache::clientLayoutChanged(RenderObject* object) 116 void SVGResourcesCache::clientLayoutChanged(RenderObject* object)
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 } 163 }
164 164
165 void SVGResourcesCache::resourceDestroyed(RenderSVGResourceContainer* resource) 165 void SVGResourcesCache::resourceDestroyed(RenderSVGResourceContainer* resource)
166 { 166 {
167 ASSERT(resource); 167 ASSERT(resource);
168 SVGResourcesCache* cache = resourcesCacheFromRenderObject(resource); 168 SVGResourcesCache* cache = resourcesCacheFromRenderObject(resource);
169 169
170 // The resource itself may have clients, that need to be notified. 170 // The resource itself may have clients, that need to be notified.
171 cache->removeResourcesFromRenderObject(resource); 171 cache->removeResourcesFromRenderObject(resource);
172 172
173 HashMap<RenderObject*, SVGResources*>::iterator end = cache->m_cache.end(); 173 HashMap<const RenderObject*, SVGResources*>::iterator end = cache->m_cache.e nd();
174 for (HashMap<RenderObject*, SVGResources*>::iterator it = cache->m_cache.beg in(); it != end; ++it) { 174 for (HashMap<const RenderObject*, SVGResources*>::iterator it = cache->m_cac he.begin(); it != end; ++it) {
175 it->second->resourceDestroyed(resource); 175 it->second->resourceDestroyed(resource);
176 176
177 // Mark users of destroyed resources as pending resolution based on the id of the old resource. 177 // Mark users of destroyed resources as pending resolution based on the id of the old resource.
178 Element* resourceElement = toElement(resource->node()); 178 Element* resourceElement = toElement(resource->node());
179 SVGStyledElement* clientElement = toSVGStyledElement(it->first->node()); 179 SVGStyledElement* clientElement = toSVGStyledElement(it->first->node());
180 SVGDocumentExtensions* extensions = clientElement->document()->accessSVG Extensions(); 180 SVGDocumentExtensions* extensions = clientElement->document()->accessSVG Extensions();
181 181
182 extensions->addPendingResource(resourceElement->fastGetAttribute(HTMLNam es::idAttr), clientElement); 182 extensions->addPendingResource(resourceElement->fastGetAttribute(HTMLNam es::idAttr), clientElement);
183 } 183 }
184 } 184 }
185 185
186 } 186 }
187 187
188 #endif 188 #endif
OLDNEW
« no previous file with comments | « Source/WebCore/rendering/svg/SVGResourcesCache.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698