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..b68f1533204b1aa25abf9b0091c4e9dd824ec782 100644 |
--- a/Source/core/dom/custom/CustomElementRegistrationContext.cpp |
+++ b/Source/core/dom/custom/CustomElementRegistrationContext.cpp |
@@ -74,16 +74,16 @@ PassRefPtr<Element> CustomElementRegistrationContext::createCustomTagElement(Doc |
} |
element->setCustomElementState(Element::WaitingForUpgrade); |
- resolve(element.get(), nullAtom); |
+ resolveNewElement(element.get(), nullAtom); |
return element.release(); |
} |
void CustomElementRegistrationContext::didGiveTypeExtension(Element* element, const AtomicString& type) |
{ |
- resolve(element, type); |
+ resolveNewElement(element, type); |
} |
-void CustomElementRegistrationContext::resolve(Element* element, const AtomicString& typeExtension) |
+void CustomElementRegistrationContext::resolveNewElement(Element* element, const AtomicString& typeExtension) |
{ |
// If an element has a custom tag name it takes precedence over |
// the "is" attribute (if any). |
@@ -100,6 +100,15 @@ void CustomElementRegistrationContext::resolve(Element* element, const AtomicStr |
didCreateUnresolvedElement(descriptor, element); |
} |
+void CustomElementRegistrationContext::resolvePoppedElement(Element* element, const CustomElementDescriptor& descriptor) |
+{ |
+ CustomElementDefinition* definition = m_registry.find(descriptor); |
+ if (definition) |
+ didResolveElement(definition, element); |
+ else |
+ didFailResolution(descriptor, element); |
+} |
+ |
void CustomElementRegistrationContext::didResolveElement(CustomElementDefinition* definition, Element* element) |
{ |
CustomElement::define(element, definition); |
@@ -108,6 +117,12 @@ void CustomElementRegistrationContext::didResolveElement(CustomElementDefinition |
void CustomElementRegistrationContext::didCreateUnresolvedElement(const CustomElementDescriptor& descriptor, Element* element) |
{ |
ASSERT(element->customElementState() == Element::WaitingForUpgrade); |
+ CustomElementCallbackScheduler::scheduleResolutionCallback(descriptor, element); |
+} |
+ |
+void CustomElementRegistrationContext::didFailResolution(const CustomElementDescriptor& descriptor, Element* element) |
+{ |
+ ASSERT(element->customElementState() == Element::WaitingForUpgrade); |
m_candidates.add(descriptor, element); |
} |