2009-07-29 20:16:44 -07:00
|
|
|
<?xml version="1.0"?>
|
|
|
|
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
|
|
|
|
<?xml-stylesheet href="/tests/SimpleTest/test.css" type="text/css"?>
|
|
|
|
<!--
|
|
|
|
Tests for mozInnerScreenX/Y properties
|
|
|
|
-->
|
|
|
|
<window title="Test mozInnerScreenX/Y Properties"
|
|
|
|
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
|
|
|
<script type="text/javascript" src="/MochiKit/packed.js"/>
|
|
|
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"/>
|
|
|
|
|
|
|
|
<!-- test resuls are displayed in the html:body -->
|
|
|
|
<body xmlns="http://www.w3.org/1999/xhtml"
|
|
|
|
style="height: 400px; position:relative; overflow: auto;">
|
|
|
|
<iframe id="f"
|
|
|
|
style="position:absolute; left:100px;
|
|
|
|
top:200px; width:200px; height:200px; border:none;"></iframe>
|
|
|
|
</body>
|
|
|
|
|
|
|
|
<!-- test code goes here -->
|
|
|
|
<script type="application/javascript"><![CDATA[
|
|
|
|
|
|
|
|
function isRounded(a, b, msg) {
|
|
|
|
ok(Math.round(a) == Math.round(b),
|
|
|
|
msg + " (rounded), got " + a + ", expected " + b);
|
|
|
|
}
|
|
|
|
|
|
|
|
function doTests()
|
|
|
|
{
|
|
|
|
var readable = false;
|
|
|
|
try
|
|
|
|
{
|
|
|
|
mozScreenPixelsPerCSSPixel;
|
|
|
|
readable = true;
|
|
|
|
}
|
|
|
|
catch(ex) { }
|
|
|
|
ok(!readable, "window pixels per css pixel shouldn't be readable to content");
|
|
|
|
|
|
|
|
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
|
2009-08-03 14:41:36 -07:00
|
|
|
var domWindowUtils = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
|
|
|
|
.getInterface(Components.interfaces.nsIDOMWindowUtils);
|
|
|
|
var devPxPerCSSPx = domWindowUtils.screenPixelsPerCSSPixel;
|
2009-07-29 20:16:44 -07:00
|
|
|
var windowBO = document.documentElement.boxObject;
|
2009-08-03 14:41:36 -07:00
|
|
|
isRounded(window.mozInnerScreenX*devPxPerCSSPx, windowBO.screenX,
|
|
|
|
"window screen X");
|
2009-07-29 20:16:44 -07:00
|
|
|
isRounded(window.mozInnerScreenY*devPxPerCSSPx, windowBO.screenY,
|
|
|
|
"window screen Y");
|
|
|
|
|
|
|
|
var f = document.getElementById("f");
|
|
|
|
var fBounds = f.getBoundingClientRect();
|
|
|
|
|
|
|
|
const CI = Components.interfaces;
|
|
|
|
var fshell = f.contentWindow.QueryInterface(CI.nsIInterfaceRequestor).getInterface(CI.nsIWebNavigation).QueryInterface(CI.nsIDocShell);
|
|
|
|
var fmudv = fshell.contentViewer.QueryInterface(CI.nsIMarkupDocumentViewer);
|
|
|
|
|
|
|
|
isRounded(f.contentWindow.mozInnerScreenX,
|
|
|
|
window.mozInnerScreenX + fBounds.left,
|
|
|
|
"frame screen X");
|
|
|
|
isRounded(f.contentWindow.mozInnerScreenY,
|
|
|
|
window.mozInnerScreenY + fBounds.top,
|
|
|
|
"frame screen Y");
|
|
|
|
|
|
|
|
fmudv.fullZoom *= 2;
|
2009-08-03 14:41:36 -07:00
|
|
|
var frameDomWindowUtils = f.contentWindow.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
|
|
|
|
.getInterface(Components.interfaces.nsIDOMWindowUtils);
|
|
|
|
is(frameDomWindowUtils.screenPixelsPerCSSPixel, 2*devPxPerCSSPx,
|
2009-07-29 20:16:44 -07:00
|
|
|
"frame screen pixels per CSS pixel");
|
|
|
|
|
|
|
|
isRounded(f.contentWindow.mozInnerScreenX*2,
|
|
|
|
window.mozInnerScreenX + fBounds.left,
|
|
|
|
"zoomed frame screen X");
|
|
|
|
isRounded(f.contentWindow.mozInnerScreenY*2,
|
|
|
|
window.mozInnerScreenY + fBounds.top,
|
|
|
|
"zoomed frame screen Y");
|
|
|
|
fmudv.fullZoom = 1.0;
|
|
|
|
|
|
|
|
SimpleTest.finish();
|
|
|
|
}
|
|
|
|
|
|
|
|
addLoadEvent(doTests);
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
|
|
|
|
|
|
]]>
|
|
|
|
</script>
|
|
|
|
|
|
|
|
</window>
|