Chromium Code Reviews| Index: Source/core/dom/Document.cpp |
| diff --git a/Source/core/dom/Document.cpp b/Source/core/dom/Document.cpp |
| index aa963040e045666856a984ffbd983b151c2749d9..cfe2c0e8690ddca91fd8a623338707eb25a5fefd 100644 |
| --- a/Source/core/dom/Document.cpp |
| +++ b/Source/core/dom/Document.cpp |
| @@ -89,6 +89,7 @@ |
| #include "core/dom/NodeFilter.h" |
| #include "core/dom/NodeIterator.h" |
| #include "core/dom/NodeRareData.h" |
| +#include "core/dom/NodeRenderingTraversal.h" |
| #include "core/dom/NodeTraversal.h" |
| #include "core/dom/NodeWithIndex.h" |
| #include "core/dom/PageTransitionEvent.h" |
| @@ -3121,24 +3122,33 @@ void Document::removeFocusedNodeOfSubtree(Node* node, bool amongChildrenOnly) |
| void Document::hoveredNodeDetached(Node* node) |
| { |
| - if (!m_hoverNode || (node != m_hoverNode && (!m_hoverNode->isTextNode() || node != m_hoverNode->parentNode()))) |
| + if (!m_hoverNode) |
| return; |
| - m_hoverNode = node->parentNode(); |
| + NodeRenderingTraversal::ParentDetails details; |
| + if (node != m_hoverNode && (!m_hoverNode->isTextNode() || node != NodeRenderingTraversal::parent(m_hoverNode.get(), &details))) |
| + return; |
| + |
| + m_hoverNode = NodeRenderingTraversal::parent(node, &details); |
| while (m_hoverNode && !m_hoverNode->renderer()) |
| - m_hoverNode = m_hoverNode->parentNode(); |
| + m_hoverNode = m_hoverNode->parentOrShadowHostNode(); |
|
hayato
2013/06/03 09:03:47
Shouldn't we use NodeRenderingTraversal::parent()
tasak
2013/06/03 11:18:25
Done.
|
| if (frame()) |
| frame()->eventHandler()->scheduleHoverStateUpdate(); |
| } |
| void Document::activeChainNodeDetached(Node* node) |
| { |
| - if (!m_activeElement || (node != m_activeElement && (!m_activeElement->isTextNode() || node != m_activeElement->parentNode()))) |
| + if (!m_activeElement) |
| + return; |
| + |
| + NodeRenderingTraversal::ParentDetails details; |
| + if (node != m_activeElement && (!m_activeElement->isTextNode() || node != NodeRenderingTraversal::parent(m_activeElement.get(), &details))) |
| return; |
| - m_activeElement = node->parentElement(); |
| + Node* parent = NodeRenderingTraversal::parent(node, &details); |
| + m_activeElement = parent && parent->isElementNode() ? toElement(parent) : 0; |
| while (m_activeElement && !m_activeElement->renderer()) |
| - m_activeElement = m_activeElement->parentElement(); |
| + m_activeElement = m_activeElement->parentOrShadowHostElement(); |
|
hayato
2013/06/03 09:03:47
Ditto.
Also looks like NodeRenderingTraversal sho
tasak
2013/06/03 11:18:25
Done.
|
| } |
| const Vector<AnnotatedRegionValue>& Document::annotatedRegions() const |