1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/layout/xul/test/window_resizer.xul Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,113 @@ 1.4 +<?xml-stylesheet href="chrome://global/skin" type="text/css"?> 1.5 +<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 1.6 + screenX="200" screenY="200" width="300" height="300" 1.7 + onload="setTimeout(doTest, 0)"> 1.8 +<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script> 1.9 +<script><![CDATA[ 1.10 +var is = window.opener.SimpleTest.is; 1.11 + 1.12 +function doTest() { 1.13 + // from test_resizer.xul 1.14 + var expectX = 200; 1.15 + var expectY = 200; 1.16 + var expectXMost = 500; 1.17 + var expectYMost = 500; 1.18 + var screenScale = expectX/window.screenX; 1.19 + var root = document.documentElement; 1.20 + 1.21 + var oldScreenX = window.screenX; 1.22 + var oldScreenY = window.screenY; 1.23 + var oldWidth = window.outerWidth; 1.24 + var oldHeight = window.outerHeight; 1.25 + 1.26 + function testResizer(dx, dy) { 1.27 + var offset = 20; 1.28 + var scale = 5; 1.29 + // target the centre of the resizer 1.30 + var offsetX = window.innerWidth/2 + (window.innerWidth/3)*dx; 1.31 + var offsetY = window.innerHeight/2 + (window.innerHeight/3)*dy; 1.32 + 1.33 + for (var mouseX = -1; mouseX <= 1; ++mouseX) { 1.34 + for (var mouseY = -1; mouseY <= 1; ++mouseY) { 1.35 + var newExpectX = expectX; 1.36 + var newExpectXMost = expectXMost; 1.37 + var newExpectY = expectY; 1.38 + var newExpectYMost = expectYMost; 1.39 + if (dx < 0) { 1.40 + newExpectX += mouseX*scale; 1.41 + } else if (dx > 0) { 1.42 + newExpectXMost += mouseX*scale; 1.43 + } 1.44 + if (dy < 0) { 1.45 + newExpectY += mouseY*scale; 1.46 + } else if (dy > 0) { 1.47 + newExpectYMost += mouseY*scale; 1.48 + } 1.49 + 1.50 + synthesizeMouse(root, offsetX, offsetY, { type:"mousedown" }); 1.51 + synthesizeMouse(root, offsetX + mouseX*scale, offsetY + mouseY*scale, { type:"mousemove" }); 1.52 + is(window.screenX*screenScale, newExpectX, 1.53 + "Bad x for " + dx + "," + dy + " moving " + mouseX + "," + mouseY); 1.54 + is(window.screenY*screenScale, newExpectY, 1.55 + "Bad y for " + dx + "," + dy + " moving " + mouseX + "," + mouseY); 1.56 + is(window.outerWidth, newExpectXMost - newExpectX, 1.57 + "Bad width for " + dx + "," + dy + " moving " + mouseX + "," + mouseY); 1.58 + is(window.outerHeight, newExpectYMost - newExpectY, 1.59 + "Bad height for " + dx + "," + dy + " moving " + mouseX + "," + mouseY); 1.60 + 1.61 + // move it back before we release! Adjust for any window movement 1.62 + synthesizeMouse(root, offsetX - (newExpectX - expectX), 1.63 + offsetY - (newExpectY - expectY), { type:"mousemove" }); 1.64 + synthesizeMouse(root, offsetX, offsetY, { type:"mouseup" }); 1.65 + } 1.66 + } 1.67 + } 1.68 + 1.69 + testResizer(-1, -1); 1.70 + testResizer(-1, 0); 1.71 + testResizer(-1, 1); 1.72 + testResizer(0, -1); 1.73 + testResizer(0, 1); 1.74 + testResizer(1, -1); 1.75 + testResizer(1, 0); 1.76 + testResizer(1, 1); 1.77 + 1.78 + var resizers = document.getElementsByTagName("resizer"); 1.79 + Array.forEach(resizers, function (element) { 1.80 + is(getComputedStyle(element, "").cursor, 1.81 + element.getAttribute("expectedcursor"), 1.82 + "cursor for " + element.dir); 1.83 + }); 1.84 + 1.85 + // now check the cursors in rtl. The bottomend resizer 1.86 + // should be reversed 1.87 + document.getElementById("bottomend").setAttribute("rtl", "true"); 1.88 + Array.forEach(resizers, function (element) { 1.89 + is(getComputedStyle(element, "").cursor, 1.90 + element.dir == "bottomend" ? "sw-resize" : 1.91 + element.getAttribute("expectedcursor"), 1.92 + "cursor for " + element.dir); 1.93 + }); 1.94 + 1.95 + window.close(); 1.96 + window.opener.lastResizerTest(); 1.97 +} 1.98 +]]></script> 1.99 + <hbox id="container" flex="1"> 1.100 + <vbox flex="1"> 1.101 + <resizer dir="topleft" expectedcursor="nw-resize" flex="1"/> 1.102 + <resizer dir="left" expectedcursor="ew-resize" flex="1"/> 1.103 + <resizer dir="bottomleft" expectedcursor="sw-resize" flex="1"/> 1.104 + </vbox> 1.105 + <vbox flex="1"> 1.106 + <resizer dir="top" expectedcursor="ns-resize" flex="1"/> 1.107 + <resizer id="bottomend" dir="bottomend" expectedcursor="se-resize" flex="1"/> 1.108 + <resizer dir="bottom" expectedcursor="ns-resize" flex="1"/> 1.109 + </vbox> 1.110 + <vbox flex="1"> 1.111 + <resizer dir="topright" expectedcursor="ne-resize" flex="1"/> 1.112 + <resizer dir="right" expectedcursor="ew-resize" flex="1"/> 1.113 + <resizer dir="bottomright" expectedcursor="se-resize" flex="1"/> 1.114 + </vbox> 1.115 + </hbox> 1.116 +</window>