Index: third_party/WebKit/Source/core/layout/HitTestResult.cpp |
diff --git a/third_party/WebKit/Source/core/layout/HitTestResult.cpp b/third_party/WebKit/Source/core/layout/HitTestResult.cpp |
index 54e7376ca94af767bf856b9dea0d2603b548c9f7..f3175535c5251fb743debb3cef5168c9c2f06d9e 100644 |
--- a/third_party/WebKit/Source/core/layout/HitTestResult.cpp |
+++ b/third_party/WebKit/Source/core/layout/HitTestResult.cpp |
@@ -169,7 +169,7 @@ LayoutObject* HitTestResult::layoutObject() const { |
return m_innerNode ? m_innerNode->layoutObject() : 0; |
} |
-void HitTestResult::setToShadowHostIfInUserAgentShadowRoot() { |
+void HitTestResult::setToShadowHostIfInRestrictedShadowRoot() { |
Node* node = innerNode(); |
if (!node) |
return; |
@@ -177,10 +177,14 @@ void HitTestResult::setToShadowHostIfInUserAgentShadowRoot() { |
ShadowRoot* containingShadowRoot = node->containingShadowRoot(); |
Element* shadowHost = nullptr; |
+ // Consider a closed shadow tree of SVG's <use> element as a special |
+ // case so that a toolip title in the shadow tree works. |
while (containingShadowRoot && |
- containingShadowRoot->type() == ShadowRootType::UserAgent) { |
+ (containingShadowRoot->type() == ShadowRootType::UserAgent || |
+ isSVGUseElement(containingShadowRoot->host()))) { |
shadowHost = &containingShadowRoot->host(); |
containingShadowRoot = shadowHost->containingShadowRoot(); |
+ setInnerNode(node->ownerShadowHost()); |
} |
if (shadowHost) |