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

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

Issue 19900002: Use the two Custom Elements node bits to explicitly represent four states. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Play nice with MSVC. Created 7 years, 5 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
« no previous file with comments | « Source/bindings/v8/V8CustomElementLifecycleCallbacks.cpp ('k') | Source/core/dom/Element.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/dom/CustomElementRegistrationContext.cpp
diff --git a/Source/core/dom/CustomElementRegistrationContext.cpp b/Source/core/dom/CustomElementRegistrationContext.cpp
index a45407570b63efbc30634a8fc8331b05ad3d003e..4ed6abf6a964051b8bb90eb073f30e66906b93d4 100644
--- a/Source/core/dom/CustomElementRegistrationContext.cpp
+++ b/Source/core/dom/CustomElementRegistrationContext.cpp
@@ -145,7 +145,6 @@ PassRefPtr<Element> ActiveRegistrationContext::createCustomTagElement(Document*
return Element::create(tagName, document);
}
- element->setIsCustomElement();
resolve(element.get());
return element.release();
}
@@ -157,8 +156,6 @@ void ActiveRegistrationContext::didGiveTypeExtension(Element* element)
void ActiveRegistrationContext::resolve(Element* element)
{
- ASSERT(element->isCustomElement());
- ASSERT(!element->isUpgradedCustomElement());
const CustomElementDescriptor& descriptor = describe(element);
CustomElementDefinition* definition = m_registry.find(descriptor);
if (definition)
@@ -169,16 +166,19 @@ void ActiveRegistrationContext::resolve(Element* element)
void ActiveRegistrationContext::didResolveElement(CustomElementDefinition* definition, Element* element)
{
+ element->setCustomElementState(Element::Defined);
CustomElementCallbackScheduler::scheduleCreatedCallback(definition->callbacks(), element);
}
void ActiveRegistrationContext::didCreateUnresolvedElement(const CustomElementDescriptor& descriptor, Element* element)
{
+ element->setCustomElementState(Element::UpgradeCandidate);
m_candidates.add(descriptor, element);
}
CustomElementDefinition* ActiveRegistrationContext::definitionFor(Element* element) const
{
+ ASSERT(element->customElementState() == Element::Defined || element->customElementState() == Element::Upgraded);
ASSERT(element->document()->registrationContext() == this);
const CustomElementDescriptor& descriptor = describe(element);
return m_registry.find(descriptor);
@@ -186,21 +186,21 @@ CustomElementDefinition* ActiveRegistrationContext::definitionFor(Element* eleme
void ActiveRegistrationContext::customElementAttributeDidChange(Element* element, const AtomicString& name, const AtomicString& oldValue, const AtomicString& newValue)
{
- ASSERT(element->isUpgradedCustomElement());
+ ASSERT(element->customElementState() == Element::Upgraded);
CustomElementDefinition* definition = definitionFor(element);
CustomElementCallbackScheduler::scheduleAttributeChangedCallback(definition->callbacks(), element, name, oldValue, newValue);
}
void ActiveRegistrationContext::customElementDidEnterDocument(Element* element)
{
- ASSERT(element->isUpgradedCustomElement());
+ ASSERT(element->customElementState() == Element::Upgraded);
CustomElementDefinition* definition = definitionFor(element);
CustomElementCallbackScheduler::scheduleEnteredDocumentCallback(definition->callbacks(), element);
}
void ActiveRegistrationContext::customElementDidLeaveDocument(Element* element)
{
- ASSERT(element->isUpgradedCustomElement());
+ ASSERT(element->customElementState() == Element::Upgraded);
CustomElementDefinition* definition = definitionFor(element);
CustomElementCallbackScheduler::scheduleLeftDocumentCallback(definition->callbacks(), element);
}
@@ -246,8 +246,6 @@ bool CustomElementRegistrationContext::isCustomTagName(const AtomicString& local
CustomElementDescriptor CustomElementRegistrationContext::describe(Element* element)
{
- ASSERT(element->isCustomElement());
-
// If an element has a custom tag name it takes precedence over
// the "is" attribute (if any).
const AtomicString& type = isCustomTagName(element->localName())
@@ -275,7 +273,6 @@ void CustomElementRegistrationContext::setTypeExtension(Element* element, const
TypeExtensionMap::AddResult result = typeExtensionMap()->add(element, type);
ASSERT(result.isNewEntry); // Type extensions should only be set once
- element->setIsCustomElement();
element->document()->registrationContext()->didGiveTypeExtension(element);
}
« no previous file with comments | « Source/bindings/v8/V8CustomElementLifecycleCallbacks.cpp ('k') | Source/core/dom/Element.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698