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

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

Issue 23009004: Process Custom Elements in post-order. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Patch for landing. Created 7 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/dom/CustomElementRegistrationContext.cpp
diff --git a/Source/core/dom/CustomElementRegistrationContext.cpp b/Source/core/dom/CustomElementRegistrationContext.cpp
index 3e0bc252387f4f434f9617f49657ea2601548b04..8ffd6c7ddde1566a4f4493e1caf1e2650644b990 100644
--- a/Source/core/dom/CustomElementRegistrationContext.cpp
+++ b/Source/core/dom/CustomElementRegistrationContext.cpp
@@ -58,7 +58,7 @@ void CustomElementRegistrationContext::registerElement(Document* document, Custo
didResolveElement(definition, *it);
}
-PassRefPtr<Element> CustomElementRegistrationContext::createCustomTagElement(Document* document, const QualifiedName& tagName)
+PassRefPtr<Element> CustomElementRegistrationContext::createCustomTagElement(Document* document, const QualifiedName& tagName, CreationMode mode)
{
ASSERT(CustomElement::isCustomTagName(tagName.localName()));
@@ -76,7 +76,7 @@ PassRefPtr<Element> CustomElementRegistrationContext::createCustomTagElement(Doc
return Element::create(tagName, document);
}
- element->setCustomElementState(Element::WaitingForUpgrade);
+ element->setCustomElementState(mode == CreatedByParser ? Element::WaitingForParser : Element::WaitingForUpgrade);
resolve(element.get(), nullAtom);
return element.release();
}
@@ -106,30 +106,14 @@ void CustomElementRegistrationContext::resolve(Element* element, const AtomicStr
void CustomElementRegistrationContext::didResolveElement(CustomElementDefinition* definition, Element* element)
{
CustomElement::define(element, definition);
-
- switch (element->customElementState()) {
- case Element::NotCustomElement:
- case Element::Upgraded:
- ASSERT_NOT_REACHED();
- break;
-
- case Element::WaitingForUpgrade:
- CustomElementCallbackScheduler::scheduleCreatedCallback(definition->callbacks(), element);
- break;
- }
}
void CustomElementRegistrationContext::didCreateUnresolvedElement(const CustomElementDescriptor& descriptor, Element* element)
{
- ASSERT(element->customElementState() == Element::WaitingForUpgrade);
+ ASSERT(element->customElementState() == Element::WaitingForParser || element->customElementState() == Element::WaitingForUpgrade);
m_candidates.add(descriptor, element);
}
-void CustomElementRegistrationContext::customElementWasDestroyed(Element* element)
-{
- m_candidates.remove(element);
-}
-
PassRefPtr<CustomElementRegistrationContext> CustomElementRegistrationContext::create()
{
return adoptRef(new CustomElementRegistrationContext());
@@ -143,7 +127,7 @@ void CustomElementRegistrationContext::setIsAttributeAndTypeExtension(Element* e
setTypeExtension(element, type);
}
-void CustomElementRegistrationContext::setTypeExtension(Element* element, const AtomicString& type)
+void CustomElementRegistrationContext::setTypeExtension(Element* element, const AtomicString& type, CreationMode mode)
{
if (!element->isHTMLElement() && !element->isSVGElement())
return;
@@ -160,7 +144,7 @@ void CustomElementRegistrationContext::setTypeExtension(Element* element, const
// Custom tags take precedence over type extensions
ASSERT(!CustomElement::isCustomTagName(element->localName()));
- element->setCustomElementState(Element::WaitingForUpgrade);
+ element->setCustomElementState(mode == CreatedByParser ? Element::WaitingForParser : Element::WaitingForUpgrade);
if (CustomElementRegistrationContext* context = element->document()->registrationContext())
context->didGiveTypeExtension(element, type);
« no previous file with comments | « Source/core/dom/CustomElementRegistrationContext.h ('k') | Source/core/dom/CustomElementUpgradeCandidateMap.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698