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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
/**
* Tests how the browser remembers the last download folder
* from download to download, with a particular emphasis
* on how it behaves when private browsing windows open.
*/
add_task(async function test_downloads_last_dir_toggle() {
let tmpDir = FileUtils.getDir("TmpD", [], true);
let dir1 = newDirectory();
registerCleanupFunction(function () {
Services.prefs.clearUserPref("browser.download.lastDir");
dir1.remove(true);
});
let win = await BrowserTestUtils.openNewBrowserWindow();
let gDownloadLastDir = new DownloadLastDir(win);
is(
typeof gDownloadLastDir,
"object",
"gDownloadLastDir should be a valid object"
);
is(
gDownloadLastDir.file,
null,
"gDownloadLastDir.file should be null to start with"
);
gDownloadLastDir.file = tmpDir;
is(
gDownloadLastDir.file.path,
tmpDir.path,
"LastDir should point to the temporary directory"
);
isnot(
gDownloadLastDir.file,
tmpDir,
"gDownloadLastDir.file should not be pointing to the tmpDir"
);
gDownloadLastDir.file = 1; // not an nsIFile
is(gDownloadLastDir.file, null, "gDownloadLastDir.file should be null");
gDownloadLastDir.file = tmpDir;
clearHistory();
is(gDownloadLastDir.file, null, "gDownloadLastDir.file should be null");
gDownloadLastDir.file = tmpDir;
await BrowserTestUtils.closeWindow(win);
info("Opening the first private window");
await testHelper({ private: true, expectedDir: tmpDir });
info("Opening a non-private window");
await testHelper({ private: false, expectedDir: tmpDir });
info("Opening a private window and setting download directory");
await testHelper({ private: true, setDir: dir1, expectedDir: dir1 });
info("Opening a non-private window and checking download directory");
await testHelper({ private: false, expectedDir: tmpDir });
info("Opening private window and clearing history");
await testHelper({ private: true, clearHistory: true, expectedDir: null });
info("Opening a non-private window and checking download directory");
await testHelper({ private: true, expectedDir: null });
});
/**
* Opens a new window and performs some test actions on it based
* on the options object that have been passed in.
*
* @param options (Object)
* An object with the following properties:
*
* clearHistory (bool, optional):
* Whether or not to simulate clearing session history.
* Defaults to false.
*
* setDir (nsIFile, optional):
* An nsIFile for setting the last download directory.
* If not set, the load download directory is not changed.
*
* expectedDir (nsIFile, expectedDir):
* An nsIFile for what we expect the last download directory
* should be. The nsIFile is not compared directly - only
* paths are compared. If expectedDir is not set, then the
* last download directory is expected to be null.
*
* @returns Promise
*/
async function testHelper(options) {
let win = await BrowserTestUtils.openNewBrowserWindow(options);
let gDownloadLastDir = new DownloadLastDir(win);
if (options.clearHistory) {
clearHistory();
}
if (options.setDir) {
gDownloadLastDir.file = options.setDir;
}
let expectedDir = options.expectedDir;
if (expectedDir) {
is(
gDownloadLastDir.file.path,
expectedDir.path,
"gDownloadLastDir should point to the expected last directory"
);
isnot(
gDownloadLastDir.file,
expectedDir,
"gDownloadLastDir.file should not be pointing to the last directory"
);
} else {
is(gDownloadLastDir.file, null, "gDownloadLastDir should be null");
}
gDownloadLastDir.cleanupPrivateFile();
await BrowserTestUtils.closeWindow(win);
}
|