summaryrefslogtreecommitdiffstats
path: root/layout/generic/test/test_plugin_position.xhtml
diff options
context:
space:
mode:
Diffstat (limited to 'layout/generic/test/test_plugin_position.xhtml')
-rw-r--r--layout/generic/test/test_plugin_position.xhtml82
1 files changed, 82 insertions, 0 deletions
diff --git a/layout/generic/test/test_plugin_position.xhtml b/layout/generic/test/test_plugin_position.xhtml
new file mode 100644
index 0000000000..f2e0996287
--- /dev/null
+++ b/layout/generic/test/test_plugin_position.xhtml
@@ -0,0 +1,82 @@
+<?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 src="/tests/SimpleTest/SimpleTest.js"></script>
+</head>
+<body>
+
+<!-- Use a XUL element here so we can get its 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.screenX - h1.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.screenX - bounds.left - window.screenX;
+ windowFrameY = h1.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>