| <!DOCTYPE HTML> | |
| <title>scrollIntoView on an SVG shape element</title> | |
| <link rel="help" href="https://drafts.csswg.org/cssom-view/#dom-element-scrollintoview"> | |
| <meta name="viewport" content="user-scalable=no"> | |
| <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> |