| <!DOCTYPE html> |
| |
| <html> |
| <head> |
| <style> |
| body { |
| height: 2000px; |
| width: 2000px; |
| } |
| |
| .container { |
| position: fixed; |
| top: 20px; |
| left: 10px; |
| width: 200px; |
| height: 100px; |
| background-color: silver; |
| } |
| #box { |
| width: 20px; |
| height: 10px; |
| margin: 12px; |
| background-color: blue; |
| } |
| |
| </style> |
| <script src="../../resources/js-test-pre.js"></script> |
| <script> |
| description("Tests localToAbsolute coordinate conversion for an element inside position:fixed after zoom."); |
| |
| window.jsTestIsAsync = true; |
| |
| var clientRect; |
| function doAfterZooming() |
| { |
| window.scrollTo(0, 140); |
| |
| shouldBe('internals.pageScaleFactor()', '2'); |
| |
| var box = document.getElementById('box'); |
| clientRect = box.getBoundingClientRect(); |
| |
| shouldBe('JSON.stringify(clientRect)', 'JSON.stringify({x: 22, y: -108, width: 20, height: 10, top: -108, right: 42, bottom:-98, left: 22})'); |
| |
| finishJSTest(); |
| } |
| |
| function getUIScript() |
| { |
| return `(function() { |
| uiController.zoomToScale(2, function() { |
| uiController.uiScriptComplete(uiController.zoomScale); |
| }); |
| })();`; |
| } |
| |
| function doTest() |
| { |
| if (window.testRunner) { |
| testRunner.runUIScript(getUIScript(), function(zoomScale) { |
| doAfterZooming(); |
| }) |
| } else |
| window.setTimeout(doAfterZooming, 1000); |
| } |
| |
| window.addEventListener('load', doTest, false); |
| </script> |
| </head> |
| <body> |
| <div class="container"> |
| <div id="box"></div> |
| </div> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |