<?xml version="1.0"?> <?xml-stylesheet href="/tests/SimpleTest/test.css" type="text/css"?> <html xmlns="http://www.w3.org/1999/xhtml" title="Test Plugin Positioning"> <head> <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> </head> <body> <!-- Use a XUL element here so we can get its boxObject.screenX/Y --> <hbox style="height:10px; position:absolute; left:0; top:0; z-index:-100;" id="h1" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <hbox style="width:100px;"></hbox><hbox id="h2"/> </hbox> <embed id="p" type="application/x-test" width="200" height="200" wmode="window"></embed> <embed id="p2" type="application/x-test" wmode="window" style="outline:5px solid blue; width:200px; height:200px; border:solid black; border-width:4px 8px 4px 8px; padding:3px 1px;"> </embed> <script class="testbody" type="application/javascript"> <![CDATA[ var windowFrameX, windowFrameY; function checkGeometry(id, x, y, w, h) { var p = document.getElementById(id); var bounds = p.getBoundingClientRect(); var pX = p.getEdge(0); var pY = p.getEdge(1); var pWidth = p.getEdge(2) - pX; var pHeight = p.getEdge(3) - pY; is(pX, windowFrameX + bounds.left + x, id + " plugin X"); is(pY, windowFrameY + bounds.top + y, id + " plugin Y"); is(pWidth, w, id + " plugin width"); is(pHeight, h, id + " plugin height"); } function runTests() { var h1 = document.getElementById("h1"); var h2 = document.getElementById("h2"); var hwidth = h2.boxObject.screenX - h1.boxObject.screenX; if (hwidth != 100) { // Maybe it's a DPI issue todo(false, "Unexpected DPI?"); SimpleTest.finish(); return; } if (!document.getElementById("p").identifierToStringTest) { todo(false, "Test plugin not available"); SimpleTest.finish(); return; } var bounds = h1.getBoundingClientRect(); windowFrameX = h1.boxObject.screenX - bounds.left - window.screenX; windowFrameY = h1.boxObject.screenY - bounds.top - window.screenY; checkGeometry("p", 0, 0, 200, 200); // This one tests widget positioning in the presence of borders and padding checkGeometry("p2", 9, 7, 182, 186); SimpleTest.finish(); } // When load events run, painting may still be suppressed for the window. // While painting is suppressed, plugins are hidden so won't be positioned // or sized as expected. // So call runTests after the load event has finished, when painting will // be unsuppressed. addLoadEvent(function() { setTimeout(runTests, 1000); }); SimpleTest.waitForExplicitFinish(); SimpleTest.requestFlakyTimeout("untriaged"); ]]> </script> </body> </html>