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

Side by Side Diff: third_party/WebKit/Source/core/dom/custom/CustomElementRegistry.cpp

Issue 2671933002: Migrate WTF::HashMap::add() to ::insert() (Closed)
Patch Set: rebase, add TODOs Created 3 years, 10 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 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/dom/custom/CustomElementRegistry.h" 5 #include "core/dom/custom/CustomElementRegistry.h"
6 6
7 #include "bindings/core/v8/ExceptionState.h" 7 #include "bindings/core/v8/ExceptionState.h"
8 #include "bindings/core/v8/ScriptCustomElementDefinitionBuilder.h" 8 #include "bindings/core/v8/ScriptCustomElementDefinitionBuilder.h"
9 #include "bindings/core/v8/ScriptPromise.h" 9 #include "bindings/core/v8/ScriptPromise.h"
10 #include "bindings/core/v8/ScriptPromiseResolver.h" 10 #include "bindings/core/v8/ScriptPromiseResolver.h"
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 // CustomElementRegistry's element definition is running 180 // CustomElementRegistry's element definition is running
181 // flag." 181 // flag."
182 // (ElementDefinitionIsRunning destructor does this.) 182 // (ElementDefinitionIsRunning destructor does this.)
183 } 183 }
184 184
185 CustomElementDescriptor descriptor(name, localName); 185 CustomElementDescriptor descriptor(name, localName);
186 CustomElementDefinition* definition = builder.build(descriptor); 186 CustomElementDefinition* definition = builder.build(descriptor);
187 CHECK(!exceptionState.hadException()); 187 CHECK(!exceptionState.hadException());
188 CHECK(definition->descriptor() == descriptor); 188 CHECK(definition->descriptor() == descriptor);
189 DefinitionMap::AddResult result = 189 DefinitionMap::AddResult result =
190 m_definitions.add(descriptor.name(), definition); 190 m_definitions.insert(descriptor.name(), definition);
191 CHECK(result.isNewEntry); 191 CHECK(result.isNewEntry);
192 192
193 HeapVector<Member<Element>> candidates; 193 HeapVector<Member<Element>> candidates;
194 collectCandidates(descriptor, &candidates); 194 collectCandidates(descriptor, &candidates);
195 for (Element* candidate : candidates) 195 for (Element* candidate : candidates)
196 definition->enqueueUpgradeReaction(candidate); 196 definition->enqueueUpgradeReaction(candidate);
197 197
198 // 16: when-defined promise processing 198 // 16: when-defined promise processing
199 const auto& entry = m_whenDefinedPromiseMap.find(name); 199 const auto& entry = m_whenDefinedPromiseMap.find(name);
200 if (entry != m_whenDefinedPromiseMap.end()) { 200 if (entry != m_whenDefinedPromiseMap.end()) {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 257
258 void CustomElementRegistry::addCandidate(Element* candidate) { 258 void CustomElementRegistry::addCandidate(Element* candidate) {
259 const AtomicString& name = candidate->localName(); 259 const AtomicString& name = candidate->localName();
260 if (nameIsDefined(name) || v0NameIsDefined(name)) 260 if (nameIsDefined(name) || v0NameIsDefined(name))
261 return; 261 return;
262 UpgradeCandidateMap::iterator it = m_upgradeCandidates->find(name); 262 UpgradeCandidateMap::iterator it = m_upgradeCandidates->find(name);
263 UpgradeCandidateSet* set; 263 UpgradeCandidateSet* set;
264 if (it != m_upgradeCandidates->end()) { 264 if (it != m_upgradeCandidates->end()) {
265 set = it->value; 265 set = it->value;
266 } else { 266 } else {
267 set = m_upgradeCandidates->add(name, new UpgradeCandidateSet()) 267 set = m_upgradeCandidates->insert(name, new UpgradeCandidateSet())
268 .storedValue->value; 268 .storedValue->value;
269 } 269 }
270 set->insert(candidate); 270 set->insert(candidate);
271 } 271 }
272 272
273 // https://html.spec.whatwg.org/multipage/scripting.html#dom-customelementsregis try-whendefined 273 // https://html.spec.whatwg.org/multipage/scripting.html#dom-customelementsregis try-whendefined
274 ScriptPromise CustomElementRegistry::whenDefined( 274 ScriptPromise CustomElementRegistry::whenDefined(
275 ScriptState* scriptState, 275 ScriptState* scriptState,
276 const AtomicString& name, 276 const AtomicString& name,
277 ExceptionState& exceptionState) { 277 ExceptionState& exceptionState) {
278 if (throwIfInvalidName(name, exceptionState)) 278 if (throwIfInvalidName(name, exceptionState))
279 return ScriptPromise(); 279 return ScriptPromise();
280 CustomElementDefinition* definition = definitionForName(name); 280 CustomElementDefinition* definition = definitionForName(name);
281 if (definition) 281 if (definition)
282 return ScriptPromise::castUndefined(scriptState); 282 return ScriptPromise::castUndefined(scriptState);
283 ScriptPromiseResolver* resolver = m_whenDefinedPromiseMap.get(name); 283 ScriptPromiseResolver* resolver = m_whenDefinedPromiseMap.get(name);
284 if (resolver) 284 if (resolver)
285 return resolver->promise(); 285 return resolver->promise();
286 ScriptPromiseResolver* newResolver = 286 ScriptPromiseResolver* newResolver =
287 ScriptPromiseResolver::create(scriptState); 287 ScriptPromiseResolver::create(scriptState);
288 m_whenDefinedPromiseMap.add(name, newResolver); 288 m_whenDefinedPromiseMap.insert(name, newResolver);
289 return newResolver->promise(); 289 return newResolver->promise();
290 } 290 }
291 291
292 void CustomElementRegistry::collectCandidates( 292 void CustomElementRegistry::collectCandidates(
293 const CustomElementDescriptor& desc, 293 const CustomElementDescriptor& desc,
294 HeapVector<Member<Element>>* elements) { 294 HeapVector<Member<Element>>* elements) {
295 UpgradeCandidateMap::iterator it = m_upgradeCandidates->find(desc.name()); 295 UpgradeCandidateMap::iterator it = m_upgradeCandidates->find(desc.name());
296 if (it == m_upgradeCandidates->end()) 296 if (it == m_upgradeCandidates->end())
297 return; 297 return;
298 CustomElementUpgradeSorter sorter; 298 CustomElementUpgradeSorter sorter;
299 for (Element* element : *it.get()->value) { 299 for (Element* element : *it.get()->value) {
300 if (!element || !desc.matches(*element)) 300 if (!element || !desc.matches(*element))
301 continue; 301 continue;
302 sorter.add(element); 302 sorter.add(element);
303 } 303 }
304 304
305 m_upgradeCandidates->remove(it); 305 m_upgradeCandidates->remove(it);
306 306
307 Document* document = m_owner->document(); 307 Document* document = m_owner->document();
308 if (!document) 308 if (!document)
309 return; 309 return;
310 310
311 sorter.sorted(elements, document); 311 sorter.sorted(elements, document);
312 } 312 }
313 313
314 } // namespace blink 314 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698