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) |