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

Unified Diff: Source/core/dom/custom/CustomElementRegistrationContext.cpp

Issue 106903007: Let unresolved custom element go through CustomElementCallbackQueue. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Updated Created 7 years 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 side-by-side diff with in-line comments
Download patch
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);
+ } else {
+ ASSERT(element->customElementState() == Element::WaitingForUpgrade);
+ m_candidates.add(descriptor, element);
+ }
}
PassRefPtr<CustomElementRegistrationContext> CustomElementRegistrationContext::create()

Powered by Google App Engine
This is Rietveld 408576698