mirror of
https://github.com/HeyPuter/firefox.git
synced 2026-11-13 20:14:57 -10:00
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 <[email protected]> Commit-Queue: Koji Ishii <[email protected]> Cr-Commit-Position: refs/heads/master@{#779715} -- wpt-commits: 14b3e9ca5a0550410b17da2c07df74151c8ceced wpt-pr: 24231
61 lines
1.4 KiB
HTML
61 lines
1.4 KiB
HTML
<!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:[email protected]">
|
|
<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>
|