Bug 1109146 - Write test to verify alt+click behaviour in e10s since the codepath is ContentClick.jsm instead of browser.js::contentAreaClick(). r=felipe
☠☠ backed out by 7e7d72948689 ☠ ☠
authorJimmy Wang <jimmyw22@gmail.com>
Fri, 13 May 2016 16:32:44 -0400
changeset 349471 77ed89a0e8ba90579e5ef93c24be7eb01350e004
parent 349470 65d2a173cb20c4e45e48163ae331d05907221899
child 349472 7e7d72948689b264f35e2cb81ba318bad63b3cd1
push id1230
push userjlund@mozilla.com
push dateMon, 31 Oct 2016 18:13:35 +0000
treeherdermozilla-release@5e06e3766db2 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersfelipe
bugs1109146
milestone50.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1109146 - Write test to verify alt+click behaviour in e10s since the codepath is ContentClick.jsm instead of browser.js::contentAreaClick(). r=felipe MozReview-Commit-ID: D1ith9Fc8IF
browser/base/content/test/general/browser.ini
browser/base/content/test/general/browser_contentAltClick.js
--- a/browser/base/content/test/general/browser.ini
+++ b/browser/base/content/test/general/browser.ini
@@ -275,16 +275,17 @@ tags = mcb
 skip-if = os == 'win'
 [browser_bug1064280_changeUrlInPinnedTab.js]
 [browser_accesskeys.js]
 [browser_clipboard.js]
 subsuite = clipboard
 [browser_clipboard_pastefile.js]
 [browser_contentAreaClick.js]
 skip-if = e10s # Clicks in content don't go through contentAreaClick with e10s.
+[browser_contentAltClick.js]
 [browser_contextmenu.js]
 subsuite = clipboard
 tags = fullscreen
 skip-if = toolkit == "gtk2" || toolkit == "gtk3" # disabled on Linux due to bug 513558
 [browser_contextmenu_input.js]
 skip-if = toolkit == "gtk2" || toolkit == "gtk3" # disabled on Linux due to bug 513558
 [browser_ctrlTab.js]
 [browser_datachoices_notification.js]
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/general/browser_contentAltClick.js
@@ -0,0 +1,97 @@
+/* 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");
+
+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(){
+  gBrowser.removeCurrentTab();
+  gPrefService.clearUserPref("browser.altClickSave");
+}
+
+add_task(function* test_alt_click()
+{
+  yield setup();
+
+  let downloadList = yield Downloads.getList(Downloads.ALL);
+  let downloads = [];
+  let downloadView;
+  // When the 1 download has been attempted then resolve the promise.
+  let finishedAllDownloads = new Promise( (resolve)=> {
+    downloadView = {
+      onDownloadAdded: function (aDownload) {
+        downloads.push(aDownload);
+        downloadList.remove(aDownload); // Remove from download list.
+        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;
+
+  is(downloads.length, 1, "1 downloads");
+  is(downloads[0].source.url, "http://mochi.test/moz/", "Downloaded #commonlink element");
+
+  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);
+        downloadList.remove(aDownload); // Remove from download list.
+        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;
+
+  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");
+
+  clean_up();
+});
\ No newline at end of file