| <!DOCTYPE html> |
| |
| <html> |
| <head> |
| <style> |
| body { |
| height: 3000px; |
| width: 2000px; |
| } |
| #fixed { |
| position: fixed; |
| top: 10px; |
| left: 12px; |
| width: 30px; |
| height: 20px; |
| background-color: silver; |
| } |
| #absolute { |
| position: absolute; |
| top: 100px; |
| left: 120px; |
| width: 50px; |
| height: 25px; |
| background-color: blue; |
| } |
| </style> |
| <script src="../../resources/js-test-pre.js"></script> |
| <script> |
| description("This test zooms and scrolls the page and checks that client rects are correct."); |
| |
| window.jsTestIsAsync = true; |
| |
| function stringFromRect(domRect) |
| { |
| return `${domRect.x.toFixed(2)}, ${domRect.y.toFixed(2)} - ${domRect.width.toFixed(2)} x ${domRect.height.toFixed(2)}`; |
| } |
| |
| function dumpRects() |
| { |
| var fixed = document.getElementById('fixed'); |
| var absolute = document.getElementById('absolute'); |
| |
| if (window.internals) { |
| debug('layoutViewport: ' + stringFromRect(internals.layoutViewportRect())); |
| debug('visualViewportRect: ' + stringFromRect(internals.visualViewportRect())); |
| } |
| |
| debug('fixed client bounds: ' + stringFromRect(fixed.getBoundingClientRect())); |
| debug('fixed client rect: ' + stringFromRect(fixed.getClientRects()[0])); |
| |
| debug('absolute client bounds: ' + stringFromRect(absolute.getBoundingClientRect())); |
| debug('absolute client rect: ' + stringFromRect(absolute.getClientRects()[0])); |
| } |
| |
| function doTest() |
| { |
| if (window.eventSender) |
| eventSender.zoomPageIn(); |
| |
| dumpRects(); |
| |
| debug(''); |
| window.scrollTo(120, 100); |
| |
| debug('Scrolled to ' + window.scrollX + ', ' + window.scrollY); |
| dumpRects(); |
| |
| window.scrollTo(0, 0); |
| |
| finishJSTest(); |
| } |
| |
| window.addEventListener('load', doTest, false); |
| </script> |
| </head> |
| <body> |
| <div id="fixed"></div> |
| <div id="absolute"></div> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |