file_toScreenRect.html (1472B)
1 <!DOCTYPE HTML> 2 <meta charset="utf-8"> 3 <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1"> 4 <link rel="stylesheet" href="/tests/SimpleTest/test.css" /> 5 <style> 6 html,body { 7 margin: 0; 8 padding: 0; 9 } 10 #target { 11 position: absolute; 12 top: 150px; 13 left: 150px; 14 width: 100px; 15 height: 100px; 16 background-color: blue; 17 } 18 </style> 19 <div id="target"></div> 20 <script> 21 const isfuzzy = opener.isfuzzy.bind(opener); 22 const add_task = opener.add_task.bind(opener); 23 const original_finish = opener.SimpleTest.finish; 24 const SimpleTest = opener.SimpleTest; 25 SimpleTest.finish = function finish() { 26 self.close(); 27 original_finish(); 28 }; 29 add_task(async () => { 30 await SpecialPowers.pushPrefEnv({'set': [['layout.css.devPixelsPerPx', 1.5]]}); 31 SpecialPowers.setFullZoom(window, 2.0); 32 33 const rect = target.getBoundingClientRect(); 34 const screenPixelsPerCSSPixel = window.devicePixelRatio; 35 36 let rectOnScreen = 37 SpecialPowers.DOMWindowUtils.toScreenRect(rect.x, rect.y, rect.width, rect.height); 38 isfuzzy(rectOnScreen.x, 39 rect.x * screenPixelsPerCSSPixel + 40 window.mozInnerScreenX * screenPixelsPerCSSPixel, 0.01, "x"); 41 isfuzzy(rectOnScreen.y, 42 rect.y * screenPixelsPerCSSPixel + 43 window.mozInnerScreenY * screenPixelsPerCSSPixel, 0.01, "y"); 44 45 isfuzzy(rectOnScreen.width, rect.width * screenPixelsPerCSSPixel, 0.01, "width"); 46 isfuzzy(rectOnScreen.height, rect.height * screenPixelsPerCSSPixel, 0.01, "height"); 47 }); 48 </script>