1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
"use strict";
if (gFissionBrowser) {
addCoopTask(
"browser_454908_sample.html",
test_dont_save_passwords,
HTTPSROOT
);
}
addNonCoopTask("browser_454908_sample.html", test_dont_save_passwords, ROOT);
addNonCoopTask(
"browser_454908_sample.html",
test_dont_save_passwords,
HTTPROOT
);
addNonCoopTask(
"browser_454908_sample.html",
test_dont_save_passwords,
HTTPSROOT
);
const PASS = "pwd-" + Math.random();
/**
* Bug 454908 - Don't save/restore values of password fields.
*/
async function test_dont_save_passwords(aURL) {
// Make sure we do save form data.
Services.prefs.clearUserPref("browser.sessionstore.privacy_level");
// Add a tab with a password field.
let tab = BrowserTestUtils.addTab(gBrowser, aURL);
let browser = tab.linkedBrowser;
await promiseBrowserLoaded(browser);
// Fill in some values.
let usernameValue = "User " + Math.random();
await setPropertyOfFormField(browser, "#username", "value", usernameValue);
await setPropertyOfFormField(browser, "#passwd", "value", PASS);
// Close and restore the tab.
await promiseRemoveTabAndSessionState(tab);
tab = ss.undoCloseTab(window, 0);
browser = tab.linkedBrowser;
await promiseTabRestored(tab);
// Check that password fields aren't saved/restored.
let username = await getPropertyOfFormField(browser, "#username", "value");
is(username, usernameValue, "username was saved/restored");
let passwd = await getPropertyOfFormField(browser, "#passwd", "value");
is(passwd, "", "password wasn't saved/restored");
// Write to disk and read our file.
await forceSaveState();
await promiseForEachSessionRestoreFile((state, key) =>
// Ensure that we have not saved our password.
ok(!state.includes(PASS), "password has not been written to file " + key)
);
// Cleanup.
gBrowser.removeTab(tab);
}
|