| <html xmlns="http://www.w3.org/1999/xhtml" xmlns:xlink="http://www.w3.org/1999/xlink"> |
| <head> |
| <style type="text/css"> |
| body { |
| margin:0px; |
| border:0px; |
| padding:0px; |
| } |
| text { |
| font: 12px Ahem; |
| } |
| #div2, #svg2 { |
| zoom:200%; |
| } |
| #div3, #svg3 { |
| zoom:50%; |
| } |
| </style> |
| </head> |
| <body> |
| |
| <div id="div1" style="width:100px;height:50px;background-color:gray;"></div> |
| <div id="div2" style="width:100px;height:50px;background-color:green;"></div> |
| <div id="div3" style="width:200px;height:100px;background-color:blue;"></div> |
| <div style="width:600px;height=100px;"> |
| <svg id="svg1" xmlns="http://www.w3.org/2000/svg" |
| width="150px" height="50px" viewBox="0 0 150 100" |
| preserveAspectRatio="none"> |
| <rect id="rect1" x="0" y="0" width="100px" height="100px" fill="gray" /> |
| <image id="image1" x="100px" y="0" width="50px" height="50px" xlink:href="../svg/W3C-SVG-1.1/resources/magnify.png" /> |
| <text id="text1" x="100px" y="75px">Test</text> |
| </svg><svg id="svg2" xmlns="http://www.w3.org/2000/svg" |
| width="150px" height="50px" viewBox="0 0 150 100" |
| preserveAspectRatio="none"> |
| <rect id="rect2" x="0" y="0" width="100px" height="100px" fill="green" /> |
| <image id="image2" x="100px" y="0" width="50px" height="50px" xlink:href="../svg/W3C-SVG-1.1/resources/magnify.png" /> |
| <text id="text2" x="100px" y="75px">Test</text> |
| </svg><svg id="svg3" xmlns="http://www.w3.org/2000/svg" |
| width="300px" height="100px" viewBox="0 0 150 100" |
| preserveAspectRatio="none"> |
| <rect id="rect3" x="0" y="0" width="100px" height="100px" fill="blue" /> |
| <image id="image3" x="100px" y="0" width="50px" height="50px" xlink:href="../svg/W3C-SVG-1.1/resources/magnify.png" /> |
| <text id="text3" x="100px" y="75px">Test</text> |
| </svg> |
| </div> |
| |
| <div id="description"></div> |
| <div id="console"></div> |
| |
| <script src="../resources/js-test-pre.js"></script> |
| <script> |
| |
| function msgDumpRenderTreeRequired() |
| { |
| if (!window.testRunner) |
| debug("The following tests may fail if not run in DumpRenderTree:"); |
| } |
| |
| description("This test checks getBoundingClientRect() on zoomed HTML and SVG elements"); |
| |
| debug("Gray rectangles: 100x50"); |
| debug("Green rectangles: 100x50, zoom=200%"); |
| debug("Blue rectangles: 200x100, zoom=50%"); |
| debug(""); |
| |
| debug("Checking HTML elements:"); |
| debug(""); |
| |
| var div1 = document.getElementById("div1").getBoundingClientRect(); |
| shouldBe('div1.left', '0'); |
| shouldBe('div1.top', '0'); |
| shouldBe('div1.width', '100'); |
| shouldBe('div1.height', '50'); |
| shouldBe('div1.right', '100'); |
| shouldBe('div1.bottom', '50'); |
| debug(""); |
| |
| var div2 = document.getElementById("div2").getBoundingClientRect(); |
| shouldBe('div2.left', '0'); |
| shouldBe('div2.top', '25'); |
| shouldBe('div2.width', '100'); |
| shouldBe('div2.height', '50'); |
| shouldBe('div2.right', '100'); |
| shouldBe('div2.bottom', '75'); |
| debug(""); |
| |
| var div3 = document.getElementById("div3").getBoundingClientRect(); |
| shouldBe('div3.left', '0'); |
| shouldBe('div3.top', '300'); |
| shouldBe('div3.width', '200'); |
| shouldBe('div3.height', '100'); |
| shouldBe('div3.right', '200'); |
| shouldBe('div3.bottom', '400'); |
| debug(""); |
| |
| debug("Checking SVG elements:"); |
| debug(""); |
| |
| var svg1 = document.getElementById("svg1").getBoundingClientRect(); |
| shouldBe('svg1.left', '0'); |
| shouldBe('svg1.top', '250'); |
| shouldBe('svg1.width', '150'); |
| shouldBe('svg1.height', '50'); |
| shouldBe('svg1.right', '150'); |
| shouldBe('svg1.bottom', '300'); |
| var rect1 = document.getElementById("rect1").getBoundingClientRect(); |
| shouldBe('rect1.left', '0'); |
| shouldBe('rect1.top', '250'); |
| shouldBe('rect1.width', '100'); |
| shouldBe('rect1.height', '50'); |
| shouldBe('rect1.right', '100'); |
| shouldBe('rect1.bottom', '300'); |
| var image1 = document.getElementById("image1").getBoundingClientRect(); |
| shouldBe('image1.left', '100'); |
| shouldBe('image1.top', '250'); |
| shouldBe('image1.width', '50'); |
| shouldBe('image1.height', '25'); |
| shouldBe('image1.right', '150'); |
| shouldBe('image1.bottom', '275'); |
| var text1 = document.getElementById("text1").getBoundingClientRect(); |
| shouldBe('text1.left', '100'); |
| msgDumpRenderTreeRequired(); |
| shouldBeCloseTo('text1.top', 282, 1); |
| shouldBeCloseTo('text1.width', 46, 1); |
| shouldBeCloseTo('text1.height', 6, 1); |
| shouldBeCloseTo('text1.right', 146, 1); |
| shouldBeCloseTo('text1.bottom', 289, 1); |
| debug(""); |
| |
| var svg2 = document.getElementById("svg2").getBoundingClientRect(); |
| shouldBe('svg2.left', '75'); |
| shouldBe('svg2.top', '100'); |
| shouldBe('svg2.width', '150'); |
| shouldBe('svg2.height', '50'); |
| shouldBe('svg2.right', '225'); |
| shouldBe('svg2.bottom', '150'); |
| var rect2 = document.getElementById("rect2").getBoundingClientRect(); |
| shouldBe('rect2.left', '75'); |
| shouldBe('rect2.top', '100'); |
| shouldBe('rect2.width', '100'); |
| shouldBe('rect2.height', '50'); |
| shouldBe('rect2.right', '175'); |
| shouldBe('rect2.bottom', '150'); |
| var image2 = document.getElementById("image2").getBoundingClientRect(); |
| shouldBe('image2.left', '175'); |
| shouldBe('image2.top', '100'); |
| shouldBe('image2.width', '50'); |
| shouldBe('image2.height', '25'); |
| shouldBe('image2.right', '225'); |
| shouldBe('image2.bottom', '125'); |
| var text2 = document.getElementById("text2").getBoundingClientRect(); |
| shouldBe('text2.left', '175'); |
| msgDumpRenderTreeRequired(); |
| shouldBeCloseTo('text2.top', 132, 1); |
| shouldBeCloseTo('text2.width', 49, 1); |
| shouldBeCloseTo('text2.height', 6, 1); |
| shouldBeCloseTo('text2.right', 224, 1); |
| shouldBeCloseTo('text2.bottom', 139, 1); |
| debug(""); |
| |
| var svg3 = document.getElementById("svg3").getBoundingClientRect(); |
| shouldBe('svg3.left', '900'); |
| shouldBe('svg3.top', '500'); |
| shouldBe('svg3.width', '300'); |
| shouldBe('svg3.height', '100'); |
| shouldBe('svg3.right', '1200'); |
| shouldBe('svg3.bottom', '600'); |
| var rect3 = document.getElementById("rect3").getBoundingClientRect(); |
| shouldBe('rect3.left', '900'); |
| shouldBe('rect3.top', '500'); |
| shouldBe('rect3.width', '200'); |
| shouldBe('rect3.height', '100'); |
| shouldBe('rect3.right', '1100'); |
| shouldBe('rect3.bottom', '600'); |
| var image3 = document.getElementById("image3").getBoundingClientRect(); |
| shouldBe('image3.left', '1100'); |
| shouldBe('image3.top', '500'); |
| shouldBe('image3.width', '100'); |
| shouldBe('image3.height', '50'); |
| shouldBe('image3.right', '1200'); |
| shouldBe('image3.bottom', '550'); |
| var text3 = document.getElementById("text3").getBoundingClientRect(); |
| shouldBe('text3.left', '1100'); |
| msgDumpRenderTreeRequired(); |
| shouldBeCloseTo('text3.top', 565, 1); |
| shouldBeCloseTo('text3.width', 92, 1); |
| shouldBeCloseTo('text3.height', 12, 1); |
| shouldBeCloseTo('text3.right', 1192, 1); |
| shouldBeCloseTo('text3.bottom', 577, 1); |
| debug(""); |
| |
| |
| </script> |
| <script src="../resources/js-test-post.js"></script> |
| |
| </body> |
| </html> |