| Index: third_party/WebKit/Source/core/dom/Node.cpp
|
| diff --git a/third_party/WebKit/Source/core/dom/Node.cpp b/third_party/WebKit/Source/core/dom/Node.cpp
|
| index 6e181387c56f729a8792e4dcd0d6d86f2e011fc2..8760f77e3cf3699b5ef4b37b46e8d8871b0424e5 100644
|
| --- a/third_party/WebKit/Source/core/dom/Node.cpp
|
| +++ b/third_party/WebKit/Source/core/dom/Node.cpp
|
| @@ -56,6 +56,7 @@
|
| #include "core/dom/Text.h"
|
| #include "core/dom/TreeScopeAdopter.h"
|
| #include "core/dom/UserActionElementSet.h"
|
| +#include "core/dom/custom/CustomElement.h"
|
| #include "core/dom/shadow/ElementShadow.h"
|
| #include "core/dom/shadow/FlatTreeTraversal.h"
|
| #include "core/dom/shadow/InsertionPoint.h"
|
| @@ -2220,24 +2221,6 @@ bool Node::isUserActionElementFocused() const
|
| return document().userActionElements().isFocused(this);
|
| }
|
|
|
| -std::ostream& operator<<(std::ostream& os, CustomElementState state)
|
| -{
|
| - switch (state) {
|
| - case CustomElementState::Uncustomized: return os << "Uncustomized";
|
| - case CustomElementState::Undefined: return os << "Undefined";
|
| - case CustomElementState::Custom: return os << "Custom";
|
| - default: NOTREACHED();
|
| - }
|
| - return os;
|
| -}
|
| -
|
| -CustomElementState Node::getCustomElementState() const
|
| -{
|
| - return !isCustomElement()
|
| - ? CustomElementState::Uncustomized
|
| - : (getFlag(CustomElementCustomFlag) ? CustomElementState::Custom : CustomElementState::Undefined);
|
| -}
|
| -
|
| void Node::setCustomElementState(CustomElementState newState)
|
| {
|
| CustomElementState oldState = getCustomElementState();
|
| @@ -2254,25 +2237,24 @@ void Node::setCustomElementState(CustomElementState newState)
|
| case CustomElementState::Custom:
|
| DCHECK_EQ(CustomElementState::Undefined, oldState);
|
| break;
|
| +
|
| + case CustomElementState::Failed:
|
| + DCHECK_NE(CustomElementState::Failed, oldState);
|
| + break;
|
| }
|
|
|
| DCHECK(isHTMLElement());
|
| DCHECK_NE(V0Upgraded, getV0CustomElementState());
|
| -#if DCHECK_IS_ON()
|
| - bool wasDefined = toElement(this)->isDefined();
|
| -#endif
|
|
|
| - setFlag(CustomElementFlag);
|
| - if (newState == CustomElementState::Custom)
|
| - setFlag(CustomElementCustomFlag);
|
| + Element* element = toElement(this);
|
| + bool wasDefined = element->isDefined();
|
| +
|
| + m_nodeFlags = (m_nodeFlags & ~CustomElementStateMask)
|
| + | static_cast<NodeFlags>(newState);
|
| DCHECK(newState == getCustomElementState());
|
|
|
| - // When the state goes from Uncustomized to Undefined, and then to Custom,
|
| - // isDefined is always flipped.
|
| -#if DCHECK_IS_ON()
|
| - DCHECK_NE(wasDefined, toElement(this)->isDefined());
|
| -#endif
|
| - toElement(this)->pseudoStateChanged(CSSSelector::PseudoDefined);
|
| + if (element->isDefined() != wasDefined)
|
| + element->pseudoStateChanged(CSSSelector::PseudoDefined);
|
| }
|
|
|
| void Node::setV0CustomElementState(V0CustomElementState newState)
|
|
|