<?xml-stylesheet href="chrome://global/skin" type="text/css"?> <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" screenX="200" screenY="200" width="300" height="300" onload="setTimeout(doTest, 0)"> <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> <script><![CDATA[ var is = window.opener.SimpleTest.is; function doTest() { // from test_resizer.xul var expectX = 200; var expectY = 200; var expectXMost = 500; var expectYMost = 500; var screenScale = expectX/window.screenX; var root = document.documentElement; var oldScreenX = window.screenX; var oldScreenY = window.screenY; var oldWidth = window.outerWidth; var oldHeight = window.outerHeight; function testResizer(dx, dy) { var offset = 20; var scale = 5; // target the centre of the resizer var offsetX = window.innerWidth/2 + (window.innerWidth/3)*dx; var offsetY = window.innerHeight/2 + (window.innerHeight/3)*dy; for (var mouseX = -1; mouseX <= 1; ++mouseX) { for (var mouseY = -1; mouseY <= 1; ++mouseY) { var newExpectX = expectX; var newExpectXMost = expectXMost; var newExpectY = expectY; var newExpectYMost = expectYMost; if (dx < 0) { newExpectX += mouseX*scale; } else if (dx > 0) { newExpectXMost += mouseX*scale; } if (dy < 0) { newExpectY += mouseY*scale; } else if (dy > 0) { newExpectYMost += mouseY*scale; } synthesizeMouse(root, offsetX, offsetY, { type:"mousedown" }); synthesizeMouse(root, offsetX + mouseX*scale, offsetY + mouseY*scale, { type:"mousemove" }); is(window.screenX*screenScale, newExpectX, "Bad x for " + dx + "," + dy + " moving " + mouseX + "," + mouseY); is(window.screenY*screenScale, newExpectY, "Bad y for " + dx + "," + dy + " moving " + mouseX + "," + mouseY); is(window.outerWidth, newExpectXMost - newExpectX, "Bad width for " + dx + "," + dy + " moving " + mouseX + "," + mouseY); is(window.outerHeight, newExpectYMost - newExpectY, "Bad height for " + dx + "," + dy + " moving " + mouseX + "," + mouseY); // move it back before we release! Adjust for any window movement synthesizeMouse(root, offsetX - (newExpectX - expectX), offsetY - (newExpectY - expectY), { type:"mousemove" }); synthesizeMouse(root, offsetX, offsetY, { type:"mouseup" }); } } } testResizer(-1, -1); testResizer(-1, 0); testResizer(-1, 1); testResizer(0, -1); testResizer(0, 1); testResizer(1, -1); testResizer(1, 0); testResizer(1, 1); var resizers = document.getElementsByTagName("resizer"); Array.forEach(resizers, function (element) { is(getComputedStyle(element, "").cursor, element.getAttribute("expectedcursor"), "cursor for " + element.dir); }); // now check the cursors in rtl. The bottomend resizer // should be reversed document.getElementById("bottomend").setAttribute("rtl", "true"); Array.forEach(resizers, function (element) { is(getComputedStyle(element, "").cursor, element.dir == "bottomend" ? "sw-resize" : element.getAttribute("expectedcursor"), "cursor for " + element.dir); }); window.close(); window.opener.lastResizerTest(); } ]]></script> <hbox id="container" flex="1"> <vbox flex="1"> <resizer dir="topleft" expectedcursor="nw-resize" flex="1"/> <resizer dir="left" expectedcursor="ew-resize" flex="1"/> <resizer dir="bottomleft" expectedcursor="sw-resize" flex="1"/> </vbox> <vbox flex="1"> <resizer dir="top" expectedcursor="ns-resize" flex="1"/> <resizer id="bottomend" dir="bottomend" expectedcursor="se-resize" flex="1"/> <resizer dir="bottom" expectedcursor="ns-resize" flex="1"/> </vbox> <vbox flex="1"> <resizer dir="topright" expectedcursor="ne-resize" flex="1"/> <resizer dir="right" expectedcursor="ew-resize" flex="1"/> <resizer dir="bottomright" expectedcursor="se-resize" flex="1"/> </vbox> </hbox> </window>