gecko/layout/generic/test/test_plugin_position.xhtml
Ehsan Akhgari 20474e5ba7 Bug 649012 - Fail mochitest-plains which use flaky timeouts (setTimeout(x) for x > 0); r=ted
We are white-listing the existing set of tests that use setTimeout
like this.  Hopefully these tests will be investigated and fixed
in the future, so that we can narrow down the white-list.

This check is only turned on for mochitest-plain for now.
2014-12-11 13:34:40 -05:00

83 lines
2.6 KiB
HTML

<?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>