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() |