Hit testing should use ancestorInThisScope to get the non-shadow ancestor
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Mar 2013 01:08:34 +0000 (01:08 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Mar 2013 01:08:34 +0000 (01:08 +0000)
https://bugs.webkit.org/show_bug.cgi?id=112068

Patch by Christian Biesinger <cbiesinger@chromium.org> on 2013-03-11
Reviewed by Dimitri Glazkov.

Source/WebCore:

Tests: media/nodesFromRect-shadowContent.html

* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::setToNonShadowAncestor):
(WebCore::HitTestResult::addNodeToRectBasedTestResult):
Use ancestorInThisScope which is not deprecated and which produces
correct results for nested shadow trees (e.g. in case of <video>,
which contains <input> elements for the controls, which themselves
have shadow trees)

LayoutTests:

* media/nodesFromRect-shadowContent.html: Extend the hit testing rect
to guarantee reaching a nested shadow tree.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@145448 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/media/nodesFromRect-shadowContent.html
Source/WebCore/ChangeLog
Source/WebCore/rendering/HitTestResult.cpp

index 8929f56..824fe26 100644 (file)
@@ -1,3 +1,13 @@
+2013-03-11  Christian Biesinger  <cbiesinger@chromium.org>
+
+        Hit testing should use ancestorInThisScope to get the non-shadow ancestor
+        https://bugs.webkit.org/show_bug.cgi?id=112068
+
+        Reviewed by Dimitri Glazkov.
+
+        * media/nodesFromRect-shadowContent.html: Extend the hit testing rect
+        to guarantee reaching a nested shadow tree.
+
 2013-03-11  James Robinson  <jamesr@chromium.org>
 
         More chromium layer tree rebaselines for r145422
index 646e058..fb250d6 100644 (file)
@@ -33,7 +33,7 @@
       var clickX = playCoords[0];
       var clickY = playCoords[1];
 
-      check(clickX, clickY, 10, 10, 20, 20, [e.v1, e.body]);
+      check(clickX, clickY, 100, 100, 20, 20, [e.v1, e.body]);
 
       var shadow =['-webkit-media-controls-timeline-container', '-webkit-media-controls-play-button', '-webkit-media-controls-panel', '-webkit-media-controls'];
       checkShadowContent(clickX, clickY, 10, 10, 20, 20, shadow);
index af874ae..d782164 100644 (file)
@@ -1,3 +1,20 @@
+2013-03-11  Christian Biesinger  <cbiesinger@chromium.org>
+
+        Hit testing should use ancestorInThisScope to get the non-shadow ancestor
+        https://bugs.webkit.org/show_bug.cgi?id=112068
+
+        Reviewed by Dimitri Glazkov.
+
+        Tests: media/nodesFromRect-shadowContent.html
+
+        * rendering/HitTestResult.cpp:
+        (WebCore::HitTestResult::setToNonShadowAncestor):
+        (WebCore::HitTestResult::addNodeToRectBasedTestResult):
+        Use ancestorInThisScope which is not deprecated and which produces
+        correct results for nested shadow trees (e.g. in case of <video>,
+        which contains <input> elements for the controls, which themselves
+        have shadow trees)
+
 2013-03-11  Abhishek Arya  <inferno@chromium.org>
 
         Replace static_cast with to* helper functions.
index f1a346e..a9228f0 100644 (file)
@@ -115,11 +115,11 @@ void HitTestResult::setToNonShadowAncestor()
 {
     Node* node = innerNode();
     if (node)
-        node = node->deprecatedShadowAncestorNode();
+        node = node->document()->ancestorInThisScope(node);
     setInnerNode(node);
     node = innerNonSharedNode();
     if (node)
-        node = node->deprecatedShadowAncestorNode();
+        node = node->document()->ancestorInThisScope(node);
     setInnerNonSharedNode(node);
 }
 
@@ -557,7 +557,7 @@ bool HitTestResult::addNodeToRectBasedTestResult(Node* node, const HitTestReques
         return true;
 
     if (!request.allowsShadowContent())
-        node = node->deprecatedShadowAncestorNode();
+        node = node->document()->ancestorInThisScope(node);
 
     mutableRectBasedTestResult().add(node);
 
@@ -577,7 +577,7 @@ bool HitTestResult::addNodeToRectBasedTestResult(Node* node, const HitTestReques
         return true;
 
     if (!request.allowsShadowContent())
-        node = node->deprecatedShadowAncestorNode();
+        node = node->document()->ancestorInThisScope(node);
 
     mutableRectBasedTestResult().add(node);