Chromium Code Reviews| Index: Source/core/paint/DeprecatedPaintLayer.cpp |
| diff --git a/Source/core/paint/DeprecatedPaintLayer.cpp b/Source/core/paint/DeprecatedPaintLayer.cpp |
| index e959ac12c71119335e8658c459a34e4855746927..ed879ff8d76b99b1e901582a5e70746d6c722a5c 100644 |
| --- a/Source/core/paint/DeprecatedPaintLayer.cpp |
| +++ b/Source/core/paint/DeprecatedPaintLayer.cpp |
| @@ -1503,7 +1503,20 @@ bool DeprecatedPaintLayer::hitTest(HitTestResult& result) |
| // should not use RequestType for it. Perhaps best for it to be done at a higher level. See |
| // http://crbug.com/505825 |
| LayoutPoint hitPoint = hitTestLocation.point(); |
| - if (!request.isChildFrameHitTest() && ((request.active() || request.release()) || (request.move() && hitTestArea.contains(hitPoint.x(), hitPoint.y()))) && isRootLayer()) { |
| + bool fallback = false; |
| + if (!request.isChildFrameHitTest()) { |
| + if (((request.active() || request.release()) || (request.move() && hitTestArea.contains(hitPoint.x(), hitPoint.y()))) && isRootLayer()) |
| + fallback = true; |
| + } else { |
| + // Falling back to iframe's root layer is more restrict: |
| + // 1) It can't be rect based test. Rect based test is list based hit-testing, which should search |
| + // all the elements overlapping the test rect. If we set iframe is hit due to fallback, main frame |
| + // will stop hit testing search, and the result list will be incomplete. |
|
Rick Byers
2015/08/17 15:18:29
So what does this mean for a tap that occurs entir
Yufeng Shen (Slow to review)
2015/08/18 16:05:21
ah, right, if the hit-rect (for tap) is totally wi
|
| + // 2) The hitPoint must be within the visible rect of the iframe. |
| + if (!hitTestLocation.isRectBasedTest() && (request.active() || request.release() || request.move()) && hitTestArea.contains(hitPoint.x(), hitPoint.y()) && isRootLayer()) |
|
Rick Byers
2015/08/17 15:18:29
Can you just avoid checking the hit test flags (re
Yufeng Shen (Slow to review)
2015/08/18 16:05:21
Done.
|
| + fallback = true; |
| + } |
|
Rick Byers
2015/08/17 15:18:29
I think you could more clearly separate the confus
Yufeng Shen (Slow to review)
2015/08/18 16:05:21
done.
Rick Byers
2015/08/19 19:23:19
I don't think part of the test is important, in fa
majidvp
2015/08/19 21:02:30
Actually, it is there for cases where the event is
majidvp
2015/08/20 16:29:35
I took a second look and I think Rick is correct a
|
| + if (fallback) { |
| layoutObject()->updateHitTestResult(result, toLayoutView(layoutObject())->flipForWritingMode(hitTestLocation.point())); |
| insideLayer = this; |