Index: Source/core/dom/Node.cpp |
diff --git a/Source/core/dom/Node.cpp b/Source/core/dom/Node.cpp |
index 8860aeedebf7003f73e94578951e068bc0b95e47..8f63f06b799b44aefdb1a86ebe7e42968e260083 100644 |
--- a/Source/core/dom/Node.cpp |
+++ b/Source/core/dom/Node.cpp |
@@ -2681,17 +2681,34 @@ bool Node::isUserActionElementFocused() const |
return document()->userActionElements().isFocused(this); |
} |
-void Node::setIsCustomElement() |
+void Node::setCustomElementState(CustomElementState newState) |
{ |
+ CustomElementState oldState = customElementState(); |
+ |
+ switch (newState) { |
+ case NotCustomElement: |
+ ASSERT_NOT_REACHED(); // Everything starts in this state |
+ return; |
+ |
+ case UpgradeCandidate: |
+ ASSERT(NotCustomElement == oldState); |
+ break; |
+ |
+ case Defined: |
+ ASSERT(UpgradeCandidate == oldState || NotCustomElement == oldState); |
+ break; |
+ |
+ case Upgraded: |
+ ASSERT(Defined == oldState); |
+ break; |
+ } |
+ |
ASSERT(isHTMLElement() || isSVGElement()); |
- setFlag(IsCustomElement); |
-} |
+ setFlag(newState & 1, CustomElementIsUpgradeCandidateOrUpgraded); |
+ setFlag(newState & 2, CustomElementHasDefinitionOrIsUpgraded); |
-void Node::setIsUpgradedCustomElement() |
-{ |
- ASSERT(isCustomElement()); |
- setFlag(IsUpgradedCustomElement); |
- setNeedsStyleRecalc(); // :unresolved has changed |
+ if (oldState == NotCustomElement || newState == Upgraded) |
+ setNeedsStyleRecalc(); // :unresolved has changed |
} |
} // namespace WebCore |