| Index: Source/core/dom/Node.cpp
|
| diff --git a/Source/core/dom/Node.cpp b/Source/core/dom/Node.cpp
|
| index 8860aeedebf7003f73e94578951e068bc0b95e47..7fc55340cdef08ddda89d6677c0fe795799510a8 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, CustomElementBit0);
|
| + setFlag(newState & 2, CustomElementBit1);
|
|
|
| -void Node::setIsUpgradedCustomElement()
|
| -{
|
| - ASSERT(isCustomElement());
|
| - setFlag(IsUpgradedCustomElement);
|
| - setNeedsStyleRecalc(); // :unresolved has changed
|
| + if (oldState == NotCustomElement || newState == Upgraded)
|
| + setNeedsStyleRecalc(); // :unresolved has changed
|
| }
|
|
|
| } // namespace WebCore
|
|
|