summaryrefslogtreecommitdiffstats
path: root/toolkit/components/prompts/test/test_modal_select.html
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/prompts/test/test_modal_select.html')
-rw-r--r--toolkit/components/prompts/test/test_modal_select.html138
1 files changed, 138 insertions, 0 deletions
diff --git a/toolkit/components/prompts/test/test_modal_select.html b/toolkit/components/prompts/test/test_modal_select.html
new file mode 100644
index 0000000000..27688cf329
--- /dev/null
+++ b/toolkit/components/prompts/test/test_modal_select.html
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Modal Prompts Test</title>
+ <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="prompt_common.js"></script>
+</head>
+<body>
+Prompter tests: modal prompts
+<p id="display"></p>
+
+<div id="content" style="display: none">
+ <iframe id="iframe"></iframe>
+</div>
+
+<pre id="test">
+<script class="testbody" type="text/javascript">
+function checkPromptState(promptState, expectedState) {
+ // XXX check title? OS X has title in content
+ // XXX check focused element
+ // XXX check button labels?
+
+ is(promptState.msg, expectedState.msg, "Checking expected message");
+
+ // Compare listbox contents
+ is(promptState.items.length, expectedState.items.length, "Checking listbox length");
+
+ if (promptState.items.length)
+ is(promptState.selectedIndex, 0, "Checking selected index");
+
+ for (let i = 0; i < promptState.items; i++) {
+ is(promptState.items[i], expectedState.items[i], "Checking list item #" + i);
+ }
+}
+
+let selectVal = {};
+let isOK;
+
+function handlePrompt(state, action) {
+ return new Promise(resolve => {
+ gChromeScript.addMessageListener("promptHandled", function handled(msg) {
+ gChromeScript.removeMessageListener("promptHandled", handled);
+ checkPromptState(msg.promptState, state);
+ resolve(true);
+ });
+ gChromeScript.sendAsyncMessage("handlePrompt", { action, isSelect: true});
+ });
+}
+
+async function runTests(util) {
+ // Select prompt does not support tab or content prompts yet. See Bug 1622817.
+ if(util.modalType != Ci.nsIPrompt.MODAL_TYPE_WINDOW) {
+ info('Skipping modal type for select prompt...');
+ return;
+ }
+
+ // Empty list
+ info("Starting test: Select (0 items, ok)");
+ let state = {
+ msg: "This is the select text.",
+ title: "TestTitle",
+ items: [],
+ };
+ let action = {
+ buttonClick: "ok",
+ };
+ let promptDone = handlePrompt(state, action);
+ let items = [];
+ selectVal.value = null; // outparam, just making sure.
+ let result = await util.prompt("select", ["TestTitle", "This is the select text.", items, util.useAsync ? false : selectVal]);
+ is(util.useAsync ? result.ok : result, true, "checked expected retval");
+ is(util.useAsync ? result.selected : selectVal.value, -1, "checking selected index");
+ await promptDone;
+
+ // ok
+ info("Starting test: Select (3 items, ok)");
+ state = {
+ msg: "This is the select text.",
+ title: "TestTitle",
+ items: ["one", "two", "three"],
+ };
+ action = {
+ buttonClick: "ok",
+ };
+ promptDone = handlePrompt(state, action);
+ items = ["one", "two", "three"];
+ selectVal.value = null; // outparam, just making sure.
+ result = await util.prompt("select", ["TestTitle", "This is the select text.", items, util.useAsync ? false : selectVal]);
+ is(util.useAsync ? result.ok : result, true, "checked expected retval");
+ is(util.useAsync ? result.selected : selectVal.value, 0, "checking selected index");
+ await promptDone;
+
+ // select item
+ info("Starting test: Select (3 items, selection changed, ok)");
+ state = {
+ msg: "This is the select text.",
+ title: "TestTitle",
+ items: ["one", "two", "three"],
+ };
+ action = {
+ buttonClick: "ok",
+ selectItem: 1,
+ };
+ promptDone = handlePrompt(state, action);
+ items = ["one", "two", "three"];
+ selectVal.value = null; // outparam, just making sure.
+ result = await util.prompt("select", ["TestTitle", "This is the select text.", items, util.useAsync ? false : selectVal]);
+ is(util.useAsync ? result.ok : result, true, "checked expected retval");
+ is(util.useAsync ? result.selected : selectVal.value, 1, "checking selected index");
+ await promptDone;
+
+ // cancel prompt
+ info("Starting test: Select (3 items, cancel)");
+ state = {
+ msg: "This is the select text.",
+ title: "TestTitle",
+ items: ["one", "two", "three"],
+ };
+ action = {
+ buttonClick: "cancel",
+ };
+ promptDone = handlePrompt(state, action);
+ items = ["one", "two", "three"];
+ selectVal.value = null; // outparam, just making sure.
+ result = await util.prompt("select", ["TestTitle", "This is the select text.", items, util.useAsync ? false : selectVal]);
+ is(util.useAsync ? result.ok : result, false, "checked expected retval");
+ ok(util.useAsync && result.selected == -1 || selectVal.value == 0, "checking selected index");
+ await promptDone;
+}
+
+add_task(async function runPromptTests() {
+ await runPromptCombinations(window, runTests);
+});
+
+</script>
+</pre>
+</body>
+</html>