merge fx-team to mozilla-central a=merge
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Tue, 08 Mar 2016 11:41:34 +0100
changeset 287039 05c087337043dd8e71cc27bdb5b9d55fd00aaa26
parent 287012 7a6ad98de34e7374188231aec6a50eff87781913 (current diff)
parent 287038 46296f1ef6a702846fb043f84c11d77cdc12532b (diff)
child 287063 45382cd656518b50757a032b253747b37a17762c
push id30063
push usercbook@mozilla.com
push dateTue, 08 Mar 2016 10:41:51 +0000
treeherdermozilla-central@05c087337043 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone48.0a1
first release with
nightly linux32
05c087337043 / 48.0a1 / 20160308030418 / files
nightly linux64
05c087337043 / 48.0a1 / 20160308030418 / files
nightly mac
05c087337043 / 48.0a1 / 20160308030418 / files
nightly win32
05c087337043 / 48.0a1 / 20160308030418 / files
nightly win64
05c087337043 / 48.0a1 / 20160308030418 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
merge fx-team to mozilla-central a=merge
browser/base/content/test/general/test_contextmenu_input.html
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -1398,18 +1398,17 @@ var BookmarkingUI = {
         document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul",
                                  "menuitem");
       item.setAttribute("label", title || uri);
       item.setAttribute("targetURI", uri);
       item.setAttribute("class", "menuitem-iconic menuitem-with-favicon bookmark-item " +
                                  extraCSSClass);
       item.addEventListener("command", onItemCommand);
       if (icon) {
-        let iconURL = "moz-anno:favicon:" + icon;
-        item.setAttribute("image", iconURL);
+        item.setAttribute("image", icon);
       }
       fragment.appendChild(item);
     }
     root.containerOpen = false;
     aHeaderItem.parentNode.insertBefore(fragment, aHeaderItem.nextSibling);
   },
 
   /**
--- a/browser/base/content/test/general/browser.ini
+++ b/browser/base/content/test/general/browser.ini
@@ -84,16 +84,17 @@ support-files =
   ssl_error_reports.sjs
   popup_blocker.html
   print_postdata.sjs
   redirect_bug623155.sjs
   searchSuggestionEngine.sjs
   searchSuggestionEngine.xml
   searchSuggestionEngine2.xml
   subtst_contextmenu.html
+  subtst_contextmenu_input.html
   test-mixedcontent-securityerrors.html
   test_bug435035.html
   test_bug462673.html
   test_bug628179.html
   test_bug839103.html
   test_bug959531.html
   test_process_flags_chrome.html
   test_wyciwyg_copying.html
@@ -289,16 +290,18 @@ skip-if = os == 'win'
 [browser_bug1064280_changeUrlInPinnedTab.js]
 [browser_bug1070778.js]
 [browser_accesskeys.js]
 [browser_canonizeURL.js]
 [browser_clipboard.js]
 [browser_contentAreaClick.js]
 [browser_contextmenu.js]
 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]
 skip-if = !datareporting
 [browser_devedition.js]
 [browser_devices_get_user_media.js]
 skip-if = buildapp == 'mulet' || (os == "linux" && debug) # linux: bug 976544
 [browser_devices_get_user_media_about_urls.js]
 skip-if = e10s # Bug 1071623
@@ -407,22 +410,22 @@ support-files =
 [browser_selectpopup.js]
 run-if = e10s
 [browser_selectTabAtIndex.js]
 [browser_ssl_error_reports.js]
 [browser_star_hsts.js]
 [browser_subframe_favicons_not_used.js]
 [browser_syncui.js]
 [browser_tabDrop.js]
-skip-if = buildapp == 'mulet' || e10s
+skip-if = buildapp == 'mulet'
 [browser_tabReorder.js]
 skip-if = buildapp == 'mulet'
 [browser_tabMatchesInAwesomebar.js]
 [browser_tabMatchesInAwesomebar_perwindowpb.js]
-skip-if = e10s || os == 'linux' # Bug 1093373, bug 1104755
+skip-if = os == 'linux' # Bug 1104755
 [browser_tab_detach_restore.js]
 [browser_tab_drag_drop_perwindow.js]
 skip-if = buildapp == 'mulet'
 [browser_tab_dragdrop.js]
 skip-if = buildapp == 'mulet' || (e10s && debug) # Bug 1150036: In e10s, content process crashes, main process leaks!
 [browser_tab_dragdrop2.js]
 skip-if = buildapp == 'mulet'
 [browser_tabbar_big_widgets.js]
--- a/browser/base/content/test/general/browser_contextmenu.js
+++ b/browser/base/content/test/general/browser_contextmenu.js
@@ -781,115 +781,16 @@ add_task(function* test_input_spell_fals
     ]
   );
 });
 
 add_task(function* test_cleanup() {
   gBrowser.removeCurrentTab();
 });
 
-let lastElementSelector = null;
-
-/**
- * Right-clicks on the element that matches `selector` and checks the
- * context menu that appears against the `menuItems` array.
- *
- * @param {String} selector
- *        A selector passed to querySelector to find
- *        the element that will be referenced.
- * @param {Array} menuItems
- *        An array of menuitem ids and their associated enabled state. A state
- *        of null means that it will be ignored. Ids of '---' are used for
- *        menuseparators.
- * @param {Object} options, optional
- *        skipFocusChange: don't move focus to the element before test, useful
- *                         if you want to delay spell-check initialization
- *        offsetX: horizontal mouse offset from the top-left corner of
- *                 the element, optional
- *        offsetY: vertical mouse offset from the top-left corner of the
- *                 element, optional
- *        centered: if true, mouse position is centered in element, defaults
- *                  to true if offsetX and offsetY are not provided
- *        waitForSpellCheck: wait until spellcheck is initialized before
- *                           starting test
- *        preCheckContextMenuFn: callback to run before opening menu
- *        postCheckContextMenuFn: callback to run after opening menu
- * @return {Promise} resolved after the test finishes
- */
-function* test_contextmenu(selector, menuItems, options={}) {
-  contextMenu = document.getElementById("contentAreaContextMenu");
-  is(contextMenu.state, "closed", "checking if popup is closed");
-
-  // Default to centered if no positioning is defined.
-  if (!options.offsetX && !options.offsetY) {
-    options.centered = true;
-  }
-
-  if (!options.skipFocusChange) {
-    yield ContentTask.spawn(gBrowser.selectedBrowser,
-                            {lastElementSelector, selector},
-                            function*({lastElementSelector, selector}) {
-      if (lastElementSelector) {
-        let lastElement = content.document.querySelector(lastElementSelector);
-        lastElement.blur();
-      }
-      let element = content.document.querySelector(selector);
-      element.focus();
-    });
-    lastElementSelector = selector;
-    info(`Moved focus to ${selector}`);
-  }
-
-  if (options.waitForSpellCheck) {
-    info("Waiting for spell check");
-    yield ContentTask.spawn(gBrowser.selectedBrowser, selector, function*(selector) {
-      let {onSpellCheck} = Cu.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm", {});
-      let element = content.document.querySelector(selector);
-      yield new Promise(resolve => onSpellCheck(element, resolve));
-      info("Spell check running");
-    });
-  }
-
-  if (options.preCheckContextMenuFn) {
-    yield options.preCheckContextMenuFn();
-    info("Completed preCheckContextMenuFn");
-  }
-
-  let awaitPopupShown = BrowserTestUtils.waitForEvent(contextMenu, "popupshown");
-  yield BrowserTestUtils.synthesizeMouse(selector, options.offsetX || 0, options.offsetY || 0, {
-      type: "contextmenu",
-      button: 2,
-      shiftkey: options.shiftkey,
-      centered: options.centered
-    },
-    gBrowser.selectedBrowser);
-  yield awaitPopupShown;
-  info("Popup Shown");
-
-  if (menuItems) {
-    if (Services.prefs.getBoolPref("devtools.inspector.enabled")) {
-      let inspectItems = ["---", null,
-                          "context-inspect", true];
-      menuItems = menuItems.concat(inspectItems);
-    }
-
-    checkContextMenu(menuItems);
-  }
-
-  let awaitPopupHidden = BrowserTestUtils.waitForEvent(contextMenu, "popuphidden");
-
-  if (options.postCheckContextMenuFn) {
-    yield options.postCheckContextMenuFn();
-    info("Completed postCheckContextMenuFn");
-  }
-
-  contextMenu.hidePopup();
-  yield awaitPopupHidden;
-}
-
 /**
  * Selects the text of the element that matches the provided `selector`
  *
  * @param {String} selector
  *        A selector passed to querySelector to find
  *        the element that will be referenced.
  */
 function* selectText(selector) {
rename from browser/base/content/test/general/test_contextmenu_input.html
rename to browser/base/content/test/general/browser_contextmenu_input.js
--- a/browser/base/content/test/general/test_contextmenu_input.html
+++ b/browser/base/content/test/general/browser_contextmenu_input.js
@@ -1,364 +1,249 @@
-<!DOCTYPE HTML>
-<html>
-<head>
-  <title>Tests for browser context menu</title>
-  <script type="text/javascript" src="/MochiKit/packed.js"></script>
-  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
-  <script type="text/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
-  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-Browser context menu tests for input.
-<p id="display"></p>
-
-<div id="content">
-</div>
+"use strict";
 
-<pre id="test">
-<script type="text/javascript" src="contextmenu_common.js"></script>
-<script class="testbody" type="text/javascript">
-
-const Ci = SpecialPowers.Ci;
+let contextMenu;
+add_task(function* test_setup() {
+  const example_base = "http://example.com/browser/browser/base/content/test/general/";
+  const url = example_base + "subtst_contextmenu_input.html";
+  yield BrowserTestUtils.openNewForegroundTab(gBrowser, url);
 
-/*
- * runTest
- *
- * Called by a popupshowing event handler. Each test checks for expected menu
- * contents, closes the popup, and finally triggers the popup on a new element
- * (thus kicking off another cycle).
- *
- */
-function runTest(testNum) {
-  ok(true, "Starting test #" + testNum);
-
-  switch (testNum) {
-    case 1:
-        openContextMenuFor(input); // Invoke context menu for next test.
-        break;
+  const chrome_base = "chrome://mochitests/content/browser/browser/base/content/test/general/";
+  const contextmenu_common = chrome_base + "contextmenu_common.js";
+  Services.scriptloader.loadSubScript(contextmenu_common, this);
+});
 
-    case 2:
-        // Context menu for text input field.
-        checkContextMenu(["context-undo",        false,
-                          "---",                 null,
-                          "context-cut",         true,
-                          "context-copy",        true,
-                          "context-paste",       null, // ignore clipboard state
-                          "context-delete",      false,
-                          "---",                 null,
-                          "context-selectall",   false,
-                          "---",                 null,
-                          "spell-check-enabled", true,
-                          "---",                 null,
-                          "context-inspect",     true]);
-        closeContextMenu();
-        input.setAttribute('spellcheck', 'true');
-        // Invoke context menu for next test and wait for spell check to finish
-        openContextMenuFor(input, false, true);
-        break;
-
-    case 3:
-        var value = false;
-        // Context menu for spell-check input.
-        checkContextMenu(["context-undo",        value,
-                          "---",                 null,
-                          "context-cut",         true,
-                          "context-copy",        true,
-                          "context-paste",       null, // ignore clipboard state
-                          "context-delete",      value,
-                          "---",                 null,
-                          "context-selectall",   value,
-                          "---",                 null,
-                          "spell-check-enabled", true,
-                          "spell-dictionaries",  true,
-                              ["spell-check-dictionary-en-US", true,
-                               "---",                          null,
-                               "spell-add-dictionaries",       true], null,
-                          "---",                 null,
-                          "context-inspect",     true]);
-
-        closeContextMenu();
-        input.removeAttribute('spellcheck');
-        // Invoke context menu for next test and wait for spell check to finish
-        openContextMenuFor(inputspellwrong, false, true);
-        break;
+add_task(function* test_text_input() {
+  yield test_contextmenu("#input_text",
+    ["context-undo",        false,
+     "---",                 null,
+     "context-cut",         true,
+     "context-copy",        true,
+     "context-paste",       null, // ignore clipboard state
+     "context-delete",      false,
+     "---",                 null,
+     "context-selectall",   false,
+     "---",                 null,
+     "spell-check-enabled", true]);
+});
 
-    case 4:
-        var value = false;
-        // Context menu for spell-check input with a unknwon word.
-        checkContextMenu(["*prodigality",        true, // spelling suggestion
-                          "spell-add-to-dictionary", true,
-                          "---",                 null,
-                          "context-undo",        value,
-                          "---",                 null,
-                          "context-cut",         true,
-                          "context-copy",        true,
-                          "context-paste",       null, // ignore clipboard state
-                          "context-delete",      value,
-                          "---",                 null,
-                          "context-selectall",   true,
-                          "---",                 null,
-                          "spell-check-enabled", true,
-                          "spell-dictionaries",  true,
-                              ["spell-check-dictionary-en-US", true,
-                               "---",                          null,
-                               "spell-add-dictionaries",       true], null,
-                          "---",                 null,
-                          "context-inspect",     true]);
-
-        closeContextMenu();
-        // Invoke context menu for next test and wait for spell check to finish
-        openContextMenuFor(inputspellcorrect, false, true);
-        break;
-
-    case 5:
-        var value = false;
-        // Context menu for spell-check input with a known word.
-        checkContextMenu(["context-undo",        value,
-                          "---",                 null,
-                          "context-cut",         true,
-                          "context-copy",        true,
-                          "context-paste",       null, // ignore clipboard state
-                          "context-delete",      value,
-                          "---",                 null,
-                          "context-selectall",   true,
-                          "---",                 null,
-                          "spell-check-enabled", true,
-                          "spell-dictionaries",  true,
-                              ["spell-check-dictionary-en-US", true,
-                               "---",                          null,
-                               "spell-add-dictionaries",       true], null,
-                          "---",                 null,
-                          "context-inspect",     true]);
+add_task(function* test_text_input_spellcheck() {
+  yield test_contextmenu("#input_spellcheck_no_value",
+    ["context-undo",        false,
+     "---",                 null,
+     "context-cut",         true,
+     "context-copy",        true,
+     "context-paste",       null, // ignore clipboard state
+     "context-delete",      false,
+     "---",                 null,
+     "context-selectall",   false,
+     "---",                 null,
+     "spell-check-enabled", true,
+     "spell-dictionaries",  true,
+         ["spell-check-dictionary-en-US", true,
+          "---",                          null,
+          "spell-add-dictionaries",       true], null],
+    {
+      waitForSpellCheck: true,
+      // Need to dynamically add/remove the "password" type or LoginManager
+      // will think that the form inputs on the page are part of a login
+      // and will add fill-login context menu items.
+      *preCheckContextMenuFn() {
+        yield ContentTask.spawn(gBrowser.selectedBrowser, null, function*() {
+          let doc = content.document;
+          let input = doc.getElementById("input_spellcheck_no_value");
+          input.setAttribute("spellcheck", "true");
+          input.clientTop; // force layout flush
+        });
+      },
+    }
+  );
+});
 
-        closeContextMenu();
-        input.disabled = true;
-        openContextMenuFor(input); // Invoke context menu for next test.
-        break;
-
-    case 6:
-        // Context menu for disabled input.
-        checkContextMenu(["context-undo",        false,
-                          "---",                 null,
-                          "context-cut",         true,
-                          "context-copy",        true,
-                          "context-paste",       null, // ignore clipboard state
-                          "context-delete",      false,
-                          "---",                 null,
-                          "context-selectall",   true,
-                          "---",                 null,
-                          "spell-check-enabled", true,
-                          "---",                 null,
-                          "context-inspect",     true]);
+add_task(function* test_text_input_spellcheckwrong() {
+  yield test_contextmenu("#input_spellcheck_incorrect",
+    ["*prodigality",        true, // spelling suggestion
+     "spell-add-to-dictionary", true,
+     "---",                 null,
+     "context-undo",        false,
+     "---",                 null,
+     "context-cut",         true,
+     "context-copy",        true,
+     "context-paste",       null, // ignore clipboard state
+     "context-delete",      false,
+     "---",                 null,
+     "context-selectall",   true,
+     "---",                 null,
+     "spell-check-enabled", true,
+     "spell-dictionaries",  true,
+         ["spell-check-dictionary-en-US", true,
+          "---",                          null,
+          "spell-add-dictionaries",       true], null],
+     {waitForSpellCheck: true}
+   );
+});
 
-        closeContextMenu();
-        input.disabled = false;
-        input.type = 'password';
-        openContextMenuFor(input); // Invoke context menu for next test.
-        break;
+add_task(function* test_text_input_spellcheckcorrect() {
+  yield test_contextmenu("#input_spellcheck_correct",
+    ["context-undo",        false,
+     "---",                 null,
+     "context-cut",         true,
+     "context-copy",        true,
+     "context-paste",       null, // ignore clipboard state
+     "context-delete",      false,
+     "---",                 null,
+     "context-selectall",   true,
+     "---",                 null,
+     "spell-check-enabled", true,
+     "spell-dictionaries",  true,
+         ["spell-check-dictionary-en-US", true,
+          "---",                          null,
+          "spell-add-dictionaries",       true], null],
+     {waitForSpellCheck: true}
+  );
+});
 
-    case 7: // password
-        // Context menu for password input fields.
-        checkContextMenu(["context-undo",        false,
-                          "---",                 null,
-                          "context-cut",         true,
-                          "context-copy",        true,
-                          "context-paste",       null, // ignore clipboard state
-                          "context-delete",      false,
-                          "---",                 null,
-                          "context-selectall",   false,
-                          "---",                 null,
-                          "fill-login",          null,
-                            ["fill-login-no-logins",       false,
-                             "---",                        null,
-                             "fill-login-saved-passwords", true], null,
-                          "---",                 null,
-                          "context-inspect",     true]);
-
-        closeContextMenu();
-
-        input.type = 'email';
+add_task(function* test_text_input_disabled() {
+  yield test_contextmenu("#input_disabled",
+    ["context-undo",        false,
+     "---",                 null,
+     "context-cut",         true,
+     "context-copy",        true,
+     "context-paste",       null, // ignore clipboard state
+     "context-delete",      false,
+     "---",                 null,
+     "context-selectall",   true,
+     "---",                 null,
+     "spell-check-enabled", true],
+    {skipFocusChange: true}
+  );
+});
 
-        openContextMenuFor(input); // Invoke context menu for next test.
-        break;
-
-    case 8: // email
-    case 9: // url
-    case 10: // tel
-    case 11: // type='number'
-        // Context menu for tel, email, url and number input fields.
-        checkContextMenu(["context-undo",        false,
-                          "---",                 null,
-                          "context-cut",         true,
-                          "context-copy",        true,
-                          "context-paste",       null, // ignore clipboard state
-                          "context-delete",      false,
-                          "---",                 null,
-                          "context-selectall",   false,
-                          "---",                 null,
-                          "context-inspect",     true]);
-
-        closeContextMenu();
-
-        if (testNum == 8) {
-          input.type = 'url';
-        } else if (testNum == 9) {
-          input.type = 'tel';
-        } else if (testNum == 10) {
-          input.type = 'number';
-        } else if (testNum == 11) {
-          input.type = 'date';
-        }
-
-        openContextMenuFor(input); // Invoke context menu for next test.
-        break;
+add_task(function* test_password_input() {
+  todo(false, "context-selectall is enabled on osx-e10s, and windows when" +
+              " it should be disabled");
+  yield test_contextmenu("#input_password",
+    ["context-undo",        false,
+     "---",                 null,
+     "context-cut",         true,
+     "context-copy",        true,
+     "context-paste",       null, // ignore clipboard state
+     "context-delete",      false,
+     "---",                 null,
+     "context-selectall",   null,
+     "---",                 null,
+     "fill-login",          null,
+       ["fill-login-no-logins",       false,
+        "---",                        null,
+        "fill-login-saved-passwords", true], null],
+    {
+      skipFocusChange: true,
+      // Need to dynamically add/remove the "password" type or LoginManager
+      // will think that the form inputs on the page are part of a login
+      // and will add fill-login context menu items.
+      *preCheckContextMenuFn() {
+        yield ContentTask.spawn(gBrowser.selectedBrowser, null, function*() {
+          let doc = content.document;
+          let input = doc.getElementById("input_password");
+          input.type = "password";
+          input.clientTop; // force layout flush
+        });
+      },
+      *postCheckContextMenuFn() {
+        yield ContentTask.spawn(gBrowser.selectedBrowser, null, function*() {
+          let doc = content.document;
+          let input = doc.getElementById("input_password");
+          input.type = "text";
+          input.clientTop; // force layout flush
+        });
+      },
+    }
+  );
+});
 
-    case 12: // type='date'
-    case 13: // type='time'
-    case 14: // type='color'
-    case 15: // type='range'
-        checkContextMenu(["context-navigation", null,
-                              ["context-back",         false,
-                               "context-forward",      false,
-                               "context-reload",       true,
-                               "context-bookmarkpage", true], null,
-                          "---",                  null,
-                          "context-savepage",     true,
-                          "---",                  null,
-                          "context-viewbgimage",  false,
-                          "context-selectall",    null,
-                          "---",                  null,
-                          "context-viewsource",   true,
-                          "context-viewinfo",     true,
-                          "---",                 null,
-                          "context-inspect",     true]);
-        closeContextMenu();
-
-        if (testNum == 12) {
-          input.type = 'time';
-        } else if (testNum == 13) {
-          input.type = 'color';
-        } else if (testNum == 14) {
-          input.type = 'range';
-        } else {
-          input.type = 'search';
-        }
-
-        openContextMenuFor(input);
-        break;
-
-    case 16: // type='search'
-        // Context menu for search input fields.
-        checkContextMenu(["context-undo",        false,
-                          "---",                 null,
-                          "context-cut",         true,
-                          "context-copy",        true,
-                          "context-paste",       null, // ignore clipboard state
-                          "context-delete",      false,
-                          "---",                 null,
-                          "context-selectall",   false,
-                          "---",                 null,
-                          "spell-check-enabled", true,
-                          "---",                 null,
-                          "context-inspect",     true]);
-
-        closeContextMenu();
-
-        // Add some todos to make sure all input fields got a test.
-        var todos = [ "datetime", "month", "week", "datetime-local" ];
-        todos.forEach(function(type) {
-          input.type = type;
-          todo_is(input.type, type, "TODO: add test for " + type + " input fields");
-        });
+add_task(function* test_tel_email_url_number_input() {
+  todo(false, "context-selectall is enabled on osx-e10s, and windows when" +
+              " it should be disabled");
+  for (let selector of ["#input_email", "#input_url", "#input_tel", "#input_number"]) {
+    yield test_contextmenu(selector,
+      ["context-undo",        false,
+       "---",                 null,
+       "context-cut",         true,
+       "context-copy",        true,
+       "context-paste",       null, // ignore clipboard state
+       "context-delete",      false,
+       "---",                 null,
+       "context-selectall",   null],
+      {skipFocusChange: true}
+    );
+  }
+});
 
-        input.type = 'text';
-        input.readOnly = true;
-        openContextMenuFor(input);
-        break;
-
-    case 17:
-        // Context menu for a read-only input.
-        checkContextMenu(["context-undo",        false,
-                          "---",                 null,
-                          "context-cut",         true,
-                          "context-copy",        true,
-                          "context-paste",       null, // ignore clipboard state
-                          "context-delete",      false,
-                          "---",                 null,
-                          "context-selectall",   false,
-                          "---",                 null,
-                          "context-inspect",     true]);
-        closeContextMenu();
-
-        // Clean-up.
-        subwindow.close();
-        SimpleTest.finish();
-        return;
-
-    default:
-        ok(false, "Unexpected invocation of test #" + testNum);
-        subwindow.close();
-        SimpleTest.finish();
-        return;
+add_task(function* test_date_time_color_range_input() {
+  for (let selector of ["#input_date", "#input_time", "#input_color", "#input_range"]) {
+    yield test_contextmenu(selector,
+      ["context-navigation", null,
+           ["context-back",         false,
+            "context-forward",      false,
+            "context-reload",       true,
+            "context-bookmarkpage", true], null,
+       "---",                  null,
+       "context-savepage",     true,
+       "---",                  null,
+       "context-viewbgimage",  false,
+       "context-selectall",    null,
+       "---",                  null,
+       "context-viewsource",   true,
+       "context-viewinfo",     true],
+      {skipFocusChange: true}
+    );
   }
-
-}
-
-
-var gTestNum = 1;
-var subwindow, chromeWin, contextMenu;
-var input, inputspellwrong, inputspellcorrect;
+});
 
-function startTest() {
-    chromeWin = SpecialPowers.wrap(subwindow)
-                    .QueryInterface(Ci.nsIInterfaceRequestor)
-                    .getInterface(Ci.nsIWebNavigation)
-                    .QueryInterface(Ci.nsIDocShellTreeItem)
-                    .rootTreeItem
-                    .QueryInterface(Ci.nsIInterfaceRequestor)
-                    .getInterface(Ci.nsIDOMWindow)
-                    .QueryInterface(Ci.nsIDOMChromeWindow);
-    contextMenu = chromeWin.document.getElementById("contentAreaContextMenu");
-    ok(contextMenu, "Got context menu XUL");
-
-    if (chromeWin.document.getElementById("Browser:Stop").getAttribute("disabled") != "true") {
-      SimpleTest.executeSoon(startTest);
-      return;
-    }
-
-    var inputs = subwindow.document.getElementsByTagName('input');
-    input = inputs[0];
-    inputspellwrong = inputs[1];
-    inputspellcorrect = inputs[2];
-
-    contextMenu.addEventListener("popupshown", function() { runTest(++gTestNum); }, false);
-    runTest(1);
-}
+add_task(function* test_search_input() {
+  todo(false, "context-selectall is enabled on osx-e10s, and windows when" +
+              " it should be disabled");
+  yield test_contextmenu("#input_search",
+    ["context-undo",        false,
+     "---",                 null,
+     "context-cut",         true,
+     "context-copy",        true,
+     "context-paste",       null, // ignore clipboard state
+     "context-delete",      false,
+     "---",                 null,
+     "context-selectall",   null,
+     "---",                 null,
+     "spell-check-enabled", true],
+    {skipFocusChange: true}
+  );
+});
 
-// We open this in a separate window, because the Mochitests run inside a frame.
-// The frame causes an extra menu item, and prevents running the test
-// standalone (ie, clicking the test name in the Mochitest window) to see
-// success/failure messages.
-var painted = false, loaded = false;
+add_task(function* test_datetime_month_week_datetimelocal_input_todos() {
+  for (let type of ["datetime", "month", "week", "datetime-local"]) {
+    let returnedType = yield ContentTask.spawn(gBrowser.selectedBrowser, type, function*(type) {
+      let doc = content.document;
+      let input = doc.getElementById("input_" + type);
+      return input.type;
+    });
+    todo_is(returnedType, type, `TODO: add test for ${type} input fields`);
+  }
+});
 
-function waitForEvents(event)
-{
-  if (event.type == "MozAfterPaint")
-    painted = true;
-  else if (event.type == "load")
-    loaded = true;
-  if (painted && loaded) {
-    subwindow.removeEventListener("MozAfterPaint", waitForEvents, false);
-    subwindow.onload = null;
-    SimpleTest.waitForFocus(startTest, subwindow);
-  }
-}
+add_task(function* test_text_input_readonly() {
+  todo(false, "context-selectall is enabled on osx-e10s, and windows when" +
+              " it should be disabled");
+  todo(false, "spell-check should not be enabled for input[readonly]. see bug 1246296");
+  yield test_contextmenu("#input_readonly",
+    ["context-undo",        false,
+     "---",                 null,
+     "context-cut",         true,
+     "context-copy",        true,
+     "context-paste",       null, // ignore clipboard state
+     "context-delete",      false,
+     "---",                 null,
+     "context-selectall",   null],
+    {skipFocusChange: true}
+  );
+});
 
-var subwindow = window.open("data:text/html,<!DOCTYPE html><input><input spellcheck='true' value='prodkjfgigrty'><input spellcheck='true' value='foo'><input readonly spellcheck='false'>", "contextmenu-subtext", "width=600,height=700");
-subwindow.addEventListener("MozAfterPaint", waitForEvents, false);
-subwindow.onload = waitForEvents;
-
-SimpleTest.waitForExplicitFinish();
-</script>
-</pre>
-</body>
-</html>
+add_task(function* test_cleanup() {
+  yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
+});
--- a/browser/base/content/test/general/browser_tabDrop.js
+++ b/browser/base/content/test/general/browser_tabDrop.js
@@ -1,77 +1,61 @@
-/* Any copyright is dedicated to the Public Domain.
- * http://creativecommons.org/publicdomain/zero/1.0/ */
-
-function test() {
-  waitForExplicitFinish();
+registerCleanupFunction(function* cleanup() {
+  while (gBrowser.tabs.length > 1) {
+    yield BrowserTestUtils.removeTab(gBrowser.tabs[gBrowser.tabs.length - 1]);
+  }
+  Services.search.currentEngine = originalEngine;
+  let engine = Services.search.getEngineByName("MozSearch");
+  Services.search.removeEngine(engine);
+});
 
-  let newTab = gBrowser.selectedTab = gBrowser.addTab("about:blank", {skipAnimation: true});
-  registerCleanupFunction(function () {
-    gBrowser.removeTab(newTab);
-  });
+let originalEngine;
+add_task(function* test_setup() {
+  // Stop search-engine loads from hitting the network
+  Services.search.addEngineWithDetails("MozSearch", "", "", "", "GET",
+                                       "http://example.com/?q={searchTerms}");
+  let engine = Services.search.getEngineByName("MozSearch");
+  originalEngine = Services.search.currentEngine;
+  Services.search.currentEngine = engine;
+});
 
+add_task(function*() { yield drop("mochi.test/first", true); });
+add_task(function*() { yield drop("javascript:'bad'"); });
+add_task(function*() { yield drop("jAvascript:'bad'"); });
+add_task(function*() { yield drop("search this", true); });
+add_task(function*() { yield drop("mochi.test/second", true); });
+add_task(function*() { yield drop("data:text/html,bad"); });
+add_task(function*() { yield drop("mochi.test/third", true); });
+
+function* drop(text, valid = false) {
+  info(`Starting test for text:${text}; valid:${valid}`);
   let scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].
                      getService(Ci.mozIJSSubScriptLoader);
   let ChromeUtils = {};
   scriptLoader.loadSubScript("chrome://mochikit/content/tests/SimpleTest/ChromeUtils.js", ChromeUtils);
 
-  let tabContainer = gBrowser.tabContainer;
-  var receivedDropCount = 0;
-  function dropListener() {
-    receivedDropCount++;
-    if (receivedDropCount == triggeredDropCount) {
-      is(openedTabs, validDropCount, "correct number of tabs were opened");
-      executeSoon(finish);
-    }
+  let awaitDrop = BrowserTestUtils.waitForEvent(gBrowser.tabContainer, "drop");
+  let awaitTabOpen = valid && BrowserTestUtils.waitForEvent(gBrowser.tabContainer, "TabOpen");
+  // A drop type of "link" onto an existing tab would normally trigger a
+  // load in that same tab, but tabbrowser code in _getDragTargetTab treats
+  // drops on the outer edges of a tab differently (loading a new tab
+  // instead). Make events created by synthesizeDrop have all of their
+  // coordinates set to 0 (screenX/screenY), so they're treated as drops
+  // on the outer edge of the tab, thus they open new tabs.
+  var event = {
+    clientX: 0,
+    clientY: 0,
+    screenX: 0,
+    screenY: 0,
+  };
+  ChromeUtils.synthesizeDrop(gBrowser.selectedTab, gBrowser.selectedTab, [[{type: "text/plain", data: text}]], "link", window, undefined, event);
+  let tabOpened = false;
+  if (awaitTabOpen) {
+    let tabOpenEvent = yield awaitTabOpen;
+    info("Got TabOpen event");
+    tabOpened = true;
+    yield BrowserTestUtils.removeTab(tabOpenEvent.target);
   }
-  tabContainer.addEventListener("drop", dropListener, false);
-  registerCleanupFunction(function () {
-    tabContainer.removeEventListener("drop", dropListener, false);
-  });
-
-  var openedTabs = 0;
-  function tabOpenListener(e) {
-    openedTabs++;
-    let tab = e.target;
-    executeSoon(function () {
-      gBrowser.removeTab(tab);
-    });
-  }
-
-  tabContainer.addEventListener("TabOpen", tabOpenListener, false);
-  registerCleanupFunction(function () {
-    tabContainer.removeEventListener("TabOpen", tabOpenListener, false);
-  });
+  is(tabOpened, valid, `Tab for ${text} should only open if valid`);
 
-  var triggeredDropCount = 0;
-  var validDropCount = 0;
-  function drop(text, valid) {
-    triggeredDropCount++;
-    if (valid)
-      validDropCount++;
-    executeSoon(function () {
-      // A drop type of "link" onto an existing tab would normally trigger a
-      // load in that same tab, but tabbrowser code in _getDragTargetTab treats
-      // drops on the outer edges of a tab differently (loading a new tab
-      // instead). Make events created by synthesizeDrop have all of their
-      // coordinates set to 0 (screenX/screenY), so they're treated as drops
-      // on the outer edge of the tab, thus they open new tabs.
-      var event = {
-        clientX: 0,
-        clientY: 0,
-        screenX: 0,
-        screenY: 0,
-      };
-      ChromeUtils.synthesizeDrop(newTab, newTab, [[{type: "text/plain", data: text}]], "link", window, undefined, event);
-    });
-  }
-
-  // Begin and end with valid drops to make sure we wait for all drops before
-  // ending the test
-  drop("mochi.test/first", true);
-  drop("javascript:'bad'");
-  drop("jAvascript:'bad'");
-  drop("search this", true);
-  drop("mochi.test/second", true);
-  drop("data:text/html,bad");
-  drop("mochi.test/third", true);
+  yield awaitDrop;
+  ok(true, "Got drop event");
 }
--- a/browser/base/content/test/general/browser_tabMatchesInAwesomebar_perwindowpb.js
+++ b/browser/base/content/test/general/browser_tabMatchesInAwesomebar_perwindowpb.js
@@ -1,106 +1,84 @@
-/* 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/. */
+let testURL = "http://example.org/browser/browser/base/content/test/general/dummy_page.html";
 
-function test() {
-  waitForExplicitFinish();
-
-  let testURL = "http://example.org/browser/browser/base/content/test/general/dummy_page.html";
+add_task(function*() {
+  let normalWindow = yield BrowserTestUtils.openNewBrowserWindow();
+  let privateWindow = yield BrowserTestUtils.openNewBrowserWindow({private: true});
+  yield runTest(normalWindow, privateWindow, false);
+  yield BrowserTestUtils.closeWindow(normalWindow);
+  yield BrowserTestUtils.closeWindow(privateWindow);
 
-  function testOnWindow(aOptions, aCallback) {
-    whenNewWindowLoaded(aOptions, function(aWin) {
-      // execute should only be called when need, like when you are opening
-      // web pages on the test. If calling executeSoon() is not necesary, then
-      // call whenNewWindowLoaded() instead of testOnWindow() on your test.
-      executeSoon(() => aCallback(aWin));
-    });
-  };
+  normalWindow = yield BrowserTestUtils.openNewBrowserWindow();
+  privateWindow = yield BrowserTestUtils.openNewBrowserWindow({private: true});
+  yield runTest(privateWindow, normalWindow, false);
+  yield BrowserTestUtils.closeWindow(normalWindow);
+  yield BrowserTestUtils.closeWindow(privateWindow);
+
+  privateWindow = yield BrowserTestUtils.openNewBrowserWindow({private: true});
+  yield runTest(privateWindow, privateWindow, false);
+  yield BrowserTestUtils.closeWindow(privateWindow);
 
-  testOnWindow({}, function(aNormalWindow) {
-    testOnWindow({private: true}, function(aPrivateWindow) {
-      runTest(aNormalWindow, aPrivateWindow, false, function() {
-        aNormalWindow.close();
-        aPrivateWindow.close();
-        testOnWindow({}, function(aNormalWindow) {
-          testOnWindow({private: true}, function(aPrivateWindow) {
-            runTest(aPrivateWindow, aNormalWindow, false, function() {
-              aNormalWindow.close();
-              aPrivateWindow.close();
-              testOnWindow({private: true}, function(aPrivateWindow) {
-                runTest(aPrivateWindow, aPrivateWindow, false, function() {
-                  aPrivateWindow.close();
-                  testOnWindow({}, function(aNormalWindow) {
-                    runTest(aNormalWindow, aNormalWindow, true, function() {
-                      aNormalWindow.close();
-                      finish();
-                    });
-                  });
-                });
-              });
-            });
-          });
-        });
-      });
+  normalWindow = yield BrowserTestUtils.openNewBrowserWindow();
+  yield runTest(normalWindow, normalWindow, true);
+  yield BrowserTestUtils.closeWindow(normalWindow);
+});
+
+function* runTest(aSourceWindow, aDestWindow, aExpectSwitch, aCallback) {
+  let baseTab = yield BrowserTestUtils.openNewForegroundTab(aSourceWindow.gBrowser, testURL);
+  let testTab = yield BrowserTestUtils.openNewForegroundTab(aDestWindow.gBrowser);
+
+  info("waiting for focus on the window");
+  yield promiseWaitForFocus(aDestWindow);
+  info("got focus on the window");
+
+  // Select the testTab
+  aDestWindow.gBrowser.selectedTab = testTab;
+
+  // Ensure that this tab has no history entries
+  let sessionHistoryCount = yield new Promise(resolve => {
+    SessionStore.getSessionHistory(gBrowser.selectedTab, function(sessionHistory) {
+      resolve(sessionHistory.entries.length);
     });
   });
 
-  function runTest(aSourceWindow, aDestWindow, aExpectSwitch, aCallback) {
-    // Open the base tab
-    let baseTab = aSourceWindow.gBrowser.addTab(testURL);
-    baseTab.linkedBrowser.addEventListener("load", function() {
-      // Wait for the tab to be fully loaded so matching happens correctly
-      if (baseTab.linkedBrowser.currentURI.spec == "about:blank")
-        return;
-      baseTab.linkedBrowser.removeEventListener("load", arguments.callee, true);
-
-      let testTab = aDestWindow.gBrowser.addTab();
+  ok(sessionHistoryCount < 2,
+     `The test tab has 1 or fewer history entries. sessionHistoryCount=${sessionHistoryCount}`);
+  // Ensure that this tab is on about:blank
+  is(testTab.linkedBrowser.currentURI.spec, "about:blank",
+     "The test tab is on about:blank");
+  // Ensure that this tab's document has no child nodes
+  yield ContentTask.spawn(testTab.linkedBrowser, null, function*() {
+    ok(!content.document.body.hasChildNodes(),
+       "The test tab has no child nodes");
+  });
+  ok(!testTab.hasAttribute("busy"),
+     "The test tab doesn't have the busy attribute");
 
-      waitForFocus(function() {
-        // Select the testTab
-        aDestWindow.gBrowser.selectedTab = testTab;
-
-        // Ensure that this tab has no history entries
-        ok(testTab.linkedBrowser.sessionHistory.count < 2,
-           "The test tab has 1 or less history entries");
-        // Ensure that this tab is on about:blank
-        is(testTab.linkedBrowser.currentURI.spec, "about:blank",
-           "The test tab is on about:blank");
-        // Ensure that this tab's document has no child nodes
-        ok(!testTab.linkedBrowser.contentDocument.body.hasChildNodes(),
-           "The test tab has no child nodes");
-        ok(!testTab.hasAttribute("busy"),
-           "The test tab doesn't have the busy attribute");
+  // Wait for the Awesomebar popup to appear.
+  yield promiseAutocompleteResultPopup(testURL, aDestWindow);
 
-        // Wait for the Awesomebar popup to appear.
-        promiseAutocompleteResultPopup(testURL, aDestWindow).then(() => {
-          if (aExpectSwitch) {
-            // If we expect a tab switch then the current tab
-            // will be closed and we switch to the other tab.
-            let tabContainer = aDestWindow.gBrowser.tabContainer;
-            tabContainer.addEventListener("TabClose", function onClose(event) {
-              if (event.target == testTab) {
-                tabContainer.removeEventListener("TabClose", onClose);
-                executeSoon(aCallback);
-              }
-            });
-          } else {
-            // If we don't expect a tab switch then wait for the tab to load.
-            testTab.addEventListener("load", function onLoad() {
-              testTab.removeEventListener("load", onLoad, true);
-              executeSoon(aCallback);
-            }, true);
-          }
+  info(`awesomebar popup appeared. aExpectSwitch: ${aExpectSwitch}`);
+  // Make sure the last match is selected.
+  let {controller, popup} = aDestWindow.gURLBar;
+  while (popup.selectedIndex < controller.matchCount - 1) {
+    info("handling key navigation for DOM_VK_DOWN key");
+    controller.handleKeyNavigation(KeyEvent.DOM_VK_DOWN);
+  }
 
-          // Make sure the last match is selected.
-          let {controller, popup} = aDestWindow.gURLBar;
-          while (popup.selectedIndex < controller.matchCount - 1) {
-            controller.handleKeyNavigation(KeyEvent.DOM_VK_DOWN);
-          }
+  let awaitTabSwitch;
+  if (aExpectSwitch) {
+    awaitTabSwitch = BrowserTestUtils.removeTab(testTab, {dontRemove: true})
+  }
 
-          // Execute the selected action.
-          controller.handleEnter(true);
-        });
-      }, aDestWindow);
-    }, true);
+  // Execute the selected action.
+  controller.handleEnter(true);
+  info("sent Enter command to the controller");
+
+  if (aExpectSwitch) {
+    // If we expect a tab switch then the current tab
+    // will be closed and we switch to the other tab.
+    yield awaitTabSwitch;
+  } else {
+    // If we don't expect a tab switch then wait for the tab to load.
+    yield BrowserTestUtils.browserLoaded(testTab.linkedBrowser);
   }
 }
--- a/browser/base/content/test/general/contextmenu_common.js
+++ b/browser/base/content/test/general/contextmenu_common.js
@@ -211,8 +211,106 @@ function checkMenu(menu, expectedItems, 
             }
         } else {
             checkMenuItem(actualItem, actualEnabled, expectedItem, expectedEnabled, i);
         }
     }
     // Could find unexpected extra items at the end...
     is(actualItems.length, expectedItems.length, "checking expected number of menu entries");
 }
+
+let lastElementSelector = null;
+/**
+ * Right-clicks on the element that matches `selector` and checks the
+ * context menu that appears against the `menuItems` array.
+ *
+ * @param {String} selector
+ *        A selector passed to querySelector to find
+ *        the element that will be referenced.
+ * @param {Array} menuItems
+ *        An array of menuitem ids and their associated enabled state. A state
+ *        of null means that it will be ignored. Ids of '---' are used for
+ *        menuseparators.
+ * @param {Object} options, optional
+ *        skipFocusChange: don't move focus to the element before test, useful
+ *                         if you want to delay spell-check initialization
+ *        offsetX: horizontal mouse offset from the top-left corner of
+ *                 the element, optional
+ *        offsetY: vertical mouse offset from the top-left corner of the
+ *                 element, optional
+ *        centered: if true, mouse position is centered in element, defaults
+ *                  to true if offsetX and offsetY are not provided
+ *        waitForSpellCheck: wait until spellcheck is initialized before
+ *                           starting test
+ *        preCheckContextMenuFn: callback to run before opening menu
+ *        postCheckContextMenuFn: callback to run after opening menu
+ * @return {Promise} resolved after the test finishes
+ */
+function* test_contextmenu(selector, menuItems, options={}) {
+  contextMenu = document.getElementById("contentAreaContextMenu");
+  is(contextMenu.state, "closed", "checking if popup is closed");
+
+  // Default to centered if no positioning is defined.
+  if (!options.offsetX && !options.offsetY) {
+    options.centered = true;
+  }
+
+  if (!options.skipFocusChange) {
+    yield ContentTask.spawn(gBrowser.selectedBrowser,
+                            {lastElementSelector, selector},
+                            function*({lastElementSelector, selector}) {
+      if (lastElementSelector) {
+        let lastElement = content.document.querySelector(lastElementSelector);
+        lastElement.blur();
+      }
+      let element = content.document.querySelector(selector);
+      element.focus();
+    });
+    lastElementSelector = selector;
+    info(`Moved focus to ${selector}`);
+  }
+
+  if (options.preCheckContextMenuFn) {
+    yield options.preCheckContextMenuFn();
+    info("Completed preCheckContextMenuFn");
+  }
+
+  if (options.waitForSpellCheck) {
+    info("Waiting for spell check");
+    yield ContentTask.spawn(gBrowser.selectedBrowser, selector, function*(selector) {
+      let {onSpellCheck} = Cu.import("resource://gre/modules/AsyncSpellCheckTestHelper.jsm", {});
+      let element = content.document.querySelector(selector);
+      yield new Promise(resolve => onSpellCheck(element, resolve));
+      info("Spell check running");
+    });
+  }
+
+  let awaitPopupShown = BrowserTestUtils.waitForEvent(contextMenu, "popupshown");
+  yield BrowserTestUtils.synthesizeMouse(selector, options.offsetX || 0, options.offsetY || 0, {
+      type: "contextmenu",
+      button: 2,
+      shiftkey: options.shiftkey,
+      centered: options.centered
+    },
+    gBrowser.selectedBrowser);
+  yield awaitPopupShown;
+  info("Popup Shown");
+
+  if (menuItems) {
+    if (Services.prefs.getBoolPref("devtools.inspector.enabled")) {
+      let inspectItems = ["---", null,
+                          "context-inspect", true];
+      menuItems = menuItems.concat(inspectItems);
+    }
+
+    checkContextMenu(menuItems);
+  }
+
+  let awaitPopupHidden = BrowserTestUtils.waitForEvent(contextMenu, "popuphidden");
+
+  if (options.postCheckContextMenuFn) {
+    yield options.postCheckContextMenuFn();
+    info("Completed postCheckContextMenuFn");
+  }
+
+  contextMenu.hidePopup();
+  yield awaitPopupHidden;
+}
--- a/browser/base/content/test/general/mochitest.ini
+++ b/browser/base/content/test/general/mochitest.ini
@@ -23,16 +23,14 @@ support-files =
   offlineEvent.cacheManifest
   offlineEvent.cacheManifest^headers^
   offlineEvent.html
   subtst_contextmenu.html
   video.ogg
 
 [test_bug364677.html]
 [test_bug395533.html]
-[test_contextmenu_input.html]
-skip-if = toolkit == "gtk2" || toolkit == "gtk3" || e10s # disabled on Linux due to bug 513558
 [test_feed_discovery.html]
 skip-if = e10s
 [test_offlineNotification.html]
 skip-if = buildapp == 'mulet' || e10s # Bug 1066070 - I don't think either popup notifications nor addon install stuff works?
 [test_offline_gzip.html]
 skip-if = buildapp == 'mulet' || e10s # Bug 1066070 - I don't think either popup notifications nor addon install stuff works?
new file mode 100644
--- /dev/null
+++ b/browser/base/content/test/general/subtst_contextmenu_input.html
@@ -0,0 +1,29 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Subtest for browser context menu</title>
+</head>
+<body>
+  Browser context menu subtest.
+  <input id="input_text">
+  <input id="input_spellcheck_no_value">
+  <input id="input_spellcheck_incorrect" spellcheck="true" value="prodkjfgigrty">
+  <input id="input_spellcheck_correct" spellcheck="true" value="foo">
+  <input id="input_disabled" disabled="true">
+  <input id="input_password">
+  <input id="input_email" type="email">
+  <input id="input_tel" type="tel">
+  <input id="input_url" type="url">
+  <input id="input_number" type="number">
+  <input id="input_date" type="date">
+  <input id="input_time" type="time">
+  <input id="input_color" type="color">
+  <input id="input_range" type="range">
+  <input id="input_search" type="search">
+  <input id="input_datetime" type="datetime">
+  <input id="input_month" type="month">
+  <input id="input_week" type="week">
+  <input id="input_datetime-local" type="datetime-local">
+  <input id="input_readonly" readonly="true">
+</body>
+</html>
--- a/browser/base/content/test/plugins/browser.ini
+++ b/browser/base/content/test/plugins/browser.ini
@@ -61,17 +61,16 @@ skip-if = !crashreporter
 [browser_CTP_outsideScrollArea.js]
 [browser_CTP_remove_navigate.js]
 [browser_CTP_resize.js]
 [browser_CTP_zoom.js]
 [browser_blocking.js]
 [browser_plugins_added_dynamically.js]
 [browser_pluginnotification.js]
 [browser_plugin_infolink.js]
-skip-if = (os == 'win' && os_version == "6.2" && e10s) # Win8 permafail in subsequent tests
 [browser_plugin_reloading.js]
 [browser_blocklist_content.js]
 skip-if = !e10s
 [browser_globalplugin_crashinfobar.js]
 skip-if = !crashreporter
 [browser_pluginCrashCommentAndURL.js]
 skip-if = !crashreporter
 [browser_pageInfo_plugins.js]
--- a/browser/base/content/test/plugins/browser_plugin_infolink.js
+++ b/browser/base/content/test/plugins/browser_plugin_infolink.js
@@ -1,77 +1,48 @@
 var gTestRoot = getRootDirectory(gTestPath).replace("chrome://mochitests/content/", "http://127.0.0.1:8888/");
 var gPluginHost = Components.classes["@mozilla.org/plugin/host;1"].getService(Components.interfaces.nsIPluginHost);
-var gTestBrowser = null;
+var oldBrowserOpenAddonsMgr = window.BrowserOpenAddonsMgr;
 
-add_task(function* () {
-  registerCleanupFunction(function () {
-    clearAllPluginPermissions();
-    Services.prefs.clearUserPref("plugins.click_to_play");
-    setTestPluginEnabledState(Ci.nsIPluginTag.STATE_ENABLED, "Test Plug-in");
-    gTestBrowser = null;
-    gBrowser.removeCurrentTab();
-    window.focus();
-  });
+registerCleanupFunction(function* cleanup() {
+  clearAllPluginPermissions();
+  Services.prefs.clearUserPref("plugins.click_to_play");
+  setTestPluginEnabledState(Ci.nsIPluginTag.STATE_ENABLED, "Test Plug-in");
+  window.BrowserOpenAddonsMgr = oldBrowserOpenAddonsMgr;
+  window.focus();
 });
 
-add_task(function* () {
-  gBrowser.selectedTab = gBrowser.addTab();
-  gTestBrowser = gBrowser.selectedBrowser;
-
-  Services.prefs.setBoolPref("extensions.blocklist.suppressUI", true);
+add_task(function* test_clicking_manage_link_in_plugin_overlay_should_open_about_addons() {
   Services.prefs.setBoolPref("plugins.click_to_play", true);
-
   setTestPluginEnabledState(Ci.nsIPluginTag.STATE_DISABLED, "Test Plug-in");
 
-  // Prime the blocklist service, the remote service doesn't launch on startup.
-  yield promiseTabLoadEvent(gBrowser.selectedTab, "data:text/html,<html></html>");
-  let exmsg = yield promiseInitContentBlocklistSvc(gBrowser.selectedBrowser);
-  ok(!exmsg, "exception: " + exmsg);
+  let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, gTestRoot + "plugin_test.html");
+  let browser = tab.linkedBrowser;
+  yield promiseUpdatePluginBindings(browser);
 
-  yield asyncSetAndUpdateBlocklist(gTestRoot + "blockNoPlugins.xml", gTestBrowser);
-});
+  let pluginInfo = yield promiseForPluginInfo("test", browser);
+  is(pluginInfo.pluginFallbackType, Ci.nsIObjectLoadingContent.PLUGIN_DISABLED,
+     "plugin fallback type should be PLUGIN_DISABLED");
 
-add_task(function* () {
-  yield promiseTabLoadEvent(gBrowser.selectedTab, gTestRoot + "plugin_test.html");
-
-  yield promiseUpdatePluginBindings(gTestBrowser);
+  let awaitBrowserOpenAddonsMgr = new Promise(resolve => {
+    window.BrowserOpenAddonsMgr = function(view) {
+      resolve(view);
+    }
+  });
 
-  let pluginInfo = yield promiseForPluginInfo("test");
-  is(pluginInfo.pluginFallbackType, Ci.nsIObjectLoadingContent.PLUGIN_DISABLED,
-     "Test 1a, plugin fallback type should be PLUGIN_DISABLED");
-
-  // This test opens a new tab to about:addons
-  let promise = waitForEvent(gBrowser.tabContainer, "TabOpen", null, true);
-  yield ContentTask.spawn(gTestBrowser, null, function* () {
+  yield ContentTask.spawn(browser, null, function* () {
     let pluginNode = content.document.getElementById("test");
     let manageLink = content.document.getAnonymousElementByAttribute(pluginNode, "anonid", "managePluginsLink");
     let bounds = manageLink.getBoundingClientRect();
     let left = (bounds.left + bounds.right) / 2;
     let top = (bounds.top + bounds.bottom) / 2;
     let utils = content.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                        .getInterface(Components.interfaces.nsIDOMWindowUtils);
     utils.sendMouseEvent("mousedown", left, top, 0, 1, 0, false, 0, 0);
     utils.sendMouseEvent("mouseup", left, top, 0, 1, 0, false, 0, 0);
     Assert.ok(true, "click on manage link");
   });
 
-  yield promise;
-
-  promise = waitForEvent(gBrowser.tabContainer, "TabClose", null, true);
+  let requestedView = yield awaitBrowserOpenAddonsMgr;
+  is(requestedView, "addons://list/plugin", "The Add-ons Manager should open the plugin view");
 
-  // in-process page, no cpows here
-  let condition = function() {
-    let win = gBrowser.selectedBrowser.contentWindow;
-    if (!!win && !!win.wrappedJSObject && !!win.wrappedJSObject.gViewController) {
-      return win.wrappedJSObject.gViewController.currentViewId == "addons://list/plugin";
-    }
-    return false;
-  }
-
-  yield promiseForCondition(condition, "Waited too long for about:addons to display.", 40, 500);
-
-  // remove the tab containing about:addons
-  gBrowser.removeCurrentTab();
-
-  yield promise;
+  yield BrowserTestUtils.removeTab(tab);
 });
-
--- a/browser/components/dirprovider/DirectoryProvider.cpp
+++ b/browser/components/dirprovider/DirectoryProvider.cpp
@@ -101,16 +101,34 @@ AppendDistroSearchDirs(nsIProperties* aD
 
     nsCOMPtr<nsIFile> localePlugins;
     rv = searchPlugins->Clone(getter_AddRefs(localePlugins));
     if (NS_FAILED(rv))
       return;
 
     localePlugins->AppendNative(NS_LITERAL_CSTRING("locale"));
 
+    nsCString defLocale;
+    rv = prefs->GetCharPref("distribution.searchplugins.defaultLocale",
+                            getter_Copies(defLocale));
+    if (NS_SUCCEEDED(rv)) {
+
+      nsCOMPtr<nsIFile> defLocalePlugins;
+      rv = localePlugins->Clone(getter_AddRefs(defLocalePlugins));
+      if (NS_SUCCEEDED(rv)) {
+
+        defLocalePlugins->AppendNative(defLocale);
+        rv = defLocalePlugins->Exists(&exists);
+        if (NS_SUCCEEDED(rv) && exists)
+          array.AppendObject(defLocalePlugins);
+          return; // all done
+      }
+    }
+
+    // we didn't have a defaultLocale, use the user agent locale
     nsCString locale;
     nsCOMPtr<nsIPrefLocalizedString> prefString;
     rv = prefs->GetComplexValue("general.useragent.locale",
                                 NS_GET_IID(nsIPrefLocalizedString),
                                 getter_AddRefs(prefString));
     if (NS_SUCCEEDED(rv)) {
       nsAutoString wLocale;
       prefString->GetData(getter_Copies(wLocale));
@@ -128,33 +146,16 @@ AppendDistroSearchDirs(nsIProperties* aD
         curLocalePlugins->AppendNative(locale);
         rv = curLocalePlugins->Exists(&exists);
         if (NS_SUCCEEDED(rv) && exists) {
           array.AppendObject(curLocalePlugins);
           return; // all done
         }
       }
     }
-
-    // we didn't append the locale dir - try the default one
-    nsCString defLocale;
-    rv = prefs->GetCharPref("distribution.searchplugins.defaultLocale",
-                            getter_Copies(defLocale));
-    if (NS_SUCCEEDED(rv)) {
-
-      nsCOMPtr<nsIFile> defLocalePlugins;
-      rv = localePlugins->Clone(getter_AddRefs(defLocalePlugins));
-      if (NS_SUCCEEDED(rv)) {
-
-        defLocalePlugins->AppendNative(defLocale);
-        rv = defLocalePlugins->Exists(&exists);
-        if (NS_SUCCEEDED(rv) && exists)
-          array.AppendObject(defLocalePlugins);
-      }
-    }
   }
 }
 
 NS_IMETHODIMP
 DirectoryProvider::GetFiles(const char *aKey, nsISimpleEnumerator* *aResult)
 {
   /**
    * We want to preserve the following order, since the search service loads
new file mode 100644
--- /dev/null
+++ b/browser/components/tests/unit/data/engine-de-DE.xml
@@ -0,0 +1,8 @@
+<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/">
+<ShortName>Google</ShortName>
+<Description>override-de-DE</Description>
+<InputEncoding>UTF-8</InputEncoding>
+<Url type="text/html" method="GET" template="http://searchtest.local">
+  <Param name="search" value="{searchTerms}"/>
+</Url>
+</SearchPlugin>
--- a/browser/components/tests/unit/test_distribution.js
+++ b/browser/components/tests/unit/test_distribution.js
@@ -18,16 +18,55 @@ var commonFile = do_get_file("../../../.
 if (commonFile) {
   let uri = Services.io.newFileURI(commonFile);
   Services.scriptloader.loadSubScript(uri.spec, this);
 }
 
 const TOPICDATA_DISTRIBUTION_CUSTOMIZATION = "force-distribution-customization";
 const TOPIC_BROWSERGLUE_TEST = "browser-glue-test";
 
+/**
+ * Copy the engine-distribution.xml engine to a fake distribution
+ * created in the profile, and registered with the directory service.
+ * Create an empty en-US directory to make sure it isn't used.
+ */
+function installDistributionEngine() {
+  const XRE_APP_DISTRIBUTION_DIR = "XREAppDist";
+
+  const gProfD = do_get_profile().QueryInterface(Ci.nsILocalFile);
+
+  let dir = gProfD.clone();
+  dir.append("distribution");
+  let distDir = dir.clone();
+
+  dir.append("searchplugins");
+  dir.create(dir.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY);
+
+  dir.append("locale");
+  dir.create(dir.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY);
+  let localeDir = dir.clone();
+
+  dir.append("en-US");
+  dir.create(dir.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY);
+
+  localeDir.append("de-DE");
+  localeDir.create(dir.DIRECTORY_TYPE, FileUtils.PERMS_DIRECTORY);
+
+  do_get_file("data/engine-de-DE.xml").copyTo(localeDir, "engine-de-DE.xml");
+
+  Services.dirsvc.registerProvider({
+    getFile: function(aProp, aPersistent) {
+      aPersistent.value = true;
+      if (aProp == XRE_APP_DISTRIBUTION_DIR)
+        return distDir.clone();
+      return null;
+    }
+  });
+}
+
 function run_test() {
   // Set special pref to load distribution.ini from the profile folder.
   Services.prefs.setBoolPref("distribution.testing.loadFromProfile", true);
 
   // Copy distribution.ini file to the profile dir.
   let distroDir = gProfD.clone();
   distroDir.leafName = "distribution";
   let iniFile = distroDir.clone();
@@ -37,29 +76,28 @@ function run_test() {
     print("distribution.ini already exists, did some test forget to cleanup?");
   }
 
   let testDistributionFile = gTestDir.clone();
   testDistributionFile.append("distribution.ini");
   testDistributionFile.copyTo(distroDir, "distribution.ini");
   Assert.ok(testDistributionFile.exists());
 
+  installDistributionEngine();
+
   run_next_test();
 }
 
 do_register_cleanup(function () {
-  // Remove the distribution file, even if the test failed, otherwise all
-  // next tests will import it.
-  let iniFile = gProfD.clone();
-  iniFile.leafName = "distribution";
-  iniFile.append("distribution.ini");
-  if (iniFile.exists()) {
-    iniFile.remove(false);
-  }
-  Assert.ok(!iniFile.exists());
+  // Remove the distribution dir, even if the test failed, otherwise all
+  // next tests will use it.
+  let distDir = gProfD.clone();
+  distDir.append("distribution");
+  distDir.remove(true);
+  Assert.ok(!distDir.exists());
 });
 
 add_task(function* () {
   // Force distribution.
   let glue = Cc["@mozilla.org/browser/browserglue;1"].getService(Ci.nsIObserver)
   glue.observe(null, TOPIC_BROWSERGLUE_TEST, TOPICDATA_DISTRIBUTION_CUSTOMIZATION);
 
   Assert.equal(Services.prefs.getCharPref("distribution.id"), "disttest");
@@ -100,9 +138,20 @@ add_task(function* () {
   // This value was never set because of the empty locale specific pref
   Assert.throws(() => Services.prefs.getComplexValue("distribution.test.locale.reset", Ci.nsIPrefLocalizedString));
   // This value was overridden by a locale specific setting
   Assert.equal(Services.prefs.getComplexValue("distribution.test.locale.set", Ci.nsIPrefLocalizedString).data, "Locale Set");
   // This value was overridden by a language specific setting
   Assert.equal(Services.prefs.getComplexValue("distribution.test.language.set", Ci.nsIPrefLocalizedString).data, "Language Set");
   // Language should not override locale
   Assert.notEqual(Services.prefs.getComplexValue("distribution.test.locale.set", Ci.nsIPrefLocalizedString).data, "Language Set");
+
+  do_test_pending();
+
+  Services.prefs.setCharPref("distribution.searchplugins.defaultLocale", "de-DE");
+
+  Services.search.init(function() {
+    Assert.equal(Services.search.isInitialized, true);
+    var engine = Services.search.getEngineByName("Google");
+    Assert.equal(engine.description, "override-de-DE");
+    do_test_finished();
+  });
 });
--- a/browser/components/tests/unit/xpcshell.ini
+++ b/browser/components/tests/unit/xpcshell.ini
@@ -1,7 +1,8 @@
 [DEFAULT]
 firefox-appdir = browser
 skip-if = toolkit == 'android' || toolkit == 'gonk'
 support-files =
   distribution.ini
+  data/engine-de-DE.xml
 
 [test_distribution.js]
--- a/browser/experiments/Experiments.jsm
+++ b/browser/experiments/Experiments.jsm
@@ -447,22 +447,22 @@ Experiments.Experiments.prototype = {
       if (this._timer) {
         this._timer.clear();
       }
     }
 
     this._shutdown = true;
     if (this._mainTask) {
       if (this._networkRequest) {
-	try {
-	  this._log.trace("Aborting pending network request: " + this._networkRequest);
-	  this._networkRequest.abort();
-	} catch (e) {
-	  // pass
-	}
+        try {
+          this._log.trace("Aborting pending network request: " + this._networkRequest);
+          this._networkRequest.abort();
+        } catch (e) {
+          // pass
+        }
       }
       try {
         this._log.trace("uninit: waiting on _mainTask");
         yield this._mainTask;
       } catch (e) {
         // We error out of tasks after shutdown via this exception.
         if (!(e instanceof AlreadyShutdownError)) {
           this._latestError = e;
@@ -629,17 +629,17 @@ Experiments.Experiments.prototype = {
 
         list.push({
           id: id,
           name: experiment._name,
           description: experiment._description,
           active: experiment.enabled,
           endDate: experiment.endDate.getTime(),
           detailURL: experiment._homepageURL,
-	  branch: experiment.branch,
+          branch: experiment.branch,
         });
       }
 
       // Sort chronologically, descending.
       list.sort((a, b) => b.endDate - a.endDate);
       return list;
     }.bind(this));
   },
@@ -704,17 +704,17 @@ Experiments.Experiments.prototype = {
     if (id) {
       e = this._experiments.get(id);
       if (!e) {
         throw new Error("Experiment not found");
       }
     } else {
       e = this._getActiveExperiment();
       if (e === null) {
-	throw new Error("No active experiment");
+        throw new Error("No active experiment");
       }
     }
     return e.branch;
   }),
 
   /**
    * Determine whether another date has the same UTC day as now().
    */
@@ -953,17 +953,17 @@ Experiments.Experiments.prototype = {
     xhr.onerror = errorhandler;
     xhr.ontimeout = errorhandler;
     xhr.onabort = errorhandler;
 
     xhr.onload = (event) => {
       if (xhr.status !== 200 && xhr.state !== 0) {
         log.error("httpGetRequest::onLoad() - Request to " + url + " returned status " + xhr.status);
         deferred.reject(new Error("Experiments - XHR status for " + url + " is " + xhr.status));
-	this._networkRequest = null;
+        this._networkRequest = null;
         return;
       }
 
       deferred.resolve(xhr.responseText);
       this._networkRequest = null;
     };
 
     if (xhr.channel instanceof Ci.nsISupportsPriority) {
@@ -1038,16 +1038,24 @@ Experiments.Experiments.prototype = {
     }
 
     let experiments = new Map();
     for (let item of data.data) {
       let entry = new Experiments.ExperimentEntry(this._policy);
       if (!entry.initFromCacheData(item)) {
         continue;
       }
+
+      // Discard old experiments if they ended more than 180 days ago.
+      if (entry.shouldDiscard()) {
+        // We discarded an experiment, the cache needs to be updated.
+        this._dirty = true;
+        continue;
+      }
+
       experiments.set(entry.id, entry);
     }
 
     this._experiments = experiments;
   },
 
   /*
    * Update the experiment entries from the experiments
@@ -1538,17 +1546,19 @@ Experiments.ExperimentEntry.prototype = 
     this.DATE_KEYS.forEach(key => {
       if (key in data) {
         let date = new Date();
         date.setTime(data[key]);
         this[key] = date;
       }
     });
 
-    this._lastChangedDate = this._policy.now();
+    // In order for the experiment's data expiration mechanism to work, use the experiment's
+    // |_endData| as the |_lastChangedDate| (if available).
+    this._lastChangedDate = !!this._endDate ? this._endDate : this._policy.now();
 
     return true;
   },
 
   /*
    * Returns a JSON representation of this object.
    */
   toJSON: function () {
--- a/browser/experiments/test/xpcshell/test_cache.js
+++ b/browser/experiments/test/xpcshell/test_cache.js
@@ -75,16 +75,25 @@ function checkExperimentSerializations(e
     let jsonStr = JSON.stringify(experiment.toJSON());
     Assert.ok(experiment2.initFromCacheData(JSON.parse(jsonStr)),
               "Should have initialized successfully from JSON serialization.");
     Assert.equal(JSON.stringify(experiment), JSON.stringify(experiment2),
                  "Object stringifications should match.");
   }
 }
 
+function validateCache(cachedExperiments, experimentIds) {
+  let cachedExperimentIds = new Set(cachedExperiments);
+  Assert.equal(cachedExperimentIds.size, experimentIds.length,
+               "The number of cached experiments does not match with the provided list");
+  for (let id of experimentIds) {
+    Assert.ok(cachedExperimentIds.has(id), "The cache must contain the experiment with id " + id);
+  }
+}
+
 // Set up an experiments instance and check if it is properly restored from cache.
 
 add_task(function* test_cache() {
   // The manifest data we test with.
 
   gManifestObject = {
     "version": 1,
     experiments: [
@@ -242,8 +251,152 @@ add_task(function* test_cache() {
   checkExperimentSerializations(experiments._experiments.values());
 
   // Cleanup.
 
   yield experiments._toggleExperimentsEnabled(false);
   yield promiseRestartManager();
   yield removeCacheFile();
 });
+
+add_task(function* test_expiration() {
+  // The manifest data we test with.
+  gManifestObject = {
+    "version": 1,
+    experiments: [
+      {
+        id:               EXPERIMENT1_ID,
+        xpiURL:           gDataRoot + EXPERIMENT1_XPI_NAME,
+        xpiHash:          EXPERIMENT1_XPI_SHA1,
+        maxActiveSeconds: 10 * SEC_IN_ONE_DAY,
+        appName:          ["XPCShell"],
+        channel:          ["nightly"],
+      },
+      {
+        id:               EXPERIMENT2_ID,
+        xpiURL:           gDataRoot + EXPERIMENT2_XPI_NAME,
+        xpiHash:          EXPERIMENT2_XPI_SHA1,
+        maxActiveSeconds: 50 * SEC_IN_ONE_DAY,
+        appName:          ["XPCShell"],
+        channel:          ["nightly"],
+      },
+      // The 3rd experiment will never run, so it's ok to use experiment's 2 data.
+      {
+        id:               EXPERIMENT3_ID,
+        xpiURL:           gDataRoot + EXPERIMENT2_XPI_NAME,
+        xpiHash:          EXPERIMENT2_XPI_SHA1,
+        maxActiveSeconds: 10 * SEC_IN_ONE_DAY,
+        appName:          ["XPCShell"],
+        channel:          ["nightly"],
+      }
+    ],
+  };
+
+  // Data to compare the result of Experiments.getExperiments() against.
+  let experimentListData = [
+    {
+      id: EXPERIMENT2_ID,
+      name: "Test experiment 2",
+      description: "And yet another experiment that experiments experimentally.",
+    },
+    {
+      id: EXPERIMENT1_ID,
+      name: EXPERIMENT1_NAME,
+      description: "Yet another experiment that experiments experimentally.",
+    },
+  ];
+
+  // Setup dates for the experiments.
+  let baseDate   = new Date(2014, 5, 1, 12);
+  let startDates = [];
+  let endDates   = [];
+
+  for (let i=0; i<gManifestObject.experiments.length; ++i) {
+    let experiment = gManifestObject.experiments[i];
+    // Spread out experiments in time so that one experiment can end and expire while
+    // the next is still running.
+    startDates.push(futureDate(baseDate, (50 + (200 * i)) * MS_IN_ONE_DAY));
+    endDates  .push(futureDate(startDates[i], 50 * MS_IN_ONE_DAY));
+    experiment.startTime = dateToSeconds(startDates[i]);
+    experiment.endTime   = dateToSeconds(endDates[i]);
+  }
+
+  let now = null;
+  let experiments = null;
+
+  let setDateAndRestartExperiments = new Task.async(function* (newDate) {
+    now = newDate;
+    defineNow(gPolicy, now);
+
+    yield promiseRestartManager();
+    experiments = new Experiments.Experiments(gPolicy);
+    yield experiments._run();
+  });
+
+  // Trigger update & re-init, clock set to before any activation.
+  now = baseDate;
+  defineNow(gPolicy, now);
+
+  experiments = new Experiments.Experiments(gPolicy);
+  yield experiments.updateManifest();
+  let list = yield experiments.getExperiments();
+  Assert.equal(list.length, 0, "Experiment list should be empty.");
+
+  // Re-init, clock set for experiment 1 to start...
+  yield setDateAndRestartExperiments(startDates[0]);
+  list = yield experiments.getExperiments();
+  Assert.equal(list.length, 1, "The first experiment should have started.");
+
+  // ... init again, and set the clock so that the first experiment ends.
+  yield setDateAndRestartExperiments(endDates[0]);
+
+  // The experiment just ended, it should still be in the cache, but marked
+  // as finished.
+  list = yield experiments.getExperiments();
+  Assert.equal(list.length, 1, "Experiment list should have 1 entry.");
+
+  experimentListData[1].active = false;
+  experimentListData[1].endDate = now.getTime();
+  checkExperimentListsEqual(experimentListData.slice(1), list);
+  validateCache([...experiments._experiments.keys()], [EXPERIMENT1_ID, EXPERIMENT2_ID, EXPERIMENT3_ID]);
+
+  // Start the second experiment.
+  yield setDateAndRestartExperiments(startDates[1]);
+
+  // The experiments cache should contain the finished experiment and the
+  // one that's still running.
+  list = yield experiments.getExperiments();
+  Assert.equal(list.length, 2, "Experiment list should have 2 entries.");
+
+  experimentListData[0].active = true;
+  experimentListData[0].endDate = now.getTime() + 50 * MS_IN_ONE_DAY;
+  checkExperimentListsEqual(experimentListData, list);
+
+  // Move the clock in the future, just 31 days after the start date of the second experiment,
+  // so that the cache for the first experiment expires and the second experiment is still running.
+  yield setDateAndRestartExperiments(futureDate(startDates[1], 31 * MS_IN_ONE_DAY));
+  validateCache([...experiments._experiments.keys()], [EXPERIMENT2_ID, EXPERIMENT3_ID]);
+
+  // Make sure that the expired experiment is not reported anymore.
+  let history = yield experiments.getExperiments();
+  Assert.equal(history.length, 1, "Experiments older than 180 days must be removed from the cache.");
+
+  // Test that we don't write expired experiments in the cache.
+  yield setDateAndRestartExperiments(now);
+  validateCache([...experiments._experiments.keys()], [EXPERIMENT2_ID, EXPERIMENT3_ID]);
+
+  // The first experiment should be expired and not in the cache, it ended more than
+  // 180 days ago. We should see the one still running in the cache.
+  history = yield experiments.getExperiments();
+  Assert.equal(history.length, 1, "Expired experiments must not be saved to cache.");
+  checkExperimentListsEqual(experimentListData.slice(0, 1), history);
+
+  // Test that experiments that are cached locally but never ran are removed from cache
+  // when they are removed from the manifest (this is cached data, not really history).
+  gManifestObject["experiments"] = gManifestObject["experiments"].slice(1, 1);
+  yield experiments.updateManifest();
+  validateCache([...experiments._experiments.keys()], [EXPERIMENT2_ID]);
+
+  // Cleanup.
+  yield experiments._toggleExperimentsEnabled(false);
+  yield promiseRestartManager();
+  yield removeCacheFile();
+});
--- a/browser/extensions/loop/chrome/content/modules/MozLoopService.jsm
+++ b/browser/extensions/loop/chrome/content/modules/MozLoopService.jsm
@@ -943,16 +943,20 @@ var MozLoopServiceInternal = {
       // So I guess the origin is the loop server!?
       let origin = this.loopServerUri;
       let windowId = this.getChatWindowID(conversationWindowData);
 
       gConversationWindowData.set(windowId, conversationWindowData);
 
       let url = this.getChatURL(windowId);
 
+      // Ensure about:loopconversation has access to the camera.
+      Services.perms.add(Services.io.newURI(url, null, null), "camera",
+                         Services.perms.ALLOW_ACTION, Services.perms.EXPIRE_SESSION);
+
       Chat.registerButton(kChatboxHangupButton);
 
       let callback = chatbox => {
         let mm = chatbox.content.messageManager;
 
         let loaded = () => {
           mm.removeMessageListener("DOMContentLoaded", loaded);
           mm.sendAsyncMessage("Social:ListenForEvents", {
--- a/browser/extensions/pocket/skin/osx/pocket.css
+++ b/browser/extensions/pocket/skin/osx/pocket.css
@@ -46,8 +46,12 @@
   toolbar[brighttext] #pocket-button {
     list-style-image: url("chrome://pocket/skin/Toolbar-inverted@2x.png");
   }
 
   #pocket-button:hover:active:not([disabled="true"]):not([cui-areatype="menu-panel"]) {
     -moz-image-region: rect(36px, 36px, 72px, 0);
   }
 }
+
+#PanelUI-pocketView[mainview=true] > .panel-subview-body > #pocket-panel-iframe {
+  border-radius: var(--panel-arrowcontent-border-radius);
+}
--- a/devtools/client/animationinspector/animation-controller.js
+++ b/devtools/client/animationinspector/animation-controller.js
@@ -219,27 +219,28 @@ var AnimationsController = {
 
   onNewNodeFront: Task.async(function*() {
     // Ignore if the panel isn't visible or the node selection hasn't changed.
     if (!this.isPanelVisible() ||
         this.nodeFront === gInspector.selection.nodeFront) {
       return;
     }
 
+    this.nodeFront = gInspector.selection.nodeFront;
     let done = gInspector.updating("animationscontroller");
 
     if (!gInspector.selection.isConnected() ||
-        !gInspector.selection.isElementNode()) {
+        !gInspector.selection.isElementNode() ||
+        gInspector.selection.isPseudoElementNode()) {
       this.destroyAnimationPlayers();
       this.emit(this.PLAYERS_UPDATED_EVENT);
       done();
       return;
     }
 
-    this.nodeFront = gInspector.selection.nodeFront;
     yield this.refreshAnimationPlayers(this.nodeFront);
     this.emit(this.PLAYERS_UPDATED_EVENT, this.animationPlayers);
 
     done();
   }),
 
   /**
    * Toggle (pause/play) all animations in the current target.
--- a/devtools/client/animationinspector/animation-inspector.xhtml
+++ b/devtools/client/animationinspector/animation-inspector.xhtml
@@ -21,16 +21,16 @@
     <div id="timeline-toolbar" class="theme-toolbar">
       <button id="rewind-timeline" standalone="true" class="devtools-button"></button>
       <button id="pause-resume-timeline" standalone="true" class="devtools-button pause-button paused"></button>
       <span id="timeline-rate" standalone="true" class="devtools-button"></span>
       <span id="timeline-current-time" class="label devtools-toolbarbutton"></span>
     </div>
     <div id="players"></div>
     <div id="error-message">
-      <p>&invalidElement;</p>
+      <p id="error-type"></p>
       <p>&selectElement;</p>
       <button id="element-picker" standalone="true" class="devtools-button"></button>
     </div>
     <script type="application/javascript;version=1.8" src="animation-controller.js"></script>
     <script type="application/javascript;version=1.8" src="animation-panel.js"></script>
   </body>
 </html>
--- a/devtools/client/animationinspector/animation-panel.js
+++ b/devtools/client/animationinspector/animation-panel.js
@@ -178,16 +178,19 @@ var AnimationsPanel = {
 
   togglePlayers: function(isVisible) {
     if (isVisible) {
       document.body.removeAttribute("empty");
       document.body.setAttribute("timeline", "true");
     } else {
       document.body.setAttribute("empty", "true");
       document.body.removeAttribute("timeline");
+      $("#error-type").textContent = gInspector.selection.isPseudoElementNode()
+        ? L10N.getStr("panel.pseudoElementSelected")
+        : L10N.getStr("panel.invalidElementSelected");
     }
   },
 
   onPickerStarted: function() {
     this.pickerButtonEl.setAttribute("checked", "true");
   },
 
   onPickerStopped: function() {
--- a/devtools/client/animationinspector/test/browser_animation_empty_on_invalid_nodes.js
+++ b/devtools/client/animationinspector/test/browser_animation_empty_on_invalid_nodes.js
@@ -1,39 +1,62 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  http://creativecommons.org/publicdomain/zero/1.0/ */
-
 "use strict";
 
 requestLongerTimeout(2);
 
 // Test that the panel shows no animation data for invalid or not animated nodes
 
+const STRINGS_URI = "chrome://devtools/locale/animationinspector.properties";
+const L10N = new ViewHelpers.L10N(STRINGS_URI);
+
 add_task(function*() {
   yield addTab(TEST_URL_ROOT + "doc_simple_animation.html");
+  let {inspector, panel, window} = yield openAnimationInspector();
+  let {document} = window;
 
-  let {inspector, panel} = yield openAnimationInspector();
-  yield testEmptyPanel(inspector, panel);
-});
-
-function* testEmptyPanel(inspector, panel) {
   info("Select node .still and check that the panel is empty");
   let stillNode = yield getNodeFront(".still", inspector);
   let onUpdated = panel.once(panel.UI_UPDATED_EVENT);
   yield selectNode(stillNode, inspector);
   yield onUpdated;
 
   is(panel.animationsTimelineComponent.animations.length, 0,
      "No animation players stored in the timeline component for a still node");
   is(panel.animationsTimelineComponent.animationsEl.childNodes.length, 0,
      "No animation displayed in the timeline component for a still node");
+  is(document.querySelector("#error-type").textContent,
+     L10N.getStr("panel.invalidElementSelected"),
+     "The correct error message is displayed");
 
   info("Select the comment text node and check that the panel is empty");
   let commentNode = yield inspector.walker.previousSibling(stillNode);
   onUpdated = panel.once(panel.UI_UPDATED_EVENT);
   yield selectNode(commentNode, inspector);
   yield onUpdated;
 
   is(panel.animationsTimelineComponent.animations.length, 0,
      "No animation players stored in the timeline component for a text node");
   is(panel.animationsTimelineComponent.animationsEl.childNodes.length, 0,
-     "No animation displayed in the timeline component for a text node");}
+     "No animation displayed in the timeline component for a text node");
+  is(document.querySelector("#error-type").textContent,
+     L10N.getStr("panel.invalidElementSelected"),
+     "The correct error message is displayed");
+
+  info("Select the pseudo element node and check that the panel is empty " +
+       "and contains the special animated pseudo-element message");
+  let pseudoElParent = yield getNodeFront(".pseudo", inspector);
+  let {nodes} = yield inspector.walker.children(pseudoElParent);
+  let pseudoEl = nodes[0];
+  onUpdated = panel.once(panel.UI_UPDATED_EVENT);
+  yield selectNode(pseudoEl, inspector);
+  yield onUpdated;
+
+  is(panel.animationsTimelineComponent.animations.length, 0,
+     "No animation players stored in the timeline component for a pseudo-node");
+  is(panel.animationsTimelineComponent.animationsEl.childNodes.length, 0,
+     "No animation displayed in the timeline component for a pseudo-node");
+  is(document.querySelector("#error-type").textContent,
+     L10N.getStr("panel.pseudoElementSelected"),
+     "The correct error message is displayed");
+});
--- a/devtools/client/animationinspector/test/doc_simple_animation.html
+++ b/devtools/client/animationinspector/test/doc_simple_animation.html
@@ -77,16 +77,31 @@
     .no-compositor {
       top: 0;
       right: 10px;
       background: gold;
 
       animation: no-compositor 10s cubic-bezier(.57,-0.02,1,.31) forwards;
     }
 
+    .pseudo {
+      top: 800px;
+      left: 10px;
+    }
+
+    .pseudo::before {
+      content: "";
+      width: 50%;
+      height: 50%;
+      border-radius: 50%;
+      background: black;
+      position: absolute;
+      animation: simple-animation 1s infinite alternate;
+    }
+
     @keyframes simple-animation {
       100% {
         transform: translateX(300px);
       }
     }
 
     @keyframes other-animation {
       100% {
@@ -107,10 +122,11 @@
   <div class="ball animated"></div>
   <div class="ball multi"></div>
   <div class="ball delayed"></div>
   <div class="ball multi-finite"></div>
   <div class="ball short"></div>
   <div class="ball long"></div>
   <div class="ball negative-delay"></div>
   <div class="ball no-compositor"></div>
+  <div class="ball pseudo"></div>
 </body>
 </html>
--- a/devtools/client/inspector/markup/markup.js
+++ b/devtools/client/inspector/markup/markup.js
@@ -600,27 +600,29 @@ MarkupView.prototype = {
     let handled = true;
     let previousNode, nextNode;
 
     // Ignore keystrokes that originated in editors.
     if (this._isInputOrTextarea(event.target)) {
       return;
     }
 
+    // Ignore keystrokes with modifiers to allow native shortcuts (such as save:
+    // accel + S) to bubble up.
+    if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) {
+      return;
+    }
+
     switch (event.keyCode) {
       case Ci.nsIDOMKeyEvent.DOM_VK_H:
-        if (event.metaKey || event.shiftKey) {
-          handled = false;
+        let node = this._selectedContainer.node;
+        if (node.hidden) {
+          this.walker.unhideNode(node);
         } else {
-          let node = this._selectedContainer.node;
-          if (node.hidden) {
-            this.walker.unhideNode(node);
-          } else {
-            this.walker.hideNode(node);
-          }
+          this.walker.hideNode(node);
         }
         break;
       case Ci.nsIDOMKeyEvent.DOM_VK_DELETE:
         this.deleteNodeOrAttribute();
         break;
       case Ci.nsIDOMKeyEvent.DOM_VK_BACK_SPACE:
         this.deleteNodeOrAttribute(true);
         break;
--- a/devtools/client/inspector/markup/test/browser.ini
+++ b/devtools/client/inspector/markup/test/browser.ini
@@ -83,16 +83,17 @@ skip-if = e10s && os == 'win'
 [browser_markup_image_tooltip.js]
 skip-if = (e10s && os == 'mac') # bug 1252345
 [browser_markup_image_tooltip_mutations.js]
 [browser_markup_keybindings_01.js]
 [browser_markup_keybindings_02.js]
 [browser_markup_keybindings_03.js]
 [browser_markup_keybindings_04.js]
 [browser_markup_keybindings_delete_attributes.js]
+[browser_markup_keybindings_scrolltonode.js]
 [browser_markup_mutation_01.js]
 [browser_markup_mutation_02.js]
 [browser_markup_node_names.js]
 [browser_markup_navigation.js]
 [browser_markup_node_not_displayed_01.js]
 [browser_markup_node_not_displayed_02.js]
 [browser_markup_pagesize_01.js]
 [browser_markup_pagesize_02.js]
new file mode 100644
--- /dev/null
+++ b/devtools/client/inspector/markup/test/browser_markup_keybindings_scrolltonode.js
@@ -0,0 +1,87 @@
+/* vim: set ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+// Test the keyboard shortcut "S" used to scroll to the selected node.
+
+const HTML =
+  `<div style="width: 300px; height: 3000px; position:relative;">
+    <div id="scroll-top"
+      style="height: 50px; top: 0; position:absolute;">
+      TOP</div>
+    <div id="scroll-bottom"
+      style="height: 50px; bottom: 0; position:absolute;">
+      BOTTOM</div>
+  </div>`;
+const TEST_URL = "data:text/html;charset=utf-8," + encodeURIComponent(HTML);
+
+add_task(function*() {
+  let { inspector, testActor } = yield openInspectorForURL(TEST_URL);
+
+  info("Make sure the markup frame has the focus");
+  inspector.markup._frame.focus();
+
+  info("Before test starts, #scroll-top is visible, #scroll-bottom is hidden");
+  yield checkElementIsInViewport("#scroll-top", true, testActor);
+  yield checkElementIsInViewport("#scroll-bottom", false, testActor);
+
+  info("Select the #scroll-bottom node");
+  yield selectNode("#scroll-bottom", inspector);
+  info("Press S to scroll to the bottom node");
+  let waitForScroll = testActor.waitForEventOnNode("scroll");
+  yield EventUtils.synthesizeKey("S", {}, inspector.panelWin);
+  yield waitForScroll;
+  ok(true, "Scroll event received");
+
+  info("#scroll-top should be scrolled out, #scroll-bottom should be visible");
+  yield checkElementIsInViewport("#scroll-top", false, testActor);
+  yield checkElementIsInViewport("#scroll-bottom", true, testActor);
+
+  info("Select the #scroll-top node");
+  yield selectNode("#scroll-top", inspector);
+  info("Press S to scroll to the top node");
+  waitForScroll = testActor.waitForEventOnNode("scroll");
+  yield EventUtils.synthesizeKey("S", {}, inspector.panelWin);
+  yield waitForScroll;
+  ok(true, "Scroll event received");
+
+  info("#scroll-top should be visible, #scroll-bottom should be scrolled out");
+  yield checkElementIsInViewport("#scroll-top", true, testActor);
+  yield checkElementIsInViewport("#scroll-bottom", false, testActor);
+
+  info("Select #scroll-bottom node");
+  yield selectNode("#scroll-bottom", inspector);
+  info("Press shift + S, nothing should happen due to the modifier");
+  yield EventUtils.synthesizeKey("S", {shiftKey: true}, inspector.panelWin);
+
+  info("Same state, #scroll-top is visible, #scroll-bottom is scrolled out");
+  yield checkElementIsInViewport("#scroll-top", true, testActor);
+  yield checkElementIsInViewport("#scroll-bottom", false, testActor);
+});
+
+/**
+ * Verify that the element matching the provided selector is either in or out
+ * of the viewport, depending on the provided "expected" argument.
+ * Returns a promise that will resolve when the test has been performed.
+ *
+ * @param {String} selector
+ *        css selector for the element to test
+ * @param {Boolean} expected
+ *        true if the element is expected to be in the viewport, false otherwise
+ * @param {TestActor} testActor
+ *        current test actor
+ * @return {Promise} promise
+ */
+function* checkElementIsInViewport(selector, expected, testActor) {
+  let isInViewport = yield testActor.eval(`
+    let node = content.document.querySelector("${selector}");
+    let rect = node.getBoundingClientRect();
+    rect.bottom >= 0 && rect.right >= 0 &&
+      rect.top <= content.innerHeight && rect.left <= content.innerWidth;
+  `);
+
+  is(isInViewport, expected,
+    selector + " in the viewport: expected to be " + expected);
+}
--- a/devtools/client/locales/en-US/animationinspector.dtd
+++ b/devtools/client/locales/en-US/animationinspector.dtd
@@ -10,20 +10,16 @@
      developers. You want to make that choice consistent across the developer
      tools. A good criteria is the language in which you'd find the best
      documentation on web development on the web. -->
 
 <!-- LOCALIZATION NOTE (animationInspectorTitle): This is the label shown in the
      sidebar tab -->
 <!ENTITY animationInspectorTitle "Animations">
 
-<!-- LOCALIZATION NOTE (invalidElement): This is the label shown in the panel
-     when an invalid node is currently selected in the inspector. -->
-<!ENTITY invalidElement "No animations were found for the current element.">
-
 <!-- LOCALIZATION NOTE (selectElement): This is the label shown in the panel
      when an invalid node is currently selected in the inspector, to invite the
      user to select a new node by clicking on the element-picker icon. -->
 <!ENTITY selectElement "Pick another element from the page.">
 
 <!-- LOCALIZATION NOTE (allAnimations): This is the label shown at the bottom of
      the panel, in a toolbar, to let the user know the toolbar applies to all
      animations, not just the ones applying to the current element. -->
--- a/devtools/client/locales/en-US/animationinspector.properties
+++ b/devtools/client/locales/en-US/animationinspector.properties
@@ -5,16 +5,28 @@
 # LOCALIZATION NOTE These strings are used inside the Animation inspector
 # which is available as a sidebar panel in the Inspector.
 # The correct localization of this file might be to keep it in
 # English, or another language commonly spoken among web developers.
 # You want to make that choice consistent across the developer tools.
 # A good criteria is the language in which you'd find the best
 # documentation on web development on the web.
 
+# LOCALIZATION NOTE (panel.invalidElementSelected):
+# This is the label shown in the panel when an invalid node is currently
+# selected in the inspector (i.e. a non-element node or a node that is not
+# animated).
+panel.invalidElementSelected=No animations were found for the current element.
+
+# LOCALIZATION NOTE (panel.pseudoElementSelected):
+# This is the label shown in the panel when a pseudo-element is currently
+# selected in the inspector (pseudo-elements can be animated, but the tool
+# doesn't yet support them).
+panel.pseudoElementSelected=Animated pseudo-elements are not supported yet.
+
 # LOCALIZATION NOTE (player.animationNameLabel):
 # This string is displayed in each animation player widget. It is the label
 # displayed before the animation name.
 player.animationNameLabel=Animation:
 
 # LOCALIZATION NOTE (player.transitionNameLabel):
 # This string is displayed in each animation player widget. It is the label
 # displayed in the header, when the element is animated by mean of a css
--- a/devtools/client/responsive.html/app.js
+++ b/devtools/client/responsive.html/app.js
@@ -18,36 +18,47 @@ let App = createClass({
   displayName: "App",
 
   propTypes: {
     location: Types.location.isRequired,
     viewports: PropTypes.arrayOf(PropTypes.shape(Types.viewport)).isRequired,
     onExit: PropTypes.func.isRequired,
   },
 
+  onRotateViewport(id) {
+    this.props.dispatch(rotateViewport(id));
+  },
+
+  onResizeViewport(id, width, height) {
+    this.props.dispatch(resizeViewport(id, width, height));
+  },
+
   render() {
     let {
-      dispatch,
       location,
       viewports,
       onExit,
     } = this.props;
 
+    let {
+      onRotateViewport,
+      onResizeViewport,
+    } = this;
+
     return dom.div(
       {
         id: "app",
       },
       GlobalToolbar({
         onExit,
       }),
       Viewports({
         location,
         viewports,
-        onRotateViewport: id => dispatch(rotateViewport(id)),
-        onResizeViewport: (id, width, height) =>
-          dispatch(resizeViewport(id, width, height)),
+        onRotateViewport,
+        onResizeViewport,
       })
     );
   },
 
 });
 
 module.exports = connect(state => state)(App);
--- a/devtools/client/responsive.html/components/browser.js
+++ b/devtools/client/responsive.html/components/browser.js
@@ -1,23 +1,25 @@
 /* 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/. */
 
 "use strict";
 
-const { DOM: dom, createClass, PropTypes } =
+const { DOM: dom, createClass, PropTypes, addons } =
   require("devtools/client/shared/vendor/react");
 
 const Types = require("../types");
 
 module.exports = createClass({
 
   displayName: "Browser",
 
+  mixins: [ addons.PureRenderMixin ],
+
   propTypes: {
     location: Types.location.isRequired,
     width: Types.viewport.width.isRequired,
     height: Types.viewport.height.isRequired,
     isResizing: PropTypes.bool.isRequired,
   },
 
   render() {
--- a/devtools/client/responsive.html/components/global-toolbar.js
+++ b/devtools/client/responsive.html/components/global-toolbar.js
@@ -1,22 +1,24 @@
 /* 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/. */
 
 "use strict";
 
 const { getStr } = require("./utils/l10n");
-const { DOM: dom, createClass, PropTypes } =
+const { DOM: dom, createClass, PropTypes, addons } =
   require("devtools/client/shared/vendor/react");
 
 module.exports = createClass({
 
   displayName: "GlobalToolbar",
 
+  mixins: [ addons.PureRenderMixin ],
+
   propTypes: {
     onExit: PropTypes.func.isRequired,
   },
 
   render() {
     let {
       onExit,
     } = this.props;
--- a/devtools/client/responsive.html/components/viewport-toolbar.js
+++ b/devtools/client/responsive.html/components/viewport-toolbar.js
@@ -1,21 +1,23 @@
 /* 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/. */
 
 "use strict";
 
-const { DOM: dom, createClass, PropTypes } =
+const { DOM: dom, createClass, PropTypes, addons } =
   require("devtools/client/shared/vendor/react");
 
 module.exports = createClass({
 
   displayName: "ViewportToolbar",
 
+  mixins: [ addons.PureRenderMixin ],
+
   propTypes: {
     onRotateViewport: PropTypes.func.isRequired,
   },
 
   render() {
     let {
       onRotateViewport,
     } = this.props;
--- a/devtools/client/responsive.html/components/viewport.js
+++ b/devtools/client/responsive.html/components/viewport.js
@@ -17,23 +17,44 @@ module.exports = createClass({
 
   propTypes: {
     location: Types.location.isRequired,
     viewport: PropTypes.shape(Types.viewport).isRequired,
     onResizeViewport: PropTypes.func.isRequired,
     onRotateViewport: PropTypes.func.isRequired,
   },
 
+  onResizeViewport(width, height) {
+    let {
+      viewport,
+      onResizeViewport,
+    } = this.props;
+
+    onResizeViewport(viewport.id, width, height);
+  },
+
+  onRotateViewport() {
+    let {
+      viewport,
+      onRotateViewport,
+    } = this.props;
+
+    onRotateViewport(viewport.id);
+  },
+
   render() {
     let {
       location,
       viewport,
-      onResizeViewport,
+    } = this.props;
+
+    let {
       onRotateViewport,
-    } = this.props;
+      onResizeViewport,
+    } = this;
 
     return dom.div(
       {
         className: "viewport",
       },
       ResizableViewport({
         location,
         viewport,
--- a/devtools/client/responsive.html/components/viewports.js
+++ b/devtools/client/responsive.html/components/viewports.js
@@ -33,17 +33,16 @@ module.exports = createClass({
       {
         id: "viewports",
       },
       viewports.map(viewport => {
         return Viewport({
           key: viewport.id,
           location,
           viewport,
-          onResizeViewport: (width, height) =>
-            onResizeViewport(viewport.id, width, height),
-          onRotateViewport: () => onRotateViewport(viewport.id),
+          onResizeViewport,
+          onRotateViewport,
         });
       })
     );
   },
 
 });
--- a/devtools/client/scratchpad/test/browser_scratchpad_contexts.js
+++ b/devtools/client/scratchpad/test/browser_scratchpad_contexts.js
@@ -1,67 +1,66 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
 
-function test()
-{
+function test() {
   waitForExplicitFinish();
 
   gBrowser.selectedTab = gBrowser.addTab();
   gBrowser.selectedBrowser.addEventListener("load", function onLoad() {
     gBrowser.selectedBrowser.removeEventListener("load", onLoad, true);
     openScratchpad(runTests);
   }, true);
 
   content.location = "data:text/html,test context switch in Scratchpad";
 }
 
-
-function runTests()
-{
+function runTests() {
   let sp = gScratchpadWindow.Scratchpad;
   let contentMenu = gScratchpadWindow.document.getElementById("sp-menu-content");
   let chromeMenu = gScratchpadWindow.document.getElementById("sp-menu-browser");
   let notificationBox = sp.notificationBox;
 
   ok(contentMenu, "found #sp-menu-content");
   ok(chromeMenu, "found #sp-menu-browser");
   ok(notificationBox, "found Scratchpad.notificationBox");
 
   let tests = [{
     method: "run",
-    prepare: function() {
+    prepare: function*() {
       sp.setContentContext();
 
       is(sp.executionContext, gScratchpadWindow.SCRATCHPAD_CONTEXT_CONTENT,
          "executionContext is content");
 
       is(contentMenu.getAttribute("checked"), "true",
          "content menuitem is checked");
 
       isnot(chromeMenu.getAttribute("checked"), "true",
          "chrome menuitem is not checked");
 
       ok(!notificationBox.currentNotification,
          "there is no notification in content context");
 
       sp.editor.setText("window.foobarBug636725 = 'aloha';");
 
-      ok(!content.wrappedJSObject.foobarBug636725,
-         "no content.foobarBug636725");
+      let pageResult = yield inContent(function*() {
+        return content.wrappedJSObject.foobarBug636725;
+      });
+      ok(!pageResult, "no content.foobarBug636725");
     },
-    then: function() {
+    then: function*() {
       is(content.wrappedJSObject.foobarBug636725, "aloha",
          "content.foobarBug636725 has been set");
     }
-  },
-  {
+  }, {
     method: "run",
-    prepare: function() {
+    prepare: function*() {
       sp.setBrowserContext();
 
       is(sp.executionContext, gScratchpadWindow.SCRATCHPAD_CONTEXT_BROWSER,
          "executionContext is chrome");
 
       is(chromeMenu.getAttribute("checked"), "true",
          "chrome menuitem is checked");
 
@@ -72,80 +71,75 @@ function runTests()
          "there is a notification in browser context");
 
       let [ from, to ] = sp.editor.getPosition(31, 32);
       sp.editor.replaceText("2'", from, to);
 
       is(sp.getText(), "window.foobarBug636725 = 'aloha2';",
          "setText() worked");
     },
-    then: function() {
+    then: function*() {
       is(window.foobarBug636725, "aloha2",
          "window.foobarBug636725 has been set");
 
       delete window.foobarBug636725;
       ok(!window.foobarBug636725, "no window.foobarBug636725");
     }
-  },
-  {
+  }, {
     method: "run",
-    prepare: function() {
+    prepare: function*() {
       sp.editor.replaceText("gBrowser", sp.editor.getPosition(7));
 
       is(sp.getText(), "window.gBrowser",
          "setText() worked with no end for the replace range");
     },
-    then: function([, , result]) {
+    then: function*([, , result]) {
       is(result.class, "XULElement",
          "chrome context has access to chrome objects");
     }
-  },
-  {
+  }, {
     method: "run",
-    prepare: function() {
+    prepare: function*() {
       // Check that the sandbox is cached.
       sp.editor.setText("typeof foobarBug636725cache;");
     },
-    then: function([, , result]) {
+    then: function*([, , result]) {
       is(result, "undefined", "global variable does not exist");
     }
-  },
-  {
+  }, {
     method: "run",
-    prepare: function() {
+    prepare: function*() {
       sp.editor.setText("window.foobarBug636725cache = 'foo';" +
                  "typeof foobarBug636725cache;");
     },
-    then: function([, , result]) {
+    then: function*([, , result]) {
       is(result, "string",
          "global variable exists across two different executions");
     }
-  },
-  {
+  }, {
     method: "run",
-    prepare: function() {
+    prepare: function*() {
       sp.editor.setText("window.foobarBug636725cache2 = 'foo';" +
                  "typeof foobarBug636725cache2;");
     },
-    then: function([, , result]) {
+    then: function*([, , result]) {
       is(result, "string",
          "global variable exists across two different executions");
     }
-  },
-  {
+  }, {
     method: "run",
-    prepare: function() {
+    prepare: function*() {
       sp.setContentContext();
 
       is(sp.executionContext, gScratchpadWindow.SCRATCHPAD_CONTEXT_CONTENT,
          "executionContext is content");
 
       sp.editor.setText("typeof foobarBug636725cache2;");
     },
-    then: function([, , result]) {
+    then: function*([, , result]) {
       is(result, "undefined",
          "global variable no longer exists after changing the context");
     }
   }];
 
   runAsyncCallbackTests(sp, tests).then(() => {
     sp.setBrowserContext();
     sp.editor.setText("delete foobarBug636725cache;" +
--- a/devtools/client/scratchpad/test/browser_scratchpad_execute_print.js
+++ b/devtools/client/scratchpad/test/browser_scratchpad_execute_print.js
@@ -1,89 +1,95 @@
 /* vim: set ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
+"use strict";
 
-function test()
-{
+function test() {
   waitForExplicitFinish();
 
   gBrowser.selectedTab = gBrowser.addTab();
   gBrowser.selectedBrowser.addEventListener("load", function onTabLoad() {
     gBrowser.selectedBrowser.removeEventListener("load", onTabLoad, true);
     openScratchpad(runTests);
   }, true);
 
   content.location = "data:text/html,<p>test run() and display() in Scratchpad";
 }
 
-
-function runTests()
-{
+function runTests() {
   let sp = gScratchpadWindow.Scratchpad;
   let tests = [{
     method: "run",
-    prepare: function() {
-      content.wrappedJSObject.foobarBug636725 = 1;
+    prepare: function*() {
+      yield inContent(function*() {
+        content.wrappedJSObject.foobarBug636725 = 1;
+      });
       sp.editor.setText("++window.foobarBug636725");
     },
-    then: function([code, , result]) {
+    then: function*([code, , result]) {
       is(code, sp.getText(), "code is correct");
-      is(result, content.wrappedJSObject.foobarBug636725,
+
+      let pageResult = yield inContent(function*() {
+        return content.wrappedJSObject.foobarBug636725;
+      });
+      is(result, pageResult,
          "result is correct");
 
       is(sp.getText(), "++window.foobarBug636725",
          "run() does not change the editor content");
 
-      is(content.wrappedJSObject.foobarBug636725, 2,
-         "run() updated window.foobarBug636725");
+      is(pageResult, 2, "run() updated window.foobarBug636725");
     }
-  },
-  {
+  }, {
     method: "display",
-    prepare: function() {},
-    then: function() {
-      is(content.wrappedJSObject.foobarBug636725, 3,
-         "display() updated window.foobarBug636725");
+    prepare: function*() {},
+    then: function*() {
+      let pageResult = yield inContent(function*() {
+        return content.wrappedJSObject.foobarBug636725;
+      });
+      is(pageResult, 3, "display() updated window.foobarBug636725");
 
       is(sp.getText(), "++window.foobarBug636725\n/*\n3\n*/",
          "display() shows evaluation result in the textbox");
 
       is(sp.editor.getSelection(), "\n/*\n3\n*/", "getSelection is correct");
     }
-  },
-  {
+  }, {
     method: "run",
-    prepare: function() {
+    prepare: function*() {
       sp.editor.setText("window.foobarBug636725 = 'a';\n" +
         "window.foobarBug636725 = 'b';");
       sp.editor.setSelection({ line: 0, ch: 0 }, { line: 0, ch: 29 });
     },
-    then: function([code, , result]) {
+    then: function*([code, , result]) {
       is(code, "window.foobarBug636725 = 'a';", "code is correct");
       is(result, "a", "result is correct");
 
       is(sp.getText(), "window.foobarBug636725 = 'a';\n" +
                        "window.foobarBug636725 = 'b';",
          "run() does not change the textbox value");
 
-      is(content.wrappedJSObject.foobarBug636725, "a",
-         "run() worked for the selected range");
+      let pageResult = yield inContent(function*() {
+        return content.wrappedJSObject.foobarBug636725;
+      });
+      is(pageResult, "a", "run() worked for the selected range");
     }
-  },
-  {
+  }, {
     method: "display",
-    prepare: function() {
+    prepare: function*() {
       sp.editor.setText("window.foobarBug636725 = 'c';\n" +
                  "window.foobarBug636725 = 'b';");
       sp.editor.setSelection({ line: 0, ch: 0 }, { line: 0, ch: 22 });
     },
-    then: function() {
-      is(content.wrappedJSObject.foobarBug636725, "a",
-         "display() worked for the selected range");
+    then: function*() {
+      let pageResult = yield inContent(function*() {
+        return content.wrappedJSObject.foobarBug636725;
+      });
+      is(pageResult, "a", "display() worked for the selected range");
 
       is(sp.getText(), "window.foobarBug636725" +
                        "\n/*\na\n*/" +
                        " = 'c';\n" +
                        "window.foobarBug636725 = 'b';",
          "display() shows evaluation result in the textbox");
 
       is(sp.editor.getSelection(), "\n/*\na\n*/", "getSelection is correct");
--- a/devtools/client/scratchpad/test/head.js
+++ b/devtools/client/scratchpad/test/head.js
@@ -186,31 +186,29 @@ function runAsyncTests(aScratchpad, aTes
  *          Scratchpad method to use, one of "run", "display", or "inspect".
  *        - prepare
  *          The callback to run just prior to executing the scratchpad method.
  *        - then
  *          The callback to run when the scratchpad execution promise resolves.
  * @return Promise
  *         The promise that will be resolved when all tests are finished.
  */
-function runAsyncCallbackTests(aScratchpad, aTests)
-{
-  let deferred = promise.defer();
+var runAsyncCallbackTests = Task.async(function*(aScratchpad, aTests) {
+  for (let {prepare, method, then} of aTests) {
+    yield prepare();
+    let res = yield aScratchpad[method]();
+    yield then(res);
+  }
+});
 
-  (function runTest() {
-    if (aTests.length) {
-      let test = aTests.shift();
-      test.prepare();
-      aScratchpad[test.method]().then(test.then.bind(test)).then(runTest);
-    } else {
-      deferred.resolve();
-    }
-  })();
-
-  return deferred.promise;
+/**
+ * A simple wrapper for ContentTask.spawn for more compact code.
+ */
+function inContent(generator) {
+  return ContentTask.spawn(gBrowser.selectedBrowser, {}, generator);
 }
 
 function cleanup()
 {
   if (gScratchpadWindow) {
     gScratchpadWindow.close();
     gScratchpadWindow = null;
   }
--- a/devtools/client/shared/test/test-actor.js
+++ b/devtools/client/shared/test/test-actor.js
@@ -222,16 +222,38 @@ var TestActor = exports.TestActor = prot
     request: {
       event: Arg(0, "string"),
       actorID: Arg(1, "string")
     },
     response: {}
   }),
 
   /**
+   * Wait for a specific event on a node matching the provided selector.
+   * @param {String} eventName The name of the event to listen to
+   * @param {String} selector Optional:  css selector of the node which should
+   *        trigger the event. If ommitted, target will be the content window
+   */
+  waitForEventOnNode: protocol.method(function (eventName, selector) {
+    return new Promise(resolve => {
+      let node = selector ? this._querySelector(selector) : this.content;
+      node.addEventListener(eventName, function onEvent() {
+        node.removeEventListener(eventName, onEvent);
+        resolve();
+      });
+    });
+  }, {
+    request: {
+      eventName: Arg(0, "string"),
+      selector: Arg(1, "nullable:string")
+    },
+    response: {}
+  }),
+
+  /**
    * Change the zoom level of the page.
    * Optionally subscribe to the box-model highlighter's update event and waiting
    * for it to refresh before responding.
    * @param {Number} level The new zoom level
    * @param {String} actorID Optional. The highlighter actor ID
    */
   changeZoomLevel: protocol.method(function (level, actorID) {
     dumpn("Zooming page to " + level);
--- a/devtools/client/themes/markup.css
+++ b/devtools/client/themes/markup.css
@@ -227,16 +227,17 @@ ul.children + .tag-line::before {
   content: "";
   background: var(--theme-highlight-lightorange);
   border-radius: 50%;
   width: .8em;
   height: .8em;
   margin-top: .3em;
   left: 1px;
   position: absolute;
+  z-index: 1;
 }
 
 /* Selected nodes in the tree should have light selected text.
    theme-selected doesn't work in this case since the text is a
    sibling of the class, not a child. */
 .theme-selected ~ .editor,
 .theme-selected ~ .editor .theme-fg-color1,
 .theme-selected ~ .editor .theme-fg-color2,
--- a/devtools/client/themes/toolbars.css
+++ b/devtools/client/themes/toolbars.css
@@ -669,19 +669,17 @@
 #toolbox-dock-bottom:hover,
 #toolbox-dock-side:hover {
   opacity: 1;
 }
 
 .devtools-separator {
   margin: 0 2px;
   width: 2px;
-  background-image: linear-gradient(transparent, hsla(204,45%,98%,.1), transparent),
-                    linear-gradient(transparent, hsla(206,37%,4%,.6), transparent),
-                    linear-gradient(transparent, hsla(204,45%,98%,.1), transparent);
+  background-image: linear-gradient(transparent 15%, var(--theme-splitter-color) 15%, var(--theme-splitter-color) 85%, transparent 85%);
   background-size: 1px 100%;
   background-repeat: no-repeat;
   background-position: 0, 1px, 2px;
 }
 
 #toolbox-buttons:empty + .devtools-separator,
 .devtools-separator[invisible] {
   visibility: hidden;
--- a/devtools/client/webconsole/test/browser.ini
+++ b/devtools/client/webconsole/test/browser.ini
@@ -207,17 +207,16 @@ tags = mcb
 [browser_webconsole_bug_583816_No_input_and_Tab_key_pressed.js]
 [browser_webconsole_bug_585237_line_limit.js]
 [browser_webconsole_bug_585956_console_trace.js]
 [browser_webconsole_bug_585991_autocomplete_keys.js]
 [browser_webconsole_bug_585991_autocomplete_popup.js]
 [browser_webconsole_bug_586388_select_all.js]
 [browser_webconsole_bug_587617_output_copy.js]
 [browser_webconsole_bug_588342_document_focus.js]
-skip-if = e10s # Bug 1042253 - webconsole tests disabled with e10s
 [browser_webconsole_bug_588730_text_node_insertion.js]
 [browser_webconsole_bug_588967_input_expansion.js]
 [browser_webconsole_bug_589162_css_filter.js]
 [browser_webconsole_bug_592442_closing_brackets.js]
 [browser_webconsole_bug_593003_iframe_wrong_hud.js]
 [browser_webconsole_bug_594497_history_arrow_keys.js]
 [browser_webconsole_bug_595223_file_uri.js]
 [browser_webconsole_bug_595350_multiple_windows_and_tabs.js]
--- a/devtools/client/webconsole/test/browser_webconsole_bug_588342_document_focus.js
+++ b/devtools/client/webconsole/test/browser_webconsole_bug_588342_document_focus.js
@@ -2,33 +2,35 @@
 /* vim: set ft=javascript ts=2 et sw=2 tw=80: */
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 const TEST_URI = "data:text/html;charset=utf-8,Web Console test for bug 588342";
 
-var fm = Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager);
-
 add_task(function* () {
   let { browser } = yield loadTab(TEST_URI);
+  let hud = yield openConsole();
 
-  let hud = yield openConsole();
-  yield consoleOpened(hud);
+  yield checkConsoleFocus(hud);
 
-  is(fm.focusedWindow, browser.contentWindow,
-     "content document has focus");
+  let isFocused = yield ContentTask.spawn(browser, { }, function* () {
+    var fm = Components.classes["@mozilla.org/focus-manager;1"].
+                         getService(Components.interfaces.nsIFocusManager);
+    return fm.focusedWindow == content;
+  });
 
-  fm = null;
+  ok(isFocused, "content document has focus");
 });
 
-function consoleOpened(hud) {
-  let deferred = promise.defer();
-  waitForFocus(function() {
-    is(hud.jsterm.inputNode.getAttribute("focused"), "true",
-       "jsterm input is focused on web console open");
-    isnot(fm.focusedWindow, content, "content document has no focus");
-    closeConsole(null).then(deferred.resolve);
-  }, hud.iframeWindow);
+function* checkConsoleFocus(hud) {
+  let fm = Cc["@mozilla.org/focus-manager;1"].getService(Ci.nsIFocusManager);
 
-  return deferred.promise;
+  yield new Promise(resolve => {
+    waitForFocus(resolve);
+  });
+
+  is(hud.jsterm.inputNode.getAttribute("focused"), "true",
+     "jsterm input is focused on web console open");
+  is(fm.focusedWindow, hud.iframeWindow, "hud window is focused");
+  yield closeConsole(null);
 }
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -2069,27 +2069,16 @@ MediaManager::GetUserMedia(nsPIDOMWindow
     if ((!IsOn(c.mAudio) || audioPerm == nsIPermissionManager::DENY_ACTION) &&
         (!IsOn(c.mVideo) || videoPerm == nsIPermissionManager::DENY_ACTION)) {
       RefPtr<MediaStreamError> error =
           new MediaStreamError(aWindow, NS_LITERAL_STRING("SecurityError"));
       onFailure->OnError(error);
       RemoveFromWindowList(windowID, listener);
       return NS_OK;
     }
-  } else if (loop) {
-    // Record that we gave Loop permission to use camera access.
-    nsCOMPtr<nsIPermissionManager> permManager =
-      do_GetService(NS_PERMISSIONMANAGER_CONTRACTID, &rv);
-    NS_ENSURE_SUCCESS(rv, rv);
-
-    rv = permManager->Add(docURI, "camera",
-                          nsIPermissionManager::ALLOW_ACTION,
-                          nsIPermissionManager::EXPIRE_SESSION,
-                          0);
-    NS_ENSURE_SUCCESS(rv, rv);
   }
 
 #if defined(MOZ_B2G_CAMERA) && defined(MOZ_WIDGET_GONK)
   if (mCameraManager == nullptr) {
     mCameraManager = nsDOMCameraManager::CreateInstance(aWindow);
   }
 #endif
 
--- a/dom/push/PushNotifier.cpp
+++ b/dom/push/PushNotifier.cpp
@@ -4,16 +4,17 @@
 
 #include "PushNotifier.h"
 
 #include "nsContentUtils.h"
 #include "nsCOMPtr.h"
 #include "nsXPCOM.h"
 #include "nsIXULRuntime.h"
 #include "ServiceWorkerManager.h"
+#include "nsICategoryManager.h"
 
 #include "mozilla/Services.h"
 #include "mozilla/unused.h"
 
 #include "mozilla/dom/BodyUtil.h"
 #include "mozilla/dom/ContentParent.h"
 
 namespace mozilla {
@@ -178,39 +179,53 @@ PushNotifier::NotifySubscriptionChangeWo
   }
   return ok ? NS_OK : NS_ERROR_FAILURE;
 }
 
 nsresult
 PushNotifier::NotifyPushObservers(const nsACString& aScope,
                                   Maybe<nsTArray<uint8_t>> aData)
 {
-  nsCOMPtr<nsIObserverService> obsService =
-    mozilla::services::GetObserverService();
-  if (!obsService) {
-    return NS_ERROR_FAILURE;
-  }
   nsCOMPtr<nsIPushMessage> message = nullptr;
   if (aData) {
     message = new PushMessage(aData.ref());
   }
-  return obsService->NotifyObservers(message, OBSERVER_TOPIC_PUSH,
-                                     NS_ConvertUTF8toUTF16(aScope).get());
+  return DoNotifyObservers(message, OBSERVER_TOPIC_PUSH, aScope);
 }
 
 nsresult
 PushNotifier::NotifySubscriptionChangeObservers(const nsACString& aScope)
 {
+  return DoNotifyObservers(nullptr, OBSERVER_TOPIC_SUBSCRIPTION_CHANGE, aScope);
+}
+
+nsresult
+PushNotifier::DoNotifyObservers(nsISupports *aSubject, const char *aTopic,
+                                const nsACString& aScope)
+{
   nsCOMPtr<nsIObserverService> obsService =
     mozilla::services::GetObserverService();
   if (!obsService) {
     return NS_ERROR_FAILURE;
   }
-  return obsService->NotifyObservers(nullptr,
-                                     OBSERVER_TOPIC_SUBSCRIPTION_CHANGE,
+  // If there's a service for this push category, make sure it is alive.
+  nsCOMPtr<nsICategoryManager> catMan =
+    do_GetService(NS_CATEGORYMANAGER_CONTRACTID);
+  if (catMan) {
+    nsXPIDLCString contractId;
+    nsresult rv = catMan->GetCategoryEntry("push",
+                                           PromiseFlatCString(aScope).get(),
+                                           getter_Copies(contractId));
+    if (NS_SUCCEEDED(rv)) {
+      // Ensure the service is created - we don't need to do anything with
+      // it though - we assume the service constructor attaches a listener.
+      nsCOMPtr<nsISupports> service = do_GetService(contractId);
+    }
+  }
+  return obsService->NotifyObservers(aSubject, aTopic,
                                      NS_ConvertUTF8toUTF16(aScope).get());
 }
 
 bool
 PushNotifier::ShouldNotifyObservers(nsIPrincipal* aPrincipal)
 {
   // Notify XPCOM observers for system subscriptions, or all subscriptions
   // if the `testing.notifyAllObservers` pref is set.
--- a/dom/push/PushNotifier.h
+++ b/dom/push/PushNotifier.h
@@ -52,16 +52,18 @@ public:
 
 protected:
   virtual ~PushNotifier();
 
 private:
   nsresult NotifyPushObservers(const nsACString& aScope,
                                Maybe<nsTArray<uint8_t>> aData);
   nsresult NotifySubscriptionChangeObservers(const nsACString& aScope);
+  nsresult DoNotifyObservers(nsISupports *aSubject, const char *aTopic,
+                             const nsACString& aScope);
   bool ShouldNotifyObservers(nsIPrincipal* aPrincipal);
   bool ShouldNotifyWorkers(nsIPrincipal* aPrincipal);
 };
 
 /**
  * `PushMessage` implements the `nsIPushMessage` interface, similar to
  * the `PushMessageData` WebIDL interface. Instances of this class are
  * passed as the subject of `push-message` observer notifications for
--- a/dom/push/moz.build
+++ b/dom/push/moz.build
@@ -41,16 +41,18 @@ EXPORTS.mozilla.dom += [
     'PushNotifier.h',
 ]
 
 UNIFIED_SOURCES += [
     'PushManager.cpp',
     'PushNotifier.cpp',
 ]
 
+TEST_DIRS += ['test/xpcshell']
+
 include('/ipc/chromium/chromium-config.mozbuild')
 
 if CONFIG['GNU_CXX']:
     CXXFLAGS += ['-Wshadow']
 
 LOCAL_INCLUDES += [
     '../base',
     '../ipc',
new file mode 100644
--- /dev/null
+++ b/dom/push/test/xpcshell/PushServiceHandler.js
@@ -0,0 +1,30 @@
+// An XPCOM service that's registered with the category manager for handling
+// push notifications with scope "test-scope"
+"use strict";
+
+const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
+
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+Cu.import("resource://gre/modules/Services.jsm");
+
+let pushService = Cc["@mozilla.org/push/Service;1"].getService(Ci.nsIPushService);
+
+function PushServiceHandler() {
+  // So JS code can reach into us.
+  this.wrappedJSObject = this;
+  // Register a push observer.
+  this.observed = [];
+  Services.obs.addObserver(this, pushService.pushTopic, false);
+  Services.obs.addObserver(this, pushService.subscriptionChangeTopic, false);
+}
+
+PushServiceHandler.prototype = {
+  classID: Components.ID("{bb7c5199-c0f7-4976-9f6d-1306e32c5591}"),
+  QueryInterface: XPCOMUtils.generateQI([]),
+
+  observe(subject, topic, data) {
+    this.observed.push({ subject, topic, data });
+  },
+}
+
+this.NSGetFactory = XPCOMUtils.generateNSGetFactory([PushServiceHandler]);
new file mode 100644
--- /dev/null
+++ b/dom/push/test/xpcshell/PushServiceHandler.manifest
@@ -0,0 +1,4 @@
+component {bb7c5199-c0f7-4976-9f6d-1306e32c5591} PushServiceHandler.js
+contract @mozilla.org/dom/push/test/PushServiceHandler;1 {bb7c5199-c0f7-4976-9f6d-1306e32c5591}
+
+category push test-scope @mozilla.org/dom/push/test/PushServiceHandler;1
new file mode 100644
--- /dev/null
+++ b/dom/push/test/xpcshell/moz.build
@@ -0,0 +1,4 @@
+EXTRA_COMPONENTS += [
+    'PushServiceHandler.js',
+    'PushServiceHandler.manifest',
+]
new file mode 100644
--- /dev/null
+++ b/dom/push/test/xpcshell/test_handler_service.js
@@ -0,0 +1,36 @@
+"use strict";
+
+// Here we test that if an xpcom component is registered with the category
+// manager for push notifications against a specific scope, that service is
+// instantiated before the message is delivered.
+
+// This component is registered for "test-scope"
+const kServiceContractID = "@mozilla.org/dom/push/test/PushServiceHandler;1";
+
+let pushService = Cc["@mozilla.org/push/Service;1"].getService(Ci.nsIPushService);
+
+add_test(function test_service_instantiation() {
+  do_load_manifest("PushServiceHandler.manifest");
+
+  let scope = "test-scope";
+  let pushNotifier = Cc["@mozilla.org/push/Notifier;1"].getService(Ci.nsIPushNotifier);
+  let principal = Services.scriptSecurityManager.getSystemPrincipal();
+  pushNotifier.notifyPush(scope, principal);
+
+  // Now get a handle to our service and check it received the notification.
+  let handlerService = Cc[kServiceContractID]
+                       .getService(Ci.nsISupports)
+                       .wrappedJSObject;
+
+  equal(handlerService.observed.length, 1);
+  equal(handlerService.observed[0].topic, pushService.pushTopic);
+  equal(handlerService.observed[0].data, scope);
+
+  // and a subscription change.
+  pushNotifier.notifySubscriptionChange(scope, principal);
+  equal(handlerService.observed.length, 2);
+  equal(handlerService.observed[1].topic, pushService.subscriptionChangeTopic);
+  equal(handlerService.observed[1].data, scope);
+
+  run_next_test();
+});
--- a/dom/push/test/xpcshell/xpcshell.ini
+++ b/dom/push/test/xpcshell/xpcshell.ini
@@ -1,16 +1,18 @@
 [DEFAULT]
 head = head.js head-http2.js
 tail =
 # Push notifications and alarms are currently disabled on Android.
 skip-if = toolkit == 'android'
 
 [test_clear_origin_data.js]
 [test_drop_expired.js]
+[test_handler_service.js]
+support-files = PushServiceHandler.js PushServiceHandler.manifest
 [test_notification_ack.js]
 [test_notification_data.js]
 [test_notification_duplicate.js]
 [test_notification_error.js]
 [test_notification_incomplete.js]
 [test_notification_version_string.js]
 
 [test_permissions.js]
--- a/mobile/android/base/java/org/mozilla/gecko/tabqueue/TabQueueService.java
+++ b/mobile/android/base/java/org/mozilla/gecko/tabqueue/TabQueueService.java
@@ -172,17 +172,17 @@ public class TabQueueService extends Ser
         if (stopServiceRunnable != null) {
             // If we're already displaying a toast, keep displaying it but store the previous url.
             // The open button will refer to the most recently opened link.
             tabQueueHandler.removeCallbacks(stopServiceRunnable);
             stopServiceRunnable.run(false);
         } else {
             try {
                 windowManager.addView(toastLayout, toastLayoutParams);
-            } catch (final SecurityException e) {
+            } catch (final SecurityException | WindowManager.BadTokenException e) {
                 Toast.makeText(this, getText(R.string.tab_queue_toast_message), Toast.LENGTH_SHORT).show();
                 showSettingsNotification();
             }
         }
 
         stopServiceRunnable = new StopServiceRunnable(startId) {
             @Override
             public void onRun() {
index 089c30a1da2d0e2c3f221a4e2d8570d74154d13a..02103dde00ed2181c98c4257f62d647d17caf85d
GIT binary patch
literal 114688
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
index cbb668a9571489f0abf5705e4652aeebb69335ce..d3f4c2826b584ab1bbe9cf3f38a78f5e18f04b69
GIT binary patch
literal 116736
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
--- a/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testBrowserDatabaseHelperUpgrades.java
+++ b/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests/testBrowserDatabaseHelperUpgrades.java
@@ -1,16 +1,17 @@
 /* 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/. */
 
 package org.mozilla.gecko.tests;
 
 import static org.mozilla.gecko.tests.helpers.AssertionHelper.*;
 
+import android.database.sqlite.SQLiteDatabase;
 import android.util.Log;
 
 import org.mozilla.gecko.db.BrowserDatabaseHelper;
 
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -73,20 +74,34 @@ public class testBrowserDatabaseHelperUp
 
     /**
      * @throws IOException if the database cannot be copied.
      */
     public void test() throws IOException {
         for (int i = TEST_FROM_VERSION; i < BrowserDatabaseHelper.DATABASE_VERSION; ++i) {
             Log.d(LOGTAG, "Testing upgrade from version: " + i);
             final String tempDbPath = copyDatabase(i);
+
+            final SQLiteDatabase db = SQLiteDatabase.openDatabase(tempDbPath, null, 0);
+            try {
+                fAssertEquals("Input DB isn't the expected version",
+                              i, db.getVersion());
+            } finally {
+                db.close();
+            }
+
             final BrowserDatabaseHelper dbHelperToUpgrade = new BrowserDatabaseHelper(getActivity(), tempDbPath);
             // Ideally, we'd test upgrading version i to version i + 1 but this method does not permit that. Alas!
-            fAssertEquals("DB helper should upgrade to latest version",
-                    BrowserDatabaseHelper.DATABASE_VERSION, dbHelperToUpgrade.getWritableDatabase().getVersion());
+            final SQLiteDatabase upgradedDb = dbHelperToUpgrade.getWritableDatabase();
+            try {
+                fAssertEquals("DB helper should upgrade to latest version",
+                              BrowserDatabaseHelper.DATABASE_VERSION, upgradedDb.getVersion());
+            } finally {
+                upgradedDb.close();
+            }
         }
     }
 
     /**
      * Copies the database from the assets directory to a temporary test file.
      *
      * @param version version of the database to copy.
      * @return the String path to the new copy of the database
--- a/python/mozboot/mozboot/android.py
+++ b/python/mozboot/mozboot/android.py
@@ -69,16 +69,33 @@ ac_add_options --enable-application=mobi
 ac_add_options --target=arm-linux-androideabi
 
 # With the following Android SDK and NDK:
 ac_add_options --with-android-sdk="%s"
 ac_add_options --with-android-ndk="%s"
 >>>
 '''
 
+MOBILE_ANDROID_ARTIFACT_MODE_MOZCONFIG_TEMPLATE = '''
+Paste the lines between the chevrons (>>> and <<<) into your mozconfig file:
+
+<<<
+# Build Firefox for Android Artifact Mode:
+ac_add_options --enable-application=mobile/android
+ac_add_options --target=arm-linux-androideabi
+ac_add_options --enable-artifact-builds
+
+# With the following Android SDK:
+ac_add_options --with-android-sdk="%s"
+
+# Write build artifacts to:
+mk_add_options MOZ_OBJDIR=./objdir-frontend
+>>>
+'''
+
 
 def check_output(*args, **kwargs):
     """Run subprocess.check_output even if Python doesn't provide it."""
     from base import BaseBootstrapper
     fn = getattr(subprocess, 'check_output', BaseBootstrapper._check_output)
 
     return fn(*args, **kwargs)
 
@@ -172,29 +189,31 @@ def install_mobile_android_sdk_or_ndk(ur
             subprocess.check_call(cmd, stdout=stdout)
 
         print('Unpacking %s... DONE' % abspath)
 
     finally:
         os.chdir(old_path)
 
 
-def ensure_android_sdk_and_ndk(path, sdk_path, sdk_url, ndk_path, ndk_url):
+def ensure_android_sdk_and_ndk(path, sdk_path, sdk_url, ndk_path, ndk_url, artifact_mode):
     '''
     Ensure the Android SDK and NDK are found at the given paths.  If not, fetch
     and unpack the SDK and/or NDK from the given URLs into |path|.
     '''
 
-    # It's not particularyl bad to overwrite the NDK toolchain, but it does take
+    # It's not particularly bad to overwrite the NDK toolchain, but it does take
     # a while to unpack, so let's avoid the disk activity if possible.  The SDK
     # may prompt about licensing, so we do this first.
-    if os.path.isdir(ndk_path):
-        print(ANDROID_NDK_EXISTS % ndk_path)
-    else:
-        install_mobile_android_sdk_or_ndk(ndk_url, path)
+    # Check for Android NDK only if we are not in artifact mode.
+    if not artifact_mode:
+        if os.path.isdir(ndk_path):
+            print(ANDROID_NDK_EXISTS % ndk_path)
+        else:
+            install_mobile_android_sdk_or_ndk(ndk_url, path)
 
     # We don't want to blindly overwrite, since we use the |android| tool to
     # install additional parts of the Android toolchain.  If we overwrite,
     # we lose whatever Android packages the user may have already installed.
     if os.path.isdir(sdk_path):
         print(ANDROID_SDK_EXISTS % sdk_path)
     else:
         install_mobile_android_sdk_or_ndk(sdk_url, path)
@@ -227,18 +246,21 @@ def ensure_android_packages(android_tool
     # Bug 1171232: The |android| tool behaviour has changed; we no longer can
     # see what packages are installed easily.  Don't check until we find a way
     # to actually verify.
     failing = []
     if failing:
         raise Exception(MISSING_ANDROID_PACKAGES % (', '.join(missing), ', '.join(failing)))
 
 
-def suggest_mozconfig(sdk_path=None, ndk_path=None):
-    print(MOBILE_ANDROID_MOZCONFIG_TEMPLATE % (sdk_path, ndk_path))
+def suggest_mozconfig(sdk_path=None, ndk_path=None, artifact_mode=False):
+    if artifact_mode:
+        print(MOBILE_ANDROID_ARTIFACT_MODE_MOZCONFIG_TEMPLATE % (sdk_path))
+    else:
+        print(MOBILE_ANDROID_MOZCONFIG_TEMPLATE % (sdk_path, ndk_path))
 
 
 def android_ndk_url(os_name, ver='r10e'):
     # Produce a URL like 'https://dl.google.com/android/ndk/android-ndk-r10e-linux-x86_64.bin'.
     base_url = 'https://dl.google.com/android/ndk/android-ndk'
 
     if sys.maxsize > 2**32:
         arch = 'x86_64'
--- a/python/mozboot/mozboot/archlinux.py
+++ b/python/mozboot/mozboot/archlinux.py
@@ -80,21 +80,27 @@ class ArchlinuxBootstrapper(BaseBootstra
     def install_system_packages(self):
         self.pacman_install(*self.SYSTEM_PACKAGES)
 
     def install_browser_packages(self):
         self.aur_install(*self.BROWSER_AUR_PACKAGES)
         self.pacman_install(*self.BROWSER_PACKAGES)
 
     def install_mobile_android_packages(self):
+        self.ensure_mobile_android_packages()
+
+    def install_mobile_android_artifact_mode_packages(self):
+        self.ensure_mobile_android_packages(artifact_mode=True)
+
+    def ensure_mobile_android_packages(self, artifact_mode=False):
         import android
 
         # Multi-part process:
         # 1. System packages.
-        # 2. Android SDK and NDK.
+        # 2. Android SDK. Android NDK only if we are not in artifact mode.
         # 3. Android packages.
 
         # 1. This is hard to believe, but the Android SDK binaries are 32-bit
         # and that conflicts with 64-bit Arch installations out of the box.  The
         # solution is to add the multilibs repository; unfortunately, this
         # requires manual intervention.
         try:
             self.pacman_install(*self.MOBILE_ANDROID_COMMON_PACKAGES)
@@ -112,24 +118,29 @@ class ArchlinuxBootstrapper(BaseBootstra
         mozbuild_path = os.environ.get('MOZBUILD_STATE_PATH', os.path.expanduser(os.path.join('~', '.mozbuild')))
         self.sdk_path = os.environ.get('ANDROID_SDK_HOME', os.path.join(mozbuild_path, 'android-sdk-linux'))
         self.ndk_path = os.environ.get('ANDROID_NDK_HOME', os.path.join(mozbuild_path, 'android-ndk-r10e'))
         self.sdk_url = 'https://dl.google.com/android/android-sdk_r24.0.1-linux.tgz'
         self.ndk_url = android.android_ndk_url('linux')
 
         android.ensure_android_sdk_and_ndk(path=mozbuild_path,
                                            sdk_path=self.sdk_path, sdk_url=self.sdk_url,
-                                           ndk_path=self.ndk_path, ndk_url=self.ndk_url)
+                                           ndk_path=self.ndk_path, ndk_url=self.ndk_url,
+                                           artifact_mode=artifact_mode)
         android_tool = os.path.join(self.sdk_path, 'tools', 'android')
         android.ensure_android_packages(android_tool=android_tool)
 
-    def suggest_mobile_android_mozconfig(self):
+    def suggest_mobile_android_mozconfig(self, artifact_mode=False):
         import android
         android.suggest_mozconfig(sdk_path=self.sdk_path,
-                                  ndk_path=self.ndk_path)
+                                  ndk_path=self.ndk_path,
+                                  artifact_mode=artifact_mode)
+
+    def suggest_mobile_android_artifact_mode_mozconfig(self):
+        self.suggest_mobile_android_mozconfig(artifact_mode=True)
 
     def _update_package_manager(self):
         self.pacman_update
 
     def upgrade_mercurial(self, current):
         self.pacman_install('mercurial')
 
     def upgrade_python(self, current):
--- a/python/mozboot/mozboot/base.py
+++ b/python/mozboot/mozboot/base.py
@@ -131,16 +131,38 @@ class BaseBootstrapper(object):
         should contain.
 
         Firefox for Android needs an application and an ABI set, and it needs
         paths to the Android SDK and NDK.
         '''
         raise NotImplementedError('%s does not yet implement suggest_mobile_android_mozconfig()' %
                                   __name__)
 
+    def install_mobile_android_artifact_mode_packages(self):
+        '''
+        Install packages required to build Firefox for Android (application
+        'mobile/android', also known as Fennec) in Artifact Mode.
+        '''
+        raise NotImplementedError(
+            'Cannot bootstrap Firefox for Android Artifact Mode: '
+            '%s does not yet implement install_mobile_android_artifact_mode_packages()'
+            % __name__)
+
+    def suggest_mobile_android_artifact_mode_mozconfig(self):
+        '''
+        Print a message to the console detailing what the user's mozconfig
+        should contain.
+
+        Firefox for Android Artifact Mode needs an application and an ABI set,
+        and it needs paths to the Android SDK.
+        '''
+        raise NotImplementedError(
+            '%s does not yet implement suggest_mobile_android_artifact_mode_mozconfig()'
+            % __name__)
+
     def which(self, name):
         """Python implementation of which.
 
         It returns the path of an executable or None if it couldn't be found.
         """
         for path in os.environ['PATH'].split(os.pathsep):
             test = os.path.join(path, name)
             if os.path.exists(test) and os.access(test, os.X_OK):
--- a/python/mozboot/mozboot/bootstrap.py
+++ b/python/mozboot/mozboot/bootstrap.py
@@ -17,29 +17,52 @@ from mozboot.freebsd import FreeBSDBoots
 from mozboot.gentoo import GentooBootstrapper
 from mozboot.osx import OSXBootstrapper
 from mozboot.openbsd import OpenBSDBootstrapper
 from mozboot.archlinux import ArchlinuxBootstrapper
 
 APPLICATION_CHOICE = '''
 Please choose the version of Firefox you want to build:
 %s
+
+Note: (For Firefox for Android)
+
+The Firefox for Android front-end is built using Java, the Android
+Platform SDK, JavaScript, HTML, and CSS. If you want to work on the
+look-and-feel of Firefox for Android, you want "Firefox for Android
+Artifact Mode".
+
+Firefox for Android is built on top of the Gecko technology
+platform. Gecko is Mozilla's web rendering engine, similar to Edge,
+Blink, and WebKit. Gecko is implemented in C++ and JavaScript. If you
+want to work on web rendering, you want "Firefox for Android".
+
+If you don't know what you want, start with just "Firefox for Android
+Artifact Mode". Your builds will be much shorter than if you build
+Gecko as well. But don't worry! You can always switch configurations
+later.
+
+You can learn more about Artifact mode builds at
+https://developer.mozilla.org/en-US/docs/Artifact_builds.
+
 Your choice:
 '''
 
 APPLICATIONS_LIST=[
     ('Firefox for Desktop', 'browser'),
-    ('Firefox for Android', 'mobile_android')
+    ('Firefox for Android Artifact Mode', 'mobile_android_artifact_mode'),
+    ('Firefox for Android', 'mobile_android'),
 ]
 
 # This is a workaround for the fact that we must support python2.6 (which has
 # no OrderedDict)
 APPLICATIONS = dict(
-    desktop=APPLICATIONS_LIST[0],
-    android=APPLICATIONS_LIST[1],
+    browser=APPLICATIONS_LIST[0],
+    mobile_android_artifact_mode=APPLICATIONS_LIST[1],
+    mobile_android=APPLICATIONS_LIST[2],
 )
 
 FINISHED = '''
 Your system should be ready to build %s! If you have not already,
 obtain a copy of the source code by running:
 
     hg clone https://hg.mozilla.org/mozilla-central
 
@@ -114,17 +137,17 @@ class Bootstrapper(object):
         if cls is None:
             raise NotImplementedError('Bootstrap support is not yet available '
                                       'for your OS.')
 
         self.instance = cls(**args)
 
     def bootstrap(self):
         if self.choice is None:
-            # Like ['1. Firefox for Desktop', '2. Firefox for Android'].
+            # Like ['1. Firefox for Desktop', '2. Firefox for Android Artifact Mode', ...].
             labels = ['%s. %s' % (i + 1, name) for (i, (name, _)) in enumerate(APPLICATIONS_LIST)]
             prompt = APPLICATION_CHOICE % '\n'.join(labels)
             prompt_choice = self.instance.prompt_int(prompt=prompt, low=1, high=len(APPLICATIONS))
             name, application = APPLICATIONS_LIST[prompt_choice-1]
         elif self.choice not in APPLICATIONS.keys():
             raise Exception('Please pick a valid application choice: (%s)' % '/'.join(APPLICATIONS.keys()))
         else:
             name, application = APPLICATIONS[self.choice]
--- a/python/mozboot/mozboot/centosfedora.py
+++ b/python/mozboot/mozboot/centosfedora.py
@@ -94,32 +94,43 @@ class CentOSFedoraBootstrapper(BaseBoots
             self.run_as_root(['rpm', '-ivh', yasm])
 
     def install_mobile_android_packages(self):
         if self.distro in ('CentOS', 'CentOS Linux'):
             BaseBootstrapper.install_mobile_android_packages(self)
         elif self.distro == 'Fedora':
             self.install_fedora_mobile_android_packages()
 
-    def install_fedora_mobile_android_packages(self):
+    def install_mobile_android_artifact_mode_packages(self):
+        if self.distro in ('CentOS', 'CentOS Linux'):
+            BaseBootstrapper.install_mobile_android_artifact_mode_packages(self)
+        elif self.distro == 'Fedora':
+            self.install_fedora_mobile_android_packages(artifact_mode=True)
+
+    def install_fedora_mobile_android_packages(self, artifact_mode=False):
         import android
 
         # Install Android specific packages.
         self.dnf_install(*self.mobile_android_packages)
 
         # Fetch Android SDK and NDK.
         mozbuild_path = os.environ.get('MOZBUILD_STATE_PATH', os.path.expanduser(os.path.join('~', '.mozbuild')))
         self.sdk_path = os.environ.get('ANDROID_SDK_HOME', os.path.join(mozbuild_path, 'android-sdk-linux'))
         self.ndk_path = os.environ.get('ANDROID_NDK_HOME', os.path.join(mozbuild_path, 'android-ndk-r10e'))
         self.sdk_url = 'https://dl.google.com/android/android-sdk_r24.0.1-linux.tgz'
         self.ndk_url = android.android_ndk_url('linux')
 
         android.ensure_android_sdk_and_ndk(path=mozbuild_path,
                                            sdk_path=self.sdk_path, sdk_url=self.sdk_url,
-                                           ndk_path=self.ndk_path, ndk_url=self.ndk_url)
+                                           ndk_path=self.ndk_path, ndk_url=self.ndk_url,
+                                           artifact_mode=artifact_mode)
 
-    def suggest_mobile_android_mozconfig(self):
+    def suggest_mobile_android_mozconfig(self, artifact_mode=False):
         import android
         android.suggest_mozconfig(sdk_path=self.sdk_path,
-                                  ndk_path=self.ndk_path)
+                                  ndk_path=self.ndk_path,
+                                  artifact_mode=artifact_mode)
+
+    def suggest_mobile_android_artifact_mode_mozconfig(self):
+        self.suggest_mobile_android_mozconfig(artifact_mode=True)
 
     def upgrade_mercurial(self):
         self.dnf_update('mercurial')
--- a/python/mozboot/mozboot/debian.py
+++ b/python/mozboot/mozboot/debian.py
@@ -96,21 +96,27 @@ class DebianBootstrapper(BaseBootstrappe
 
     def install_system_packages(self):
         self.apt_install(*self.packages)
 
     def install_browser_packages(self):
         self.apt_install(*self.browser_packages)
 
     def install_mobile_android_packages(self):
+        self.ensure_mobile_android_packages()
+
+    def install_mobile_android_artifact_mode_packages(self):
+        self.ensure_mobile_android_packages(artifact_mode=True)
+
+    def ensure_mobile_android_packages(self, artifact_mode=False):
         import android
 
         # Multi-part process:
         # 1. System packages.
-        # 2. Android SDK and NDK.
+        # 2. Android SDK. Android NDK only if we are not in artifact mode.
         # 3. Android packages.
 
         # 1. This is hard to believe, but the Android SDK binaries are 32-bit
         # and that conflicts with 64-bit Debian and Ubuntu installations out of
         # the box.  The solution is to add the i386 architecture.  See
         # "Troubleshooting Ubuntu" at
         # http://developer.android.com/sdk/installing/index.html?pkg=tools.
         self.run_as_root(['dpkg', '--add-architecture', 'i386'])
@@ -124,27 +130,32 @@ class DebianBootstrapper(BaseBootstrappe
         mozbuild_path = os.environ.get('MOZBUILD_STATE_PATH', os.path.expanduser(os.path.join('~', '.mozbuild')))
         self.sdk_path = os.environ.get('ANDROID_SDK_HOME', os.path.join(mozbuild_path, 'android-sdk-linux'))
         self.ndk_path = os.environ.get('ANDROID_NDK_HOME', os.path.join(mozbuild_path, 'android-ndk-r10e'))
         self.sdk_url = 'https://dl.google.com/android/android-sdk_r24.0.1-linux.tgz'
         self.ndk_url = android.android_ndk_url('linux')
 
         android.ensure_android_sdk_and_ndk(path=mozbuild_path,
                                            sdk_path=self.sdk_path, sdk_url=self.sdk_url,
-                                           ndk_path=self.ndk_path, ndk_url=self.ndk_url)
+                                           ndk_path=self.ndk_path, ndk_url=self.ndk_url,
+                                           artifact_mode=artifact_mode)
 
         # 3. We expect the |android| tool to at
         # ~/.mozbuild/android-sdk-linux/tools/android.
         android_tool = os.path.join(self.sdk_path, 'tools', 'android')
         android.ensure_android_packages(android_tool=android_tool)
 
-    def suggest_mobile_android_mozconfig(self):
+    def suggest_mobile_android_mozconfig(self, artifact_mode=False):
         import android
         android.suggest_mozconfig(sdk_path=self.sdk_path,
-                                  ndk_path=self.ndk_path)
+                                  ndk_path=self.ndk_path,
+                                  artifact_mode=artifact_mode)
+
+    def suggest_mobile_android_artifact_mode_mozconfig(self):
+        self.suggest_mobile_android_mozconfig(artifact_mode=True)
 
     def _update_package_manager(self):
         self.apt_update()
 
     def upgrade_mercurial(self, current):
         """Install Mercurial from pip because Debian packages typically lag."""
         if self.no_interactive:
             # Install via Apt in non-interactive mode because it is the more
--- a/python/mozboot/mozboot/osx.py
+++ b/python/mozboot/mozboot/osx.py
@@ -188,19 +188,25 @@ class OSXBootstrapper(BaseBootstrapper):
         getattr(self, 'ensure_%s_system_packages' % self.package_manager)()
 
     def install_browser_packages(self):
         getattr(self, 'ensure_%s_browser_packages' % self.package_manager)()
 
     def install_mobile_android_packages(self):
         getattr(self, 'ensure_%s_mobile_android_packages' % self.package_manager)()
 
+    def install_mobile_android_artifact_mode_packages(self):
+        getattr(self, 'ensure_%s_mobile_android_packages' % self.package_manager)(artifact_mode=True)
+
     def suggest_mobile_android_mozconfig(self):
         getattr(self, 'suggest_%s_mobile_android_mozconfig' % self.package_manager)()
 
+    def suggest_mobile_android_artifact_mode_mozconfig(self):
+        getattr(self, 'suggest_%s_mobile_android_mozconfig' % self.package_manager)(artifact_mode=True)
+
     def ensure_xcode(self):
         if self.os_version < StrictVersion('10.7'):
             if not os.path.exists('/Developer/Applications/Xcode.app'):
                 print(XCODE_REQUIRED_LEGACY)
 
                 subprocess.check_call(['open', XCODE_LEGACY])
                 sys.exit(1)
 
@@ -321,20 +327,20 @@ class OSXBootstrapper(BaseBootstrapper):
 
         installed = self.check_output([self.brew, 'list']).split()
         if self.os_version < StrictVersion('10.7') and b'llvm' not in installed:
             print(PACKAGE_MANAGER_OLD_CLANG % ('Homebrew',))
 
             subprocess.check_call([self.brew, '-v', 'install', 'llvm',
                                    '--with-clang', '--all-targets'])
 
-    def ensure_homebrew_mobile_android_packages(self):
+    def ensure_homebrew_mobile_android_packages(self, artifact_mode=False):
         # Multi-part process:
         # 1. System packages.
-        # 2. Android SDK and NDK.
+        # 2. Android SDK. Android NDK only if we are not in artifact mode.
         # 3. Android packages.
 
         import android
 
         # 1. System packages.
         packages = [
             ('brew-cask', 'caskroom/cask/brew-cask'),  # For installing Java later.
             ('wget', 'wget'),
@@ -358,27 +364,29 @@ class OSXBootstrapper(BaseBootstrapper):
         is_64bits = sys.maxsize > 2**32
         if is_64bits:
             self.ndk_url = android.android_ndk_url('darwin')
         else:
             raise Exception('You need a 64-bit version of Mac OS X to build Firefox for Android.')
 
         android.ensure_android_sdk_and_ndk(path=mozbuild_path,
                                            sdk_path=self.sdk_path, sdk_url=self.sdk_url,
-                                           ndk_path=self.ndk_path, ndk_url=self.ndk_url)
+                                           ndk_path=self.ndk_path, ndk_url=self.ndk_url,
+                                           artifact_mode=artifact_mode)
 
         # 3. We expect the |android| tool to at
         # ~/.mozbuild/android-sdk-macosx/tools/android.
         android_tool = os.path.join(self.sdk_path, 'tools', 'android')
         android.ensure_android_packages(android_tool=android_tool)
 
-    def suggest_homebrew_mobile_android_mozconfig(self):
+    def suggest_homebrew_mobile_android_mozconfig(self, artifact_mode=False):
         import android
         android.suggest_mozconfig(sdk_path=self.sdk_path,
-                                  ndk_path=self.ndk_path)
+                                  ndk_path=self.ndk_path,
+                                  artifact_mode=artifact_mode)
 
     def _ensure_macports_packages(self, packages):
         self.port = self.which('port')
         assert self.port is not None
 
         installed = set(self.check_output([self.port, 'installed']).split())
 
         missing = [package for package in packages if package not in installed]
@@ -405,20 +413,20 @@ class OSXBootstrapper(BaseBootstrapper):
         self._ensure_macports_packages(packages)
 
         installed = set(self.check_output([self.port, 'installed']).split())
         if self.os_version < StrictVersion('10.7') and MACPORTS_CLANG_PACKAGE not in installed:
             print(PACKAGE_MANAGER_OLD_CLANG % ('MacPorts',))
             self.run_as_root([self.port, '-v', 'install', MACPORTS_CLANG_PACKAGE])
             self.run_as_root([self.port, 'select', '--set', 'clang', 'mp-' + MACPORTS_CLANG_PACKAGE])
 
-    def ensure_macports_mobile_android_packages(self):
+    def ensure_macports_mobile_android_packages(self, artifact_mode=False):
         # Multi-part process:
         # 1. System packages.
-        # 2. Android SDK and NDK.
+        # 2. Android SDK. Android NDK only if we are not in artifact mode.
         # 3. Android packages.
 
         import android
 
         # 1. System packages.
         packages = [
             'wget',
         ]
@@ -438,27 +446,29 @@ class OSXBootstrapper(BaseBootstrapper):
         is_64bits = sys.maxsize > 2**32
         if is_64bits:
             self.ndk_url = android.android_ndk_url('darwin')
         else:
             raise Exception('You need a 64-bit version of Mac OS X to build Firefox for Android.')
 
         android.ensure_android_sdk_and_ndk(path=mozbuild_path,
                                            sdk_path=self.sdk_path, sdk_url=self.sdk_url,
-                                           ndk_path=self.ndk_path, ndk_url=self.ndk_url)
+                                           ndk_path=self.ndk_path, ndk_url=self.ndk_url,
+                                           artifact_mode=artifact_mode)
 
         # 3. We expect the |android| tool to at
         # ~/.mozbuild/android-sdk-macosx/tools/android.
         android_tool = os.path.join(self.sdk_path, 'tools', 'android')
         android.ensure_android_packages(android_tool=android_tool)
 
-    def suggest_macports_mobile_android_mozconfig(self):
+    def suggest_macports_mobile_android_mozconfig(self, artifact_mode=False):
         import android
         android.suggest_mozconfig(sdk_path=self.sdk_path,
-                                  ndk_path=self.ndk_path)
+                                  ndk_path=self.ndk_path,
+                                  artifact_mode=artifact_mode)
 
     def ensure_package_manager(self):
         '''
         Search package mgr in sys.path, if none is found, prompt the user to install one.
         If only one is found, use that one. If both are found, prompt the user to choose
         one.
         '''
         installed = []
--- a/toolkit/themes/osx/global/popup.css
+++ b/toolkit/themes/osx/global/popup.css
@@ -4,16 +4,17 @@
 
 @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
 
 .panel-arrowcontent {
   --panel-arrowcontent-padding: 16px;
   --panel-arrowcontent-background: linear-gradient(hsla(0,0%,99%,1), hsla(0,0%,99%,.975) 10%, hsla(0,0%,98%,.975));
   --panel-arrowcontent-color: hsl(0,0%,10%);
   --panel-arrowcontent-border: none;
+  --panel-arrowcontent-border-radius: 3.5px;
 }
 
 menupopup,
 panel {
   -moz-appearance: menupopup;
   background-color: Menu;
 }
 
@@ -44,17 +45,17 @@ panel[type="arrow"][side="left"],
 panel[type="arrow"][side="right"] {
   margin-top: -25px;
   margin-bottom: -25px;
 }
 
 .panel-arrowcontent {
   -moz-appearance: none;
   background: var(--panel-arrowcontent-background);
-  border-radius: 3.5px;
+  border-radius: var(--panel-arrowcontent-border-radius);
   box-shadow: 0 0 0 1px hsla(210,4%,10%,.05);
   color: var(--panel-arrowcontent-color);
   border: var(--panel-arrowcontent-border);
   padding: var(--panel-arrowcontent-padding);
   margin: 1px;
 }
 
 .panel-arrow[side="top"] {