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

Side by Side Diff: Source/core/layout/svg/LayoutSVGResourceContainer.cpp

Issue 1062283002: Use C++11 range-based loop for core/layout (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix it naming Created 5 years, 8 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
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
103 return; 103 return;
104 104
105 if (m_invalidationMask & mode) 105 if (m_invalidationMask & mode)
106 return; 106 return;
107 107
108 m_invalidationMask |= mode; 108 m_invalidationMask |= mode;
109 m_isInvalidating = true; 109 m_isInvalidating = true;
110 bool needsLayout = mode == LayoutAndBoundariesInvalidation; 110 bool needsLayout = mode == LayoutAndBoundariesInvalidation;
111 bool markForInvalidation = mode != ParentOnlyInvalidation; 111 bool markForInvalidation = mode != ParentOnlyInvalidation;
112 112
113 HashSet<LayoutObject*>::iterator end = m_clients.end(); 113 for (auto* client : m_clients) {
114 for (HashSet<LayoutObject*>::iterator it = m_clients.begin(); it != end; ++i t) {
115 LayoutObject* client = *it;
116 if (client->isSVGResourceContainer()) { 114 if (client->isSVGResourceContainer()) {
117 toLayoutSVGResourceContainer(client)->removeAllClientsFromCache(mark ForInvalidation); 115 toLayoutSVGResourceContainer(client)->removeAllClientsFromCache(mark ForInvalidation);
118 continue; 116 continue;
119 } 117 }
120 118
121 if (markForInvalidation) 119 if (markForInvalidation)
122 markClientForInvalidation(client, mode); 120 markClientForInvalidation(client, mode);
123 121
124 LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidation(c lient, needsLayout); 122 LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidation(c lient, needsLayout);
125 } 123 }
126 124
127 markAllClientLayersForInvalidation(); 125 markAllClientLayersForInvalidation();
128 126
129 m_isInvalidating = false; 127 m_isInvalidating = false;
130 } 128 }
131 129
132 void LayoutSVGResourceContainer::markAllClientLayersForInvalidation() 130 void LayoutSVGResourceContainer::markAllClientLayersForInvalidation()
133 { 131 {
134 HashSet<DeprecatedPaintLayer*>::iterator layerEnd = m_clientLayers.end(); 132 for (auto* layer : m_clientLayers)
135 for (HashSet<DeprecatedPaintLayer*>::iterator it = m_clientLayers.begin(); i t != layerEnd; ++it) 133 layer->filterNeedsPaintInvalidation();
136 (*it)->filterNeedsPaintInvalidation();
137 } 134 }
138 135
139 void LayoutSVGResourceContainer::markClientForInvalidation(LayoutObject* client, InvalidationMode mode) 136 void LayoutSVGResourceContainer::markClientForInvalidation(LayoutObject* client, InvalidationMode mode)
140 { 137 {
141 ASSERT(client); 138 ASSERT(client);
142 ASSERT(!m_clients.isEmpty()); 139 ASSERT(!m_clients.isEmpty());
143 140
144 switch (mode) { 141 switch (mode) {
145 case LayoutAndBoundariesInvalidation: 142 case LayoutAndBoundariesInvalidation:
146 case BoundariesInvalidation: 143 case BoundariesInvalidation:
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 if (!dependencies) 247 if (!dependencies)
251 return; 248 return;
252 249
253 // We allow cycles in SVGDocumentExtensions reference sets in order to avoid expensive 250 // We allow cycles in SVGDocumentExtensions reference sets in order to avoid expensive
254 // reference graph adjustments on changes, so we need to break possible cycl es here. 251 // reference graph adjustments on changes, so we need to break possible cycl es here.
255 // This strong reference is safe, as it is guaranteed that this set will be emptied 252 // This strong reference is safe, as it is guaranteed that this set will be emptied
256 // at the end of recursion. 253 // at the end of recursion.
257 typedef WillBeHeapHashSet<RawPtrWillBeMember<SVGElement>> SVGElementSet; 254 typedef WillBeHeapHashSet<RawPtrWillBeMember<SVGElement>> SVGElementSet;
258 DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<SVGElementSet>, invalidatingDepen dencies, (adoptPtrWillBeNoop(new SVGElementSet))); 255 DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<SVGElementSet>, invalidatingDepen dencies, (adoptPtrWillBeNoop(new SVGElementSet)));
259 256
260 SVGElementSet::iterator end = dependencies->end(); 257 for (auto* element : *dependencies) {
261 for (SVGElementSet::iterator it = dependencies->begin(); it != end; ++it) { 258 if (LayoutObject* layoutObject = element->layoutObject()) {
262 if (LayoutObject* layoutObject = (*it)->layoutObject()) { 259 if (UNLIKELY(!invalidatingDependencies->add(element).isNewEntry)) {
263 if (UNLIKELY(!invalidatingDependencies->add(*it).isNewEntry)) {
264 // Reference cycle: we are in process of invalidating this depen dant. 260 // Reference cycle: we are in process of invalidating this depen dant.
265 continue; 261 continue;
266 } 262 }
267 263
268 LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidati on(layoutObject, needsLayout); 264 LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidati on(layoutObject, needsLayout);
269 invalidatingDependencies->remove(*it); 265 invalidatingDependencies->remove(element);
270 } 266 }
271 } 267 }
272 } 268 }
273 269
274 void LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidation(Layo utObject* object, bool needsLayout) 270 void LayoutSVGResourceContainer::markForLayoutAndParentResourceInvalidation(Layo utObject* object, bool needsLayout)
275 { 271 {
276 ASSERT(object); 272 ASSERT(object);
277 ASSERT(object->node()); 273 ASSERT(object->node());
278 274
279 if (needsLayout && !object->documentBeingDestroyed()) 275 if (needsLayout && !object->documentBeingDestroyed())
(...skipping 10 matching lines...) Expand all
290 // This will process the rest of the ancestors. 286 // This will process the rest of the ancestors.
291 toLayoutSVGResourceContainer(current)->removeAllClientsFromCache(); 287 toLayoutSVGResourceContainer(current)->removeAllClientsFromCache();
292 break; 288 break;
293 } 289 }
294 290
295 current = current->parent(); 291 current = current->parent();
296 } 292 }
297 } 293 }
298 294
299 } 295 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698