Chromium Code Reviews| Index: Source/core/dom/custom/CustomElementRegistrationContext.cpp |
| diff --git a/Source/core/dom/custom/CustomElementRegistrationContext.cpp b/Source/core/dom/custom/CustomElementRegistrationContext.cpp |
| index e248ab7cbf1b659f1b0a03dae0ca0b173c0e5057..ab4f087a789191656176e1366be8ba2442389e9e 100644 |
| --- a/Source/core/dom/custom/CustomElementRegistrationContext.cpp |
| +++ b/Source/core/dom/custom/CustomElementRegistrationContext.cpp |
| @@ -55,7 +55,7 @@ void CustomElementRegistrationContext::registerElement(Document* document, Custo |
| // Upgrade elements that were waiting for this definition. |
| const CustomElementUpgradeCandidateMap::ElementSet& upgradeCandidates = m_candidates.takeUpgradeCandidatesFor(definition->descriptor()); |
| for (CustomElementUpgradeCandidateMap::ElementSet::const_iterator it = upgradeCandidates.begin(); it != upgradeCandidates.end(); ++it) |
| - didResolveElement(definition, *it); |
| + CustomElement::define(*it, definition); |
| } |
| PassRefPtr<Element> CustomElementRegistrationContext::createCustomTagElement(Document& document, const QualifiedName& tagName) |
| @@ -74,16 +74,16 @@ PassRefPtr<Element> CustomElementRegistrationContext::createCustomTagElement(Doc |
| } |
| element->setCustomElementState(Element::WaitingForUpgrade); |
| - resolve(element.get(), nullAtom); |
| + scheduleResolution(element.get(), nullAtom); |
| return element.release(); |
| } |
| void CustomElementRegistrationContext::didGiveTypeExtension(Element* element, const AtomicString& type) |
| { |
| - resolve(element, type); |
| + scheduleResolution(element, type); |
| } |
| -void CustomElementRegistrationContext::resolve(Element* element, const AtomicString& typeExtension) |
| +void CustomElementRegistrationContext::scheduleResolution(Element* element, const AtomicString& typeExtension) |
| { |
| // If an element has a custom tag name it takes precedence over |
| // the "is" attribute (if any). |
| @@ -93,22 +93,19 @@ void CustomElementRegistrationContext::resolve(Element* element, const AtomicStr |
| ASSERT(!type.isNull()); |
| CustomElementDescriptor descriptor(type, element->namespaceURI(), element->localName()); |
| - CustomElementDefinition* definition = m_registry.find(descriptor); |
| - if (definition) |
| - didResolveElement(definition, element); |
| - else |
| - didCreateUnresolvedElement(descriptor, element); |
| -} |
| - |
| -void CustomElementRegistrationContext::didResolveElement(CustomElementDefinition* definition, Element* element) |
| -{ |
| - CustomElement::define(element, definition); |
| + ASSERT(element->customElementState() == Element::WaitingForUpgrade); |
| + CustomElementCallbackScheduler::scheduleResolutionStep(descriptor, element); |
| } |
| -void CustomElementRegistrationContext::didCreateUnresolvedElement(const CustomElementDescriptor& descriptor, Element* element) |
| +void CustomElementRegistrationContext::resolve(Element* element, const CustomElementDescriptor& descriptor) |
| { |
| - ASSERT(element->customElementState() == Element::WaitingForUpgrade); |
| - m_candidates.add(descriptor, element); |
| + CustomElementDefinition* definition = m_registry.find(descriptor); |
| + if (definition) { |
| + CustomElement::define(element, definition); |
|
dominicc (has gone to gerrit)
2013/12/18 08:46:41
I suppose the semantics of this works because the
|
| + } else { |
| + ASSERT(element->customElementState() == Element::WaitingForUpgrade); |
| + m_candidates.add(descriptor, element); |
| + } |
| } |
| PassRefPtr<CustomElementRegistrationContext> CustomElementRegistrationContext::create() |