window_resizer.xul 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
  2. <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
  3. screenX="200" screenY="200" width="300" height="300"
  4. onload="setTimeout(doTest, 0)">
  5. <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
  6. <script><![CDATA[
  7. var is = window.opener.SimpleTest.is;
  8. function doTest() {
  9. // from test_resizer.xul
  10. var expectX = 200;
  11. var expectY = 200;
  12. var expectXMost = 500;
  13. var expectYMost = 500;
  14. var screenScale = expectX/window.screenX;
  15. var root = document.documentElement;
  16. var oldScreenX = window.screenX;
  17. var oldScreenY = window.screenY;
  18. var oldWidth = window.outerWidth;
  19. var oldHeight = window.outerHeight;
  20. function testResizer(dx, dy) {
  21. var offset = 20;
  22. var scale = 5;
  23. // target the centre of the resizer
  24. var offsetX = window.innerWidth/2 + (window.innerWidth/3)*dx;
  25. var offsetY = window.innerHeight/2 + (window.innerHeight/3)*dy;
  26. for (var mouseX = -1; mouseX <= 1; ++mouseX) {
  27. for (var mouseY = -1; mouseY <= 1; ++mouseY) {
  28. var newExpectX = expectX;
  29. var newExpectXMost = expectXMost;
  30. var newExpectY = expectY;
  31. var newExpectYMost = expectYMost;
  32. if (dx < 0) {
  33. newExpectX += mouseX*scale;
  34. } else if (dx > 0) {
  35. newExpectXMost += mouseX*scale;
  36. }
  37. if (dy < 0) {
  38. newExpectY += mouseY*scale;
  39. } else if (dy > 0) {
  40. newExpectYMost += mouseY*scale;
  41. }
  42. synthesizeMouse(root, offsetX, offsetY, { type:"mousedown" });
  43. synthesizeMouse(root, offsetX + mouseX*scale, offsetY + mouseY*scale, { type:"mousemove" });
  44. is(window.screenX*screenScale, newExpectX,
  45. "Bad x for " + dx + "," + dy + " moving " + mouseX + "," + mouseY);
  46. is(window.screenY*screenScale, newExpectY,
  47. "Bad y for " + dx + "," + dy + " moving " + mouseX + "," + mouseY);
  48. is(window.outerWidth, newExpectXMost - newExpectX,
  49. "Bad width for " + dx + "," + dy + " moving " + mouseX + "," + mouseY);
  50. is(window.outerHeight, newExpectYMost - newExpectY,
  51. "Bad height for " + dx + "," + dy + " moving " + mouseX + "," + mouseY);
  52. // move it back before we release! Adjust for any window movement
  53. synthesizeMouse(root, offsetX - (newExpectX - expectX),
  54. offsetY - (newExpectY - expectY), { type:"mousemove" });
  55. synthesizeMouse(root, offsetX, offsetY, { type:"mouseup" });
  56. }
  57. }
  58. }
  59. testResizer(-1, -1);
  60. testResizer(-1, 0);
  61. testResizer(-1, 1);
  62. testResizer(0, -1);
  63. testResizer(0, 1);
  64. testResizer(1, -1);
  65. testResizer(1, 0);
  66. testResizer(1, 1);
  67. var resizers = document.getElementsByTagName("resizer");
  68. Array.forEach(resizers, function (element) {
  69. is(getComputedStyle(element, "").cursor,
  70. element.getAttribute("expectedcursor"),
  71. "cursor for " + element.dir);
  72. });
  73. // now check the cursors in rtl. The bottomend resizer
  74. // should be reversed
  75. document.getElementById("bottomend").setAttribute("rtl", "true");
  76. Array.forEach(resizers, function (element) {
  77. is(getComputedStyle(element, "").cursor,
  78. element.dir == "bottomend" ? "sw-resize" :
  79. element.getAttribute("expectedcursor"),
  80. "cursor for " + element.dir);
  81. });
  82. window.close();
  83. window.opener.lastResizerTest();
  84. }
  85. ]]></script>
  86. <hbox id="container" flex="1">
  87. <vbox flex="1">
  88. <resizer dir="topleft" expectedcursor="nw-resize" flex="1"/>
  89. <resizer dir="left" expectedcursor="ew-resize" flex="1"/>
  90. <resizer dir="bottomleft" expectedcursor="sw-resize" flex="1"/>
  91. </vbox>
  92. <vbox flex="1">
  93. <resizer dir="top" expectedcursor="ns-resize" flex="1"/>
  94. <resizer id="bottomend" dir="bottomend" expectedcursor="se-resize" flex="1"/>
  95. <resizer dir="bottom" expectedcursor="ns-resize" flex="1"/>
  96. </vbox>
  97. <vbox flex="1">
  98. <resizer dir="topright" expectedcursor="ne-resize" flex="1"/>
  99. <resizer dir="right" expectedcursor="ew-resize" flex="1"/>
  100. <resizer dir="bottomright" expectedcursor="se-resize" flex="1"/>
  101. </vbox>
  102. </hbox>
  103. </window>