Merge mozilla-central to mozilla-inbound
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Wed, 06 May 2015 12:09:53 +0200
changeset 272441 845b8366a7e4f65613c0a7620e337fd89da8de45
parent 272440 e7f7dc49cf08a6e833ab0a03aa7889ae14fcf00a (current diff)
parent 272361 60349cbc3d4eb0423b20303a7c4384d9f715a133 (diff)
child 272442 fcca6df14bae94edf542aed8e93a9cdf75ee81c4
push id4830
push userjlund@mozilla.com
push dateMon, 29 Jun 2015 20:18:48 +0000
treeherdermozilla-beta@4c2175bb0420 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone40.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge mozilla-central to mozilla-inbound
--- a/b2g/config/dolphin/sources.xml
+++ b/b2g/config/dolphin/sources.xml
@@ -10,17 +10,17 @@
   <!--original fetch url was git://codeaurora.org/-->
   <remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="2eda36a4795012a5d1275b77ebb20ac377c8cd26">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="3e6fd1e0a478af2c95d09ce95c2c6de2de2fec14"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eb3f82f3b947f1ed52fa4e9246bed0f0b3e49785"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d3868ff4bb3a4b81382795e2784258c210fe6cb8"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="adb24954bf8068f21705b570450475d183336b2d"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="0627790166dccd8dd370fa7d9f434ed9fc027fb4"/>
--- a/b2g/config/emulator-ics/sources.xml
+++ b/b2g/config/emulator-ics/sources.xml
@@ -14,17 +14,17 @@
   <!--original fetch url was git://github.com/apitrace/-->
   <remote fetch="https://git.mozilla.org/external/apitrace" name="apitrace"/>
   <default remote="caf" revision="refs/tags/android-4.0.4_r2.1" sync-j="4"/>
   <!-- Gonk specific things and forks -->
   <project name="platform_build" path="build" remote="b2g" revision="173b3104bfcbd23fc9dccd4b0035fc49aae3d444">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
   <project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
-  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="3e6fd1e0a478af2c95d09ce95c2c6de2de2fec14"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="eb3f82f3b947f1ed52fa4e9246bed0f0b3e49785"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d3868ff4bb3a4b81382795e2784258c210fe6cb8"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="9a9797062c6001d6346504161c51187a2968466b"/>
   <project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="8c2d32bccc7061e9ca0165135457c3fd53e7107e"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="adb24954bf8068f21705b570450475d183336b2d"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="34ea6163f9f0e0122fb0bb03607eccdca31ced7a"/>
   <!-- Stock Android things -->
   <project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
--- a/b2g/config/emulator-jb/sources.xml
+++ b/b2g/config/emulator-jb/sources.xml
@@ -12,17 +12,17 @@
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="4efd19d199ae52656604f794c5a77518400220fd">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="3e6fd1e0a478af2c95d09ce95c2c6de2de2fec14"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eb3f82f3b947f1ed52fa4e9246bed0f0b3e49785"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d3868ff4bb3a4b81382795e2784258c210fe6cb8"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="adb24954bf8068f21705b570450475d183336b2d"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="0627790166dccd8dd370fa7d9f434ed9fc027fb4"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.1" path="prebuilts/clang/linux-x86/3.1" revision="5c45f43419d5582949284eee9cef0c43d866e03b"/>
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.2" path="prebuilts/clang/linux-x86/3.2" revision="3748b4168e7bd8d46457d4b6786003bc6a5223ce"/>
--- a/b2g/config/emulator-kk/sources.xml
+++ b/b2g/config/emulator-kk/sources.xml
@@ -10,17 +10,17 @@
   <!--original fetch url was git://codeaurora.org/-->
   <remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="2eda36a4795012a5d1275b77ebb20ac377c8cd26">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="3e6fd1e0a478af2c95d09ce95c2c6de2de2fec14"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eb3f82f3b947f1ed52fa4e9246bed0f0b3e49785"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d3868ff4bb3a4b81382795e2784258c210fe6cb8"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="adb24954bf8068f21705b570450475d183336b2d"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="0627790166dccd8dd370fa7d9f434ed9fc027fb4"/>
--- a/b2g/config/emulator-l/sources.xml
+++ b/b2g/config/emulator-l/sources.xml
@@ -10,17 +10,17 @@
   <!--original fetch url was git://codeaurora.org/-->
   <remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="61e82f99bb8bc78d52b5717e9a2481ec7267fa33">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="3e6fd1e0a478af2c95d09ce95c2c6de2de2fec14"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eb3f82f3b947f1ed52fa4e9246bed0f0b3e49785"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d3868ff4bb3a4b81382795e2784258c210fe6cb8"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="adb24954bf8068f21705b570450475d183336b2d"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="0627790166dccd8dd370fa7d9f434ed9fc027fb4"/>
--- a/b2g/config/emulator/sources.xml
+++ b/b2g/config/emulator/sources.xml
@@ -14,17 +14,17 @@
   <!--original fetch url was git://github.com/apitrace/-->
   <remote fetch="https://git.mozilla.org/external/apitrace" name="apitrace"/>
   <default remote="caf" revision="refs/tags/android-4.0.4_r2.1" sync-j="4"/>
   <!-- Gonk specific things and forks -->
   <project name="platform_build" path="build" remote="b2g" revision="173b3104bfcbd23fc9dccd4b0035fc49aae3d444">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
   <project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
