summaryrefslogtreecommitdiffstats
path: root/toolkit/content/tests/chrome/test_colorpicker_popup.xul
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/content/tests/chrome/test_colorpicker_popup.xul')
-rw-r--r--toolkit/content/tests/chrome/test_colorpicker_popup.xul148
1 files changed, 148 insertions, 0 deletions
diff --git a/toolkit/content/tests/chrome/test_colorpicker_popup.xul b/toolkit/content/tests/chrome/test_colorpicker_popup.xul
new file mode 100644
index 000000000..3ac84260b
--- /dev/null
+++ b/toolkit/content/tests/chrome/test_colorpicker_popup.xul
@@ -0,0 +1,148 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
+
+<window title="Colorpicker Tests"
+ onload="setTimeout(runTests, 0);"
+ onpopupshown="popupShown();"
+ onpopuphidden="popupHiding();"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+ <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
+
+<colorpicker id="colorpicker-popup" type="button" color="#FF0000" tabindex="1"/>
+
+<script class="testbody" type="application/javascript">
+<![CDATA[
+
+var gTestPhase = -1;
+var gCp = null;
+
+SimpleTest.waitForExplicitFinish();
+
+function preventDefault(event) {
+ event.preventDefault();
+}
+
+function runTests()
+{
+ gCp = document.getElementById("colorpicker-popup");
+ is(gCp.color, "#FF0000", "popup color is initialized");
+ is(gCp.tabIndex, 1, "button tabindex is initialized");
+ is(gCp.disabled, false, "button is not disabled");
+
+ document.addEventListener("keypress", preventDefault, false);
+
+ goNext();
+}
+
+var phases = [ "mouse click", "showPopup",
+ "key left", "key right", "key up", "key down", "key space" ];
+
+function popupShown()
+{
+ if (gTestPhase >= phases.length)
+ return;
+
+ var phase = phases[gTestPhase];
+
+ is(gCp.open, true, phase + " popup shown, open property is true");
+
+ switch (phase) {
+ case "mouse click":
+ synthesizeMouse(gCp, 2, 2, { });
+ break;
+ case "showPopup":
+ gCp.hidePopup();
+ break;
+ case "key left":
+ synthesizeKey("VK_LEFT", { });
+ synthesizeKeyExpectEvent("VK_RETURN", { });
+ is(gCp.color, "#C0C0C0", "key left while open");
+ break;
+ case "key right":
+ synthesizeKey("VK_RIGHT", { });
+ synthesizeKeyExpectEvent("VK_SPACE", { });
+ is(gCp.color, "#FF0000", "key right while open");
+ break;
+ case "key up":
+ synthesizeKey("VK_UP", { });
+ synthesizeKeyExpectEvent("VK_RETURN", { });
+ is(gCp.color, "#FF6666", "key up while open");
+ break;
+ case "key down":
+ synthesizeKey("VK_DOWN", { });
+ synthesizeKeyExpectEvent("VK_SPACE", { });
+ is(gCp.color, "#FF0000", "key down while open");
+ break;
+ default:
+ synthesizeMouse(gCp, 2, 2, { });
+// this breaks on the Mac, so disable for now
+// synthesizeKey("VK_ESCAPE", { });
+ break;
+ }
+}
+
+function popupHiding()
+{
+ var phase = phases[gTestPhase];
+ if (phase == "showPopup")
+ phase = "hidePopup";
+ if (phase == "key left")
+ phase = "escape";
+ is(gCp.open, false, phase + " popup hidden, open property is false");
+
+ goNext();
+}
+
+function goNext()
+{
+ gTestPhase++;
+ if (gTestPhase >= phases.length) {
+ document.removeEventListener("keypress", preventDefault, false);
+ SimpleTest.finish();
+ return;
+ }
+
+ gCp.focus();
+
+ var phase = phases[gTestPhase];
+ switch (phase) {
+ case "mouse click":
+ synthesizeMouse(gCp, 2, 2, { });
+ break;
+ case "showPopup":
+ gCp.showPopup();
+ break;
+ case "key left":
+ synthesizeKey("VK_LEFT", { });
+ break;
+ case "key right":
+ synthesizeKey("VK_RIGHT", { });
+ break;
+ case "key down":
+ synthesizeKey("VK_UP", { });
+ break;
+ case "key up":
+ synthesizeKey("VK_DOWN", { });
+ break;
+ case "key space":
+ synthesizeKey("VK_SPACE", { });
+ break;
+ }
+}
+
+]]>
+</script>
+
+<body xmlns="http://www.w3.org/1999/xhtml">
+<p id="display">
+</p>
+<div id="content" style="display: none">
+</div>
+<pre id="test">
+</pre>
+</body>
+
+</window>