diff options
Diffstat (limited to 'toolkit/components/prompts/test/test_modal_prompts.html')
-rw-r--r-- | toolkit/components/prompts/test/test_modal_prompts.html | 1184 |
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> |