-  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="3e6fd1e0a478af2c95d09ce95c2c6de2de2fec14"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="eb3f82f3b947f1ed52fa4e9246bed0f0b3e49785"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d3868ff4bb3a4b81382795e2784258c210fe6cb8"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="9a9797062c6001d6346504161c51187a2968466b"/>
   <project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="8c2d32bccc7061e9ca0165135457c3fd53e7107e"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="adb24954bf8068f21705b570450475d183336b2d"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="34ea6163f9f0e0122fb0bb03607eccdca31ced7a"/>
   <!-- Stock Android things -->
   <project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
--- a/b2g/config/flame-kk/sources.xml
+++ b/b2g/config/flame-kk/sources.xml
@@ -10,17 +10,17 @@
   <!--original fetch url was git://codeaurora.org/-->
   <remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="2eda36a4795012a5d1275b77ebb20ac377c8cd26">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="3e6fd1e0a478af2c95d09ce95c2c6de2de2fec14"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eb3f82f3b947f1ed52fa4e9246bed0f0b3e49785"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d3868ff4bb3a4b81382795e2784258c210fe6cb8"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="adb24954bf8068f21705b570450475d183336b2d"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="0627790166dccd8dd370fa7d9f434ed9fc027fb4"/>
--- a/b2g/config/flame/sources.xml
+++ b/b2g/config/flame/sources.xml
@@ -12,17 +12,17 @@
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="4efd19d199ae52656604f794c5a77518400220fd">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="3e6fd1e0a478af2c95d09ce95c2c6de2de2fec14"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eb3f82f3b947f1ed52fa4e9246bed0f0b3e49785"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d3868ff4bb3a4b81382795e2784258c210fe6cb8"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="adb24954bf8068f21705b570450475d183336b2d"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="0627790166dccd8dd370fa7d9f434ed9fc027fb4"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.1" path="prebuilts/clang/linux-x86/3.1" revision="e95b4ce22c825da44d14299e1190ea39a5260bde"/>
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.2" path="prebuilts/clang/linux-x86/3.2" revision="471afab478649078ad7c75ec6b252481a59e19b8"/>
--- a/b2g/config/gaia.json
+++ b/b2g/config/gaia.json
@@ -1,9 +1,9 @@
 {
     "git": {
-        "git_revision": "3e6fd1e0a478af2c95d09ce95c2c6de2de2fec14", 
+        "git_revision": "eb3f82f3b947f1ed52fa4e9246bed0f0b3e49785", 
         "remote": "https://git.mozilla.org/releases/gaia.git", 
         "branch": ""
     }, 
-    "revision": "80bc291e43fc110440c13c22f29ff14125858622", 
+    "revision": "78e99873114b371f245690c3b0b80834a649f2f2", 
     "repo_path": "integration/gaia-central"
 }
--- a/b2g/config/nexus-4/sources.xml
+++ b/b2g/config/nexus-4/sources.xml
@@ -12,17 +12,17 @@
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="4efd19d199ae52656604f794c5a77518400220fd">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="3e6fd1e0a478af2c95d09ce95c2c6de2de2fec14"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eb3f82f3b947f1ed52fa4e9246bed0f0b3e49785"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d3868ff4bb3a4b81382795e2784258c210fe6cb8"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="adb24954bf8068f21705b570450475d183336b2d"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="0627790166dccd8dd370fa7d9f434ed9fc027fb4"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.1" path="prebuilts/clang/linux-x86/3.1" revision="5c45f43419d5582949284eee9cef0c43d866e03b"/>
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.2" path="prebuilts/clang/linux-x86/3.2" revision="3748b4168e7bd8d46457d4b6786003bc6a5223ce"/>
--- a/b2g/config/nexus-5-l/sources.xml
+++ b/b2g/config/nexus-5-l/sources.xml
@@ -10,17 +10,17 @@
   <!--original fetch url was git://codeaurora.org/-->
   <remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="61e82f99bb8bc78d52b5717e9a2481ec7267fa33">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="3e6fd1e0a478af2c95d09ce95c2c6de2de2fec14"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="eb3f82f3b947f1ed52fa4e9246bed0f0b3e49785"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="d3868ff4bb3a4b81382795e2784258c210fe6cb8"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="adb24954bf8068f21705b570450475d183336b2d"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="0627790166dccd8dd370fa7d9f434ed9fc027fb4"/>
