summaryrefslogtreecommitdiff
path: root/toolkit/components/prompts/test/test_modal_prompts.html
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/prompts/test/test_modal_prompts.html')
-rw-r--r--toolkit/components/prompts/test/test_modal_prompts.html1184
1 files changed, 1184 insertions, 0 deletions
diff --git a/toolkit/components/prompts/test/test_modal_prompts.html b/toolkit/components/prompts/test/test_modal_prompts.html
new file mode 100644
index 0000000000..42e6be52c3
--- /dev/null
+++ b/toolkit/components/prompts/test/test_modal_prompts.html
@@ -0,0 +1,1184 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+ <title>Modal Prompts Test</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+ <script type="text/javascript" src="prompt_common.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</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;version=1.8">
+
+function* runTests() {
+ const { NetUtil } = SpecialPowers.Cu.import('resource://gre/modules/NetUtil.jsm');
+ let state, action;
+ ok(true, "Running tests (isTabModal=" + isTabModal + ", usePromptService=" + usePromptService + ")");
+
+ let prompter, promptArgs;
+ if (usePromptService) {
+ prompter = Cc["@mozilla.org/embedcomp/prompt-service;1"].
+ getService(Ci.nsIPromptService2);
+ } else {
+ prompter = Cc["@mozilla.org/prompter;1"].
+ getService(Ci.nsIPromptFactory).
+ getPrompt(window, Ci.nsIPrompt);
+ if (isTabModal) {
+ let bag = prompter.QueryInterface(Ci.nsIWritablePropertyBag2);
+ bag.setPropertyAsBool("allowTabModal", true);
+ }
+ }
+
+ let checkVal = {};
+ let textVal = {};
+ let passVal = {};
+ let flags;
+ let isOK, clickedButton;
+
+ // =====
+ info("Starting test: Alert");
+ state = {
+ msg : "This is the alert text.",
+ title : "TestTitle",
+ iconClass : "alert-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : "button0",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "ok",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ promptArgs = ["TestTitle", "This is the alert text."];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ prompter.alert.apply(null, promptArgs);
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: AlertCheck (null checkbox label, so it's hidden)");
+ state = {
+ msg : "This is the alertCheck text.",
+ title : "TestTitle",
+ iconClass : "alert-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : "button0",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "ok",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ promptArgs = ["TestTitle", "This is the alertCheck text.", null, {}];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ prompter.alertCheck.apply(null, promptArgs);
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: AlertCheck");
+ state = {
+ msg : "This is the alertCheck text.",
+ title : "TestTitle",
+ iconClass : "alert-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : false,
+ textValue : "",
+ passValue : "",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "button0",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "ok",
+ setCheckbox: true,
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ checkVal.value = false;
+ promptArgs = ["TestTitle", "This is the alertCheck text.", "Check me out!", checkVal];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ prompter.alertCheck.apply(null, promptArgs);
+ is(checkVal.value, true, "checkbox was checked");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: Confirm (ok)");
+ state = {
+ msg : "This is the confirm text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : "button0",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "ok",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ promptArgs = ["TestTitle", "This is the confirm text."];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.confirm.apply(null, promptArgs);
+ is(isOK, true, "checked expected retval");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: Confirm (cancel)");
+ state = {
+ msg : "This is the confirm text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : "button0",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "cancel",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ promptArgs = ["TestTitle", "This is the confirm text."];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.confirm.apply(null, promptArgs);
+ is(isOK, false, "checked expected retval");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: ConfirmCheck (ok, null checkbox label)");
+ state = {
+ msg : "This is the confirmCheck text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : "button0",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "ok",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ promptArgs = ["TestTitle", "This is the confirmCheck text.", null, {}];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.confirmCheck.apply(null, promptArgs);
+ is(isOK, true, "checked expected retval");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: ConfirmCheck (cancel, null checkbox label)");
+ state = {
+ msg : "This is the confirmCheck text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : "button0",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "cancel",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ promptArgs = ["TestTitle", "This is the confirmCheck text.", null, {}];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.confirmCheck.apply(null, promptArgs);
+ is(isOK, false, "checked expected retval");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: ConfirmCheck (ok)");
+ state = {
+ msg : "This is the confirmCheck text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : false,
+ textValue : "",
+ passValue : "",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "button0",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "ok",
+ setCheckbox: true,
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ checkVal.value = false;
+ promptArgs = ["TestTitle", "This is the confirmCheck text.", "Check me out!", checkVal];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.confirmCheck.apply(null, promptArgs);
+ is(isOK, true, "checked expected retval");
+ is(checkVal.value, true, "expected checkbox setting");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: ConfirmCheck (cancel)");
+ state = {
+ msg : "This is the confirmCheck text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : false,
+ textValue : "",
+ passValue : "",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "button0",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "cancel",
+ setCheckbox: true,
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ checkVal.value = false;
+ promptArgs = ["TestTitle", "This is the confirmCheck text.", "Check me out!", checkVal];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.confirmCheck.apply(null, promptArgs);
+ is(isOK, false, "checked expected retval");
+ is(checkVal.value, true, "expected checkbox setting");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: Prompt (ok, no default text)");
+ state = {
+ msg : "This is the prompt text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : false,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : "textField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick : "ok",
+ textField : "bacon",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ textVal.value = "";
+ promptArgs = ["TestTitle", "This is the prompt text.", textVal, null, {}];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.prompt.apply(null, promptArgs);
+ is(isOK, true, "checked expected retval");
+ is(textVal.value, "bacon", "checking expected text value");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: Prompt (ok, default text)");
+ state = {
+ msg : "This is the prompt text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : false,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "kittens",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : "textField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "ok",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ textVal.value = "kittens";
+ promptArgs = ["TestTitle", "This is the prompt text.", textVal, null, {}];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.prompt.apply(null, promptArgs);
+ is(isOK, true, "checked expected retval");
+ is(textVal.value, "kittens", "checking expected text value");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: Prompt (cancel, default text)");
+ state = {
+ msg : "This is the prompt text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : false,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "puppies",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : "textField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "cancel",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ textVal.value = "puppies";
+ promptArgs = ["TestTitle", "This is the prompt text.", textVal, null, {}];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.prompt.apply(null, promptArgs);
+ is(isOK, false, "checked expected retval");
+ is(textVal.value, "puppies", "checking expected text value");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: Prompt (cancel, default text modified)");
+ state = {
+ msg : "This is the prompt text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : false,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "puppies",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : "textField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick : "cancel",
+ textField : "bacon",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ textVal.value = "puppies";
+ promptArgs = ["TestTitle", "This is the prompt text.", textVal, null, {}];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.prompt.apply(null, promptArgs);
+ is(isOK, false, "checked expected retval");
+ is(textVal.value, "puppies", "checking expected text value");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: Prompt (ok, with checkbox)");
+ state = {
+ msg : "This is the prompt text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : false,
+ passHidden : true,
+ checkHidden : false,
+ textValue : "tribbles",
+ passValue : "",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "textField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "ok",
+ setCheckbox: true,
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ textVal.value = "tribbles";
+ checkVal.value = false;
+ promptArgs = ["TestTitle", "This is the prompt text.", textVal, "Check me out!", checkVal];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.prompt.apply(null, promptArgs);
+ is(isOK, true, "checked expected retval");
+ is(textVal.value, "tribbles", "checking expected text value");
+ is(checkVal.value, true, "expected checkbox setting");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: Prompt (cancel, with checkbox)");
+ state = {
+ msg : "This is the prompt text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : false,
+ passHidden : true,
+ checkHidden : false,
+ textValue : "tribbles",
+ passValue : "",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "textField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "cancel",
+ setCheckbox: true,
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ textVal.value = "tribbles";
+ checkVal.value = false;
+ promptArgs = ["TestTitle", "This is the prompt text.", textVal, "Check me out!", checkVal];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.prompt.apply(null, promptArgs);
+ is(isOK, false, "checked expected retval");
+ is(textVal.value, "tribbles", "checking expected text value");
+ is(checkVal.value, false, "expected checkbox setting");
+
+ yield promptDone;
+
+ // =====
+ // Just two tests for this, since password manager already tests this extensively.
+ info("Starting test: PromptUsernameAndPassword (ok)");
+ state = {
+ msg : "This is the pUAP text.",
+ title : "TestTitle",
+ iconClass : "authentication-icon question-icon",
+ titleHidden : true,
+ textHidden : false,
+ passHidden : false,
+ checkHidden : false,
+ textValue : "usr",
+ passValue : "ssh",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "textField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "ok",
+ setCheckbox: true,
+ textField: "newusr",
+ passField: "newssh",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ textVal.value = "usr";
+ passVal.value = "ssh";
+ checkVal.value = false;
+ promptArgs = ["TestTitle", "This is the pUAP text.", textVal, passVal, "Check me out!", checkVal];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.promptUsernameAndPassword.apply(null, promptArgs);
+ is(isOK, true, "checked expected retval");
+ is(textVal.value, "newusr", "checking expected text value");
+ is(passVal.value, "newssh", "checking expected pass value");
+ is(checkVal.value, true, "expected checkbox setting");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: PromptUsernameAndPassword (cancel)");
+ state = {
+ msg : "This is the pUAP text.",
+ title : "TestTitle",
+ iconClass : "authentication-icon question-icon",
+ titleHidden : true,
+ textHidden : false,
+ passHidden : false,
+ checkHidden : false,
+ textValue : "usr",
+ passValue : "ssh",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "textField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick : "cancel",
+ setCheckbox : true,
+ textField : "newusr",
+ passField : "newssh",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ textVal.value = "usr";
+ passVal.value = "ssh";
+ checkVal.value = false;
+ promptArgs = ["TestTitle", "This is the pUAP text.", textVal, passVal, "Check me out!", checkVal];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.promptUsernameAndPassword.apply(null, promptArgs);
+ is(isOK, false, "checked expected retval");
+ is(textVal.value, "usr", "checking expected text value");
+ is(passVal.value, "ssh", "checking expected pass value");
+ is(checkVal.value, false, "expected checkbox setting");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: PromptPassword (ok)");
+ state = {
+ msg : "This is the promptPassword text.",
+ title : "TestTitle",
+ iconClass : "authentication-icon question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : false,
+ checkHidden : false,
+ textValue : "",
+ passValue : "ssh",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "passField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick : "ok",
+ setCheckbox : true,
+ passField : "newssh",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ passVal.value = "ssh";
+ checkVal.value = false;
+ promptArgs = ["TestTitle", "This is the promptPassword text.", passVal, "Check me out!", checkVal];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.promptPassword.apply(null, promptArgs);
+ is(isOK, true, "checked expected retval");
+ is(passVal.value, "newssh", "checking expected pass value");
+ is(checkVal.value, true, "expected checkbox setting");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: PromptPassword (cancel)");
+ state = {
+ msg : "This is the promptPassword text.",
+ title : "TestTitle",
+ iconClass : "authentication-icon question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : false,
+ checkHidden : false,
+ textValue : "",
+ passValue : "ssh",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "passField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick : "cancel",
+ setCheckbox : true,
+ passField : "newssh",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ passVal.value = "ssh";
+ checkVal.value = false;
+ promptArgs = ["TestTitle", "This is the promptPassword text.", passVal, "Check me out!", checkVal];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ isOK = prompter.promptPassword.apply(null, promptArgs);
+ is(isOK, false, "checked expected retval");
+ is(passVal.value, "ssh", "checking expected pass value");
+ is(checkVal.value, false, "expected checkbox setting");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: ConfirmEx (ok/cancel, ok)");
+ state = {
+ msg : "This is the confirmEx text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : "button0",
+ defButton : "button0",
+ butt0Label : "OK",
+ butt1Label : "Cancel",
+ };
+ action = {
+ buttonClick: "ok",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ flags = Ci.nsIPromptService.STD_OK_CANCEL_BUTTONS;
+ promptArgs = ["TestTitle", "This is the confirmEx text.", flags, null, null, null, null, {}];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ clickedButton = prompter.confirmEx.apply(null, promptArgs);
+ is(clickedButton, 0, "checked expected button num click");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: ConfirmEx (yes/no, cancel)");
+ state = {
+ msg : "This is the confirmEx text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : "button0",
+ defButton : "button0",
+ butt0Label : "Yes",
+ butt1Label : "No",
+ };
+ action = {
+ buttonClick: "cancel",
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ flags = Ci.nsIPromptService.STD_YES_NO_BUTTONS;
+ promptArgs = ["TestTitle", "This is the confirmEx text.", flags, null, null, null, null, {}];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ clickedButton = prompter.confirmEx.apply(null, promptArgs);
+ is(clickedButton, 1, "checked expected button num click");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: ConfirmEx (buttons from args, checkbox, ok)");
+ state = {
+ msg : "This is the confirmEx text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : false,
+ textValue : "",
+ passValue : "",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "button0",
+ defButton : "button0",
+ butt0Label : "butt0",
+ butt1Label : "butt1",
+ butt2Label : "butt2",
+ };
+ action = {
+ buttonClick: "ok",
+ setCheckbox: true,
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ let b = Ci.nsIPromptService.BUTTON_TITLE_IS_STRING;
+ flags = b * Ci.nsIPromptService.BUTTON_POS_2 +
+ b * Ci.nsIPromptService.BUTTON_POS_1 +
+ b * Ci.nsIPromptService.BUTTON_POS_0;
+ checkVal.value = false;
+ promptArgs = ["TestTitle", "This is the confirmEx text.", flags,
+ "butt0", "butt1", "butt2", "Check me out!", checkVal];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ clickedButton = prompter.confirmEx.apply(null, promptArgs);
+ is(clickedButton, 0, "checked expected button num click");
+ is(checkVal.value, true, "expected checkbox setting");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: ConfirmEx (buttons from args, checkbox, cancel)");
+ state = {
+ msg : "This is the confirmEx text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : false,
+ textValue : "",
+ passValue : "",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "button1", // Default changed!
+ defButton : "button1",
+ butt0Label : "butt0",
+ butt1Label : "butt1",
+ butt2Label : "butt2",
+ };
+ action = {
+ buttonClick: "cancel",
+ setCheckbox: true,
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ b = Ci.nsIPromptService.BUTTON_TITLE_IS_STRING;
+ flags = b * Ci.nsIPromptService.BUTTON_POS_2 +
+ b * Ci.nsIPromptService.BUTTON_POS_1 +
+ b * Ci.nsIPromptService.BUTTON_POS_0;
+ flags ^= Ci.nsIPromptService.BUTTON_POS_1_DEFAULT;
+ checkVal.value = false;
+ promptArgs = ["TestTitle", "This is the confirmEx text.", flags,
+ "butt0", "butt1", "butt2", "Check me out!", checkVal];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ clickedButton = prompter.confirmEx.apply(null, promptArgs);
+ is(clickedButton, 1, "checked expected button num click");
+ is(checkVal.value, true, "expected checkbox setting");
+
+ yield promptDone;
+
+ // =====
+ info("Starting test: ConfirmEx (buttons from args, checkbox, button3)");
+ state = {
+ msg : "This is the confirmEx text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : false,
+ textValue : "",
+ passValue : "",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "button2", // Default changed!
+ defButton : "button2",
+ butt0Label : "butt0",
+ butt1Label : "butt1",
+ butt2Label : "butt2",
+ };
+ action = {
+ buttonClick: 2,
+ setCheckbox: true,
+ };
+
+ promptDone = handlePrompt(state, action);
+
+ b = Ci.nsIPromptService.BUTTON_TITLE_IS_STRING;
+ flags = b * Ci.nsIPromptService.BUTTON_POS_2 +
+ b * Ci.nsIPromptService.BUTTON_POS_1 +
+ b * Ci.nsIPromptService.BUTTON_POS_0;
+ flags ^= Ci.nsIPromptService.BUTTON_POS_2_DEFAULT;
+ checkVal.value = false;
+ promptArgs = ["TestTitle", "This is the confirmEx text.", flags,
+ "butt0", "butt1", "butt2", "Check me out!", checkVal];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ clickedButton = prompter.confirmEx.apply(null, promptArgs);
+ is(clickedButton, 2, "checked expected button num click");
+ is(checkVal.value, true, "expected checkbox setting");
+
+ yield promptDone;
+
+ // =====
+ // (skipped for E10S and tabmodal tests: window is required)
+ info("Starting test: Alert, no window");
+ state = {
+ msg : "This is the alert text.",
+ title : "TestTitle",
+ iconClass : "alert-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : "button0",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick: "ok",
+ };
+ if (!isTabModal && !isE10S) {
+ promptDone = handlePrompt(state, action);
+
+ promptArgs = ["TestTitle", "This is the alert text."];
+ if (usePromptService)
+ promptArgs.unshift(null);
+ prompter.alert.apply(null, promptArgs);
+
+ yield promptDone;
+ }
+
+
+ // =====
+ // (skipped for tabmodal tests: delay not supported)
+ info("Starting test: ConfirmEx (delay, ok)");
+ state = {
+ msg : "This is the confirmEx delay text.",
+ title : "TestTitle",
+ iconClass : "question-icon",
+ titleHidden : true,
+ textHidden : true,
+ passHidden : true,
+ checkHidden : true,
+ textValue : "",
+ passValue : "",
+ checkMsg : "",
+ checked : false,
+ focused : null, // nothing focused until after delay fires
+ defButton : "button0",
+ butt0Label : "OK",
+ butt1Label : "Cancel",
+ butt0Disabled: true,
+ };
+
+ // OS X doesn't initially focus the button, but rather the infoBody.
+ // The focus stays there even after the button-enable delay has fired.
+ if (isOSX)
+ state.focused = "infoBody";
+
+ action = {
+ buttonClick: "pollOK",
+ };
+ if (!isTabModal) {
+ promptDone = handlePrompt(state, action);
+
+ flags = (Ci.nsIPromptService.STD_OK_CANCEL_BUTTONS | Ci.nsIPromptService.BUTTON_DELAY_ENABLE);
+ promptArgs = ["TestTitle", "This is the confirmEx delay text.", flags, null, null, null, null, {}];
+ if (usePromptService)
+ promptArgs.unshift(window);
+ clickedButton = prompter.confirmEx.apply(null, promptArgs);
+ is(clickedButton, 0, "checked expected button num click");
+
+ yield promptDone;
+ }
+
+ // promptAuth already tested via password manager but do a few specific things here.
+ var channel = NetUtil.newChannel({
+ uri: "http://example.com",
+ loadUsingSystemPrincipal: true
+ });
+
+ var level = Ci.nsIAuthPrompt2.LEVEL_NONE;
+ var authinfo = {
+ username : "",
+ password : "",
+ domain : "",
+ flags : Ci.nsIAuthInformation.AUTH_HOST,
+ authenticationScheme : "basic",
+ realm : ""
+ };
+
+
+ // =====
+ // (promptAuth is only accessible from the prompt service)
+ info("Starting test: promptAuth with empty realm");
+ state = {
+ msg : 'http://example.com is requesting your username and password.',
+ title : "TestTitle",
+ iconClass : "authentication-icon question-icon",
+ titleHidden : true,
+ textHidden : false,
+ passHidden : false,
+ checkHidden : false,
+ textValue : "",
+ passValue : "",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "textField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick : "ok",
+ setCheckbox : true,
+ textField : "username",
+ passField : "password",
+ };
+ if (usePromptService) {
+ promptDone = handlePrompt(state, action);
+
+ checkVal.value = false;
+ isOK = prompter.promptAuth(window, channel, level, authinfo, "Check me out!", checkVal);
+ is(isOK, true, "checked expected retval");
+ is(authinfo.username, "username", "checking filled username");
+ is(authinfo.password, "password", "checking filled password");
+ is(checkVal.value, true, "expected checkbox setting");
+
+ yield promptDone;
+ }
+
+
+ // =====
+ // (promptAuth is only accessible from the prompt service)
+ info("Starting test: promptAuth with long realm");
+ state = {
+ msg : 'http://example.com is requesting your username and password. The site ' +
+ 'says: \u201cabcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi ' +
+ 'abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi abcdefghi ' +
+ 'abcdefghi \u2026\u201d',
+ title : "TestTitle",
+ iconClass : "authentication-icon question-icon",
+ titleHidden : true,
+ textHidden : false,
+ passHidden : false,
+ checkHidden : false,
+ textValue : "",
+ passValue : "",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "textField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick : "ok",
+ setCheckbox : true,
+ textField : "username",
+ passField : "password",
+ };
+ if (usePromptService) {
+ promptDone = handlePrompt(state, action);
+
+ checkVal.value = false;
+ var longString = "";
+ for (var i = 0; i < 20; i++)
+ longString += "abcdefghi "; // 200 chars long
+ authinfo.realm = longString;
+ authinfo.username = "";
+ authinfo.password = "";
+ isOK = prompter.promptAuth(window, channel, level, authinfo, "Check me out!", checkVal);
+ is(isOK, true, "checked expected retval");
+ is(authinfo.username, "username", "checking filled username");
+ is(authinfo.password, "password", "checking filled password");
+ is(checkVal.value, true, "expected checkbox setting");
+
+ yield promptDone;
+ }
+
+ info("Starting test: promptAuth for a cross-origin and a empty realm");
+ authinfo = {
+ username : "",
+ password : "",
+ domain : "",
+ flags : Ci. nsIAuthInformation.AUTH_HOST |
+ Ci.nsIAuthInformation.CROSS_ORIGIN_SUB_RESOURCE,
+ authenticationScheme : "basic",
+ realm : ""
+ }
+ state = {
+ msg : 'http://example.com is requesting your username and password. ' +
+ 'WARNING: Your password will not be sent to the website you are currently visiting!',
+ title : "TestTitle",
+ iconClass : "authentication-icon question-icon",
+ titleHidden : true,
+ textHidden : false,
+ passHidden : false,
+ checkHidden : false,
+ textValue : "",
+ passValue : "",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "textField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick : "ok",
+ setCheckbox : false,
+ textField : "username",
+ passField : "password",
+ };
+ if (usePromptService) {
+ promptDone = handlePrompt(state, action);
+ checkVal.value = false;
+ isOK = prompter.promptAuth(window, channel, level, authinfo, "Check me out!", checkVal);
+ is(isOK, true, "checked expected retval");
+ is(authinfo.username, "username", "checking filled username");
+ is(authinfo.password, "password", "checking filled password");
+ is(checkVal.value, false, "expected checkbox setting");
+
+ yield promptDone;
+ }
+
+ info("Starting test: promptAuth for a cross-origin with realm");
+ authinfo = {
+ username : "",
+ password : "",
+ domain : "",
+ flags : Ci. nsIAuthInformation.AUTH_HOST | Ci.nsIAuthInformation.CROSS_ORIGIN_SUB_RESOURCE,
+ authenticationScheme : "basic",
+ realm : "Something!!!"
+ }
+ state = {
+ msg : 'http://example.com is requesting your username and password. ' +
+ 'WARNING: Your password will not be sent to the website you are currently visiting!',
+ title : "TestTitle",
+ iconClass : "authentication-icon question-icon",
+ titleHidden : true,
+ textHidden : false,
+ passHidden : false,
+ checkHidden : false,
+ textValue : "",
+ passValue : "",
+ checkMsg : "Check me out!",
+ checked : false,
+ focused : "textField",
+ defButton : "button0",
+ };
+ action = {
+ buttonClick : "ok",
+ setCheckbox : false,
+ textField : "username",
+ passField : "password",
+ };
+ if (usePromptService) {
+ promptDone = handlePrompt(state, action);
+
+ checkVal.value = false;
+ isOK = prompter.promptAuth(window, channel, level, authinfo, "Check me out!", checkVal);
+ is(isOK, true, "checked expected retval");
+ is(authinfo.username, "username", "checking filled username");
+ is(authinfo.password, "password", "checking filled password");
+ is(checkVal.value, false, "expected checkbox setting");
+
+ yield promptDone;
+ }
+}
+
+let usePromptService;
+
+/*
+ * Run the body of the 3 times:
+ * - 1st pass: with window-modal prompts, using nsIPromptService
+ * - 2nd pass: still window-modal, using nsIPrompt directly (via nsIPromptFactory)
+ * - 3rd pass: with tab-modal prompts. Can't opt into these via * nsIPromptService.
+ */
+
+add_task(function* runPromptTests() {
+ info("Process type: " + SpecialPowers.Services.appinfo.processType);
+
+ isTabModal = false; usePromptService = true;
+ info("Running tests with: isTabModal=" + isTabModal + ", usePromptService=" + usePromptService);
+ yield* runTests();
+
+ isTabModal = false; usePromptService = false;
+ info("Running tests with: isTabModal=" + isTabModal + ", usePromptService=" + usePromptService);
+ yield* runTests();
+
+ if (SpecialPowers.getBoolPref("prompts.tab_modal.enabled")) {
+ isTabModal = true; usePromptService = false;
+ info("Running tests with: isTabModal=" + isTabModal + ", usePromptService=" + usePromptService);
+ yield* runTests();
+ }
+});
+
+</script>
+</pre>
+</body>
+</html>