Don't round hit test location in HitTestLocation::RectForPoint
HitTestLocation rounds the hit test location to the closest 1x1 rect
for no good reason, causing some confusing hit test results. Hence,
this patch removes such rounding.
Bug: 974314
Change-Id: I48266a7ec8bffbeb746085c5d8835d3f300dd4b1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1661297
Reviewed-by: Emil A Eklund <eae@chromium.org>
Reviewed-by: Philip Rogers <pdr@chromium.org>
Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#669579}
diff --git a/css/cssom-view/elementFromPoint-subpixel.html b/css/cssom-view/elementFromPoint-subpixel.html
new file mode 100644
index 0000000..ff67aa2
--- /dev/null
+++ b/css/cssom-view/elementFromPoint-subpixel.html
@@ -0,0 +1,59 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>CSSOM View - extensions to the Document interface</title>
+ <link rel="author" title="Xiaocheng Hu" href="mailto:xiaochengh@chromium.org">
+ <link rel="help" href="http://www.w3.org/TR/cssom-view/#extensions-to-the-document-interface">
+ <script src="/resources/testharness.js"></script>
+ <script src="/resources/testharnessreport.js"></script>
+ <style>
+ .container {
+ display: flex;
+ width: 500px;
+ height: 100px;
+ }
+
+ .map {
+ flex: 1 1 auto;
+ position: relative;
+ }
+
+ .box {
+ flex: 0 0 auto;
+ }
+
+ .child {
+ width: 183.66px;
+ }
+ </style>
+</head>
+<body>
+ <div class="container">
+ <div class="map"></div>
+ <div class="box" id="box">
+ <div class="child"></div>
+ </div>
+ </div>
+
+ <script>
+ const box = document.getElementById('box');
+ const rect = box.getBoundingClientRect();
+
+ test(() => {
+ assert_equals(document.elementFromPoint(rect.x, rect.y), box);
+ }, 'Hit test top left corner of box');
+
+ test(() => {
+ assert_equals(document.elementFromPoint(rect.x + rect.width - 1, rect.y), box);
+ }, 'Hit test top right corner of box');
+
+ test(() => {
+ assert_equals(document.elementFromPoint(rect.x, rect.y + rect.height - 1), box);
+ }, 'Hit test bottom left corner of box');
+
+ test(() => {
+ assert_equals(document.elementFromPoint(rect.x + rect.width - 1, rect.y + rect.height - 1), box);
+ }, 'Hit test lower left corner of box');
+ </script>
+</body>
+</html>