--- a/browser/components/pocket/panels/js/saved.js
+++ b/browser/components/pocket/panels/js/saved.js
@@ -100,29 +100,29 @@ var PKT_SAVED_OVERLAY = function (option
             myself.startCloseTimer();
         });
         this.wrapper.on('click',function(e) {
             myself.closeValid = false;
         });
     };
     this.startCloseTimer = function(manualtime) 
     {
-        /*var settime = manualtime ? manualtime : myself.autocloseTiming;
+        var settime = manualtime ? manualtime : myself.autocloseTiming;
         if (typeof myself.autocloseTimer == 'number') 
         {
             clearTimeout(myself.autocloseTimer);
         }
         myself.autocloseTimer = setTimeout(function() 
         {
             if (myself.closeValid || myself.preventCloseTimerCancel) 
             {
                 myself.preventCloseTimerCancel = false;
                 myself.closePopup();
             }
-        }, settime);*/
+        }, settime);
     };
     this.stopCloseTimer = function() 
     {
         if (myself.preventCloseTimerCancel) 
         {
             return;
         }
         clearTimeout(myself.autocloseTimer);
--- a/browser/components/preferences/in-content/sync.js
+++ b/browser/components/preferences/in-content/sync.js
@@ -296,19 +296,25 @@ let gSyncPane = {
         }
 
         // Clear the profile image (if any) of the previously logged in account.
         document.getElementById("fxaProfileImage").style.removeProperty("background-image");
 
         // If the account is verified the next promise in the chain will
         // fetch profile data.
         return data.verified;
-      }).then(shouldGetProfile => {
-        if (shouldGetProfile) {
-          return fxAccounts.getSignedInUserProfile();
+      }).then(isVerified => {
+        if (isVerified) {
+          let enabled;
+          try {
+            enabled = Services.prefs.getBoolPref("identity.fxaccounts.profile_image.enabled");
+          } catch (ex) {}
+          if (enabled) {
+            return fxAccounts.getSignedInUserProfile();
+          }
         }
       }).then(data => {
         if (data && data.avatar) {
           // Make sure the image is available before displaying it,
           // as we don't want to overwrite the default profile image
           // with a broken/unavailable image
           let img = new Image();
           img.onload = () => {
--- a/browser/components/selfsupport/SelfSupportService.js
+++ b/browser/components/selfsupport/SelfSupportService.js
@@ -63,11 +63,16 @@ MozSelfSupportInterface.prototype = {
         aReject(new Error("No reporter"));
       }
     }.bind(this));
   },
 
   resetPref: function(name) {
     Services.prefs.clearUserPref(name);
   },
+
+  resetSearchEngines: function() {
+    Services.search.restoreDefaultEngines();
+    Services.search.resetToOriginalDefaultEngine();
+  },
 }
 
 this.NSGetFactory = XPCOMUtils.generateNSGetFactory([MozSelfSupportInterface]);
--- a/browser/components/selfsupport/test/browser_selfsupportAPI.js
+++ b/browser/components/selfsupport/test/browser_selfsupportAPI.js
@@ -1,11 +1,11 @@
 Cu.import("resource://gre/modules/Preferences.jsm");
 
-function test() {
+function test_resetPref() {
   const prefNewName = "browser.newpref.fake";
   Assert.ok(!Preferences.has(prefNewName), "pref should not exist");
 
   const prefExistingName = "extensions.hotfix.id";
   Assert.ok(Preferences.has(prefExistingName), "pref should exist");
   Assert.ok(!Preferences.isSet(prefExistingName), "pref should not be user-set");
   let prefExistingOriginalValue = Preferences.get(prefExistingName);
 
@@ -40,8 +40,49 @@ function test() {
   Assert.ok(Preferences.has(prefExistingName), "pref should still exist");
   Assert.equal(Preferences.get(prefExistingName), prefExistingOriginalValue, "pref value should be the same as original");
 
   // 5. delete an existing pref
   // deleteBranch is implemented in such a way that
   // clearUserPref can't undo its action
   // see discussion in bug 1075160
 }
+
+function test_resetSearchEngines()
+{
+  const defaultEngineOriginal = Services.search.defaultEngine;
+  const visibleEnginesOriginal = Services.search.getVisibleEngines();
+
+  // 1. do nothing on unchanged search configuration
+  MozSelfSupport.resetSearchEngines();
+  Assert.equal(Services.search.defaultEngine, defaultEngineOriginal, "default engine should be reset");
+  Assert.deepEqual(Services.search.getVisibleEngines(), visibleEnginesOriginal,
+                   "default visible engines set should be reset");
+
+  // 2. change the default search engine
+  const defaultEngineNew = visibleEnginesOriginal[3];
+  Assert.notEqual(defaultEngineOriginal, defaultEngineNew, "new default engine should be different from original");
+  Services.search.defaultEngine = defaultEngineNew;
+  Assert.equal(Services.search.defaultEngine, defaultEngineNew, "default engine should be set to new");
+  MozSelfSupport.resetSearchEngines();
+  Assert.equal(Services.search.defaultEngine, defaultEngineOriginal, "default engine should be reset");
+  Assert.deepEqual(Services.search.getVisibleEngines(), visibleEnginesOriginal,
+                   "default visible engines set should be reset");
+
+  // 3. remove an engine
+  const engineRemoved = visibleEnginesOriginal[2];
+  Services.search.removeEngine(engineRemoved);
+  Assert.ok(Services.search.getVisibleEngines().indexOf(engineRemoved) == -1,
+            "removed engine should not be visible any more");
+  MozSelfSupport.resetSearchEngines();
+  Assert.equal(Services.search.defaultEngine, defaultEngineOriginal, "default engine should be reset");
+  Assert.deepEqual(Services.search.getVisibleEngines(), visibleEnginesOriginal,
+                   "default visible engines set should be reset");
+
+  // 4. add an angine
+  // we don't remove user-added engines as they are only used if selected
+}
+
+function test()
+{
+  test_resetPref();
+  test_resetSearchEngines();
+}
--- a/dom/webidl/MozSelfSupport.webidl
+++ b/dom/webidl/MozSelfSupport.webidl
@@ -45,9 +45,14 @@ interface MozSelfSupport
    * - if there is a default value, then change the value back to default,
    * - if there's no default value, then delete the pref,
    * - no-op otherwise.
    *
    * @param DOMString
    *        The name of the pref to reset.
    */
   void resetPref(DOMString name);
+
+  /**
+   * Resets original search engines, and resets the default one.
+   */
+  void resetSearchEngines();
 };
--- a/netwerk/base/nsIBrowserSearchService.idl
+++ b/netwerk/base/nsIBrowserSearchService.idl
@@ -248,17 +248,17 @@ interface nsIBrowserSearchInitObserver :
   /**
    * Called once initialization of the browser search service is complete.
    *
    * @param aStatus The status of that service.
    */
   void onInitComplete(in nsresult aStatus);
 };
 
-[scriptable, uuid(4a4ce87d-7cb9-4975-a267-345f6a49bb8f)]
+[scriptable, uuid(75731859-c7b1-4edf-8d1c-3d4d79a55d1d)]
 interface nsIBrowserSearchService : nsISupports
 {
   /**
    * Start asynchronous initialization.
    *
    * The callback is triggered once initialization is complete, which may be
    * immediately, if initialization has already been completed by some previous
    * call to this method. The callback is always invoked asynchronously.
@@ -277,16 +277,21 @@ interface nsIBrowserSearchService : nsIS
    * Note that this attribute does not indicate that initialization has succeeded.
    *
    * @return |true| if the search service is now initialized, |false| if
    * initialization has not been triggered yet.
    */
   readonly attribute bool isInitialized;
 
   /**
+   * Resets the default engine to its original value.
+   */
+  void resetToOriginalDefaultEngine();
+
+  /**
    * Adds a new search engine from the file at the supplied URI, optionally
    * asking the user for confirmation first.  If a confirmation dialog is
    * shown, it will offer the option to begin using the newly added engine
    * right away.
    *
    * @param engineURL
    *        The URL to the search engine's description file.
    *
--- a/netwerk/base/security-prefs.js
+++ b/netwerk/base/security-prefs.js
@@ -3,20 +3,20 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 pref("security.tls.version.min", 1);
 pref("security.tls.version.max", 3);
 pref("security.tls.version.fallback-limit", 3);
 pref("security.tls.insecure_fallback_hosts", "");
 pref("security.tls.insecure_fallback_hosts.use_static_list", true);
 
-#if defined(NIGHTLY_BUILD) || defined(MOZ_DEV_EDITION)
+#ifdef RELEASE_BUILD
+pref("security.tls.unrestricted_rc4_fallback", true);
+#else
 pref("security.tls.unrestricted_rc4_fallback", false);
-#else
-pref("security.tls.unrestricted_rc4_fallback", true);
 #endif
 
 pref("security.ssl.treat_unsafe_negotiation_as_broken", false);
 pref("security.ssl.require_safe_negotiation",  false);
 pref("security.ssl.warn_missing_rfc5746",  1);
 pref("security.ssl.enable_ocsp_stapling", true);
 pref("security.ssl.enable_false_start", true);
 pref("security.ssl.false_start.require-npn", false);
--- a/services/sync/modules/engines/bookmarks.js
+++ b/services/sync/modules/engines/bookmarks.js
@@ -242,26 +242,38 @@ BookmarksEngine.prototype = {
 
   _guidMapFailed: false,
   _buildGUIDMap: function _buildGUIDMap() {
     let guidMap = {};
     for (let guid in this._store.getAllIDs()) {
       // Figure out with which key to store the mapping.
       let key;
       let id = this._store.idForGUID(guid);
-      switch (PlacesUtils.bookmarks.getItemType(id)) {
+      let itemType;
+      try {
+        itemType = PlacesUtils.bookmarks.getItemType(id);
+      } catch (ex) {
+        this._log.warn("Deleting invalid bookmark record with id", id);
+        try {
+          PlacesUtils.bookmarks.removeItem(id);
+        } catch (ex) {
+          this._log.warn("Failed to delete invalid bookmark", ex);
+        }
+        continue;
+      }
+      switch (itemType) {
         case PlacesUtils.bookmarks.TYPE_BOOKMARK:
 
           // Smart bookmarks map to their annotation value.
           let queryId;
           try {
             queryId = PlacesUtils.annotations.getItemAnnotation(
               id, SMART_BOOKMARKS_ANNO);
           } catch(ex) {}
-          
+
           if (queryId)
             key = "q" + queryId;
           else
             key = "b" + PlacesUtils.bookmarks.getBookmarkURI(id).spec + ":" +
                   PlacesUtils.bookmarks.getItemTitle(id);
           break;
         case PlacesUtils.bookmarks.TYPE_FOLDER:
           key = "f" + PlacesUtils.bookmarks.getItemTitle(id);
--- a/testing/modules/Assert.jsm
+++ b/testing/modules/Assert.jsm
@@ -269,17 +269,17 @@ proto.deepEqual = function deepEqual(act
  * @param actual
  *        (mixed) Test subject to be evaluated as NOT equivalent to `expected`, including nested properties
  * @param expected
  *        (mixed) Test reference to evaluate against `actual`
  * @param message (optional)
  *        (string) Short explanation of the expected result
  */
 proto.notDeepEqual = function notDeepEqual(actual, expected, message) {
-  this.report(_deepEqual(actual, expected), actual, expected, message, "notDeepEqual");
+  this.report(ObjectUtils.deepEqual(actual, expected), actual, expected, message, "notDeepEqual");
 };
 
 /**
  * 9. The strict equality assertion tests strict equality, as determined by ===.
  * assert.strictEqual(actual, expected, message_opt);
  *
  * @param actual
  *        (mixed) Test subject to be evaluated as strictly equivalent to `expected`
--- a/testing/taskcluster/mach_commands.py
+++ b/testing/taskcluster/mach_commands.py
@@ -4,17 +4,16 @@
 # 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/.
 
 import os
 import os.path
 import json
 import copy
 import datetime
-import subprocess
 import sys
 import urllib2
 
 from mach.decorators import (
     CommandArgument,
     CommandProvider,
     Command,
 )
@@ -25,16 +24,17 @@ from taskcluster_graph.slugidjar import 
 from taskcluster_graph.from_now import json_time_from_now, current_json_time
 from taskcluster_graph.templates import Templates
 
 import taskcluster_graph.build_task
 
 ROOT = os.path.dirname(os.path.realpath(__file__))
 GECKO = os.path.realpath(os.path.join(ROOT, '..', '..'))
 DOCKER_ROOT = os.path.join(ROOT, '..', 'docker')
+MOZHARNESS_CONFIG = os.path.join(GECKO, 'testing', 'mozharness', 'mozharness.json')
 
 # XXX: If/when we have the taskcluster queue use construct url instead
 ARTIFACT_URL = 'https://queue.taskcluster.net/v1/task/{}/artifacts/{}'
 REGISTRY = open(os.path.join(DOCKER_ROOT, 'REGISTRY')).read().strip()
 
 DEFINE_TASK = 'queue:define-task:aws-provisioner/{}'
 
 TREEHERDER_ROUTE_PREFIX = 'tc-treeherder-stage'
@@ -43,48 +43,19 @@ TREEHERDER_ROUTES = {
     'production': 'tc-treeherder'
 }
 
 DEFAULT_TRY = 'try: -b do -p all -u all'
 DEFAULT_JOB_PATH = os.path.join(
     ROOT, 'tasks', 'branches', 'mozilla-central', 'job_flags.yml'
 )
 
-def get_hg_url():
-    ''' Determine the url for the mercurial repository'''
-    try:
-        url = subprocess.check_output(
-            ['hg', 'path', 'default'],
-            stderr=subprocess.PIPE
-        )
-    except subprocess.CalledProcessError:
-        sys.stderr.write(
-            "Error: Could not determine the current hg repository url. " \
-            "Ensure command is executed within a hg respository"
-        )
-        sys.exit(1)
-
-    return url
-
-def get_latest_hg_revision(repository):
-    ''' Retrieves the revision number of the latest changed head'''
-    try:
-        revision = subprocess.check_output(
-            ['hg', 'id', '-r', 'tip', repository, '-i'],
-            stderr=subprocess.PIPE
-        ).strip('\n')
-    except subprocess.CalledProcessError:
-        sys.stderr.write(
-            "Error: Could not determine the latest hg revision at {} " \
-            "Ensure command is executed within a cloned hg respository and " \
-            "remote default remote repository is accessible".format(repository)
-        )
-        sys.exit(1)
-
-    return revision
+def load_mozharness_info():
+    with open(MOZHARNESS_CONFIG) as content:
+        return json.load(content)
 
 def docker_image(name):
     ''' Determine the docker tag/revision from an in tree docker file '''
     repository_path = os.path.join(DOCKER_ROOT, name, 'REPOSITORY')
     repository = REGISTRY
 
     version = open(os.path.join(DOCKER_ROOT, name, 'VERSION')).read().strip()
 
@@ -190,34 +161,25 @@ class DecisionTask(object):
 
 @CommandProvider
 class Graph(object):
     @Command('taskcluster-graph', category="ci",
         description="Create taskcluster task graph")
     @CommandArgument('--base-repository',
         default=os.environ.get('GECKO_BASE_REPOSITORY'),
         help='URL for "base" repository to clone')
-    @CommandArgument('--mozharness-repository',
-        default='https://hg.mozilla.org/build/mozharness',
-        help='URL for custom mozharness repo')
     @CommandArgument('--head-repository',
         default=os.environ.get('GECKO_HEAD_REPOSITORY'),
         help='URL for "head" repository to fetch revision from')
     @CommandArgument('--head-ref',
         default=os.environ.get('GECKO_HEAD_REF'),
         help='Reference (this is same as rev usually for hg)')
     @CommandArgument('--head-rev',
         default=os.environ.get('GECKO_HEAD_REV'),
         help='Commit revision to use from head repository')
-    @CommandArgument('--mozharness-rev',
-        default='default',
-        help='Commit revision to use from mozharness repository')
-    @CommandArgument('--mozharness-ref',
-        default='master',
-        help='Commit ref to use from mozharness repository')
     @CommandArgument('--message',
         help='Commit message to be parsed. Example: "try: -b do -p all -u all"')
     @CommandArgument('--revision-hash',
             required=False,
             help='Treeherder revision hash to attach results to')
     @CommandArgument('--project',
         required=True,
         help='Project to use for creating task graph. Example: --project=try')
@@ -244,32 +206,34 @@ class Graph(object):
 
         templates = Templates(ROOT)
         job_path = os.path.join(ROOT, 'tasks', 'branches', project, 'job_flags.yml')
         job_path = job_path if os.path.exists(job_path) else DEFAULT_JOB_PATH
 
         jobs = templates.load(job_path, {})
 
         job_graph = parse_commit(message, jobs)
+        mozharness = load_mozharness_info()
+
         # Template parameters used when expanding the graph
         parameters = dict(gaia_info().items() + {
             'project': project,
             'pushlog_id': params.get('pushlog_id', 0),
             'docker_image': docker_image,
             'base_repository': params['base_repository'] or \
                 params['head_repository'],
             'head_repository': params['head_repository'],
             'head_ref': params['head_ref'] or params['head_rev'],
             'head_rev': params['head_rev'],
             'owner': params['owner'],
             'from_now': json_time_from_now,
             'now': datetime.datetime.now().isoformat(),
-            'mozharness_repository': params['mozharness_repository'],
-            'mozharness_rev': params['mozharness_rev'],
-            'mozharness_ref': params['mozharness_ref'],
+            'mozharness_repository': mozharness['repo'],
+            'mozharness_rev': mozharness['revision'],
+            'mozharness_ref':mozharness.get('reference', mozharness['revision']),
             'revision_hash': params['revision_hash']
         }.items())
 
         treeherder_route = '{}.{}'.format(
             params['project'],
             params.get('revision_hash', '')
         )
 
@@ -417,198 +381,8 @@ class Graph(object):
         graph['scopes'] = list(set(graph['scopes']))
 
         # When we are extending the graph remove extra fields...
         if params['ci'] is True:
             graph.pop('scopes', None)
             graph.pop('metadata', None)
 
         print(json.dumps(graph, indent=4))
-
-@CommandProvider
-class CIBuild(object):
-    @Command('taskcluster-build', category='ci',
-        description="Create taskcluster try server build task")
-    @CommandArgument('--base-repository',
-        help='URL for "base" repository to clone')
-    @CommandArgument('--mozharness-repository',
-        default='http://hg.mozilla.org/build/mozharness',
-        help='URL for custom mozharness repo')
-    @CommandArgument('--head-repository',
-        required=True,
-        help='URL for "head" repository to fetch revision from')
-    @CommandArgument('--head-ref',
-        help='Reference (this is same as rev usually for hg)')
-    @CommandArgument('--head-rev',
-        required=True,
-        help='Commit revision to use')
-    @CommandArgument('--mozharness-rev',
-        default='tip',
-        help='Commit revision to use from mozharness repository')
-    @CommandArgument('--mozharness-ref',
-        default='master',
-        help='Commit ref to use from mozharness repository')
-    @CommandArgument('--owner',
-        required=True,
-        help='email address of who owns this graph')
-    @CommandArgument('build_task',
-        help='path to build task definition')
-    def create_ci_build(self, **params):
-        templates = Templates(ROOT)
-        # TODO handle git repos
-        head_repository = params['head_repository']
-        if not head_repository:
-            head_repository = get_hg_url()
-
-        head_rev = params['head_rev']
-        if not head_rev:
-            head_rev = get_latest_hg_revision(head_repository)
-
-        head_ref = params['head_ref'] or head_rev
-
-        build_parameters = dict(gaia_info().items() + {
-            'docker_image': docker_image,
-            'owner': params['owner'],
-            'from_now': json_time_from_now,
-            'now': current_json_time(),
-            'base_repository': params['base_repository'] or head_repository,
-            'head_repository': head_repository,
-            'head_rev': head_rev,
-            'head_ref': head_ref,
-            'mozharness_repository': params['mozharness_repository'],
-            'mozharness_ref': params['mozharness_ref'],
-            'mozharness_rev': params['mozharness_rev']
-        }.items())
-
-        try:
-            build_task = templates.load(params['build_task'], build_parameters)
-        except IOError:
-            sys.stderr.write(
-                "Could not load build task file.  Ensure path is a relative " \
-                "path from testing/taskcluster"
-            )
-            sys.exit(1)
-
-        taskcluster_graph.build_task.validate(build_task)
-
-        print(json.dumps(build_task['task'], indent=4))
-
-@CommandProvider
-class CITest(object):
-    @Command('taskcluster-test', category='ci',
-        description='Create taskcluster try server test task')
-    @CommandArgument('--task-id',
-        help='the task id to pick the correct build and tests')
-    @CommandArgument('--total-chunks', type=int,
-        help='total number of chunks')
-    @CommandArgument('--chunk', type=int,
-        help='current chunk')
-    @CommandArgument('--owner',
-        help='email address of who owns this graph')
-    @CommandArgument('test_task',
-        help='path to the test task definition')
-    def create_ci_test(self, test_task, task_id='', total_chunks=1, chunk=1, owner=''):
-        if total_chunks is None:
-            total_chunks = 1
-
-        if chunk is None:
-            chunk = 1
-
-        if chunk < 1 or chunk > total_chunks:
-            raise ValueError(
-                '"chunk" must be a value between 1 and "total_chunks (default 1)"')
-
-        build_url, img_url, tests_url = self._get_build_and_tests_url(task_id)
-
-        test_parameters = dict(gaia_info().items() + {
-            'docker_image': docker_image,
-            'build_url': ARTIFACT_URL.format(task_id, build_url),
-            'img_url': ARTIFACT_URL.format(task_id, img_url),
-            'tests_url': ARTIFACT_URL.format(task_id, tests_url),
-            'total_chunks': total_chunks,
-            'chunk': chunk,
-            'owner': owner,
-            'from_now': json_time_from_now,
-            'now': current_json_time()
-        }.items())
-
-        try:
-            templates = Templates(ROOT)
-            test_task = templates.load(test_task, test_parameters)
-        except IOError:
-            sys.stderr.write(
-                "Could not load test task file.  Ensure path is a relative " \
-                "path from testing/taskcluster"
-            )
-            sys.exit(1)
-
-        print(json.dumps(test_task['task'], indent=4))
-
-    def _get_build_and_tests_url(self, task_id):
-        task = get_task(task_id)
-        locations = task['extra']['locations']
-        return locations['build'], locations.get('img', ''), locations['tests']
-
-@CommandProvider
-class CIDockerRun(object):
-    @Command('taskcluster-docker-run', category='ci',
-        description='Run a docker image and optionally mount local hg repos. ' \
-                    'Repos will be mounted to /home/worker/x/source accordingly. ' \
-                    'For example, to run a centos image and mount local gecko ' \
-                    'and gaia repos: mach ci-docker-run --local-gecko-repo ' \
-                    '/home/user/mozilla-central/ --local-gaia-repo /home/user/gaia/ '\
-                    '--docker-flags="-t -i" centos:centos7 /bin/bash')
-    @CommandArgument('--local-gecko-repo',
-        action='store', dest='local_gecko_repo',
-        help='local gecko hg repository for volume mount')
-    @CommandArgument('--gecko-revision',
-        action='store', dest='gecko_revision',
-        help='local gecko repo revision (defaults to latest)')
-    @CommandArgument('--local-gaia-repo',
-        action='store', dest='local_gaia_repo',
-        help='local gaia hg repository for volume mount')
-    @CommandArgument('--mozconfig',
-        help='The mozconfig file for building gecko')
-    @CommandArgument('--docker-flags',
-        action='store', dest='flags',
-        help='string of run flags (i.e. --docker-flags="-i -t")')
-    @CommandArgument('image',
-        help='name of docker image to run')
-    @CommandArgument('command',
-        nargs='*',
-        help='command to run inside the docker image')
-    def ci_docker_run(self, local_gecko_repo='', gecko_revision='',
-                      local_gaia_repo='', mozconfig="", flags="", **kwargs):
-        ''' Run docker image and optionally volume mount specified local repos '''
-        gecko_mount_point='/home/worker/mozilla-central/source/'
-        gaia_mount_point='/home/worker/gaia/source/'
-        cmd_out = ['docker', 'run']
-        if flags:
-            cmd_out.extend(flags.split())
-        if local_gecko_repo:
-            if not os.path.exists(local_gecko_repo):
-                print("Gecko repository path doesn't exist: %s" % local_gecko_repo)
-                sys.exit(1)
-            if not gecko_revision:
-                gecko_revision = get_latest_hg_revision(local_gecko_repo)
-            cmd_out.extend(['-v', '%s:%s' % (local_gecko_repo, gecko_mount_point)])
-            cmd_out.extend(['-e', 'REPOSITORY=%s' % gecko_mount_point])
-            cmd_out.extend(['-e', 'REVISION=%s' % gecko_revision])
-        if local_gaia_repo:
-            if not os.path.exists(local_gaia_repo):
-                print("Gaia repository path doesn't exist: %s" % local_gaia_repo)
-                sys.exit(1)
-            cmd_out.extend(['-v', '%s:%s' % (local_gaia_repo, gaia_mount_point)])
-            cmd_out.extend(['-e', 'GAIA_REPOSITORY=%s' % gaia_mount_point])
-        if mozconfig:
-            cmd_out.extend(['-e', 'MOZCONFIG=%s' % mozconfig])
-        cmd_out.append(kwargs['image'])
-        for cmd_x in kwargs['command']:
-            cmd_out.append(cmd_x)
-        try:
-            subprocess.check_call(cmd_out)
-        except subprocess.CalledProcessError:
-            sys.stderr.write("Docker run command returned non-zero status. Attempted:\n")
-            cmd_line = ''
-            for x in cmd_out:
-                cmd_line = cmd_line + x + ' '
-            sys.stderr.write(cmd_line + '\n')
-            sys.exit(1)
--- a/testing/taskcluster/scripts/builder/build-emulator-x86.sh
+++ b/testing/taskcluster/scripts/builder/build-emulator-x86.sh
@@ -12,24 +12,17 @@ test $GECKO_HEAD_REPOSITORY # Should be 
 test $GECKO_BASE_REPOSITORY # Should be an hg repository url to clone from
 test $GECKO_HEAD_REV # Should be an hg revision to pull down
 test $MOZHARNESS_REPOSITORY # mozharness repository
 test $MOZHARNESS_REV # mozharness revision
 test $TARGET
 
 . setup-ccache.sh
 
-# First check if the mozharness directory is available. This is intended to be
-# used locally in development to test mozharness changes:
-#
-#   $ docker -v your_mozharness:/home/worker/mozharness ...
-#
-if [ ! -d mozharness ]; then
-  tc-vcs checkout mozharness $MOZHARNESS_REPOSITORY $MOZHARNESS_REPOSITORY $MOZHARNESS_REV
-fi
+tc-vcs checkout mozharness $MOZHARNESS_REPOSITORY $MOZHARNESS_REPOSITORY $MOZHARNESS_REV
 
 # Figure out where the remote manifest is so we can use caches for it.
 
 if [ -z "$MANIFEST" ]; then
   MANIFEST="$WORKSPACE/gecko/b2g/config/$TARGET/sources.xml"
 fi
 
 tc-vcs repo-checkout $WORKSPACE/B2G https://git.mozilla.org/b2g/B2G.git $MANIFEST
@@ -63,9 +56,8 @@ ls -lah $WORKSPACE/B2G/objdir-gecko/dist
 
 mv $WORKSPACE/B2G/sources.xml $HOME/artifacts/sources.xml
 mv $WORKSPACE/B2G/out/target/product/generic_x86/tests/gaia-tests.zip $HOME/artifacts/gaia-tests.zip
 mv $WORKSPACE/B2G/out/target/product/generic_x86/tests/b2g-*.zip $HOME/artifacts/b2g-tests.zip
 mv $WORKSPACE/B2G/out/emulator.tar.gz $HOME/artifacts/emulator.tar.gz
 mv $WORKSPACE/B2G/objdir-gecko/dist/b2g-*.crashreporter-symbols.zip $HOME/artifacts/b2g-crashreporter-symbols.zip
 
 ccache -s
-
--- a/testing/taskcluster/scripts/builder/build-emulator.sh
+++ b/testing/taskcluster/scripts/builder/build-emulator.sh
@@ -18,19 +18,17 @@ test $TARGET
 
 . setup-ccache.sh
 
 # First check if the mozharness directory is available. This is intended to be
 # used locally in development to test mozharness changes:
 #
 #   $ docker -v your_mozharness:/home/worker/mozharness ...
 #
-if [ ! -d mozharness ]; then
-  tc-vcs checkout mozharness $MOZHARNESS_REPOSITORY $MOZHARNESS_REPOSITORY $MOZHARNESS_REV $MOZHARNESS_REF
-fi
+tc-vcs checkout mozharness $MOZHARNESS_REPOSITORY $MOZHARNESS_REPOSITORY $MOZHARNESS_REV $MOZHARNESS_REF
 
 # Figure out where the remote manifest is so we can use caches for it.
 
 if [ -z "$MANIFEST" ]; then
   MANIFEST="$WORKSPACE/gecko/b2g/config/$TARGET/sources.xml"
 fi
 
 tc-vcs repo-checkout $WORKSPACE/B2G https://git.mozilla.org/b2g/B2G.git $MANIFEST
--- a/toolkit/components/search/nsSearchService.js
+++ b/toolkit/components/search/nsSearchService.js
@@ -3299,16 +3299,20 @@ SearchService.prototype = {
       defaultEngine = defaultPrefB.getComplexValue(defPref, nsIPLS).data;
     } catch (ex) {
       // If the default pref is invalid (e.g. an add-on set it to a bogus value)
       // getEngineByName will just return null, which is the best we can do.
     }
     return this.getEngineByName(defaultEngine);
   },
 
+  resetToOriginalDefaultEngine: function SRCH_SVC__resetToOriginalDefaultEngine() {
+    this.defaultEngine = this._originalDefaultEngine;
+  },
+
   _buildCache: function SRCH_SVC__buildCache() {
     if (!getBoolPref(BROWSER_SEARCH_PREF + "cache.enabled", true))
       return;
 
     TelemetryStopwatch.start("SEARCH_SERVICE_BUILD_CACHE_MS");
     let cache = {};
     let locale = getLocale();
     let buildID = Services.appinfo.platformBuildID;