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
|
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
/**
* Test for Bug 1109146.
* The tests opens a new tab and alt + clicks to download files
* and confirms those files are on the download list.
*
* The difference between this and the test "browser_contentAreaClick.js" is that
* the code path in e10s uses ContentClick.jsm instead of browser.js::contentAreaClick() util.
*/
"use strict";
XPCOMUtils.defineLazyModuleGetter(this, "Downloads",
"resource://gre/modules/Downloads.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "PlacesTestUtils",
"resource://testing-common/PlacesTestUtils.jsm");
function setup() {
gPrefService.setBoolPref("browser.altClickSave", true);
let testPage =
'data:text/html,' +
'<p><a id="commonlink" href="http://mochi.test/moz/">Common link</a></p>' +
'<p><math id="mathxlink" xmlns="http://www.w3.org/1998/Math/MathML" xlink:type="simple" xlink:href="http://mochi.test/moz/"><mtext>MathML XLink</mtext></math></p>' +
'<p><svg id="svgxlink" xmlns="http://www.w3.org/2000/svg" width="100px" height="50px" version="1.1"><a xlink:type="simple" xlink:href="http://mochi.test/moz/"><text transform="translate(10, 25)">SVG XLink</text></a></svg></p>';
return BrowserTestUtils.openNewForegroundTab(gBrowser, testPage);
}
function* clean_up() {
// Remove downloads.
let downloadList = yield Downloads.getList(Downloads.ALL);
let downloads = yield downloadList.getAll();
for (let download of downloads) {
yield downloadList.remove(download);
yield download.finalize(true);
}
// Remove download history.
yield PlacesTestUtils.clearHistory();
gPrefService.clearUserPref("browser.altClickSave");
yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
}
add_task(function* test_alt_click()
{
yield setup();
let downloadList = yield Downloads.getList(Downloads.ALL);
let downloads = [];
let downloadView;
// When 1 download has been attempted then resolve the promise.
let finishedAllDownloads = new Promise( (resolve) => {
downloadView = {
onDownloadAdded: function (aDownload) {
downloads.push(aDownload);
resolve();
},
};
});
yield downloadList.addView(downloadView);
yield BrowserTestUtils.synthesizeMouseAtCenter("#commonlink", {altKey: true}, gBrowser.selectedBrowser);
// Wait for all downloads to be added to the download list.
yield finishedAllDownloads;
yield downloadList.removeView(downloadView);
is(downloads.length, 1, "1 downloads");
is(downloads[0].source.url, "http://mochi.test/moz/", "Downloaded #commonlink element");
yield* clean_up();
});
add_task(function* test_alt_click_on_xlinks()
{
yield setup();
let downloadList = yield Downloads.getList(Downloads.ALL);
let downloads = [];
let downloadView;
// When all 2 downloads have been attempted then resolve the promise.
let finishedAllDownloads = new Promise( (resolve) => {
downloadView = {
onDownloadAdded: function (aDownload) {
downloads.push(aDownload);
if (downloads.length == 2) {
resolve();
}
},
};
});
yield downloadList.addView(downloadView);
yield BrowserTestUtils.synthesizeMouseAtCenter("#mathxlink", {altKey: true}, gBrowser.selectedBrowser);
yield BrowserTestUtils.synthesizeMouseAtCenter("#svgxlink", {altKey: true}, gBrowser.selectedBrowser);
// Wait for all downloads to be added to the download list.
yield finishedAllDownloads;
yield downloadList.removeView(downloadView);
is(downloads.length, 2, "2 downloads");
is(downloads[0].source.url, "http://mochi.test/moz/", "Downloaded #mathxlink element");
is(downloads[1].source.url, "http://mochi.test/moz/", "Downloaded #svgxlink element");
yield* clean_up();
});
|