summaryrefslogtreecommitdiffstats
path: root/cc/surfaces
diff options
context:
space:
mode:
authorkenrb <kenrb@chromium.org>2016-03-01 10:53:24 -0800
committerCommit bot <commit-bot@chromium.org>2016-03-01 18:55:41 +0000
commit9d8b8320a54fc65539d99be0e2a489e2e2b1b7bc (patch)
tree52a3c40c73b9c2fcb91cf4dca8940520b5faba49 /cc/surfaces
parent64484f863976b3cffc84201e8a396d1fa018cba1 (diff)
downloadchromium_src-9d8b8320a54fc65539d99be0e2a489e2e2b1b7bc.zip
chromium_src-9d8b8320a54fc65539d99be0e2a489e2e2b1b7bc.tar.gz
chromium_src-9d8b8320a54fc65539d99be0e2a489e2e2b1b7bc.tar.bz2
Make browser hit testing return correct SurfaceId with nested Surfaces
A regression caused SurfaceHittest::GetTargetSurfaceAtPoint() to return the incorrect SurfaceId when the correct Surface was nested more than one layer from the root Surface. This fixes the regression. BUG=589572 CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel Review URL: https://codereview.chromium.org/1743303002 Cr-Commit-Position: refs/heads/master@{#378495}
Diffstat (limited to 'cc/surfaces')
-rw-r--r--cc/surfaces/surface_hittest.cc10
1 files changed, 7 insertions, 3 deletions
diff --git a/cc/surfaces/surface_hittest.cc b/cc/surfaces/surface_hittest.cc
index 6db66e2..b9be19e 100644
--- a/cc/surfaces/surface_hittest.cc
+++ b/cc/surfaces/surface_hittest.cc
@@ -104,9 +104,13 @@ bool SurfaceHittest::GetTargetSurfaceAtPointInternal(
gfx::Transform transform_to_child_space;
if (GetTargetSurfaceAtPointInternal(
surface_quad->surface_id, RenderPassId(), point_in_quad_space,
- referenced_passes, out_surface_id, &transform_to_child_space) ||
- (delegate_ &&
- delegate_->AcceptHitTarget(surface_quad, point_in_quad_space))) {
+ referenced_passes, out_surface_id, &transform_to_child_space)) {
+ *out_transform = transform_to_child_space * target_to_quad_transform *
+ transform_from_root_target;
+ return true;
+ } else if (delegate_ &&
+ delegate_->AcceptHitTarget(surface_quad,
+ point_in_quad_space)) {
*out_surface_id = surface_quad->surface_id;
*out_transform = transform_to_child_space * target_to_quad_transform *
transform_from_root_target;