Bug 1646655 [wpt PR 24231] - [FragmentItem] Fix hit-testing floats in legacy root, a=testonly
authorKoji Ishii <kojii@chromium.org>
Mon, 22 Jun 2020 10:43:51 +0000
changeset 536841 8599abc6d8058dd072e9db65ca36957629f3f7da
parent 536840 eb0faf32f7577ceb4ddd1f5dfa21d69c3db3ee59
child 536842 a0aa8a4840605fbc403ca6c97469e82faf977170
push id37533
push userdluca@mozilla.com
push dateTue, 23 Jun 2020 21:38:40 +0000
treeherdermozilla-central@d48aa0f0aa0b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerstestonly
bugs1646655, 24231, 1096259, 2249249, 779715
milestone79.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1646655 [wpt PR 24231] - [FragmentItem] Fix hit-testing floats in legacy root, a=testonly Automatic update from web-platform-tests [FragmentItem] Fix hit-testing floats in legacy root This patch fixes hit-testing floating objects in a legacy root. With |NGPaintFragment|, floats are in children, and that regular traversal can cover this case. With |FragmentItem|, floats are either in |NGFragmentItems| if it has an inline formatting context, or in children otherwise. This difference requires additional branch to the legacy fallback when hit-testing floating objects. Bug: 1096259 Change-Id: I8565eb663781318233c21482270804cf254e0aec Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2249249 Reviewed-by: Yoshifumi Inoue <yosin@chromium.org> Commit-Queue: Koji Ishii <kojii@chromium.org> Cr-Commit-Position: refs/heads/master@{#779715} -- wpt-commits: 14b3e9ca5a0550410b17da2c07df74151c8ceced wpt-pr: 24231
testing/web-platform/tests/css/cssom-view/elementFromPoint-float-in-table.html
new file mode 100644
--- /dev/null
+++ b/testing/web-platform/tests/css/cssom-view/elementFromPoint-float-in-table.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<link rel="help" href="http://www.w3.org/TR/CSS21/visuren.html#floats" />
+<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-document-elementfrompoint" />
+<link rel="author" title="Koji Ishii" href="mailto:kojii@chromium.org">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<style>
+.outer {
+  width: 100px;
+  height: 100px;
+  background: green;
+}
+.inner {
+  float: left;
+  width: 50px;
+  height: 50px;
+  background: blue;
+}
+</style>
+<body>
+<div id="log"></div>
+
+<div class="outer" onclick="clicked('outer')">
+  <div id="float-in-div" class="inner" onclick="clicked('inner')">
+  </div>
+</div>
+
+<table>
+  <tr>
+    <td>
+      <div class="outer" onclick="clicked('outer')">
+        <div id='float-in-table' class="inner" onclick="clicked('inner')">
+        </div>
+      </div>
+    </td>
+  </tr>
+</table>
+
+<pre id="output"></pre>
+<script>
+function clicked(p) {
+  output.textContent += 'clicked ' + p + '\n';
+}
+
+function testElementFromPoint(element) {
+  let bounds = element.getBoundingClientRect();
+  let result = document.elementFromPoint(bounds.x + 1, bounds.y + 1);
+  assert_equals(result, element);
+}
+
+let targets = [
+  'float-in-div',
+  'float-in-table',
+];
+for (let target of targets) {
+  let element = document.getElementById(target);
+  test(() => { testElementFromPoint(element); }, target);
+}
+</script>
+</body>