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

Side by Side Diff: third_party/WebKit/Source/core/layout/svg/SVGResourcesCache.cpp

Issue 2050123002: Remove OwnPtr from Blink. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: First attempt to land. Created 4 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
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
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Library General Public License for more details. 12 * Library General Public License for more details.
13 * 13 *
14 * You should have received a copy of the GNU Library General Public License 14 * You should have received a copy of the GNU Library General Public License
15 * along with this library; see the file COPYING.LIB. If not, write to 15 * along with this library; see the file COPYING.LIB. If not, write to
16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 16 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA. 17 * Boston, MA 02110-1301, USA.
18 */ 18 */
19 19
20 #include "core/layout/svg/SVGResourcesCache.h" 20 #include "core/layout/svg/SVGResourcesCache.h"
21 21
22 #include "core/HTMLNames.h" 22 #include "core/HTMLNames.h"
23 #include "core/layout/svg/LayoutSVGResourceContainer.h" 23 #include "core/layout/svg/LayoutSVGResourceContainer.h"
24 #include "core/layout/svg/SVGResources.h" 24 #include "core/layout/svg/SVGResources.h"
25 #include "core/layout/svg/SVGResourcesCycleSolver.h" 25 #include "core/layout/svg/SVGResourcesCycleSolver.h"
26 #include "core/svg/SVGDocumentExtensions.h" 26 #include "core/svg/SVGDocumentExtensions.h"
27 #include <memory>
27 28
28 namespace blink { 29 namespace blink {
29 30
30 SVGResourcesCache::SVGResourcesCache() 31 SVGResourcesCache::SVGResourcesCache()
31 { 32 {
32 } 33 }
33 34
34 SVGResourcesCache::~SVGResourcesCache() 35 SVGResourcesCache::~SVGResourcesCache()
35 { 36 {
36 } 37 }
37 38
38 void SVGResourcesCache::addResourcesFromLayoutObject(LayoutObject* object, const ComputedStyle& style) 39 void SVGResourcesCache::addResourcesFromLayoutObject(LayoutObject* object, const ComputedStyle& style)
39 { 40 {
40 ASSERT(object); 41 ASSERT(object);
41 ASSERT(!m_cache.contains(object)); 42 ASSERT(!m_cache.contains(object));
42 43
43 const SVGComputedStyle& svgStyle = style.svgStyle(); 44 const SVGComputedStyle& svgStyle = style.svgStyle();
44 45
45 // Build a list of all resources associated with the passed LayoutObject. 46 // Build a list of all resources associated with the passed LayoutObject.
46 OwnPtr<SVGResources> newResources = SVGResources::buildResources(object, svg Style); 47 std::unique_ptr<SVGResources> newResources = SVGResources::buildResources(ob ject, svgStyle);
47 if (!newResources) 48 if (!newResources)
48 return; 49 return;
49 50
50 // Put object in cache. 51 // Put object in cache.
51 SVGResources* resources = m_cache.set(object, std::move(newResources)).store dValue->value.get(); 52 SVGResources* resources = m_cache.set(object, std::move(newResources)).store dValue->value.get();
52 53
53 // Run cycle-detection _afterwards_, so self-references can be caught as wel l. 54 // Run cycle-detection _afterwards_, so self-references can be caught as wel l.
54 SVGResourcesCycleSolver solver(object, resources); 55 SVGResourcesCycleSolver solver(object, resources);
55 solver.resolveCycles(); 56 solver.resolveCycles();
56 57
57 // Walk resources and register the layout object as a client of each resourc e. 58 // Walk resources and register the layout object as a client of each resourc e.
58 HashSet<LayoutSVGResourceContainer*> resourceSet; 59 HashSet<LayoutSVGResourceContainer*> resourceSet;
59 resources->buildSetOfResources(resourceSet); 60 resources->buildSetOfResources(resourceSet);
60 61
61 for (auto* resourceContainer : resourceSet) 62 for (auto* resourceContainer : resourceSet)
62 resourceContainer->addClient(object); 63 resourceContainer->addClient(object);
63 } 64 }
64 65
65 void SVGResourcesCache::removeResourcesFromLayoutObject(LayoutObject* object) 66 void SVGResourcesCache::removeResourcesFromLayoutObject(LayoutObject* object)
66 { 67 {
67 OwnPtr<SVGResources> resources = m_cache.take(object); 68 std::unique_ptr<SVGResources> resources = m_cache.take(object);
68 if (!resources) 69 if (!resources)
69 return; 70 return;
70 71
71 // Walk resources and unregister the layout object as a client of each resou rce. 72 // Walk resources and unregister the layout object as a client of each resou rce.
72 HashSet<LayoutSVGResourceContainer*> resourceSet; 73 HashSet<LayoutSVGResourceContainer*> resourceSet;
73 resources->buildSetOfResources(resourceSet); 74 resources->buildSetOfResources(resourceSet);
74 75
75 for (auto* resourceContainer : resourceSet) 76 for (auto* resourceContainer : resourceSet)
76 resourceContainer->removeClient(object); 77 resourceContainer->removeClient(object);
77 } 78 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 ASSERT(layoutObject); 163 ASSERT(layoutObject);
163 164
164 SVGResources* resources = cachedResourcesForLayoutObject(layoutObject); 165 SVGResources* resources = cachedResourcesForLayoutObject(layoutObject);
165 if (resources) 166 if (resources)
166 resources->removeClientFromCache(layoutObject); 167 resources->removeClientFromCache(layoutObject);
167 SVGResourcesCache& cache = resourcesCache(layoutObject->document()); 168 SVGResourcesCache& cache = resourcesCache(layoutObject->document());
168 cache.removeResourcesFromLayoutObject(layoutObject); 169 cache.removeResourcesFromLayoutObject(layoutObject);
169 } 170 }
170 171
171 } // namespace blink 172 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698