summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/general/browser_contentAltClick.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/general/browser_contentAltClick.js')
-rw-r--r--browser/base/content/test/general/browser_contentAltClick.js107
1 files changed, 107 insertions, 0 deletions
diff --git a/browser/base/content/test/general/browser_contentAltClick.js b/browser/base/content/test/general/browser_contentAltClick.js
new file mode 100644
index 000000000..1a3b0fccc
--- /dev/null
+++ b/browser/base/content/test/general/browser_contentAltClick.js
@@ -0,0 +1,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();
+});