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

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

Issue 2390773004: reflow comments in core/svg/ (Closed)
Patch Set: comments (heh!) Created 4 years, 2 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) 2006 Apple Inc. All rights reserved. 2 * Copyright (C) 2006 Apple Inc. All rights reserved.
3 * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> 3 * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
4 * Copyright (C) 2007 Rob Buis <buis@kde.org> 4 * Copyright (C) 2007 Rob Buis <buis@kde.org>
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 if (RuntimeEnabledFeatures::smilEnabled()) { 92 if (RuntimeEnabledFeatures::smilEnabled()) {
93 HeapVector<Member<SVGSVGElement>> timeContainers; 93 HeapVector<Member<SVGSVGElement>> timeContainers;
94 copyToVector(m_timeContainers, timeContainers); 94 copyToVector(m_timeContainers, timeContainers);
95 for (const auto& container : timeContainers) 95 for (const auto& container : timeContainers)
96 container->timeContainer()->serviceAnimations(); 96 container->timeContainer()->serviceAnimations();
97 } 97 }
98 98
99 SVGElementSet webAnimationsPendingSVGElements; 99 SVGElementSet webAnimationsPendingSVGElements;
100 webAnimationsPendingSVGElements.swap(m_webAnimationsPendingSVGElements); 100 webAnimationsPendingSVGElements.swap(m_webAnimationsPendingSVGElements);
101 101
102 // TODO(alancutter): Make SVG animation effect application a separate document lifecycle phase from servicing animations to be responsive to Javascript manipu lation of exposed animation objects. 102 // TODO(alancutter): Make SVG animation effect application a separate document
103 // lifecycle phase from servicing animations to be responsive to Javascript
104 // manipulation of exposed animation objects.
103 for (auto& svgElement : webAnimationsPendingSVGElements) 105 for (auto& svgElement : webAnimationsPendingSVGElements)
104 svgElement->applyActiveWebAnimations(); 106 svgElement->applyActiveWebAnimations();
105 107
106 ASSERT(m_webAnimationsPendingSVGElements.isEmpty()); 108 ASSERT(m_webAnimationsPendingSVGElements.isEmpty());
107 } 109 }
108 110
109 void SVGDocumentExtensions::startAnimations() { 111 void SVGDocumentExtensions::startAnimations() {
110 // FIXME: Eventually every "Time Container" will need a way to latch on to som e global timer 112 // FIXME: Eventually every "Time Container" will need a way to latch on to
111 // starting animations for a document will do this "latching" 113 // some global timer starting animations for a document will do this
112 // FIXME: We hold a ref pointers to prevent a shadow tree from getting removed out from underneath us. 114 // "latching"
113 // In the future we should refactor the use-element to avoid this. See https:/ /webkit.org/b/53704 115 // FIXME: We hold a ref pointers to prevent a shadow tree from getting removed
116 // out from underneath us. In the future we should refactor the use-element
117 // to avoid this. See https://webkit.org/b/53704
114 HeapVector<Member<SVGSVGElement>> timeContainers; 118 HeapVector<Member<SVGSVGElement>> timeContainers;
115 copyToVector(m_timeContainers, timeContainers); 119 copyToVector(m_timeContainers, timeContainers);
116 for (const auto& container : timeContainers) { 120 for (const auto& container : timeContainers) {
117 SMILTimeContainer* timeContainer = container->timeContainer(); 121 SMILTimeContainer* timeContainer = container->timeContainer();
118 if (!timeContainer->isStarted()) 122 if (!timeContainer->isStarted())
119 timeContainer->start(); 123 timeContainer->start();
120 } 124 }
121 } 125 }
122 126
123 void SVGDocumentExtensions::pauseAnimations() { 127 void SVGDocumentExtensions::pauseAnimations() {
124 for (SVGSVGElement* element : m_timeContainers) 128 for (SVGSVGElement* element : m_timeContainers)
125 element->pauseAnimations(); 129 element->pauseAnimations();
126 } 130 }
127 131
128 void SVGDocumentExtensions::dispatchSVGLoadEventToOutermostSVGElements() { 132 void SVGDocumentExtensions::dispatchSVGLoadEventToOutermostSVGElements() {
129 HeapVector<Member<SVGSVGElement>> timeContainers; 133 HeapVector<Member<SVGSVGElement>> timeContainers;
130 copyToVector(m_timeContainers, timeContainers); 134 copyToVector(m_timeContainers, timeContainers);
131 for (const auto& container : timeContainers) { 135 for (const auto& container : timeContainers) {
132 SVGSVGElement* outerSVG = container.get(); 136 SVGSVGElement* outerSVG = container.get();
133 if (!outerSVG->isOutermostSVGSVGElement()) 137 if (!outerSVG->isOutermostSVGSVGElement())
134 continue; 138 continue;
135 139
136 // don't dispatch the load event document is not wellformed (for XML/standal one svg) 140 // Don't dispatch the load event document is not wellformed (for
141 // XML/standalone svg).
137 if (outerSVG->document().wellFormed() || 142 if (outerSVG->document().wellFormed() ||
138 !outerSVG->document().isSVGDocument()) 143 !outerSVG->document().isSVGDocument())
139 outerSVG->sendSVGLoadEventIfPossible(); 144 outerSVG->sendSVGLoadEventIfPossible();
140 } 145 }
141 } 146 }
142 147
143 void SVGDocumentExtensions::reportError(const String& message) { 148 void SVGDocumentExtensions::reportError(const String& message) {
144 ConsoleMessage* consoleMessage = ConsoleMessage::create( 149 ConsoleMessage* consoleMessage = ConsoleMessage::create(
145 RenderingMessageSource, ErrorMessageLevel, "Error: " + message); 150 RenderingMessageSource, ErrorMessageLevel, "Error: " + message);
146 m_document->addConsoleMessage(consoleMessage); 151 m_document->addConsoleMessage(consoleMessage);
(...skipping 17 matching lines...) Expand all
164 } 169 }
165 170
166 bool SVGDocumentExtensions::hasPendingResource(const AtomicString& id) const { 171 bool SVGDocumentExtensions::hasPendingResource(const AtomicString& id) const {
167 if (id.isEmpty()) 172 if (id.isEmpty())
168 return false; 173 return false;
169 174
170 return m_pendingResources.contains(id); 175 return m_pendingResources.contains(id);
171 } 176 }
172 177
173 bool SVGDocumentExtensions::isElementPendingResources(Element* element) const { 178 bool SVGDocumentExtensions::isElementPendingResources(Element* element) const {
174 // This algorithm takes time proportional to the number of pending resources a nd need not. 179 // This algorithm takes time proportional to the number of pending resources
175 // If performance becomes an issue we can keep a counted set of elements and a nswer the question efficiently. 180 // and need not. If performance becomes an issue we can keep a counted set of
181 // elements and answer the question efficiently.
176 182
177 ASSERT(element); 183 ASSERT(element);
178 184
179 for (const auto& entry : m_pendingResources) { 185 for (const auto& entry : m_pendingResources) {
180 SVGPendingElements* elements = entry.value.get(); 186 SVGPendingElements* elements = entry.value.get();
181 ASSERT(elements); 187 ASSERT(elements);
182 188
183 if (elements->contains(element)) 189 if (elements->contains(element))
184 return true; 190 return true;
185 } 191 }
(...skipping 29 matching lines...) Expand all
215 ASSERT(elements); 221 ASSERT(elements);
216 ASSERT(!elements->isEmpty()); 222 ASSERT(!elements->isEmpty());
217 223
218 elements->remove(element); 224 elements->remove(element);
219 if (elements->isEmpty()) 225 if (elements->isEmpty())
220 toBeRemoved.append(entry.key); 226 toBeRemoved.append(entry.key);
221 } 227 }
222 228
223 clearHasPendingResourcesIfPossible(element); 229 clearHasPendingResourcesIfPossible(element);
224 230
225 // We use the removePendingResource function here because it deals with set lifetime correctly. 231 // We use the removePendingResource function here because it deals with set
232 // lifetime correctly.
226 for (const AtomicString& id : toBeRemoved) 233 for (const AtomicString& id : toBeRemoved)
227 removePendingResource(id); 234 removePendingResource(id);
228 } 235 }
229 236
230 // Remove the element from pending resources that were scheduled for removal. 237 // Remove the element from pending resources that were scheduled for removal.
231 if (!m_pendingResourcesForRemoval.isEmpty()) { 238 if (!m_pendingResourcesForRemoval.isEmpty()) {
232 Vector<AtomicString> toBeRemoved; 239 Vector<AtomicString> toBeRemoved;
233 for (const auto& entry : m_pendingResourcesForRemoval) { 240 for (const auto& entry : m_pendingResourcesForRemoval) {
234 SVGPendingElements* elements = entry.value.get(); 241 SVGPendingElements* elements = entry.value.get();
235 ASSERT(elements); 242 ASSERT(elements);
236 ASSERT(!elements->isEmpty()); 243 ASSERT(!elements->isEmpty());
237 244
238 elements->remove(element); 245 elements->remove(element);
239 if (elements->isEmpty()) 246 if (elements->isEmpty())
240 toBeRemoved.append(entry.key); 247 toBeRemoved.append(entry.key);
241 } 248 }
242 249
243 // We use the removePendingResourceForRemoval function here because it deals with set lifetime correctly. 250 // We use the removePendingResourceForRemoval function here because it deals
251 // with set lifetime correctly.
244 for (const AtomicString& id : toBeRemoved) 252 for (const AtomicString& id : toBeRemoved)
245 removePendingResourceForRemoval(id); 253 removePendingResourceForRemoval(id);
246 } 254 }
247 } 255 }
248 256
249 SVGDocumentExtensions::SVGPendingElements* 257 SVGDocumentExtensions::SVGPendingElements*
250 SVGDocumentExtensions::removePendingResource(const AtomicString& id) { 258 SVGDocumentExtensions::removePendingResource(const AtomicString& id) {
251 ASSERT(m_pendingResources.contains(id)); 259 ASSERT(m_pendingResources.contains(id));
252 return m_pendingResources.take(id); 260 return m_pendingResources.take(id);
253 } 261 }
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
350 DEFINE_TRACE(SVGDocumentExtensions) { 358 DEFINE_TRACE(SVGDocumentExtensions) {
351 visitor->trace(m_document); 359 visitor->trace(m_document);
352 visitor->trace(m_timeContainers); 360 visitor->trace(m_timeContainers);
353 visitor->trace(m_webAnimationsPendingSVGElements); 361 visitor->trace(m_webAnimationsPendingSVGElements);
354 visitor->trace(m_relativeLengthSVGRoots); 362 visitor->trace(m_relativeLengthSVGRoots);
355 visitor->trace(m_pendingResources); 363 visitor->trace(m_pendingResources);
356 visitor->trace(m_pendingResourcesForRemoval); 364 visitor->trace(m_pendingResourcesForRemoval);
357 } 365 }
358 366
359 } // namespace blink 367 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/svg/SVGDocumentExtensions.h ('k') | third_party/WebKit/Source/core/svg/SVGElement.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698