mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
299 lines
9.5 KiB
HTML
299 lines
9.5 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=248970
|
|
-->
|
|
<head>
|
|
<title>Test for Bug 248970</title>
|
|
<script type="application/javascript"
|
|
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="text/javascript" src="notification_common.js"></script>
|
|
<link rel="stylesheet" type="text/css"
|
|
href="chrome://mochikit/content/tests/SimpleTest/test.css">
|
|
</head>
|
|
<body>
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=248970">Mozilla Bug 248970</a>
|
|
<p id="display"></p>
|
|
<pre id="test">
|
|
<script class="testbody" type="text/javascript">
|
|
|
|
/** Test for Bug 248970 **/
|
|
// based on test_notifications.html
|
|
|
|
const Ci = Components.interfaces;
|
|
const Cc = Components.classes;
|
|
const Cr = Components.results;
|
|
|
|
var testpath = "/tests/toolkit/components/passwordmgr/test/";
|
|
var prefix = "http://test2.example.com" + testpath;
|
|
var subtests = [
|
|
"subtst_privbrowsing_1.html", // 1
|
|
"subtst_privbrowsing_1.html", // 2
|
|
"subtst_privbrowsing_1.html", // 3
|
|
"subtst_privbrowsing_2.html", // 4
|
|
"subtst_privbrowsing_2.html", // 5
|
|
"subtst_privbrowsing_2.html", // 6
|
|
"subtst_privbrowsing_3.html", // 7
|
|
"subtst_privbrowsing_3.html", // 8
|
|
"subtst_privbrowsing_4.html", // 9
|
|
"subtst_privbrowsing_3.html" // 10
|
|
];
|
|
|
|
var testNum = 0;
|
|
function loadNextTest() {
|
|
// run the initialization code for each test
|
|
switch (++ testNum) {
|
|
case 1:
|
|
popupNotifications = normalWindowPopupNotifications;
|
|
iframe = normalWindowIframe;
|
|
break;
|
|
|
|
case 2:
|
|
popupNotifications = privateWindowPopupNotifications;
|
|
iframe = privateWindowIframe;
|
|
break;
|
|
|
|
case 3:
|
|
popupNotifications = normalWindowPopupNotifications;
|
|
iframe = normalWindowIframe;
|
|
break;
|
|
|
|
case 4:
|
|
pwmgr.addLogin(login);
|
|
break;
|
|
|
|
case 5:
|
|
popupNotifications = privateWindowPopupNotifications;
|
|
iframe = privateWindowIframe;
|
|
break;
|
|
|
|
case 6:
|
|
popupNotifications = normalWindowPopupNotifications;
|
|
iframe = normalWindowIframe;
|
|
break;
|
|
|
|
case 7:
|
|
pwmgr.addLogin(login);
|
|
break;
|
|
|
|
case 8:
|
|
popupNotifications = privateWindowPopupNotifications;
|
|
iframe = privateWindowIframe;
|
|
break;
|
|
|
|
case 9:
|
|
break;
|
|
|
|
case 10:
|
|
popupNotifications = normalWindowPopupNotifications;
|
|
iframe = normalWindowIframe;
|
|
break;
|
|
|
|
default:
|
|
ok(false, "Unexpected call to loadNextTest for test #" + testNum);
|
|
}
|
|
|
|
ok(true, "Starting test #" + testNum);
|
|
iframe.src = prefix + subtests[testNum-1];
|
|
}
|
|
|
|
|
|
function checkTest() {
|
|
var popup;
|
|
|
|
switch (testNum) {
|
|
case 1:
|
|
// run outside of private mode, popup notification should appear
|
|
popup = getPopup(popupNotifications, "password-save");
|
|
ok(popup, "got popup notification");
|
|
popup.remove();
|
|
break;
|
|
|
|
case 2:
|
|
// run inside of private mode, popup notification should not appear
|
|
popup = getPopup(popupNotifications, "password-save");
|
|
ok(!popup, "checking for no popup notification");
|
|
break;
|
|
|
|
case 3:
|
|
// run outside of private mode, popup notification should appear
|
|
popup = getPopup(popupNotifications, "password-save");
|
|
ok(popup, "got popup notification");
|
|
popup.remove();
|
|
break;
|
|
|
|
case 4:
|
|
// run outside of private mode, popup notification should appear
|
|
popup = getPopup(popupNotifications, "password-change");
|
|
ok(popup, "got popup notification");
|
|
popup.remove();
|
|
break;
|
|
|
|
case 5:
|
|
// run inside of private mode, popup notification should not appear
|
|
popup = getPopup(popupNotifications, "password-change");
|
|
ok(!popup, "checking for no popup notification");
|
|
break;
|
|
|
|
case 6:
|
|
// run outside of private mode, popup notification should appear
|
|
popup = getPopup(popupNotifications, "password-change");
|
|
ok(popup, "got popup notification");
|
|
popup.remove();
|
|
pwmgr.removeLogin(login);
|
|
break;
|
|
|
|
case 7:
|
|
// verify that the user/pass pair was autofilled
|
|
var gotUser = iframe.contentDocument.getElementById("user").textContent;
|
|
var gotPass = iframe.contentDocument.getElementById("pass").textContent;
|
|
is(gotUser, "notifyu1", "Checking submitted username");
|
|
is(gotPass, "notifyp1", "Checking submitted password");
|
|
break;
|
|
|
|
case 8:
|
|
// verify that the user/pass pair was not autofilled
|
|
var gotUser = iframe.contentDocument.getElementById("user").textContent;
|
|
var gotPass = iframe.contentDocument.getElementById("pass").textContent;
|
|
is(gotUser, "", "Checking submitted username");
|
|
is(gotPass, "", "Checking submitted password");
|
|
break;
|
|
|
|
case 9:
|
|
// verify that the user/pass pair was available for autocomplete
|
|
var gotUser = iframe.contentDocument.getElementById("user").textContent;
|
|
var gotPass = iframe.contentDocument.getElementById("pass").textContent;
|
|
is(gotUser, "notifyu1", "Checking submitted username");
|
|
is(gotPass, "notifyp1", "Checking submitted password");
|
|
break;
|
|
|
|
case 10:
|
|
// verify that the user/pass pair was autofilled
|
|
var gotUser = iframe.contentDocument.getElementById("user").textContent;
|
|
var gotPass = iframe.contentDocument.getElementById("pass").textContent;
|
|
is(gotUser, "notifyu1", "Checking submitted username");
|
|
is(gotPass, "notifyp1", "Checking submitted password");
|
|
pwmgr.removeLogin(login);
|
|
break;
|
|
|
|
default:
|
|
ok(false, "Unexpected call to checkTest for test #" + testNum);
|
|
|
|
}
|
|
}
|
|
|
|
var mainWindow = window.QueryInterface(Ci.nsIInterfaceRequestor)
|
|
.getInterface(Ci.nsIWebNavigation)
|
|
.QueryInterface(Ci.nsIDocShellTreeItem)
|
|
.rootTreeItem
|
|
.QueryInterface(Ci.nsIInterfaceRequestor)
|
|
.getInterface(Ci.nsIDOMWindow);
|
|
var contentPage = "http://mochi.test:8888/tests/toolkit/components/passwordmgr/test/privbrowsing_perwindowpb_iframe.html";
|
|
var testWindows = [];
|
|
|
|
function testOnWindow(aIsPrivate, aCallback) {
|
|
var win = mainWindow.OpenBrowserWindow({private: aIsPrivate});
|
|
win.addEventListener("load", function onLoad() {
|
|
win.removeEventListener("load", onLoad, false);
|
|
win.addEventListener("DOMContentLoaded", function onInnerLoad() {
|
|
if (win.content.location.href != contentPage) {
|
|
win.gBrowser.loadURI(contentPage);
|
|
return;
|
|
}
|
|
win.removeEventListener("DOMContentLoaded", onInnerLoad, true);
|
|
|
|
win.content.addEventListener('load', function innerLoad2() {
|
|
win.content.removeEventListener('load', innerLoad2, false);
|
|
testWindows.push(win);
|
|
SimpleTest.executeSoon(function() { aCallback(win); });
|
|
}, false, true);
|
|
}, true);
|
|
SimpleTest.executeSoon(function() { win.gBrowser.loadURI(contentPage); });
|
|
}, true);
|
|
}
|
|
|
|
var ignoreLoad = false;
|
|
function handleLoad(aEvent) {
|
|
// ignore every other load event ... We get one for loading the subtest (which
|
|
// we want to ignore), and another when the subtest's form submits itself
|
|
// (which we want to handle, to start the next test).
|
|
ignoreLoad = !ignoreLoad;
|
|
if (ignoreLoad) {
|
|
ok(true, "Ignoring load of subtest #" + testNum);
|
|
return;
|
|
}
|
|
ok(true, "Processing submission of subtest #" + testNum);
|
|
|
|
checkTest();
|
|
|
|
if (testNum < subtests.length) {
|
|
loadNextTest();
|
|
} else {
|
|
ok(true, "private browsing notification tests finished.");
|
|
|
|
testWindows.forEach(function(aWin) {
|
|
aWin.close();
|
|
});
|
|
|
|
SimpleTest.finish();
|
|
}
|
|
}
|
|
|
|
var pwmgr = Cc["@mozilla.org/login-manager;1"].
|
|
getService(Ci.nsILoginManager);
|
|
ok(pwmgr != null, "Access pwmgr");
|
|
|
|
// We need to make sure no logins have been stored by previous tests
|
|
// for forms in |url|, otherwise the change password notification
|
|
// would turn into a prompt, and the test will fail.
|
|
var url = "http://test2.example.com";
|
|
is(pwmgr.countLogins(url, "", null), 0, "No logins should be stored for " + url);
|
|
|
|
var nsLoginInfo = new Components.Constructor("@mozilla.org/login-manager/loginInfo;1",
|
|
Ci.nsILoginInfo, "init");
|
|
var login = new nsLoginInfo(url, url, null, "notifyu1", "notifyp1", "user", "pass");
|
|
|
|
var normalWindow;
|
|
var privateWindow;
|
|
|
|
var iframe;
|
|
var normalWindowIframe;
|
|
var privateWindowIframe;
|
|
|
|
var popupNotifications;
|
|
var normalWindowPopupNotifications;
|
|
var privateWindowPopupNotifications;
|
|
|
|
testOnWindow(false, function(aWin) {
|
|
var selectedBrowser = aWin.gBrowser.selectedBrowser;
|
|
normalWindowIframe = selectedBrowser.contentDocument.getElementById("iframe");
|
|
normalWindowIframe.onload = handleLoad;
|
|
selectedBrowser.focus();
|
|
|
|
normalWindowPopupNotifications = getPopupNotifications(selectedBrowser.contentWindow.top);
|
|
ok(normalWindowPopupNotifications, "Got popupNotifications in normal window");
|
|
// ignore the first load for this window;
|
|
ignoreLoad = false;
|
|
|
|
testOnWindow(true, function(aPrivateWin) {
|
|
selectedBrowser = aPrivateWin.gBrowser.selectedBrowser;
|
|
privateWindowIframe = selectedBrowser.contentDocument.getElementById("iframe");
|
|
privateWindowIframe.onload = handleLoad;
|
|
selectedBrowser.focus();
|
|
|
|
privateWindowPopupNotifications = getPopupNotifications(selectedBrowser.contentWindow.top);
|
|
ok(privateWindowPopupNotifications, "Got popupNotifications in private window");
|
|
// ignore the first load for this window;
|
|
ignoreLoad = false;
|
|
|
|
SimpleTest.executeSoon(loadNextTest);
|
|
});
|
|
});
|
|
|
|
SimpleTest.waitForExplicitFinish();
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|
|
|