Bug 1493319 [wpt PR 13145] - Fix scrollIntoView(...) for SVG elements, a=testonly

Automatic update from web-platform-testsFix scrollIntoView(...) for SVG elements

AbsoluteBoundingBoxRectForScrollIntoView and associated helpers did not
compute the correct bounding box for SVG shapes (or anything but the SVG
root.)
Compute the bounding rect using the stroke bounding box.

Bug: 803440
Change-Id: If25ca98b686f17a0db699e569460cb4c276f06a0
Reviewed-on: https://chromium-review.googlesource.com/1238458
Reviewed-by: David Bokan <bokan@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#593306}

--

wpt-commits: b3ca0cee4b0772e615334e4155556ec254dab7b1
wpt-pr: 13145
This commit is contained in:
Fredrik Söderquist 2018-09-26 10:46:53 +00:00 committed by moz-wptsync-bot
parent 18f3004d9a
commit 39a1b6faab

View File

@ -0,0 +1,32 @@
<!DOCTYPE HTML>
<title>scrollIntoView on an SVG shape element</title>
<link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<svg width="8000" height="8000">
<rect width="100" height="100" fill="blue" y="1950" id="geometry"/>
<rect width="100" height="100" fill="blue" transform="translate(0, 2950)"
id="translated"/>
<rect width="100" height="100" fill="blue" transform="rotate(45, 50, 3950)"
id="rotated"/>
</svg>
<script>
add_completion_callback(() => {
document.querySelector("svg").remove();
window.scrollTo(0, 0);
});
for (let id of [ "geometry", "translated", "rotated" ]) {
test(t => {
let target = document.getElementById(id);
window.scrollTo(0, 0);
let bounds = target.getBoundingClientRect();
let expected = { x: bounds.left, y: bounds.top };
assert_not_equals(window.scrollX, expected.x, "x before scroll");
assert_not_equals(window.scrollY, expected.y, "y before scroll");
target.scrollIntoView({ block: "start", inline: "start" });
assert_approx_equals(window.scrollX, expected.x, 1, "x after scroll");
assert_approx_equals(window.scrollY, expected.y, 1, "y after scroll");
}, document.title + ", " + id);
}
</script>