Merge mozilla-central to mozilla-inbound
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Tue, 10 Nov 2015 12:13:10 +0100
changeset 308037 5c402c2e90af85231b32029a021533cca320b848
parent 308036 2d6c2b2974e915b75d20a645579af5771179bc03 (current diff)
parent 307896 cc473fe5dc512c450634506f68cbacfb40a06a23 (diff)
child 308038 50412f7bafbfa86a816d4e2f908de736b3365ebc
push id7422
push userpehrsons@gmail.com
push dateWed, 11 Nov 2015 04:19:53 +0000
milestone45.0a1
Merge mozilla-central to mozilla-inbound
build/mobile/robocop/AndroidManifest.xml.in
build/mobile/robocop/Makefile.in
build/mobile/robocop/README
build/mobile/robocop/moz.build
build/mobile/robocop/res/values/strings.xml
build/mobile/robocop/robotium-solo-4.3.1.jar
--- a/b2g/config/aries/sources.xml
+++ b/b2g/config/aries/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="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="cf650aa1521151d5e4ac6d04188f911712271ec1"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="c0482775b1526add626b170dd53a72d10bcaf07c"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="956700d9754349b630a34551750ae6353614b6aa"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="aa5b7b7f6ed207ea1adc4df11d1d8bdaeabadd85"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
--- 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="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="cf650aa1521151d5e4ac6d04188f911712271ec1"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="c0482775b1526add626b170dd53a72d10bcaf07c"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="956700d9754349b630a34551750ae6353614b6aa"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="aa5b7b7f6ed207ea1adc4df11d1d8bdaeabadd85"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
--- 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="1b0db93fb6b870b03467aff50d6419771ba0d88c">
     <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="cf650aa1521151d5e4ac6d04188f911712271ec1"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="c0482775b1526add626b170dd53a72d10bcaf07c"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="956700d9754349b630a34551750ae6353614b6aa"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="4ace9aaee0e048dfda11bb787646c59982a3dc80"/>
   <project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="c72c9278ddc2f442d193474993d36e7f2cfb08c4"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="aa5b7b7f6ed207ea1adc4df11d1d8bdaeabadd85"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="34ea6163f9f0e0122fb0bb03607eccdca31ced7a"/>
   <project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
   <!-- Stock Android things -->
--- 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="660169a3d7e034a892359e39135e8c2785a6ad6f">
     <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="cf650aa1521151d5e4ac6d04188f911712271ec1"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="c0482775b1526add626b170dd53a72d10bcaf07c"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="956700d9754349b630a34551750ae6353614b6aa"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="aa5b7b7f6ed207ea1adc4df11d1d8bdaeabadd85"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="e76ff4b6b6357cf5c54dfafefbef8d1f2692db85"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
   <project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.1" path="prebuilts/clang/linux-x86/3.1" revision="5c45f43419d5582949284eee9cef0c43d866e03b"/>
--- 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="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="cf650aa1521151d5e4ac6d04188f911712271ec1"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="c0482775b1526add626b170dd53a72d10bcaf07c"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="956700d9754349b630a34551750ae6353614b6aa"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="aa5b7b7f6ed207ea1adc4df11d1d8bdaeabadd85"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="e76ff4b6b6357cf5c54dfafefbef8d1f2692db85"/>
--- 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="c9d4fe680662ee44a4bdea42ae00366f5df399cf">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="cf650aa1521151d5e4ac6d04188f911712271ec1"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="c0482775b1526add626b170dd53a72d10bcaf07c"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="956700d9754349b630a34551750ae6353614b6aa"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="aa5b7b7f6ed207ea1adc4df11d1d8bdaeabadd85"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="e76ff4b6b6357cf5c54dfafefbef8d1f2692db85"/>
--- 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="1b0db93fb6b870b03467aff50d6419771ba0d88c">
     <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="cf650aa1521151d5e4ac6d04188f911712271ec1"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="c0482775b1526add626b170dd53a72d10bcaf07c"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="956700d9754349b630a34551750ae6353614b6aa"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="4ace9aaee0e048dfda11bb787646c59982a3dc80"/>
   <project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="c72c9278ddc2f442d193474993d36e7f2cfb08c4"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="aa5b7b7f6ed207ea1adc4df11d1d8bdaeabadd85"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="34ea6163f9f0e0122fb0bb03607eccdca31ced7a"/>
   <project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
   <!-- Stock Android things -->
--- 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="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="cf650aa1521151d5e4ac6d04188f911712271ec1"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="c0482775b1526add626b170dd53a72d10bcaf07c"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="956700d9754349b630a34551750ae6353614b6aa"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="aa5b7b7f6ed207ea1adc4df11d1d8bdaeabadd85"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
@@ -129,17 +129,17 @@
   <project name="codeaurora_kernel_msm" path="kernel" remote="b2g" revision="b3531e28c2273ecdc37613ffd13dd8beb99123a8"/>
   <project name="kernel_lk" path="bootable/bootloader/lk" remote="b2g" revision="fda40423ffa573dc6cafd3780515010cb2a086be"/>
   <project name="platform_bootable_recovery" path="bootable/recovery" remote="b2g" revision="d5e53ed6f22fa06052351dc03510af9473af01ea"/>
   <project name="platform_bionic" path="bionic" remote="b2g" revision="3e85c4683c121530c1c3a48c696a569bf5f587e2"/>
   <project name="platform_external_bluetooth_bluedroid" path="external/bluetooth/bluedroid" remote="b2g" revision="70f536bd97d901b96b94669ae1aa2fd0fb54b258"/>
   <project name="platform_external_libnfc-nci" path="external/libnfc-nci" remote="t2m" revision="4186bdecb4dae911b39a8202252cc2310d91b0be"/>
   <project name="platform_external_libnfc-pn547" path="external/libnfc-pn547" remote="b2g" revision="5bb999b84b8adc14f6bea004d523ba258dea8188"/>
   <project name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="5b71e40213f650459e95d35b6f14af7e88d8ab62"/>
-  <project name="platform/frameworks/av" path="frameworks/av" revision="65f5144987afff35a932262c0c5fad6ecce0c04a"/>
+  <project name="platform_frameworks_av" path="frameworks/av" remote="b2g" revision="eab4189dd74194e499a081a42f8336d02e2c35bd"/>
   <project name="platform/frameworks/base" path="frameworks/base" revision="da8e6bc53c8bc669da0bb627904d08aa293f2497"/>
   <project name="platform/frameworks/native" path="frameworks/native" revision="a46a9f1ac0ed5662d614c277cbb14eb3f332f365"/>
   <project name="platform/hardware/libhardware" path="hardware/libhardware" revision="7196881a0e9dd7bfbbcf0af64c8064e70f0fa094"/>
   <project name="platform/hardware/qcom/audio" path="hardware/qcom/audio" revision="8d7676dfb68ee0cd069affedd5d1e97316a184ba"/>
   <project name="platform/hardware/qcom/camera" path="hardware/qcom/camera" revision="2a1ded216a91bf62a72b1640cf01ab4998f37028"/>
   <project name="hardware_qcom_display" path="hardware/qcom/display" remote="b2g" revision="0eb5fd21d8697136ee4a0166f5e06bff25cc1e8a"/>
   <project name="platform/hardware/qcom/gps" path="hardware/qcom/gps" revision="9883ea57b0668d8f60dba025d4522dfa69a1fbfa"/>
   <project name="platform/hardware/qcom/media" path="hardware/qcom/media" revision="a558dc844bf5144fc38603fd8f4df8d9557052a5"/>
--- a/b2g/config/gaia.json
+++ b/b2g/config/gaia.json
@@ -1,9 +1,9 @@
 {
     "git": {
-        "git_revision": "cf650aa1521151d5e4ac6d04188f911712271ec1", 
+        "git_revision": "c0482775b1526add626b170dd53a72d10bcaf07c", 
         "remote": "https://git.mozilla.org/releases/gaia.git", 
         "branch": ""
     }, 
-    "revision": "a09fd39bc2cefbaef4ee5848c30ba6cd21c41b4b", 
+    "revision": "da79a53a3e7b627176e3a933387f0eaa7ff379fa", 
     "repo_path": "integration/gaia-central"
 }
--- a/b2g/config/nexus-4-kk/sources.xml
+++ b/b2g/config/nexus-4-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="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="cf650aa1521151d5e4ac6d04188f911712271ec1"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="c0482775b1526add626b170dd53a72d10bcaf07c"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="956700d9754349b630a34551750ae6353614b6aa"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="aa5b7b7f6ed207ea1adc4df11d1d8bdaeabadd85"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
--- a/b2g/config/nexus-4/sources.xml
+++ b/b2g/config/nexus-4/sources.xml
@@ -13,17 +13,17 @@
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="660169a3d7e034a892359e39135e8c2785a6ad6f">
     <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="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="cf650aa1521151d5e4ac6d04188f911712271ec1"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="c0482775b1526add626b170dd53a72d10bcaf07c"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="956700d9754349b630a34551750ae6353614b6aa"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="aa5b7b7f6ed207ea1adc4df11d1d8bdaeabadd85"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="e76ff4b6b6357cf5c54dfafefbef8d1f2692db85"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
   <project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.1" path="prebuilts/clang/linux-x86/3.1" revision="5c45f43419d5582949284eee9cef0c43d866e03b"/>
--- 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="c9d4fe680662ee44a4bdea42ae00366f5df399cf">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="cf650aa1521151d5e4ac6d04188f911712271ec1"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="c0482775b1526add626b170dd53a72d10bcaf07c"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="956700d9754349b630a34551750ae6353614b6aa"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="aa5b7b7f6ed207ea1adc4df11d1d8bdaeabadd85"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
--- a/build/moz.build
+++ b/build/moz.build
@@ -23,20 +23,16 @@ if CONFIG['OS_TARGET'] == 'Android' and 
 if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
     DIRS += ['annotationProcessors']
     TEST_DIRS += [
         'mobile/sutagent/android',
         'mobile/sutagent/android/watcher',
         'mobile/sutagent/android/ffxcp',
         'mobile/sutagent/android/fencp',
     ]
-    if not CONFIG['MOZ_B2GDROID']:
-        TEST_DIRS += [
-            'mobile/robocop',
-        ]
 
 for var in ('GRE_MILESTONE', 'MOZ_APP_VERSION', 'MOZ_APP_BASENAME',
             'MOZ_APP_VENDOR', 'MOZ_APP_ID', 'MAR_CHANNEL_ID',
             'ACCEPTED_MAR_CHANNEL_IDS', 'MOZ_APP_REMOTINGNAME'):
     DEFINES[var] = CONFIG[var]
 
 if CONFIG['MOZ_APP_DISPLAYNAME'] != CONFIG['MOZ_APP_BASENAME']:
     DEFINES['MOZ_APP_DISPLAYNAME'] = CONFIG['MOZ_APP_DISPLAYNAME']
--- a/caps/tests/mochitest/test_bug292789.html
+++ b/caps/tests/mochitest/test_bug292789.html
@@ -49,18 +49,18 @@ function testScriptSrc(aCallback) {
       // trigger the callback
       if (aCallback)
         aCallback();
     }
 }
 
 /** <img src=""> tests **/
 var img_global = "chrome://global/skin/icons/Error.png";
-var img_mozapps = "chrome://mozapps/skin/passwordmgr/key.png";
-var res_mozapps = "resource://gre/chrome/toolkit/skin/classic/mozapps/passwordmgr/key.png";
+var img_mozapps = "chrome://mozapps/skin/passwordmgr/key-16.png";
+var res_mozapps = "resource://gre/chrome/toolkit/skin/classic/mozapps/passwordmgr/key-16.png";
 
 var imgTests = [[img_global, "success"],
                 [img_mozapps, "fail"],
                 [res_mozapps, "success"]];
 
 var curImgTest = 0;
 
 function runImgTest() {
@@ -69,24 +69,24 @@ function runImgTest() {
     loadImage(test[0], test[1], callback);
 }
 
 function finishTest() {
   SimpleTest.finish();
 }
 
 function fail(event) {
-    is(event.target.expected, "fail",
+    is("fail", event.target.expected,
        "content should not be allowed to load "+event.target.src);
     if (event.target.callback)
       event.target.callback();
 }
 
 function success(event) {
-    is(event.target.expected, "success",
+    is("success", event.target.expected,
        "content should be able to load "+event.target.src);
     if (event.target.callback)
       event.target.callback();
 }
 
 function loadImage(uri, expect, callback) {
     var img = document.createElement("img");
     img.onerror = fail;
--- a/configure.in
+++ b/configure.in
@@ -4878,23 +4878,16 @@ fi
 
 dnl ========================================================
 dnl = Include share overlay on Android
 dnl ========================================================
 if test -n "$MOZ_ANDROID_SHARE_OVERLAY"; then
     AC_DEFINE(MOZ_ANDROID_SHARE_OVERLAY)
 fi
 
-dnl ========================================================
-dnl = Show Firefox Account profile details on Android
-dnl ========================================================
-if test -n "$MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES"; then
-    AC_DEFINE(MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES)
-fi
-
 dnl = Include Tab Queue on Android
 dnl = Temporary build flag to allow development in Nightly
 dnl ========================================================
 if test -n "$MOZ_ANDROID_TAB_QUEUE"; then
     AC_DEFINE(MOZ_ANDROID_TAB_QUEUE)
 fi
 
 dnl =========================================================
@@ -8620,17 +8613,16 @@ AC_SUBST(MOZ_WEBSMS_BACKEND)
 AC_SUBST(MOZ_ANDROID_BEAM)
 AC_SUBST(MOZ_LOCALE_SWITCHER)
 AC_SUBST(MOZ_DISABLE_GECKOVIEW)
 AC_SUBST(MOZ_ANDROID_GCM)
 AC_SUBST(MOZ_ANDROID_GECKOLIBS_AAR)
 AC_SUBST(MOZ_ANDROID_READING_LIST_SERVICE)
 AC_SUBST(MOZ_ANDROID_SEARCH_ACTIVITY)
 AC_SUBST(MOZ_ANDROID_SHARE_OVERLAY)
-AC_SUBST(MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES)
 AC_SUBST(MOZ_ANDROID_TAB_QUEUE)
 AC_SUBST(MOZ_ANDROID_MLS_STUMBLER)
 AC_SUBST(MOZ_ANDROID_DOWNLOADS_INTEGRATION)
 AC_SUBST(MOZ_ANDROID_APPLICATION_CLASS)
 AC_SUBST(MOZ_ANDROID_BROWSER_INTENT_CLASS)
 AC_SUBST(MOZ_ANDROID_SEARCH_INTENT_CLASS)
 AC_SUBST(MOZ_EXCLUDE_HYPHENATION_DICTIONARIES)
 AC_SUBST(MOZ_INSTALL_TRACKING)
--- a/devtools/client/shared/test/browser.ini
+++ b/devtools/client/shared/test/browser.ini
@@ -48,43 +48,71 @@ support-files =
 [browser_flame-graph-utils-01.js]
 [browser_flame-graph-utils-02.js]
 [browser_flame-graph-utils-03.js]
 [browser_flame-graph-utils-04.js]
 [browser_flame-graph-utils-05.js]
 [browser_flame-graph-utils-06.js]
 [browser_flame-graph-utils-hash.js]
 [browser_graphs-01.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-02.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-03.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-04.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-05.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-06.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-07a.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-07b.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-07c.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-07d.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-07e.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-08.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-09a.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-09b.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-09c.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-09d.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-09e.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-09f.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-10a.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-10b.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-10c.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-11a.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-11b.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-12.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-13.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-14.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-15.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_graphs-16.js]
+skip-if = e10s # Bug 1221911, bug 1222289, frequent e10s timeouts
 [browser_inplace-editor-01.js]
 [browser_inplace-editor-02.js]
 [browser_layoutHelpers.js]
 skip-if = e10s # Layouthelpers test should not run in a content page.
 [browser_layoutHelpers-getBoxQuads.js]
 skip-if = e10s # Layouthelpers test should not run in a content page.
 [browser_mdn-docs-01.js]
 [browser_mdn-docs-02.js]
--- a/devtools/client/styleinspector/computedview.xhtml
+++ b/devtools/client/styleinspector/computedview.xhtml
@@ -1,16 +1,18 @@
 <?xml version="1.0"?>
 <!-- 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/. -->
 
 <!DOCTYPE window [
   <!ENTITY % inspectorDTD SYSTEM "chrome://devtools/locale/styleinspector.dtd">
   %inspectorDTD;
+  <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
+  %globalDTD;
   <!ELEMENT loop ANY>
   <!ATTLIST li foreach CDATA #IMPLIED>
   <!ATTLIST div foreach CDATA #IMPLIED>
   <!ATTLIST loop foreach CDATA #IMPLIED>
   <!ATTLIST a target CDATA #IMPLIED>
   <!ATTLIST a __pathElement CDATA #IMPLIED>
   <!ATTLIST div _id CDATA #IMPLIED>
   <!ATTLIST div save CDATA #IMPLIED>
@@ -42,17 +44,17 @@
       window.onunload = function() {
         if (this.computedview) {
           this.computedview.destroy();
         }
       }
     </script>
   </head>
 
-  <body>
+  <body dir="&locale.dir;">
 
     <div id="root" class="devtools-monospace">
       <div class="devtools-toolbar">
         <div class="devtools-searchbox">
           <input id="computedview-searchbox"
                  class="devtools-searchinput devtools-rule-searchbox"
                  type="search" placeholder="&filterStylesPlaceholder;"/>
           <button id="computedview-searchinput-clear" class="devtools-searchinput-clear"></button>
--- a/devtools/client/styleinspector/cssruleview.xhtml
+++ b/devtools/client/styleinspector/cssruleview.xhtml
@@ -1,16 +1,18 @@
 <?xml version="1.0"?>
 <!-- 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/. -->
 
 <!DOCTYPE window [
   <!ENTITY % inspectorDTD SYSTEM "chrome://devtools/locale/styleinspector.dtd">
   %inspectorDTD;
+  <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
+  %globalDTD;
 ]>
 
 <html xmlns="http://www.w3.org/1999/xhtml"
       xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
       class="theme-sidebar">
   <head>
     <title>&ruleViewTitle;</title>
     <link rel="stylesheet" href="chrome://global/skin/global.css"  type="text/css"/>
@@ -26,17 +28,17 @@
       }
       window.onunload = function() {
         if (this.ruleview) {
           this.ruleview.destroy();
         }
       }
     </script>
   </head>
-  <body>
+  <body dir="&locale.dir;">
     <div id="root" class="devtools-monospace">
       <div id="ruleview-toolbar" class="devtools-toolbar">
         <div class="devtools-searchbox">
           <input id="ruleview-searchbox"
                  class="devtools-searchinput devtools-rule-searchbox"
                  type="search" placeholder="&filterStylesPlaceholder;"/>
           <button id="ruleview-searchinput-clear" class="devtools-searchinput-clear"></button>
         </div>
--- a/devtools/client/themes/toolbars.css
+++ b/devtools/client/themes/toolbars.css
@@ -354,17 +354,18 @@
 .theme-dark .devtools-searchinput {
   background-image: url(images/magnifying-glass.png);
 }
 
 .theme-light .devtools-searchinput {
   background-image: url(images/magnifying-glass-light.png);
 }
 
-.devtools-searchinput:-moz-locale-dir(rtl) {
+.devtools-searchinput:-moz-locale-dir(rtl),
+.devtools-searchinput:-moz-dir(rtl) {
   background-position: calc(100% - 8px) center;
 }
 
 .devtools-searchinput > .textbox-input-box > .textbox-search-icons > .textbox-search-icon {
   visibility: hidden;
 }
 
 /* Searchbox is a div container element for a search input element */
@@ -403,17 +404,17 @@
   -moz-box-flex: 1;
   width: 100%;
   font: inherit;
 }
 
 .devtools-rule-searchbox[filled] {
   background-color: var(--searchbox-background-color);
   border-color: var(--searchbox-border-color);
-  padding-right: 23px;
+  -moz-padding-end: 23px;
 }
 
 .devtools-style-searchbox-no-match {
   background-color: var(--searcbox-no-match-background-color) !important;
   border-color: var(--searcbox-no-match-border-color) !important;
 }
 
 .devtools-no-search-result {
@@ -428,16 +429,21 @@
   border: 0;
   width: 16px;
   height: 16px;
   background-position: 0 0;
   background-repeat: no-repeat;
   background-color: transparent;
 }
 
+.devtools-searchinput-clear:-moz-dir(rtl) {
+  right: unset;
+  left: 7px;
+}
+
 .theme-dark .devtools-searchinput-clear {
   background-image: url("chrome://devtools/skin/images/search-clear-dark.svg");
 }
 
 .theme-light .devtools-searchinput-clear {
   background-image: url("chrome://devtools/skin/images/search-clear-light.svg");
 }
 
--- a/mobile/android/app/build.gradle
+++ b/mobile/android/app/build.gradle
@@ -31,25 +31,25 @@ android {
     }
 
     sourceSets {
         main {
             manifest.srcFile "${topobjdir}/mobile/android/base/AndroidManifest.xml"
         }
 
         androidTest {
-            manifest.srcFile "${topobjdir}/build/mobile/robocop/AndroidManifest.xml"
+            manifest.srcFile "${topobjdir}/mobile/android/tests/browser/robocop/AndroidManifest.xml"
             java {
                 srcDir "${topsrcdir}/mobile/android/tests/browser/robocop/src"
                 srcDir "${topsrcdir}/mobile/android/tests/background/junit3/src"
                 srcDir "${topsrcdir}/mobile/android/tests/browser/junit3/src"
                 srcDir "${topsrcdir}/mobile/android/tests/javaddons/src"
             }
             res {
-                srcDir "${topsrcdir}/build/mobile/robocop/res"
+                srcDir "${topsrcdir}/mobile/android/tests/browser/robocop/res"
             }
             assets {
                 srcDir "${topsrcdir}/mobile/android/tests/browser/robocop/assets"
             }
         }
     }
 }
 
--- a/mobile/android/app/mobile.js
+++ b/mobile/android/app/mobile.js
@@ -345,18 +345,19 @@ pref("browser.enable_click_image_resizin
 
 // open in tab preferences
 // 0=default window, 1=current window/tab, 2=new window, 3=new tab in most window
 pref("browser.link.open_external", 3);
 pref("browser.link.open_newwindow", 3);
 // 0=force all new windows to tabs, 1=don't force, 2=only force those with no features set
 pref("browser.link.open_newwindow.restriction", 0);
 
-// Image blocking policy
-pref("browser.image_blocking.enabled", false);
+// image blocking policy
+// 0=disabled, 1=enabled, 2=cellular-only
+pref("browser.image_blocking", 0);
 
 // controls which bits of private data to clear. by default we clear them all.
 pref("privacy.item.cache", true);
 pref("privacy.item.cookies", true);
 pref("privacy.item.offlineApps", true);
 pref("privacy.item.history", true);
 pref("privacy.item.searchHistory", true);
 pref("privacy.item.formdata", true);
@@ -416,27 +417,27 @@ pref("browser.ui.zoom.force-user-scalabl
 
 pref("ui.zoomedview.enabled", true);
 pref("ui.zoomedview.keepLimitSize", 16); // value in layer pixels, used to not keep the large elements in the cluster list (Bug 1191041)
 pref("ui.zoomedview.limitReadableSize", 8); // value in layer pixels
 pref("ui.zoomedview.defaultZoomFactor", 2);
 pref("ui.zoomedview.simplified", true); // Do not display all the zoomed view controls, do not use size heurisistic
 
 pref("ui.touch.radius.enabled", false);
-pref("ui.touch.radius.leftmm", 3);
-pref("ui.touch.radius.topmm", 5);
-pref("ui.touch.radius.rightmm", 3);
-pref("ui.touch.radius.bottommm", 2);
+pref("ui.touch.radius.leftmm", 8);
+pref("ui.touch.radius.topmm", 8);
+pref("ui.touch.radius.rightmm", 8);
+pref("ui.touch.radius.bottommm", 8);
 pref("ui.touch.radius.visitedWeight", 120);
 
 pref("ui.mouse.radius.enabled", true);
-pref("ui.mouse.radius.leftmm", 3);
-pref("ui.mouse.radius.topmm", 5);
-pref("ui.mouse.radius.rightmm", 3);
-pref("ui.mouse.radius.bottommm", 2);
+pref("ui.mouse.radius.leftmm", 8);
+pref("ui.mouse.radius.topmm", 8);
+pref("ui.mouse.radius.rightmm", 8);
+pref("ui.mouse.radius.bottommm", 8);
 pref("ui.mouse.radius.visitedWeight", 120);
 pref("ui.mouse.radius.reposition", true);
 
 // The percentage of the screen that needs to be scrolled before toolbar
 // manipulation is allowed.
 pref("browser.ui.scroll-toolbar-threshold", 10);
 
 // Maximum distance from the point where the user pressed where we still
@@ -950,12 +951,12 @@ pref("dom.serviceWorkers.interception.en
 
 // The remote content URL where FxAccountsWebChannel messages originate.  Must use HTTPS.
 pref("identity.fxaccounts.remote.webchannel.uri", "https://accounts.firefox.com");
 
 // The remote URL of the Firefox Account profile server.
 pref("identity.fxaccounts.remote.profile.uri", "https://profile.accounts.firefox.com/v1");
 
 // The remote URL of the Firefox Account oauth server.
-pref("identity.fxaccounts.remote.oauth.uri", "https://oauth.accounts.firefox.com/v1"); 
+pref("identity.fxaccounts.remote.oauth.uri", "https://oauth.accounts.firefox.com/v1");
 
 // Token server used by Firefox Account-authenticated Sync.
 pref("identity.sync.tokenserver.uri", "https://token.services.mozilla.com/1.0/sync/1.5");
--- a/mobile/android/b2gdroid/confvars.sh
+++ b/mobile/android/b2gdroid/confvars.sh
@@ -97,21 +97,16 @@ MOZ_ANDROID_SHARE_OVERLAY=1
 # Enable Tab Queue
 if test "$NIGHTLY_BUILD"; then
   MOZ_ANDROID_TAB_QUEUE=1
 fi
 
 # Use the low-memory GC tuning.
 export JS_GC_SMALL_CHUNK_SIZE=1
 
-# Enable FxAccount Avatar
-if test "$NIGHTLY_BUILD"; then
-  MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES=1
-fi
-
 # Enable checking that add-ons are signed by the trusted root
 MOZ_ADDON_SIGNING=1
 if test "$MOZ_OFFICIAL_BRANDING"; then
   if test "$MOZ_UPDATE_CHANNEL" = "beta" -o \
           "$MOZ_UPDATE_CHANNEL" = "release"; then
     MOZ_REQUIRE_SIGNING=1
   fi
 fi
--- a/mobile/android/base/AppConstants.java.in
+++ b/mobile/android/base/AppConstants.java.in
@@ -98,16 +98,18 @@ public class AppConstants {
     // GRE_BUILDID is exactly the same as MOZ_APP_BUILDID unless you're running
     // on XULRunner, which is never the case on Android.
     public static final String MOZ_APP_BUILDID = "@MOZ_APP_BUILDID@";
     public static final String MOZ_APP_ID = "@MOZ_APP_ID@";
     public static final String MOZ_APP_NAME = "@MOZ_APP_NAME@";
     public static final String MOZ_APP_VENDOR = "@MOZ_APP_VENDOR@";
     public static final String MOZ_APP_VERSION = "@MOZ_APP_VERSION@";
     public static final String MOZ_APP_DISPLAYNAME = "@MOZ_APP_DISPLAYNAME@";
+    // MOZ_APP_UA_NAME is already quoted when it gets substituted, like MOZILLA_VERSION.
+    public static final String MOZ_APP_UA_NAME = @MOZ_APP_UA_NAME@;
 
     // MOZILLA_VERSION is already quoted when it gets substituted in. If we
     // add additional quotes we end up with ""x.y"", which is a syntax error.
     public static final String MOZILLA_VERSION = @MOZILLA_VERSION@;
 
     public static final String MOZ_MOZILLA_API_KEY = "@MOZ_MOZILLA_API_KEY@";
     public static final boolean MOZ_STUMBLER_BUILD_TIME_ENABLED =
 //#ifdef MOZ_ANDROID_MLS_STUMBLER
@@ -194,23 +196,16 @@ public class AppConstants {
 
     public static final boolean MOZ_ANDROID_READING_LIST_SERVICE =
 //#ifdef MOZ_ANDROID_READING_LIST_SERVICE
     true;
 //#else
     false;
 //#endif
 
-    public static final boolean MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES =
-//#ifdef MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES
-    true;
-//#else
-    false;
-//#endif
-
     public static final boolean MOZ_TELEMETRY_ON_BY_DEFAULT =
 //#ifdef MOZ_TELEMETRY_ON_BY_DEFAULT
     true;
 //#else
     false;
 //#endif
 
     public static final boolean MOZ_ANDROID_TAB_QUEUE =
--- a/mobile/android/base/GeckoAppShell.java
+++ b/mobile/android/base/GeckoAppShell.java
@@ -1219,17 +1219,17 @@ public class GeckoAppShell
             // Only set explicit mimeTypes on file://.
             final String mimeType2 = getMimeTypeFromExtension(extension);
             intent.setType(mimeType2);
             return intent;
         }
 
         // Have a special handling for SMS, as the message body
         // is not extracted from the URI automatically.
-        if (!"sms".equals(scheme)) {
+        if (!"sms".equals(scheme) && !"smsto".equals(scheme)) {
             return intent;
         }
 
         final String query = uri.getEncodedQuery();
         if (TextUtils.isEmpty(query)) {
             return intent;
         }
 
--- a/mobile/android/base/background/ReadingListConstants.java
+++ b/mobile/android/base/background/ReadingListConstants.java
@@ -7,17 +7,17 @@ package org.mozilla.gecko.background;
 import org.mozilla.gecko.AppConstants;
 
 /**
  * This is in 'background' not 'reading' so that it's still usable even when the
  * Reading List feature is build-time disabled.
  */
 public class ReadingListConstants {
   public static final String GLOBAL_LOG_TAG = "FxReadingList";
-  public static final String USER_AGENT = "Firefox-Android-FxReader/" + AppConstants.MOZ_APP_VERSION + " (" + AppConstants.MOZ_APP_DISPLAYNAME + ")";
+  public static final String USER_AGENT = "Firefox-Android-FxReader/" + AppConstants.MOZ_APP_VERSION + " (" + AppConstants.MOZ_APP_UA_NAME + ")";
   public static final String DEFAULT_DEV_ENDPOINT = "https://readinglist.dev.mozaws.net/v1/";
   public static final String DEFAULT_PROD_ENDPOINT = "https://readinglist.services.mozilla.com/v1/";
 
   public static final String OAUTH_SCOPE_READINGLIST = "readinglist";
   public static final String AUTH_TOKEN_TYPE = "oauth::" + OAUTH_SCOPE_READINGLIST;
 
   public static boolean DEBUG = false;
 }
--- a/mobile/android/base/background/healthreport/HealthReportConstants.java
+++ b/mobile/android/base/background/healthreport/HealthReportConstants.java
@@ -6,17 +6,17 @@ package org.mozilla.gecko.background.hea
 
 import org.mozilla.gecko.background.common.GlobalConstants;
 import org.mozilla.gecko.AppConstants;
 
 public class HealthReportConstants {
   public static final String HEALTH_AUTHORITY = AppConstants.ANDROID_PACKAGE_NAME + ".health";
   public static final String GLOBAL_LOG_TAG = "GeckoHealth";
 
-  public static final String USER_AGENT = "Firefox-Android-HealthReport/" + AppConstants.MOZ_APP_VERSION + " (" + AppConstants.MOZ_APP_DISPLAYNAME + ")";
+  public static final String USER_AGENT = "Firefox-Android-HealthReport/" + AppConstants.MOZ_APP_VERSION + " (" + AppConstants.MOZ_APP_UA_NAME + ")";
 
   /**
    * The earliest allowable value for the last ping time, corresponding to May 2nd 2013.
    * Used for sanity checks.
    */
   public static final long EARLIEST_LAST_PING = 1367500000000L;
 
   // Not `final` so we have the option to turn this on at runtime with a magic addon.
--- a/mobile/android/base/fxa/FxAccountConstants.java
+++ b/mobile/android/base/fxa/FxAccountConstants.java
@@ -32,17 +32,17 @@ public class FxAccountConstants {
   // Key for avatar URI in profile JSON.
   public static final String KEY_PROFILE_JSON_AVATAR = "avatar";
   // Key for username in profile JSON.
   public static final String KEY_PROFILE_JSON_USERNAME = "displayName";
 
   // You must wait 15 minutes after failing an age check before trying to create a different account.
   public static final long MINIMUM_TIME_TO_WAIT_AFTER_AGE_CHECK_FAILED_IN_MILLISECONDS = 15 * 60 * 1000;
 
-  public static final String USER_AGENT = "Firefox-Android-FxAccounts/" + AppConstants.MOZ_APP_VERSION + " (" + AppConstants.MOZ_APP_DISPLAYNAME + ")";
+  public static final String USER_AGENT = "Firefox-Android-FxAccounts/" + AppConstants.MOZ_APP_VERSION + " (" + AppConstants.MOZ_APP_UA_NAME + ")";
 
   public static final String ACCOUNT_PICKLE_FILENAME = "fxa.account.json";
 
   /**
    * It's possible to migrate an Old Sync account to a new Firefox Account.
    * During migration, we pickle the Old Sync Account preferences to disk; this
    * is the name of that file. It's only written during migration and is simply
    * here as an escape hatch: if we see problems in the wild, we can produce a
--- a/mobile/android/base/fxa/activities/FxAccountStatusFragment.java
+++ b/mobile/android/base/fxa/activities/FxAccountStatusFragment.java
@@ -90,17 +90,16 @@ public class FxAccountStatusFragment
   private static boolean ALWAYS_SHOW_AUTH_SERVER = false;
 
   // By default, the Sync server preference is only shown when the account is
   // configured to use a custom Sync server. In debug mode, this is set.
   private static boolean ALWAYS_SHOW_SYNC_SERVER = false;
 
   protected PreferenceCategory accountCategory;
   protected Preference profilePreference;
-  protected Preference emailPreference;
   protected Preference manageAccountPreference;
   protected Preference authServerPreference;
   protected Preference removeAccountPreference;
 
   protected Preference needsPasswordPreference;
   protected Preference needsUpgradePreference;
   protected Preference needsVerificationPreference;
   protected Preference needsMasterSyncAutomaticallyEnabledPreference;
@@ -162,22 +161,16 @@ public class FxAccountStatusFragment
     addPreferences();
   }
 
   protected void addPreferences() {
     addPreferencesFromResource(R.xml.fxaccount_status_prefscreen);
 
     accountCategory = (PreferenceCategory) ensureFindPreference("signed_in_as_category");
     profilePreference = ensureFindPreference("profile");
-    emailPreference = ensureFindPreference("email");
-    if (AppConstants.MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES) {
-      accountCategory.removePreference(emailPreference);
-    } else {
-      accountCategory.removePreference(profilePreference);
-    }
     manageAccountPreference = ensureFindPreference("manage_account");
     if (AppConstants.MOZ_ANDROID_NATIVE_ACCOUNT_UI) {
       accountCategory.removePreference(manageAccountPreference);
     }
     authServerPreference = ensureFindPreference("auth_server");
     removeAccountPreference = ensureFindPreference("remove_account");
 
     needsPasswordPreference = ensureFindPreference("needs_credentials");
@@ -196,21 +189,17 @@ public class FxAccountStatusFragment
     if (!FxAccountUtils.LOG_PERSONAL_INFORMATION) {
       removeDebugButtons();
     } else {
       connectDebugButtons();
       ALWAYS_SHOW_AUTH_SERVER = true;
       ALWAYS_SHOW_SYNC_SERVER = true;
     }
 
-    if (AppConstants.MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES) {
-      profilePreference.setOnPreferenceClickListener(this);
-    } else {
-      emailPreference.setOnPreferenceClickListener(this);
-    }
+    profilePreference.setOnPreferenceClickListener(this);
     manageAccountPreference.setOnPreferenceClickListener(this);
     removeAccountPreference.setOnPreferenceClickListener(this);
 
     needsPasswordPreference.setOnPreferenceClickListener(this);
     needsVerificationPreference.setOnPreferenceClickListener(this);
     needsFinishMigratingPreference.setOnPreferenceClickListener(this);
 
     bookmarksPreference.setOnPreferenceClickListener(this);
@@ -491,27 +480,25 @@ public class FxAccountStatusFragment
     // We would very much like register these status observers in bookended
     // onResume/onPause calls, but because the Fragment gets onResume during the
     // Activity's super.onResume, it hasn't yet been told its Firefox Account.
     // So we register the observer here (and remove it in onPause), and open
     // ourselves to the possibility that we don't have properly paired
     // register/unregister calls.
     FxAccountSyncStatusHelper.getInstance().startObserving(syncStatusDelegate);
 
-    if (AppConstants.MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES) {
-      // Register a local broadcast receiver to get profile cached notification.
-      final IntentFilter intentFilter = new IntentFilter();
-      intentFilter.addAction(FxAccountConstants.ACCOUNT_PROFILE_JSON_UPDATED_ACTION);
-      accountProfileInformationReceiver = new FxAccountProfileInformationReceiver();
-      LocalBroadcastManager.getInstance(getActivity()).registerReceiver(accountProfileInformationReceiver, intentFilter);
+    // Register a local broadcast receiver to get profile cached notification.
+    final IntentFilter intentFilter = new IntentFilter();
+    intentFilter.addAction(FxAccountConstants.ACCOUNT_PROFILE_JSON_UPDATED_ACTION);
+    accountProfileInformationReceiver = new FxAccountProfileInformationReceiver();
+    LocalBroadcastManager.getInstance(getActivity()).registerReceiver(accountProfileInformationReceiver, intentFilter);
 
-      // profilePreference is set during onCreate, so it's definitely not null here.
-      final float cornerRadius = getResources().getDimension(R.dimen.fxaccount_profile_image_width) / 2;
-      profileAvatarTarget = new PicassoPreferenceIconTarget(getResources(), profilePreference, cornerRadius);
-    }
+    // profilePreference is set during onCreate, so it's definitely not null here.
+    final float cornerRadius = getResources().getDimension(R.dimen.fxaccount_profile_image_width) / 2;
+    profileAvatarTarget = new PicassoPreferenceIconTarget(getResources(), profilePreference, cornerRadius);
 
     refresh();
   }
 
   @Override
   public void onPause() {
     super.onPause();
     FxAccountSyncStatusHelper.getInstance().stopObserving(syncStatusDelegate);
@@ -619,21 +606,16 @@ public class FxAccountStatusFragment
       syncNowPreference.setTitle(R.string.fxaccount_status_syncing);
     } else {
       syncNowPreference.setTitle(R.string.fxaccount_status_sync_now);
     }
     scheduleAndUpdateLastSyncedTime();
   }
 
   private void updateProfileInformation() {
-    if (!AppConstants.MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES) {
-      // Life is so much simpler.
-      emailPreference.setTitle(fxAccount.getEmail());
-      return;
-    }
 
     final ExtendedJSONObject profileJSON = fxAccount.getProfileJSON();
     if (profileJSON == null) {
       // Update the profile title with email as the fallback.
       // Profile icon by default use the default avatar as the fallback.
       profilePreference.setTitle(fxAccount.getEmail());
       return;
     }
--- a/mobile/android/base/fxa/authenticator/AndroidFxAccount.java
+++ b/mobile/android/base/fxa/authenticator/AndroidFxAccount.java
@@ -85,19 +85,17 @@ public class AndroidFxAccount {
   // This list collects all the known "oauth::" token types in order to delete them when necessary.
   private static final List<String> KNOWN_OAUTH_TOKEN_TYPES;
 
   static {
     final List<String> list = new ArrayList<>();
     if (AppConstants.MOZ_ANDROID_READING_LIST_SERVICE) {
       list.add(ReadingListConstants.AUTH_TOKEN_TYPE);
     }
-    if (AppConstants.MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES) {
-      list.add(PROFILE_OAUTH_TOKEN_TYPE);
-    }
+    list.add(PROFILE_OAUTH_TOKEN_TYPE);
     KNOWN_OAUTH_TOKEN_TYPES = Collections.unmodifiableList(list);
   }
 
   public static final Map<String, Boolean> DEFAULT_AUTHORITIES_TO_SYNC_AUTOMATICALLY_MAP;
   static {
     final HashMap<String, Boolean> m = new HashMap<String, Boolean>();
     // By default, Firefox Sync is enabled.
     m.put(BrowserContract.AUTHORITY, true);
--- a/mobile/android/base/fxa/sync/FxAccountSyncAdapter.java
+++ b/mobile/android/base/fxa/sync/FxAccountSyncAdapter.java
@@ -536,21 +536,19 @@ public class FxAccountSyncAdapter extend
               return;
             }
 
             final SessionCallback sessionCallback = new SessionCallback(syncDelegate, schedulePolicy);
             final KeyBundle syncKeyBundle = married.getSyncKeyBundle();
             final String clientState = married.getClientState();
             syncWithAssertion(audience, assertion, tokenServerEndpointURI, tokenBackoffHandler, sharedPrefs, syncKeyBundle, clientState, sessionCallback, extras, fxAccount);
 
-            if (AppConstants.MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES) {
-              // Force fetch the profile avatar information.
-              Logger.info(LOG_TAG, "Fetching profile avatar information.");
-              fxAccount.fetchProfileJSON();
-            }
+            // Force fetch the profile avatar information.
+            Logger.info(LOG_TAG, "Fetching profile avatar information.");
+            fxAccount.fetchProfileJSON();
           } catch (Exception e) {
             syncDelegate.handleError(e);
             return;
           }
         }
       });
 
       latch.take();
--- a/mobile/android/base/locales/en-US/android_strings.dtd
+++ b/mobile/android/base/locales/en-US/android_strings.dtd
@@ -208,18 +208,20 @@
 <!ENTITY pref_header_help "Help">
 <!ENTITY pref_header_vendor "&vendorShortName;">
 
 <!ENTITY pref_cookies_menu "Cookies">
 <!ENTITY pref_cookies_accept_all "Enabled">
 <!ENTITY pref_cookies_not_accept_foreign "Enabled, excluding 3rd party">
 <!ENTITY pref_cookies_disabled "Disabled">
 
-<!ENTITY pref_tap_to_load_images_title "Tap-to-load images">
-<!ENTITY pref_tap_to_load_images_summary2 "Load images only when you long press them">
+<!ENTITY pref_tap_to_load_images_title2 "Show images">
+<!ENTITY pref_tap_to_load_images_enabled "Always">
+<!ENTITY pref_tap_to_load_images_data "Only over Wi-Fi">
+<!ENTITY pref_tap_to_load_images_disabled "Never">
 
 <!ENTITY pref_tracking_protection_title "Tracking protection">
 <!ENTITY pref_tracking_protection_summary3 "Enabled in Private Browsing">
 <!ENTITY pref_donottrack_title "Do not track">
 <!ENTITY pref_donottrack_summary "&brandShortName; will tell sites that you do not want to be tracked">
 
 <!ENTITY pref_tracking_protection_enabled "Enabled">
 <!ENTITY pref_tracking_protection_enabled_pb "Enabled in Private Browsing">
@@ -284,17 +286,17 @@ size. -->
 <!ENTITY pref_zoom_force_enabled "Always enable zoom">
 <!ENTITY pref_zoom_force_enabled_summary "Force override so you can zoom any page">
 <!ENTITY pref_voice_input "Voice input">
 <!ENTITY pref_voice_input_summary2 "Allow voice dictation in the URL bar">
 <!ENTITY pref_qrcode_enabled "QR code reader">
 <!ENTITY pref_qrcode_enabled_summary2 "Allow QR scanner in the URL bar">
 
 <!ENTITY pref_use_master_password "Use master password">
-<!ENTITY pref_sync "Sync">
+<!ENTITY pref_sync2 "Sign in">
 <!ENTITY pref_sync_summary2 "Sync your tabs, bookmarks, logins, history">
 <!ENTITY pref_search_suggestions "Show search suggestions">
 <!ENTITY pref_history_search_suggestions "Show search history">
 <!ENTITY pref_import_options "Import options">
 <!ENTITY pref_import_android_summary "Import bookmarks and history from the native browser">
 <!ENTITY pref_private_data_history2 "Browsing history">
 <!ENTITY pref_private_data_searchHistory "Search history">
 <!ENTITY pref_private_data_formdata2 "Form history">
@@ -721,26 +723,23 @@ just addresses the organization to follo
      code has already been displayed by the client trying to connect (such as
      desktop Firefox via WebIDE), so you just need to aim this device at the QR
      code. -->
 <!ENTITY devtools_auth_scan_header "Scanning for the QR code displayed on your other device">
 
 <!-- Restrictions -->
 <!-- Localization note: These are restrictions the device owner (e.g. parent) can enable for
      a restricted profile (e.g. child). Used inside the Android settings UI. -->
-<!ENTITY restriction_disallow_import_settings_title2 "Disable \'Import from Android\'">
 <!ENTITY restriction_disallow_addons_title2 "Disable add-on installation">
-<!ENTITY restriction_disallow_devtools_title2 "Disable developer tools">
-<!ENTITY restriction_disallow_customize_home_title2 "Disable Home customization">
 <!ENTITY restriction_disallow_private_browsing_title2 "Disable Private Browsing">
 <!ENTITY restriction_disallow_location_services_title2 "Disable Location Services">
-<!ENTITY restriction_disallow_display_settings_title2 "Disable Display settings">
 <!ENTITY restriction_disallow_clear_history_title2 "Disable \'Clear browsing history\'">
 <!ENTITY restriction_disallow_master_password_title2 "Disable master password">
 <!ENTITY restriction_disallow_guest_browsing_title2 "Disable Guest Browsing">
+<!ENTITY restriction_disallow_advanced_settings_title "Disable Advanced Settings">
 
 <!-- Default Bookmarks titles-->
 <!-- LOCALIZATION NOTE (bookmarks_about_browser): link title for about:fennec -->
 <!ENTITY bookmarks_about_browser "Firefox: About your browser">
 <!-- LOCALIZATION NOTE (bookmarks_addons): link title for https://addons.mozilla.org/en-US/mobile -->
 <!ENTITY bookmarks_addons "Firefox: Customize with add-ons">
 <!-- LOCALIZATION NOTE (bookmarks_support): link title for https://support.mozilla.org/ -->
 <!ENTITY bookmarks_support "Firefox: Support">
--- a/mobile/android/base/moz.build
+++ b/mobile/android/base/moz.build
@@ -872,28 +872,27 @@ ANDROID_ASSETS_DIRS += [
 ]
 
 # We do not expose MOZ_INSTALL_TRACKING_ADJUST_SDK_APP_TOKEN here because that
 # would leak the value to build logs.  Instead we expose the token quietly where
 # appropriate in Makefile.in.
 for var in ('MOZ_ANDROID_ANR_REPORTER', 'MOZ_LINKER_EXTRACT', 'MOZ_DEBUG',
             'MOZ_ANDROID_SEARCH_ACTIVITY', 'MOZ_NATIVE_DEVICES', 'MOZ_ANDROID_MLS_STUMBLER',
             'MOZ_ANDROID_SHARE_OVERLAY', 'MOZ_ANDROID_DOWNLOADS_INTEGRATION', 'MOZ_INSTALL_TRACKING',
-            'MOZ_ANDROID_GCM',
-            'MOZ_ANDROID_TAB_QUEUE', 'MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES'):
+            'MOZ_ANDROID_GCM', 'MOZ_ANDROID_TAB_QUEUE'):
     if CONFIG[var]:
         DEFINES[var] = 1
 
 for var in ('MOZ_UPDATER', 'MOZ_PKG_SPECIAL', 'MOZ_ANDROID_GCM_SENDERID'):
     if CONFIG[var]:
         DEFINES[var] = CONFIG[var]
 
 for var in ('ANDROID_PACKAGE_NAME', 'ANDROID_CPU_ARCH',
             'GRE_MILESTONE', 'MOZ_APP_BASENAME', 'MOZ_MOZILLA_API_KEY',
-            'MOZ_APP_DISPLAYNAME', 'MOZ_APP_ID', 'MOZ_APP_NAME',
+            'MOZ_APP_DISPLAYNAME', 'MOZ_APP_UA_NAME', 'MOZ_APP_ID', 'MOZ_APP_NAME',
             'MOZ_APP_VENDOR', 'MOZ_APP_VERSION', 'MOZ_CHILD_PROCESS_NAME',
             'MOZ_ANDROID_APPLICATION_CLASS', 'MOZ_ANDROID_BROWSER_INTENT_CLASS', 'MOZ_ANDROID_SEARCH_INTENT_CLASS',
             'MOZ_CRASHREPORTER', 'MOZ_UPDATE_CHANNEL', 'OMNIJAR_NAME',
             'OS_TARGET', 'TARGET_XPCOM_ABI'):
     DEFINES[var] = CONFIG[var]
 
 # Mangle our package name to avoid Bug 750548.
 DEFINES['MANGLED_ANDROID_PACKAGE_NAME'] = CONFIG['ANDROID_PACKAGE_NAME'].replace('fennec', 'f3nn3c')
--- a/mobile/android/base/preferences/GeckoPreferences.java
+++ b/mobile/android/base/preferences/GeckoPreferences.java
@@ -121,29 +121,32 @@ OnSharedPreferenceChangeListener
     private static final String PREFS_ZOOMED_VIEW_ENABLED = "ui.zoomedview.enabled";
     private static final String PREFS_UPDATER_AUTODOWNLOAD = "app.update.autodownload";
     private static final String PREFS_UPDATER_URL = "app.update.url.android";
     private static final String PREFS_GEO_REPORTING = NON_PREF_PREFIX + "app.geo.reportdata";
     private static final String PREFS_GEO_LEARN_MORE = NON_PREF_PREFIX + "geo.learn_more";
     private static final String PREFS_HEALTHREPORT_LINK = NON_PREF_PREFIX + "healthreport.link";
     private static final String PREFS_DEVTOOLS_REMOTE_USB_ENABLED = "devtools.remote.usb.enabled";
     private static final String PREFS_DEVTOOLS_REMOTE_WIFI_ENABLED = "devtools.remote.wifi.enabled";
+    private static final String PREFS_DEVTOOLS_REMOTE_LINK = NON_PREF_PREFIX + "remote_debugging.link";
     private static final String PREFS_SYNC = NON_PREF_PREFIX + "sync";
     private static final String PREFS_TRACKING_PROTECTION = "privacy.trackingprotection.state";
     private static final String PREFS_TRACKING_PROTECTION_PB = "privacy.trackingprotection.pbmode.enabled";
     public static final String PREFS_OPEN_URLS_IN_PRIVATE = NON_PREF_PREFIX + "openExternalURLsPrivately";
     public static final String PREFS_VOICE_INPUT_ENABLED = NON_PREF_PREFIX + "voice_input_enabled";
     public static final String PREFS_QRCODE_ENABLED = NON_PREF_PREFIX + "qrcode_enabled";
     private static final String PREFS_ADVANCED = NON_PREF_PREFIX + "advanced.enabled";
     private static final String PREFS_ACCESSIBILITY = NON_PREF_PREFIX + "accessibility.enabled";
     private static final String PREFS_CUSTOMIZE_HOME = NON_PREF_PREFIX + "customize_home";
-    private static final String PREFS_CUSTOMIZE_IMAGE_BLOCKING = "browser.image_blocking.enabled";
+    private static final String PREFS_CUSTOMIZE_IMAGE_BLOCKING = "browser.image_blocking";
     private static final String PREFS_TRACKING_PROTECTION_PRIVATE_BROWSING = "privacy.trackingprotection.pbmode.enabled";
     private static final String PREFS_TRACKING_PROTECTION_LEARN_MORE = NON_PREF_PREFIX + "trackingprotection.learn_more";
-    private static final String PREFS_CATEGORY_PRIVATE_DATA = NON_PREF_PREFIX + "category_private_data";
+    private static final String PREFS_CLEAR_PRIVATE_DATA = NON_PREF_PREFIX + "privacy.clear";
+    private static final String PREFS_CLEAR_PRIVATE_DATA_EXIT = NON_PREF_PREFIX + "history.clear_on_exit";
+    private static final String PREFS_SCREEN_ADVANCED = NON_PREF_PREFIX + "advanced_screen";
     private static final String PREFS_CATEGORY_HOMEPAGE = NON_PREF_PREFIX + "category_homepage";
     public static final String PREFS_HOMEPAGE = NON_PREF_PREFIX + "homepage";
     public static final String PREFS_HISTORY_SAVED_SEARCH = NON_PREF_PREFIX + "search.search_history.enabled";
     private static final String PREFS_FAQ_LINK = NON_PREF_PREFIX + "faq.link";
 
     private static final String ACTION_STUMBLER_UPLOAD_PREF = AppConstants.ANDROID_PACKAGE_NAME + ".STUMBLER_PREF";
 
 
@@ -489,19 +492,17 @@ OnSharedPreferenceChangeListener
         if (onIsMultiPane()) {
             loadHeadersFromResource(R.xml.preference_headers, target);
 
             Iterator<Header> iterator = target.iterator();
 
             while (iterator.hasNext()) {
                 Header header = iterator.next();
 
-                if (header.id == R.id.pref_header_advanced && !RestrictedProfiles.isAllowed(this, Restriction.DISALLOW_DEVELOPER_TOOLS)) {
-                    iterator.remove();
-                } else if (header.id == R.id.pref_header_accessibility && !RestrictedProfiles.isAllowed(this, Restriction.DISALLOW_DISPLAY_SETTINGS)) {
+                if (header.id == R.id.pref_header_advanced && !RestrictedProfiles.isAllowed(this, Restriction.DISALLOW_ADVANCED_SETTINGS)) {
                     iterator.remove();
                 }
             }
 
             mHeaders = target;
         }
     }
 
@@ -705,49 +706,28 @@ OnSharedPreferenceChangeListener
             if (pref instanceof PreferenceGroup) {
                 // If datareporting is disabled, remove UI.
                 if (PREFS_DATA_REPORTING_PREFERENCES.equals(key)) {
                     if (!AppConstants.MOZ_DATA_REPORTING) {
                         preferences.removePreference(pref);
                         i--;
                         continue;
                     }
-                }
-                if (PREFS_ADVANCED.equals(key) &&
-                    !RestrictedProfiles.isAllowed(this, Restriction.DISALLOW_DEVELOPER_TOOLS)) {
-                    preferences.removePreference(pref);
-                    i--;
-                    continue;
-                }
-                if (PREFS_ACCESSIBILITY.equals(key) && !RestrictedProfiles.isAllowed(this, Restriction.DISALLOW_DISPLAY_SETTINGS)) {
-                    preferences.removePreference(pref);
-                    i--;
-                    continue;
-                }
-                if (PREFS_CUSTOMIZE_HOME.equals(key)) {
-                    if (!RestrictedProfiles.isAllowed(this, Restriction.DISALLOW_CUSTOMIZE_HOME)) {
-                        preferences.removePreference(pref);
-                        i--;
-                        continue;
-                    }
-                }
-                if (PREFS_CATEGORY_PRIVATE_DATA.equals(key)) {
-                    if (!RestrictedProfiles.isAllowed(this, Restriction.DISALLOW_CLEAR_HISTORY)) {
-                        preferences.removePreference(pref);
-                        i--;
-                        continue;
-                    }
-                }
-                if (PREFS_CATEGORY_HOMEPAGE.equals(key)) {
+                } else if (PREFS_CATEGORY_HOMEPAGE.equals(key)) {
                     // Only enable the home page setting on Nightly.
                     if (!AppConstants.NIGHTLY_BUILD) {
                         preferences.removePreference(pref);
                         i--;
                         continue;
                     }
+                } else if (PREFS_SCREEN_ADVANCED.equals(key) &&
+                        !RestrictedProfiles.isAllowed(this, Restriction.DISALLOW_ADVANCED_SETTINGS)) {
+                    preferences.removePreference(pref);
+                    i--;
+                    continue;
                 }
                 setupPreferences((PreferenceGroup) pref, prefs);
             } else {
                 pref.setOnPreferenceChangeListener(this);
                 if (PREFS_UPDATER_AUTODOWNLOAD.equals(key)) {
                     if (!AppConstants.MOZ_UPDATER) {
                         preferences.removePreference(pref);
                         i--;
@@ -820,16 +800,23 @@ OnSharedPreferenceChangeListener
                         continue;
                     }
                     if (!InputOptionsUtils.supportsQrCodeReader(getApplicationContext())) {
                         // WiFi debugging requires a QR code reader
                         pref.setEnabled(false);
                         pref.setSummary(getString(R.string.pref_developer_remotedebugging_wifi_disabled_summary));
                         continue;
                     }
+                } else if (PREFS_DEVTOOLS_REMOTE_LINK.equals(key)) {
+                    // Remove the "Learn more" link if remote debugging is disabled
+                    if (!RestrictedProfiles.isAllowed(this, Restriction.DISALLOW_REMOTE_DEBUGGING)) {
+                        preferences.removePreference(pref);
+                        i--;
+                        continue;
+                    }
                 } else if (PREFS_RESTORE_SESSION.equals(key) ||
                            PREFS_BROWSER_LOCALE.equals(key)) {
                     // Set the summary string to the current entry. The summary
                     // for other list prefs will be set in the PrefsHelper
                     // callback, but since this pref doesn't live in Gecko, we
                     // need to handle it separately.
                     ListPreference listPref = (ListPreference) pref;
                     CharSequence selectedEntry = listPref.getEntry();
@@ -893,32 +880,37 @@ OnSharedPreferenceChangeListener
                     }
                 } else if (PREFS_MP_ENABLED.equals(key)) {
                     if (!RestrictedProfiles.isAllowed(this, Restriction.DISALLOW_MASTER_PASSWORD)) {
                         preferences.removePreference(pref);
                         i--;
                         continue;
                     }
                 } else if (PREFS_CUSTOMIZE_IMAGE_BLOCKING.equals(key)) {
-                    // Only enable the ZoomedView / magnifying pref on Nightly.
                     if (!AppConstants.NIGHTLY_BUILD) {
                         preferences.removePreference(pref);
                         i--;
                         continue;
                     }
+                } else if (PREFS_CLEAR_PRIVATE_DATA.equals(key) || PREFS_CLEAR_PRIVATE_DATA_EXIT.equals(key)) {
+                    if (!RestrictedProfiles.isAllowed(this, Restriction.DISALLOW_CLEAR_HISTORY)) {
+                        preferences.removePreference(pref);
+                        i--;
+                        continue;
+                    }
                 } else if (PREFS_HOMEPAGE.equals(key)) {
-                    String setUrl = GeckoSharedPrefs.forProfile(getBaseContext()).getString(PREFS_HOMEPAGE, AboutPages.HOME);
-                    setHomePageSummary(pref, setUrl);
-                    pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
-                        @Override
-                        public boolean onPreferenceChange(final Preference preference, final Object newValue) {
-                            setHomePageSummary(pref, String.valueOf(newValue));
-                            return true;
-                        }
-                    });
+                        String setUrl = GeckoSharedPrefs.forProfile(getBaseContext()).getString(PREFS_HOMEPAGE, AboutPages.HOME);
+                        setHomePageSummary(pref, setUrl);
+                        pref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
+                            @Override
+                            public boolean onPreferenceChange(final Preference preference, final Object newValue) {
+                                setHomePageSummary(pref, String.valueOf(newValue));
+                                return true;
+                            }
+                        });
                 } else if (PREFS_FAQ_LINK.equals(key)) {
                     // Format the FAQ link
                     final String VERSION = AppConstants.MOZ_APP_VERSION;
                     final String OS = AppConstants.OS_TARGET;
                     final String LOCALE = Locales.getLanguageTag(Locale.getDefault());
 
                     final String url = getResources().getString(R.string.faq_link, VERSION, OS, LOCALE);
                     ((LinkPreference) pref).setUrl(url);
--- a/mobile/android/base/preferences/SyncPreference.java
+++ b/mobile/android/base/preferences/SyncPreference.java
@@ -1,35 +1,52 @@
 /* -*- Mode: Java; c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil; -*-
  * 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.preferences;
 
+import android.accounts.Account;
 import android.content.Context;
 import android.content.Intent;
 import android.preference.Preference;
+import android.text.TextUtils;
 import android.util.AttributeSet;
+import android.view.View;
+import android.widget.TextView;
+
+import com.squareup.picasso.Picasso;
+import com.squareup.picasso.Target;
+
+import org.mozilla.gecko.AppConstants;
+import org.mozilla.gecko.R;
 import org.mozilla.gecko.Telemetry;
 import org.mozilla.gecko.TelemetryContract;
 import org.mozilla.gecko.TelemetryContract.Method;
+import org.mozilla.gecko.fxa.FirefoxAccounts;
 import org.mozilla.gecko.fxa.FxAccountConstants;
 import org.mozilla.gecko.fxa.activities.FxAccountWebFlowActivity;
+import org.mozilla.gecko.fxa.activities.PicassoPreferenceIconTarget;
+import org.mozilla.gecko.fxa.authenticator.AndroidFxAccount;
+import org.mozilla.gecko.sync.ExtendedJSONObject;
 import org.mozilla.gecko.sync.setup.SyncAccounts;
 import org.mozilla.gecko.sync.setup.activities.SetupSyncActivity;
 
 class SyncPreference extends Preference {
     private static final boolean DEFAULT_TO_FXA = true;
 
     private final Context mContext;
+    private final Target profileAvatarTarget;
 
     public SyncPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
         mContext = context;
+        final float cornerRadius = mContext.getResources().getDimension(R.dimen.fxaccount_profile_image_width) / 2;
+        profileAvatarTarget = new PicassoPreferenceIconTarget(mContext.getResources(), this, cornerRadius);
     }
 
     private void openSync11Settings() {
         // Show Sync setup if no accounts exist; otherwise, show account settings.
         if (SyncAccounts.syncAccountsExist(mContext)) {
             // We don't check for failure here. If you already have Sync set up,
             // then there's nothing we can do.
             SyncAccounts.openSyncSettings(mContext);
@@ -43,16 +60,56 @@ class SyncPreference extends Preference 
         final Intent intent = new Intent(FxAccountConstants.ACTION_FXA_GET_STARTED);
         intent.putExtra(FxAccountWebFlowActivity.EXTRA_ENDPOINT, FxAccountConstants.ENDPOINT_PREFERENCES);
         intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
         intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
         mContext.startActivity(intent);
     }
 
     @Override
+    protected void onBindView(View view) {
+        super.onBindView(view);
+
+        Account account = FirefoxAccounts.getFirefoxAccount(mContext);
+        if (account == null) {
+            return;
+        }
+
+        final AndroidFxAccount fxAccount = new AndroidFxAccount(mContext, account);
+        final TextView title = (TextView) view.findViewById(android.R.id.title);
+        final TextView summary = (TextView) view.findViewById(android.R.id.summary);
+        title.setText(fxAccount.getEmail());
+        summary.setVisibility(View.GONE);
+
+        // Updating icons from Java is not supported prior to API 11.
+        if (!AppConstants.Versions.feature11Plus) {
+            return;
+        }
+
+        final ExtendedJSONObject profileJSON = fxAccount.getProfileJSON();
+        if (profileJSON == null) {
+            return;
+        }
+
+        // Avatar URI empty, return early.
+        final String avatarURI = profileJSON.getString(FxAccountConstants.KEY_PROFILE_JSON_AVATAR);
+        if (TextUtils.isEmpty(avatarURI)) {
+            return;
+        }
+
+        Picasso.with(mContext)
+                .load(avatarURI)
+                .centerInside()
+                .resizeDimen(R.dimen.fxaccount_profile_image_width, R.dimen.fxaccount_profile_image_height)
+                .placeholder(R.drawable.sync_avatar_default)
+                .error(R.drawable.sync_avatar_default)
+                .into(profileAvatarTarget);
+    }
+
+    @Override
     protected void onClick() {
         // If we're not defaulting to FxA, just do what we've always done.
         if (!DEFAULT_TO_FXA) {
             openSync11Settings();
             return;
         }
 
         // If there's a legacy Sync account (or a pickled one on disk),
--- a/mobile/android/base/resources/values/arrays.xml
+++ b/mobile/android/base/resources/values/arrays.xml
@@ -169,9 +169,20 @@
     </string-array>
     <!-- This value is similar to config_longPressVibePattern in android frameworks/base/core/res/res/values/config.xml-->
     <integer-array name="long_press_vibrate_msec">
         <item>0</item>
         <item>1</item>
         <item>20</item>
         <item>21</item>
     </integer-array>
+    <!-- browser.image_blocking -->
+    <string-array name="pref_browser_image_blocking_entries">
+        <item>@string/pref_tap_to_load_images_enabled</item>
+        <item>@string/pref_tap_to_load_images_data</item>
+        <item>@string/pref_tap_to_load_images_disabled</item>
+    </string-array>
+    <string-array name="pref_browser_image_blocking_values">
+        <item>1</item> <!-- Always -->
+        <item>2</item> <!-- Wifi-only -->
+        <item>0</item> <!-- Never -->
+    </string-array>
 </resources>
--- a/mobile/android/base/resources/xml-v11/preferences.xml
+++ b/mobile/android/base/resources/xml-v11/preferences.xml
@@ -8,16 +8,17 @@
      Preference changes here should be mirrored to xml/preferences.xml.in. -->
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
                   xmlns:gecko="http://schemas.android.com/apk/res-auto"
                   android:enabled="false">
 
     <org.mozilla.gecko.preferences.SyncPreference android:key="android.not_a_preference.sync"
                                                   android:title="@string/pref_sync"
+                                                  android:icon="@drawable/sync_avatar_default"
                                                   android:summary="@string/pref_sync_summary"
                                                   android:persistent="false" />
 
     <PreferenceScreen android:title="@string/pref_category_general"
                       android:summary="@string/pref_category_general_summary"
                       android:key="android.not_a_preference.general_screen"
                       android:fragment="org.mozilla.gecko.preferences.GeckoPreferenceFragment" >
         <extra android:name="resource"
@@ -36,26 +37,25 @@
                       android:summary="@string/pref_category_privacy_summary"
                       android:fragment="org.mozilla.gecko.preferences.GeckoPreferenceFragment" >
         <extra android:name="resource"
                android:value="preferences_privacy" />
     </PreferenceScreen>
 
     <PreferenceScreen android:title="@string/pref_category_accessibility"
                       android:summary="@string/pref_category_accessibility_summary"
-                      android:fragment="org.mozilla.gecko.preferences.GeckoPreferenceFragment"
-                      android:key="android.not_a_preference.accessibility.enabled" >
+                      android:fragment="org.mozilla.gecko.preferences.GeckoPreferenceFragment" >
         <extra android:name="resource"
                android:value="preferences_accessibility" />
     </PreferenceScreen>
 
     <PreferenceScreen android:title="@string/pref_category_advanced"
                       android:summary="@string/pref_category_advanced_summary"
                       android:fragment="org.mozilla.gecko.preferences.GeckoPreferenceFragment"
-                      android:key="android.not_a_preference.advanced.enabled" >
+                      android:key="android.not_a_preference.advanced_screen" >
         <extra android:name="resource"
                android:value="preferences_advanced"/>
     </PreferenceScreen>
 
     <org.mozilla.gecko.preferences.PrivateDataPreference
             android:key="android.not_a_preference.privacy.clear"
             android:title="@string/pref_clear_private_data_now"
             android:persistent="true"
--- a/mobile/android/base/resources/xml/fxaccount_status_prefscreen.xml
+++ b/mobile/android/base/resources/xml/fxaccount_status_prefscreen.xml
@@ -9,21 +9,16 @@
         <Preference
             android:editable="false"
             android:key="profile"
             android:icon="@drawable/sync_avatar_default"
             android:persistent="false"
             android:title="" />
         <Preference
             android:editable="false"
-            android:key="email"
-            android:persistent="false"
-            android:title="@string/fxaccount_email_hint" />
-        <Preference
-            android:editable="false"
             android:key="manage_account"
             android:persistent="false"
             android:title="@string/fxaccount_status_manage_account" />
         <Preference
             android:editable="false"
             android:key="auth_server"
             android:persistent="false"
             android:title="@string/fxaccount_status_auth_server" />
--- a/mobile/android/base/resources/xml/preferences.xml
+++ b/mobile/android/base/resources/xml/preferences.xml
@@ -9,16 +9,17 @@
 
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
                   xmlns:gecko="http://schemas.android.com/apk/res-auto"
                   android:enabled="false">
 
     <org.mozilla.gecko.preferences.SyncPreference android:key="android.not_a_preference.sync"
                                                   android:title="@string/pref_sync"
                                                   android:summary="@string/pref_sync_summary"
+                                                  android:icon="@drawable/sync_avatar_default"
                                                   android:persistent="false" />
 
     <PreferenceScreen android:title="@string/pref_category_general"
                       android:summary="@string/pref_category_general_summary"
                       android:key="android.not_a_preference.general_screen">
         <intent android:action="android.intent.action.VIEW"
                 android:targetPackage="@string/android_package_name"
                 android:targetClass="org.mozilla.gecko.preferences.GeckoPreferences" >
--- a/mobile/android/base/resources/xml/preferences_advanced.xml
+++ b/mobile/android/base/resources/xml/preferences_advanced.xml
@@ -27,20 +27,21 @@
 
     <ListPreference android:key="android.not_a_preference.restoreSession3"
                     android:title="@string/pref_restore"
                     android:defaultValue="quit"
                     android:entries="@array/pref_restore_entries"
                     android:entryValues="@array/pref_restore_values"
                     android:persistent="true" />
 
-    <CheckBoxPreference android:key="browser.image_blocking.enabled"
-                        android:title="@string/pref_tap_to_load_images_title"
-                        android:summary="@string/pref_tap_to_load_images_summary2"
-                        android:defaultValue="false"/>
+    <ListPreference android:key="browser.image_blocking"
+                    android:title="@string/pref_tap_to_load_images_title2"
+                    android:entries="@array/pref_browser_image_blocking_entries"
+                    android:entryValues="@array/pref_browser_image_blocking_values"
+                    android:persistent="false" />
 
     <ListPreference android:key="plugin.enable"
                     android:title="@string/pref_plugins"
                     android:entries="@array/pref_plugins_entries"
                     android:entryValues="@array/pref_plugins_values"
                     android:persistent="false" />
 
     <CheckBoxPreference android:key="media.autoplay.enabled"
@@ -51,20 +52,16 @@
                     android:title="@string/pref_char_encoding"
                     android:entries="@array/pref_char_encoding_entries"
                     android:entryValues="@array/pref_char_encoding_values"
                     android:persistent="false" />
 
     <CheckBoxPreference android:key="devtools.remote.usb.enabled"
                         android:title="@string/pref_developer_remotedebugging_usb" />
 
-    <org.mozilla.gecko.preferences.AlignRightLinkPreference android:key="android.not_a_preference.remote_debugging.link"
-                                                            android:title="@string/pref_learn_more"
-                                                            android:persistent="false"
-                                                            url="https://developer.mozilla.org/docs/Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE" />
 
     <CheckBoxPreference android:key="devtools.remote.wifi.enabled"
                         android:title="@string/pref_developer_remotedebugging_wifi" />
 
     <org.mozilla.gecko.preferences.AlignRightLinkPreference android:key="android.not_a_preference.remote_debugging.link"
                                                             android:title="@string/pref_learn_more"
                                                             android:persistent="false"
                                                             url="https://developer.mozilla.org/docs/Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE" />
--- a/mobile/android/base/restrictions/GuestProfileConfiguration.java
+++ b/mobile/android/base/restrictions/GuestProfileConfiguration.java
@@ -20,18 +20,17 @@ public class GuestProfileConfiguration i
             Restriction.DISALLOW_INSTALL_APPS,
             Restriction.DISALLOW_BROWSE_FILES,
             Restriction.DISALLOW_SHARE,
             Restriction.DISALLOW_BOOKMARK,
             Restriction.DISALLOW_ADD_CONTACTS,
             Restriction.DISALLOW_SET_IMAGE,
             Restriction.DISALLOW_MODIFY_ACCOUNTS,
             Restriction.DISALLOW_REMOTE_DEBUGGING,
-            Restriction.DISALLOW_IMPORT_SETTINGS,
-            Restriction.DISALLOW_DEVELOPER_TOOLS
+            Restriction.DISALLOW_IMPORT_SETTINGS
     );
 
     @SuppressWarnings("serial")
     private static final List<String> BANNED_SCHEMES = Arrays.asList(
             "file",
             "chrome",
             "resource",
             "jar",
--- a/mobile/android/base/restrictions/RestrictedProfileConfiguration.java
+++ b/mobile/android/base/restrictions/RestrictedProfileConfiguration.java
@@ -17,26 +17,23 @@ import android.os.UserManager;
 
 import java.util.Arrays;
 import java.util.List;
 
 @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
 public class RestrictedProfileConfiguration implements RestrictionConfiguration {
     static List<Restriction> DEFAULT_RESTRICTIONS = Arrays.asList(
             Restriction.DISALLOW_INSTALL_EXTENSION,
-            Restriction.DISALLOW_IMPORT_SETTINGS,
-            Restriction.DISALLOW_DEVELOPER_TOOLS,
-            Restriction.DISALLOW_CUSTOMIZE_HOME,
             Restriction.DISALLOW_PRIVATE_BROWSING,
             Restriction.DISALLOW_LOCATION_SERVICE,
-            Restriction.DISALLOW_DISPLAY_SETTINGS,
             Restriction.DISALLOW_CLEAR_HISTORY,
             Restriction.DISALLOW_MASTER_PASSWORD,
             Restriction.DISALLOW_GUEST_BROWSING,
-            Restriction.DISALLOW_DEFAULT_THEME
+            Restriction.DISALLOW_DEFAULT_THEME,
+            Restriction.DISALLOW_ADVANCED_SETTINGS
     );
 
     private Context context;
     private Bundle cachedRestrictions;
     private boolean isCacheInvalid = true;
 
     public RestrictedProfileConfiguration(Context context) {
         this.context = context.getApplicationContext();
--- a/mobile/android/base/restrictions/Restriction.java
+++ b/mobile/android/base/restrictions/Restriction.java
@@ -33,35 +33,31 @@ public enum Restriction {
 
     DISALLOW_SET_IMAGE(8, "no_set_image", 0),
 
     // UserManager.DISALLOW_MODIFY_ACCOUNTS
     DISALLOW_MODIFY_ACCOUNTS(9, "no_modify_accounts", 0),
 
     DISALLOW_REMOTE_DEBUGGING(10, "no_remote_debugging", 0),
 
-    DISALLOW_IMPORT_SETTINGS(11, "no_import_settings", R.string.restriction_disallow_import_settings_title),
+    DISALLOW_IMPORT_SETTINGS(11, "no_import_settings", 0),
 
-    DISALLOW_DEVELOPER_TOOLS(12, "no_developer_tools", R.string.restriction_disallow_devtools_title),
+    DISALLOW_PRIVATE_BROWSING(12, "no_private_browsing", R.string.restriction_disallow_private_browsing_title),
 
-    DISALLOW_CUSTOMIZE_HOME(13, "no_customize_home", R.string.restriction_disallow_customize_home_title),
+    DISALLOW_LOCATION_SERVICE(13, "no_location_service", R.string.restriction_disallow_location_services_title),
 
-    DISALLOW_PRIVATE_BROWSING(14, "no_private_browsing", R.string.restriction_disallow_private_browsing_title),
-
-    DISALLOW_LOCATION_SERVICE(15, "no_location_service", R.string.restriction_disallow_location_services_title),
+    DISALLOW_CLEAR_HISTORY(14, "no_clear_history", R.string.restriction_disallow_clear_history_title),
 
-    DISALLOW_DISPLAY_SETTINGS(16, "no_display_settings", R.string.restriction_disallow_display_settings_title),
+    DISALLOW_MASTER_PASSWORD(15, "no_master_password", R.string.restriction_disallow_master_password_title),
 
-    DISALLOW_CLEAR_HISTORY(17, "no_clear_history", R.string.restriction_disallow_clear_history_title),
+    DISALLOW_GUEST_BROWSING(16, "no_guest_browsing",  R.string.restriction_disallow_guest_browsing_title),
 
-    DISALLOW_MASTER_PASSWORD(18, "no_master_password", R.string.restriction_disallow_master_password_title),
+    DISALLOW_DEFAULT_THEME(17, "no_default_theme", 0),
 
-    DISALLOW_GUEST_BROWSING(19, "no_guest_browsing",  R.string.restriction_disallow_guest_browsing_title),
-
-    DISALLOW_DEFAULT_THEME(20, "no_default_theme", 0);
+    DISALLOW_ADVANCED_SETTINGS(18, "no_advanced_settings", R.string.restriction_disallow_advanced_settings_title);
 
     public final int id;
     public final String name;
 
     @StringRes
     public final int title;
 
     Restriction(final int id, final String name, @StringRes int title) {
--- a/mobile/android/base/strings.xml.in
+++ b/mobile/android/base/strings.xml.in
@@ -203,18 +203,20 @@
 
   <string name="pref_manage_logins">&pref_manage_logins;</string>
 
   <string name="pref_cookies_menu">&pref_cookies_menu;</string>
   <string name="pref_cookies_accept_all">&pref_cookies_accept_all;</string>
   <string name="pref_cookies_not_accept_foreign">&pref_cookies_not_accept_foreign;</string>
   <string name="pref_cookies_disabled">&pref_cookies_disabled;</string>
 
-  <string name="pref_tap_to_load_images_title">&pref_tap_to_load_images_title;</string>
-  <string name="pref_tap_to_load_images_summary2">&pref_tap_to_load_images_summary2;</string>
+  <string name="pref_tap_to_load_images_title2">&pref_tap_to_load_images_title2;</string>
+  <string name="pref_tap_to_load_images_enabled">&pref_tap_to_load_images_enabled;</string>
+  <string name="pref_tap_to_load_images_data">&pref_tap_to_load_images_data;</string>
+  <string name="pref_tap_to_load_images_disabled">&pref_tap_to_load_images_disabled;</string>
 
   <string name="pref_tracking_protection_title">&pref_tracking_protection_title;</string>
   <string name="pref_tracking_protection_summary">&pref_tracking_protection_summary3;</string>
   <string name="pref_donottrack_title">&pref_donottrack_title;</string>
   <string name="pref_donottrack_summary">&pref_donottrack_summary;</string>
 
   <string name="pref_tracking_protection_enabled">&pref_tracking_protection_enabled;</string>
   <string name="pref_tracking_protection_enabled_pb">&pref_tracking_protection_enabled_pb;</string>
@@ -246,17 +248,17 @@
   <string name="pref_zoom_force_enabled_summary">&pref_zoom_force_enabled_summary;</string>
   <string name="pref_voice_input">&pref_voice_input;</string>
   <string name="pref_voice_input_summary">&pref_voice_input_summary2;</string>
   <string name="pref_qrcode_enabled">&pref_qrcode_enabled;</string>
   <string name="pref_qrcode_enabled_summary">&pref_qrcode_enabled_summary2;</string>
   <string name="pref_restore">&pref_restore_tabs;</string>
   <string name="pref_restore_always">&pref_restore_always;</string>
   <string name="pref_restore_quit">&pref_restore_quit;</string>
-  <string name="pref_sync">&pref_sync;</string>
+  <string name="pref_sync">&pref_sync2;</string>
   <string name="pref_sync_summary">&pref_sync_summary2;</string>
   <string name="pref_search_suggestions">&pref_search_suggestions;</string>
   <string name="pref_history_search_suggestions">&pref_history_search_suggestions;</string>
   <string name="pref_private_data_history2">&pref_private_data_history2;</string>
   <string name="pref_private_data_searchHistory">&pref_private_data_searchHistory;</string>
   <string name="pref_private_data_formdata2">&pref_private_data_formdata2;</string>
   <string name="pref_private_data_cookies2">&pref_private_data_cookies2;</string>
   <string name="pref_private_data_passwords">&pref_private_data_passwords2;</string>
@@ -565,26 +567,23 @@
 
   <string name="actionbar_menu">&actionbar_menu;</string>
   <string name="actionbar_done">&actionbar_done;</string>
 
   <!-- Voice search from the Awesome Bar -->
   <string name="voicesearch_prompt">&voicesearch_prompt;</string>
 
   <!-- Restrictions -->
-  <string name="restriction_disallow_import_settings_title">&restriction_disallow_import_settings_title2;</string>
   <string name="restriction_disallow_addons_title">&restriction_disallow_addons_title2;</string>
-  <string name="restriction_disallow_devtools_title">&restriction_disallow_devtools_title2;</string>
-  <string name="restriction_disallow_customize_home_title">&restriction_disallow_customize_home_title2;</string>
   <string name="restriction_disallow_private_browsing_title">&restriction_disallow_private_browsing_title2;</string>
   <string name="restriction_disallow_location_services_title">&restriction_disallow_location_services_title2;</string>
-  <string name="restriction_disallow_display_settings_title">&restriction_disallow_display_settings_title2;</string>
   <string name="restriction_disallow_clear_history_title">&restriction_disallow_clear_history_title2;</string>
   <string name="restriction_disallow_master_password_title">&restriction_disallow_master_password_title2;</string>
   <string name="restriction_disallow_guest_browsing_title">&restriction_disallow_guest_browsing_title2;</string>
+  <string name="restriction_disallow_advanced_settings_title">&restriction_disallow_advanced_settings_title;</string>
 
   <!-- Miscellaneous -->
   <string name="ellipsis">&ellipsis;</string>
 
   <string name="colon">&colon;</string>
 
   <string name="percent">&percent;</string>
 
--- a/mobile/android/base/sync/SyncConstants.java
+++ b/mobile/android/base/sync/SyncConstants.java
@@ -11,17 +11,17 @@ public class SyncConstants {
   public static final String SYNC_MAJOR_VERSION  = "1";
   public static final String SYNC_MINOR_VERSION  = "0";
   public static final String SYNC_VERSION_STRING = SYNC_MAJOR_VERSION + "." +
                                                    AppConstants.MOZ_APP_VERSION + "." +
                                                    SYNC_MINOR_VERSION;
 
   public static final String USER_AGENT = "Firefox AndroidSync " +
                                           SYNC_VERSION_STRING + " (" +
-                                          AppConstants.MOZ_APP_DISPLAYNAME + ")";
+                                          AppConstants.MOZ_APP_UA_NAME + ")";
 
   public static final String ACCOUNTTYPE_SYNC = AppConstants.MOZ_ANDROID_SHARED_ACCOUNT_TYPE;
 
   /**
    * Bug 790931: this action is broadcast when an Android Sync Account is
    * deleted.  This allows each installed Firefox to delete any Sync Account
    * pickle file and to (try to) wipe its client record from the Sync server.
    * <p>
--- a/mobile/android/chrome/content/browser.js
+++ b/mobile/android/chrome/content/browser.js
@@ -992,20 +992,39 @@ var BrowserApp = {
         // Skipped trying to pull MIME type out of cache for now
         ContentAreaUtils.internalSave(url, null, null, null, null, false,
                                       filePickerTitleKey, null, aTarget.ownerDocument.documentURIObject,
                                       aTarget.ownerDocument, true, null);
       });
 
     NativeWindow.contextmenus.add(stringGetter("contextmenu.showImage"),
       NativeWindow.contextmenus.imageBlockingPolicyContext,
-      function(target) {
+      function(aTarget) {
         UITelemetry.addEvent("action.1", "contextmenu", null, "web_show_image");
-        target.setAttribute("data-ctv-show", "true");
-        target.setAttribute("src", target.getAttribute("data-ctv-src"));
+        aTarget.setAttribute("data-ctv-show", "true");
+        aTarget.setAttribute("src", aTarget.getAttribute("data-ctv-src"));
+
+        // Shows a toast to unblock all images if browser.image_blocking.enabled is enabled.
+        let blockedImgs = aTarget.ownerDocument.querySelectorAll("[data-ctv-src]");
+        if (blockedImgs.length == 0) {
+          return;
+        }
+        let message = Strings.browser.GetStringFromName("imageblocking.downloadedImage");
+        NativeWindow.toast.show(message, "short", {
+          button: {
+            label: Strings.browser.GetStringFromName("imageblocking.showAllImages"),
+            callback: () => {
+              UITelemetry.addEvent("action.1", "toast", null, "web_show_all_image");
+              for (let i = 0; i < blockedImgs.length; ++i) {
+                blockedImgs[i].setAttribute("data-ctv-show", "true");
+                blockedImgs[i].setAttribute("src", blockedImgs[i].getAttribute("data-ctv-src"));
+              }
+            },
+          }
+        });
     });
   },
 
   onAppUpdated: function() {
     // initialize the form history and passwords databases on upgrades
     Services.obs.notifyObservers(null, "FormHistory:Init", "");
     Services.obs.notifyObservers(null, "Passwords:Init", "");
 
@@ -1529,16 +1548,17 @@ var BrowserApp = {
       // to show and how to handle them, we need to normalize these
       // preferences to the correct type.
       switch (prefName) {
         // (string) index for determining which multiple choice value to display.
         case "browser.chrome.titlebarMode":
         case "network.cookie.cookieBehavior":
         case "font.size.inflation.minTwips":
         case "home.sync.updateMode":
+        case "browser.image_blocking":
           pref.type = "string";
           pref.value = pref.value.toString();
           break;
       }
 
       prefs.push(pref);
     }
 
@@ -1605,16 +1625,17 @@ var BrowserApp = {
 
       // When sending to Java, we normalized special preferences that use
       // integers and strings to represent booleans. Here, we convert them back
       // to their actual types so we can store them.
       case "browser.chrome.titlebarMode":
       case "network.cookie.cookieBehavior":
       case "font.size.inflation.minTwips":
       case "home.sync.updateMode":
+      case "browser.image_blocking":
         json.type = "int";
         json.value = parseInt(json.value);
         break;
     }
 
     switch (json.type) {
       case "bool":
         Services.prefs.setBoolPref(json.name, json.value);
@@ -2608,21 +2629,17 @@ var NativeWindow = {
       matches: function mediaSaveableContextMatches(aElement) {
         return (aElement instanceof HTMLVideoElement ||
                aElement instanceof HTMLAudioElement);
       }
     },
 
     imageBlockingPolicyContext: {
       matches: function imageBlockingPolicyContextMatches(aElement) {
-        if (!Services.prefs.getBoolPref("browser.image_blocking.enabled")) {
-          return false;
-        }
-
-        if (aElement instanceof Ci.nsIDOMHTMLImageElement) {
+        if (aElement instanceof Ci.nsIDOMHTMLImageElement && aElement.getAttribute("data-ctv-src")) {
           // Only show the menuitem if we are blocking the image
           if (aElement.getAttribute("data-ctv-show") == "true") {
             return false;
           }
           return true;
         }
         return false;
       }
--- a/mobile/android/components/ImageBlockingPolicy.js
+++ b/mobile/android/components/ImageBlockingPolicy.js
@@ -3,72 +3,127 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const { classes: Cc, interfaces: Ci, manager: Cm, utils: Cu, results: Cr } = Components;
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 Cu.import("resource://gre/modules/Timer.jsm");
 
+////////////////////////////////////////////////////////////////////////////////
+//// Constants
+
+//// SVG placeholder image for blocked image content
+const PLACEHOLDER_IMG = "chrome://browser/skin/images/placeholder_image.svg";
+
+//// Telemetry
+const TELEMETRY_TAP_TO_LOAD_ENABLED = "TAP_TO_LOAD_ENABLED";
+const TELEMETRY_SHOW_IMAGE_SIZE = "TAP_TO_LOAD_IMAGE_SIZE";
+const TOPIC_GATHER_TELEMETRY = "gather-telemetry";
+
+//// Gecko preference
+const PREF_IMAGEBLOCKING_ENABLED = "browser.image_blocking.enabled";
+
+//// Enabled options
+const OPTION_NEVER = 0;
+const OPTION_ALWAYS = 1;
+const OPTION_WIFI_ONLY = 2;
+
+
 /**
  * Content policy for blocking images
  */
-
-// SVG placeholder image for blocked image content
-var PLACEHOLDER_IMG = "chrome://browser/skin/images/placeholder_image.svg";
-
-function ImageBlockingPolicy() {}
+function ImageBlockingPolicy() {
+  Services.obs.addObserver(this, TOPIC_GATHER_TELEMETRY, false);
+}
 
 ImageBlockingPolicy.prototype = {
-  QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPolicy]),
+  QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPolicy, Ci.nsIObserver]),
   classDescription: "Click-To-Play Image",
   classID: Components.ID("{f55f77f9-d33d-4759-82fc-60db3ee0bb91}"),
   contractID: "@mozilla.org/browser/blockimages-policy;1",
   xpcom_categories: [{category: "content-policy", service: true}],
 
   // nsIContentPolicy interface implementation
   shouldLoad: function(contentType, contentLocation, requestOrigin, node, mimeTypeGuess, extra) {
-    if (!getEnabled()) {
-      return Ci.nsIContentPolicy.ACCEPT;
-    }
-
-    if (contentType === Ci.nsIContentPolicy.TYPE_IMAGE || contentType === Ci.nsIContentPolicy.TYPE_IMAGESET) {
-      // Accept any non-http(s) image URLs
-      if (!contentLocation.schemeIs("http") && !contentLocation.schemeIs("https")) {
-        return Ci.nsIContentPolicy.ACCEPT;
-      }
-
-      if (node instanceof Ci.nsIDOMHTMLImageElement) {
-        // Accept if the user has asked to view the image
-        if (node.getAttribute("data-ctv-show") == "true") {
+    // When enabled or when on cellular, and option for cellular-only is selected
+    if (this._enabled() == OPTION_ALWAYS || (this._enabled() == OPTION_WIFI_ONLY && this._usingCellular())) {
+      if (contentType === Ci.nsIContentPolicy.TYPE_IMAGE || contentType === Ci.nsIContentPolicy.TYPE_IMAGESET) {
+        // Accept any non-http(s) image URLs
+        if (!contentLocation.schemeIs("http") && !contentLocation.schemeIs("https")) {
           return Ci.nsIContentPolicy.ACCEPT;
         }
 
-        setTimeout(() => {
-          // Cache the original image URL and swap in our placeholder
-          node.setAttribute("data-ctv-src", contentLocation.spec);
-          node.setAttribute("src", PLACEHOLDER_IMG);
+        if (node instanceof Ci.nsIDOMHTMLImageElement) {
+          // Accept if the user has asked to view the image
+          if (node.getAttribute("data-ctv-show") == "true") {
+            sendImageSizeTelemetry(node.getAttribute("data-ctv-src"));
+            return Ci.nsIContentPolicy.ACCEPT;
+          }
 
-          // For imageset (img + srcset) the "srcset" is used even after we reset the "src" causing a loop.
-          // We are given the final image URL anyway, so it's OK to just remove the "srcset" value.
-          node.removeAttribute("srcset");
-        }, 0);
+          setTimeout(() => {
+            // Cache the original image URL and swap in our placeholder
+            node.setAttribute("data-ctv-src", contentLocation.spec);
+            node.setAttribute("src", PLACEHOLDER_IMG);
+
+            // For imageset (img + srcset) the "srcset" is used even after we reset the "src" causing a loop.
+            // We are given the final image URL anyway, so it's OK to just remove the "srcset" value.
+            node.removeAttribute("srcset");
+          }, 0);
+        }
+
+        // Reject any image that is not associated with a DOM element
+        return Ci.nsIContentPolicy.REJECT;
       }
-
-      // Reject any image that is not associated with a DOM element
-      return Ci.nsIContentPolicy.REJECT;
     }
 
     // Accept all other content types
     return Ci.nsIContentPolicy.ACCEPT;
   },
 
   shouldProcess: function(contentType, contentLocation, requestOrigin, node, mimeTypeGuess, extra) {
     return Ci.nsIContentPolicy.ACCEPT;
   },
 
+  _usingCellular: function() {
+    let network = Cc["@mozilla.org/network/network-link-service;1"].getService(Ci.nsINetworkLinkService);
+    return !(network.linkType == Ci.nsINetworkLinkService.LINK_TYPE_UNKNOWN ||
+        network.linkType == Ci.nsINetworkLinkService.LINK_TYPE_ETHERNET ||
+        network.linkType == Ci.nsINetworkLinkService.LINK_TYPE_USB  ||
+        network.linkType == Ci.nsINetworkLinkService.LINK_TYPE_WIFI);
+  },
+
+  _enabled: function() {
+    return Services.prefs.getIntPref("browser.image_blocking");
+  },
+
+  observe : function (subject, topic, data) {
+    if (topic == TOPIC_GATHER_TELEMETRY) {
+      Services.telemetry.getHistogramById(TELEMETRY_TAP_TO_LOAD_ENABLED).add(getEnabled());
+    }
+  },
 };
 
 function getEnabled() {
-  return Services.prefs.getBoolPref("browser.image_blocking.enabled");
+  return Services.prefs.getBoolPref(PREF_IMAGEBLOCKING_ENABLED);
+}
+
+function sendImageSizeTelemetry(imageURL) {
+  let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest);
+  xhr.open("HEAD", imageURL, true);
+  xhr.onreadystatechange = function (e) {
+    if (xhr.readyState != 4) {
+      return;
+    }
+    if (xhr.status != 200) {
+      return;
+    }
+    let contentLength = xhr.getResponseHeader("Content-Length");
+    if (!contentLength) {
+      return;
+    }
+    let imageSize = contentLength / 1024;
+    Services.telemetry.getHistogramById(TELEMETRY_SHOW_IMAGE_SIZE).add(imageSize);
+  };
+  xhr.send(null);
 }
 
 this.NSGetFactory = XPCOMUtils.generateNSGetFactory([ImageBlockingPolicy]);
--- a/mobile/android/confvars.sh
+++ b/mobile/android/confvars.sh
@@ -102,19 +102,16 @@ MOZ_ANDROID_TAB_QUEUE=1
 # Use the low-memory GC tuning.
 export JS_GC_SMALL_CHUNK_SIZE=1
 
 # Enable GCM registration on Nightly builds only.
 if test "$NIGHTLY_BUILD"; then
   MOZ_ANDROID_GCM=1
 fi
 
-# Enable Firefox Account avatars.
-MOZ_ANDROID_FIREFOX_ACCOUNT_PROFILES=1
-
 # Enable checking that add-ons are signed by the trusted root
 MOZ_ADDON_SIGNING=1
 
 # Enable the Switchboard A/B framework code.
 # Note: The framework is always included in the app. This flag controls
 # usage of the framework.
 MOZ_SWITCHBOARD=1
 
--- a/mobile/android/locales/en-US/chrome/browser.properties
+++ b/mobile/android/locales/en-US/chrome/browser.properties
@@ -125,16 +125,20 @@ desktopNotification.dontAllow=Don't allo
 desktopNotification.ask=Allow %S to use notifications?
 # LOCALIZATION NOTE (desktopNotification.useNotifications): Label that will be
 # used in site settings dialog.
 desktopNotification.useNotifications=Use Notifications
 # LOCALIZATION NOTE (desktopNotification.dontAskAgain): This label appears next to a
 # checkbox to indicate whether or not the user wants to make a permanent decision.
 desktopNotification.dontAskAgain=Don't ask again for this site
 
+# Imageblocking
+imageblocking.downloadedImage=Image unblocked
+imageblocking.showAllImages=Show All
+
 # Contacts API
 contacts.allow=Allow
 contacts.dontAllow=Don't allow
 contacts.ask=Allow %S to access your contacts?
 # LOCALIZATION NOTE (contacts.dontAskAgain): This label appears next to a
 # checkbox to indicate whether or not the user wants to make a permanent decision.
 contacts.dontAskAgain=Don't ask again for this site
 
--- a/mobile/android/mach_commands.py
+++ b/mobile/android/mach_commands.py
@@ -107,25 +107,23 @@ class MachCommands(MachCommandBase):
         srcdir('omnijar/build.gradle', 'mobile/android/gradle/omnijar/build.gradle')
         srcdir('omnijar/src/main/java/locales', 'mobile/android/locales')
         srcdir('omnijar/src/main/java/chrome', 'mobile/android/chrome')
         srcdir('omnijar/src/main/java/components', 'mobile/android/components')
         srcdir('omnijar/src/main/java/modules', 'mobile/android/modules')
         srcdir('omnijar/src/main/java/themes', 'mobile/android/themes')
 
         srcdir('app/build.gradle', 'mobile/android/gradle/app/build.gradle')
-        srcdir('app/src/androidTest/res', 'build/mobile/robocop/res')
+        srcdir('app/src/androidTest/res', 'mobile/android/tests/browser/robocop/res')
         srcdir('app/src/androidTest/assets', 'mobile/android/tests/browser/robocop/assets')
         # Test code.
         srcdir('app/src/robocop', 'mobile/android/tests/browser/robocop/src')
         srcdir('app/src/background', 'mobile/android/tests/background/junit3/src')
         srcdir('app/src/browser', 'mobile/android/tests/browser/junit3/src')
         srcdir('app/src/javaaddons', 'mobile/android/tests/javaaddons/src')
-        # Test libraries.
-        srcdir('app/libs', 'build/mobile/robocop')
 
         srcdir('base/build.gradle', 'mobile/android/gradle/base/build.gradle')
         srcdir('base/lint.xml', 'mobile/android/gradle/base/lint.xml')
         srcdir('base/src/main/AndroidManifest.xml', 'mobile/android/gradle/base/AndroidManifest.xml')
         srcdir('base/src/main/java/org/mozilla/gecko', 'mobile/android/base')
         srcdir('base/src/main/java/org/mozilla/mozstumbler', 'mobile/android/stumbler/java/org/mozilla/mozstumbler')
         srcdir('base/src/main/java/org/mozilla/search', 'mobile/android/search/java/org/mozilla/search')
         srcdir('base/src/main/java/org/mozilla/javaaddons', 'mobile/android/javaaddons/java/org/mozilla/javaaddons')
--- a/mobile/android/tests/browser/moz.build
+++ b/mobile/android/tests/browser/moz.build
@@ -5,8 +5,13 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 MOCHITEST_CHROME_MANIFESTS += ['chrome/chrome.ini']
 
 TEST_DIRS += [
     'junit3',
     'robocop/roboextender',
 ]
+
+if not CONFIG['MOZ_B2GDROID']:
+    TEST_DIRS += [
+        'robocop',
+    ]
rename from build/mobile/robocop/AndroidManifest.xml.in
rename to mobile/android/tests/browser/robocop/AndroidManifest.xml.in
rename from build/mobile/robocop/Makefile.in
rename to mobile/android/tests/browser/robocop/Makefile.in
--- a/build/mobile/robocop/Makefile.in
+++ b/mobile/android/tests/browser/robocop/Makefile.in
@@ -1,16 +1,16 @@
 # 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/.
 
-TESTPATH     := $(topsrcdir)/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/tests
+TESTPATH := $(srcdir)/src/org/mozilla/gecko/tests
 
 ANDROID_EXTRA_JARS += \
-  $(srcdir)/robotium-solo-4.3.1.jar \
+  $(srcdir)/libs/robotium-solo-4.3.1.jar \
   $(NULL)
 
 _JAVA_HARNESS := \
   Actions.java \
   Assert.java \
   Driver.java \
   Element.java \
   FennecInstrumentationTestRunner.java \
@@ -23,17 +23,17 @@ ANDROID_EXTRA_JARS += \
   RoboCopException.java \
   RobocopShare1.java \
   RobocopShare2.java \
   RobocopUtils.java \
   PaintedSurface.java \
   StructuredLogger.java \
   $(NULL)
 
-java-harness := $(addprefix $(topsrcdir)/mobile/android/tests/browser/robocop/src/org/mozilla/gecko/,$(_JAVA_HARNESS))
+java-harness := $(addprefix $(srcdir)/src/org/mozilla/gecko/,$(_JAVA_HARNESS))
 java-tests   := \
   $(wildcard $(TESTPATH)/*.java) \
   $(wildcard $(TESTPATH)/components/*.java) \
   $(wildcard $(TESTPATH)/helpers/*.java)
 
 PP_TARGETS += manifest
 manifest := $(srcdir)/AndroidManifest.xml.in
 manifest_TARGET := export
rename from build/mobile/robocop/README
rename to mobile/android/tests/browser/robocop/README
--- a/mobile/android/tests/browser/robocop/README.rst
+++ b/mobile/android/tests/browser/robocop/README.rst
@@ -1,11 +1,14 @@
 Robocop Mochitest
 =================
 
+*Robocop Mochitest* is a Mozilla project which uses Robotium to test
+ Firefox on Android devices.
+
 *Robocop Mochitest* tests run on Native Android builds marked with an
 'rc' in TBPL.  These are Java based tests which run from the mochitest
 harness and generate similar log files.  These are designed for
 testing the native UI of Android devices by sending events to the
 front end.
 
 See the documentation at
 https://wiki.mozilla.org/Auto-tools/Projects/Robocop/WritingTests for
@@ -40,8 +43,19 @@ mochitest-robocop`` does not use it.  (T
 signed releases on the buildbots).
 
 As always, changes to ``mobile/android/base``, ``mobile/android/chrome``,
 ``mobile/android/modules``, etc., require::
 
     mach build mobile/android/base && mach package && mach install
 
 as usual.
+
+Licensing
+---------
+
+Robotium is an open source tool licensed under the Apache 2.0 license and the original
+source can be found here:
+http://code.google.com/p/robotium/
+
+We are including robotium-solo-4.3.1.jar as a binary and are not modifying it in any way
+from the original download found at:
+http://code.google.com/p/robotium/
rename from build/mobile/robocop/robotium-solo-4.3.1.jar
rename to mobile/android/tests/browser/robocop/libs/robotium-solo-4.3.1.jar
rename from build/mobile/robocop/moz.build
rename to mobile/android/tests/browser/robocop/moz.build
--- a/build/mobile/robocop/moz.build
+++ b/mobile/android/tests/browser/robocop/moz.build
@@ -1,32 +1,29 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # 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/.
 
 DEFINES['ANDROID_PACKAGE_NAME'] = CONFIG['ANDROID_PACKAGE_NAME']
 
-base = '/mobile/android/tests/browser/robocop/'
-
 ANDROID_APK_NAME = 'robocop-debug'
 ANDROID_APK_PACKAGE = 'org.mozilla.roboexample.test'
-ANDROID_ASSETS_DIRS += [base + 'assets']
+ANDROID_ASSETS_DIRS += ['assets']
 
 TEST_HARNESS_FILES.testing.mochitest += [
-    base + 'robocop.ini',
-    base + 'robocop_autophone.ini',
+    'robocop.ini',
+    'robocop_autophone.ini',
 ]
-TEST_HARNESS_FILES.testing.mochitest.tests.robocop += [base + x for x in [
+TEST_HARNESS_FILES.testing.mochitest.tests.robocop += [
     '*.html',
     '*.jpg',
     '*.mp4',
     '*.ogg',
     '*.sjs',
     '*.swf',
     '*.webm',
     '*.xml',
+    'reader_mode_pages/**', # The ** preserves directory structure.
     'robocop*.js',
     'test*.js',
-]]
-# The ** below preserves directory structure.
-TEST_HARNESS_FILES.testing.mochitest.tests.robocop.reader_mode_pages += [base + 'reader_mode_pages/**']
+]
rename from build/mobile/robocop/res/values/strings.xml
rename to mobile/android/tests/browser/robocop/res/values/strings.xml
--- a/testing/mochitest/Makefile.in
+++ b/testing/mochitest/Makefile.in
@@ -98,17 +98,17 @@ GMP_TEST_PLUGIN_DIRS := \
 
 # On Android only, include a release signed Robocop APK in the test package.
 ifeq ($(MOZ_BUILD_APP),mobile/android)
 include $(topsrcdir)/config/android-common.mk
 
 stage-package-android:
 	$(NSINSTALL) -D $(_DEST_DIR)
 	$(call RELEASE_SIGN_ANDROID_APK,\
-		$(DEPTH)/build/mobile/robocop/robocop-debug-unsigned-unaligned.apk,\
+		$(DEPTH)/mobile/android/tests/browser/robocop/robocop-debug-unsigned-unaligned.apk,\
 		$(_DEST_DIR)/robocop.apk)
 
 stage-package: stage-package-android
 endif
 
 stage-package:
 	$(NSINSTALL) -D $(PKG_STAGE)/mochitest && $(NSINSTALL) -D $(PKG_STAGE)/bin/plugins && $(NSINSTALL) -D $(DIST)/plugins
 	cp $(DEPTH)/mozinfo.json $(PKG_STAGE)/mochitest
--- a/testing/mochitest/mach_commands.py
+++ b/testing/mochitest/mach_commands.py
@@ -608,18 +608,19 @@ class RobocopCommands(MachCommandBase):
         if serve:
             kwargs['autorun'] = False
 
         if not kwargs.get('robocopIni'):
             kwargs['robocopIni'] = os.path.join(self.topobjdir, '_tests', 'testing',
                                                 'mochitest', 'robocop.ini')
 
         if not kwargs.get('robocopApk'):
-            kwargs['robocopApk'] = os.path.join(self.topobjdir, 'build', 'mobile',
-                                                'robocop', 'robocop-debug.apk')
+            kwargs['robocopApk'] = os.path.join(self.topobjdir, 'mobile', 'android',
+                                                'tests', 'browser', 'robocop',
+                                                'robocop-debug.apk')
 
         from mozbuild.controller.building import BuildDriver
         self._ensure_state_subdir_exists('.')
 
         driver = self._spawn(BuildDriver)
         driver.install_tests(remove=False)
 
         test_paths = kwargs['test_paths']
--- a/testing/mochitest/mochitest_options.py
+++ b/testing/mochitest/mochitest_options.py
@@ -1134,17 +1134,18 @@ class AndroidArguments(ArgumentContainer
         if options.robocopIni != "":
             if not os.path.exists(options.robocopIni):
                 parser.error(
                     "Unable to find specified robocop .ini manifest '%s'" %
                     options.robocopIni)
             options.robocopIni = os.path.abspath(options.robocopIni)
 
             if not options.robocopApk and build_obj:
-                options.robocopApk = os.path.join(build_obj.topobjdir, 'build', 'mobile',
+                options.robocopApk = os.path.join(build_obj.topobjdir, 'mobile', 'android',
+                                                  'tests', 'browser',
                                                   'robocop', 'robocop-debug.apk')
 
         if options.robocopApk != "":
             if not os.path.exists(options.robocopApk):
                 parser.error(
                     "Unable to find robocop APK '%s'" %
                     options.robocopApk)
             options.robocopApk = os.path.abspath(options.robocopApk)
new file mode 100644
--- /dev/null
+++ b/testing/taskcluster/tasks/branches/mozilla-b2g44_v2_5/job_flags.yml
@@ -0,0 +1,29 @@
+---
+# For complete sample of all build and test jobs,
+# see <gecko>/testing/taskcluster/tasks/branches/base_job_flags.yml
+
+$inherits:
+  from: tasks/branches/base_job_flags.yml
+
+builds:
+  aries-dogfood:
+    platforms:
+      - b2g
+    types:
+      opt:
+        task: tasks/builds/b2g_aries_spark_dogfood.yml
+  flame-kk-ota:
+    platforms:
+      - b2g
+    types:
+      debug:
+        task: tasks/builds/b2g_flame_kk_ota_debug.yml
+
+# Just needed for parser sake
+tests:
+  cppunit:
+    allowed_build_tasks:
+      tasks/builds/b2g_emulator_x86_kk_opt.yml:
+        task: tasks/tests/b2g_emulator_cpp_unit.yml
+      tasks/builds/b2g_emulator_x86_kk_debug.yml:
+        task: tasks/tests/b2g_emulator_cpp_unit.yml
--- a/testing/testsuite-targets.mk
+++ b/testing/testsuite-targets.mk
@@ -54,17 +54,17 @@ RUN_MOCHITEST_REMOTE = \
     --log-tbpl=./$@.log $(DM_FLAGS) --dm_trans=$(DM_TRANS) \
     --app=$(TEST_PACKAGE_NAME) --deviceIP=${TEST_DEVICE} --xre-path=${MOZ_HOST_BIN} \
     --testing-modules-dir=$(abspath _tests/modules) \
     $(SYMBOLS_PATH) $(EXTRA_TEST_ARGS) $(TEST_PATH_ARG)
 
 RUN_MOCHITEST_ROBOCOP = \
   rm -f ./$@.log && \
   $(PYTHON) _tests/testing/mochitest/runrobocop.py \
-    --robocop-apk=$(DEPTH)/build/mobile/robocop/robocop-debug.apk \
+    --robocop-apk=$(DEPTH)/mobile/android/tests/browser/robocop/robocop-debug.apk \
     --robocop-ini=_tests/testing/mochitest/robocop.ini \
     --log-tbpl=./$@.log $(DM_FLAGS) --dm_trans=$(DM_TRANS) \
     --app=$(TEST_PACKAGE_NAME) --deviceIP=${TEST_DEVICE} --xre-path=${MOZ_HOST_BIN} \
     $(SYMBOLS_PATH) $(EXTRA_TEST_ARGS) $(TEST_PATH_ARG)
 
 ifndef NO_FAIL_ON_TEST_ERRORS
 define check_test_error_internal
   @errors=`grep 'TEST-UNEXPECTED-' $@.log` ;\
--- a/toolkit/components/parentalcontrols/nsIParentalControlsService.idl
+++ b/toolkit/components/parentalcontrols/nsIParentalControlsService.idl
@@ -6,42 +6,40 @@
 
 #include "nsISupports.idl"
 
 interface nsIURI;
 interface nsIFile;
 interface nsIInterfaceRequestor;
 interface nsIArray;
 
-[scriptable, uuid(f9962e65-5369-4346-8c44-84d5319abfc2)]
+[scriptable, uuid(8c4962aa-e0e0-482e-b1db-7846cb78b3d6)]
 interface nsIParentalControlsService : nsISupports
 {
   /**
    * Action types that can be blocked for users.
    */
   const short DOWNLOAD = 1; // Downloading files
   const short INSTALL_EXTENSION = 2; // Installing extensions
   const short INSTALL_APP = 3; // Installing webapps
   const short VISIT_FILE_URLS = 4; // Opening file:/// urls
   const short SHARE = 5; // Sharing
   const short BOOKMARK = 6; // Creating bookmarks
   const short ADD_CONTACT = 7; // Add contacts to the system database
   const short SET_IMAGE = 8; // Setting images as wall paper
   const short MODIFY_ACCOUNTS = 9; // Modifying system accounts
   const short REMOTE_DEBUGGING = 10; // Remote debugging
   const short IMPORT_SETTINGS = 11; // Importing settings from other apps
-  const short DEVELOPER_TOOLS = 12; // Web developer tools
-  const short CUSTOMIZE_HOME = 13; // Customizing home panels
-  const short PRIVATE_BROWSING = 14; // Disallow usage of private browsing
-  const short LOCATION_SERVICE = 15; // Sharing of location data to location service
-  const short DISPLAY_SETTINGS = 16; // Website display settings
-  const short CLEAR_HISTORY = 17; // Clear browsing history
-  const short MASTER_PASSWORD = 18; // Setting master password for logins
-  const short GUEST_BROWSING = 19; // Disallow usage of guest browsing
-  const short DEFAULT_THEME = 20; // Use default theme or a special parental controls theme
+  const short PRIVATE_BROWSING = 12; // Disallow usage of private browsing
+  const short LOCATION_SERVICE = 13; // Sharing of location data to location service
+  const short CLEAR_HISTORY = 14; // Clear browsing history
+  const short MASTER_PASSWORD = 15; // Setting master password for logins
+  const short GUEST_BROWSING = 16; // Disallow usage of guest browsing
+  const short DEFAULT_THEME = 17; // Use default theme or a special parental controls theme
+  const short ADVANCED_SETTINGS = 18; // Advanced settings
 
   /**
    * @returns true if the current user account has parental controls
    * restrictions enabled.
    */
   readonly attribute boolean parentalControlsEnabled;
 
   /**
--- a/toolkit/components/telemetry/Histograms.json
+++ b/toolkit/components/telemetry/Histograms.json
@@ -2491,16 +2491,24 @@
   "HTTPCONNMGR_UNUSED_SPECULATIVE_CONN": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "1000 * 1000",
     "n_buckets": 50,
     "extended_statistics_ok": true,
     "description": "How many speculative connections are made needlessly"
   },
+  "TAP_TO_LOAD_IMAGE_SIZE": {
+    "expires_in_version": "50",
+    "kind": "exponential",
+    "high": "32 * 1024",
+    "n_buckets": 50,
+    "description": "The size of the image being shown, when using tap-to-load images. (kilobytes)",
+    "bug_numbers": [1208167]
+  },
   "STS_POLL_AND_EVENTS_CYCLE": {
     "expires_in_version": "never",
     "kind": "exponential",
     "high": "60000",
     "n_buckets": 1000,
     "description": "The duraion of a socketThread cycle, including polls and pending events. (ms)"
   },
   "STS_NUMBER_OF_PENDING_EVENTS": {
@@ -8373,16 +8381,23 @@
     "description": "Baseline Requirements section 9.2.1: subject alternative names extension (0: ok, 1 or more: error)"
   },
   "BR_9_2_2_SUBJECT_COMMON_NAME": {
     "expires_in_version": "never",
     "kind": "enumerated",
     "n_values": 8,
     "description": "Baseline Requirements section 9.2.2: subject common name field (0: present, in subject alt. names; 1: not present; 2: not present in subject alt. names)"
   },
+  "TAP_TO_LOAD_ENABLED": {
+    "expires_in_version": "50",
+    "kind": "enumerated",
+    "n_values": 3,
+    "description": "Whether or not a user has tap-to-load enabled.",
+    "bug_numbers": [1208167]
+  },
   "TRACKING_PROTECTION_ENABLED": {
     "expires_in_version": "never",
     "kind": "boolean",
     "description": "Whether or not a session has tracking protection enabled"
   },
   "TRACKING_PROTECTION_PBM_DISABLED": {
     "expires_in_version": "60",
     "kind": "boolean",
--- a/toolkit/content/widgets/toolbarbutton.xml
+++ b/toolkit/content/widgets/toolbarbutton.xml
@@ -65,48 +65,48 @@
 
     <content>
       <children includes="observes|template|menupopup|panel|tooltip"/>
       <xul:toolbarbutton class="box-inherit toolbarbutton-menubutton-button"
                          anonid="button" flex="1" allowevents="true"
                          xbl:inherits="disabled,crop,image,label,accesskey,command,wrap,badge,
                                        align,dir,pack,orient,tooltiptext=buttontooltiptext"/>
       <xul:dropmarker type="menu-button" class="toolbarbutton-menubutton-dropmarker"
-                      anonid="dropmarker" xbl:inherits="align,dir,pack,orient,disabled,label,open"/>
+                      anonid="dropmarker" xbl:inherits="align,dir,pack,orient,disabled,label,open,consumeanchor"/>
     </content>
   </binding>
 
   <binding id="toolbarbutton-image"
            extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton">
     <content>
       <xul:image class="toolbarbutton-icon" xbl:inherits="src=image"/>
     </content>
   </binding>
 
   <binding id="toolbarbutton-badged"
            extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton">
     <content>
       <children includes="observes|template|menupopup|panel|tooltip"/>
       <xul:stack class="toolbarbutton-badge-stack">
-        <xul:image class="toolbarbutton-icon" xbl:inherits="validate,src=image,label"/>
+        <xul:image class="toolbarbutton-icon" xbl:inherits="validate,src=image,label,consumeanchor"/>
         <xul:label class="toolbarbutton-badge" xbl:inherits="value=badge" top="0" end="0"/>
       </xul:stack>
       <xul:label class="toolbarbutton-text" crop="right" flex="1"
                  xbl:inherits="value=label,accesskey,crop,wrap"/>
       <xul:label class="toolbarbutton-multiline-text" flex="1"
                  xbl:inherits="xbl:text=label,accesskey,wrap"/>
     </content>
   </binding>
 
   <binding id="toolbarbutton-badged-menu" display="xul:menu"
            extends="chrome://global/content/bindings/toolbarbutton.xml#toolbarbutton">
     <content>
       <children includes="observes|template|menupopup|panel|tooltip"/>
       <xul:stack class="toolbarbutton-badge-stack">
-        <xul:image class="toolbarbutton-icon" xbl:inherits="validate,src=image,label"/>
+        <xul:image class="toolbarbutton-icon" xbl:inherits="validate,src=image,label,consumeanchor"/>
         <xul:label class="toolbarbutton-badge" xbl:inherits="value=badge" top="0" end="0"/>
       </xul:stack>
       <xul:label class="toolbarbutton-text" crop="right" flex="1"
                  xbl:inherits="value=label,accesskey,crop,dragover-top,wrap"/>
       <xul:label class="toolbarbutton-multiline-text" flex="1"
                  xbl:inherits="xbl:text=label,accesskey,wrap"/>
       <xul:dropmarker anonid="dropmarker" type="menu"
                       class="toolbarbutton-menu-dropmarker" xbl:inherits="disabled,label"/>
--- a/toolkit/mozapps/installer/upload-files.mk
+++ b/toolkit/mozapps/installer/upload-files.mk
@@ -329,17 +329,17 @@ UPLOAD_EXTRA_FILES += robocop.apk
 UPLOAD_EXTRA_FILES += fennec_ids.txt
 UPLOAD_EXTRA_FILES += geckoview_library/geckoview_library.zip
 UPLOAD_EXTRA_FILES += geckoview_library/geckoview_assets.zip
 UPLOAD_EXTRA_FILES += ../embedding/android/geckoview_example/geckoview_example.apk
 
 # Robocop/Robotium tests, Android Background tests, and Fennec need to
 # be signed with the same key, which means release signing them all.
 
-ROBOCOP_PATH = $(abspath $(_ABS_DIST)/../build/mobile/robocop)
+ROBOCOP_PATH = $(abspath $(DEPTH)/mobile/android/tests/browser/robocop)
 # Normally, $(NSINSTALL) would be used instead of cp, but INNER_ROBOCOP_PACKAGE
 # is used in a series of commands that run under a "cd something", while
 # $(NSINSTALL) is relative.
 INNER_ROBOCOP_PACKAGE= \
   cp $(GECKO_APP_AP_PATH)/fennec_ids.txt $(_ABS_DIST) && \
   $(call RELEASE_SIGN_ANDROID_APK,$(ROBOCOP_PATH)/robocop-debug-unsigned-unaligned.apk,$(_ABS_DIST)/robocop.apk)
 endif
 else
--- a/toolkit/themes/linux/global/jar.mn
+++ b/toolkit/themes/linux/global/jar.mn
@@ -1,55 +1,59 @@
 # 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/.
 
+#include ../../shared/non-mac.jar.inc.mn
+
 toolkit.jar:
-+  skin/classic/global/autocomplete.css
-+  skin/classic/global/button.css
-+  skin/classic/global/checkbox.css
-+  skin/classic/global/colorpicker.css
-+  skin/classic/global/commonDialog.css
-+  skin/classic/global/dropmarker.css
-+  skin/classic/global/filepicker.css
-+  skin/classic/global/Filepicker.png                          (filepicker/Filepicker.png)
-+  skin/classic/global/findBar.css
-+  skin/classic/global/global.css
-+  skin/classic/global/groupbox.css
-+  skin/classic/global/listbox.css
-+  skin/classic/global/menu.css
-+  skin/classic/global/menulist.css
-+  skin/classic/global/netError.css
-+  skin/classic/global/notification.css
-+  skin/classic/global/numberbox.css
-+  skin/classic/global/popup.css
-+  skin/classic/global/preferences.css
-+  skin/classic/global/printPageSetup.css
-+  skin/classic/global/printPreview.css
-+  skin/classic/global/radio.css
-+  skin/classic/global/scrollbox.css
-+  skin/classic/global/splitter.css
-+  skin/classic/global/tabbox.css
-+  skin/classic/global/textbox.css
-+  skin/classic/global/toolbar.css
-+  skin/classic/global/toolbarbutton.css
-+  skin/classic/global/tree.css
-+  skin/classic/global/alerts/alert.css                        (alerts/alert.css)
-+  skin/classic/global/console/console.css                     (console/console.css)
-+  skin/classic/global/console/console.png                     (console/console.png)
-+  skin/classic/global/console/console-toolbar.png             (console/console-toolbar.png)
-+  skin/classic/global/dirListing/remote.png                   (dirListing/remote.png)
-+  skin/classic/global/icons/autocomplete-search.svg           (icons/autocomplete-search.svg)
-+  skin/classic/global/icons/Authentication.png                (icons/Authentication.png)
-+  skin/classic/global/icons/autoscroll.png                    (icons/autoscroll.png)
-+  skin/classic/global/icons/blacklist_favicon.png             (icons/blacklist_favicon.png)
-+  skin/classic/global/icons/blacklist_large.png               (icons/blacklist_large.png)
-+  skin/classic/global/icons/close.svg                         (icons/close.svg)
-+  skin/classic/global/icons/loading_16.png                    (icons/loading_16.png)
-+  skin/classic/global/icons/panelarrow-horizontal.svg         (icons/panelarrow-horizontal.svg)
-+  skin/classic/global/icons/panelarrow-vertical.svg           (icons/panelarrow-vertical.svg)
-+  skin/classic/global/icons/resizer.png                       (icons/resizer.png)
-+  skin/classic/global/icons/sslWarning.png                    (icons/sslWarning.png)
-+  skin/classic/global/icons/webapps-16.png                    (icons/webapps-16.png)
-+  skin/classic/global/icons/webapps-64.png                    (icons/webapps-64.png)
+   skin/classic/global/autocomplete.css
+   skin/classic/global/button.css
+   skin/classic/global/checkbox.css
+   skin/classic/global/colorpicker.css
+   skin/classic/global/commonDialog.css
+   skin/classic/global/dropmarker.css
+   skin/classic/global/filepicker.css
+   skin/classic/global/Filepicker.png                          (filepicker/Filepicker.png)
+   skin/classic/global/findBar.css
+   skin/classic/global/global.css
+   skin/classic/global/groupbox.css
+   skin/classic/global/listbox.css
+   skin/classic/global/menu.css
+   skin/classic/global/menulist.css
+   skin/classic/global/netError.css
+   skin/classic/global/notification.css
+   skin/classic/global/numberbox.css
+   skin/classic/global/popup.css
+   skin/classic/global/preferences.css
+   skin/classic/global/printPageSetup.css
+   skin/classic/global/printPreview.css
+   skin/classic/global/radio.css
+   skin/classic/global/scrollbox.css
+   skin/classic/global/splitter.css
+   skin/classic/global/tabbox.css
+   skin/classic/global/textbox.css
+   skin/classic/global/toolbar.css
+   skin/classic/global/toolbarbutton.css
+   skin/classic/global/tree.css
+   skin/classic/global/alerts/alert.css                        (alerts/alert.css)
+   skin/classic/global/console/console.css                     (console/console.css)
+   skin/classic/global/console/console.png                     (console/console.png)
+   skin/classic/global/console/console-toolbar.png             (console/console-toolbar.png)
+   skin/classic/global/dirListing/remote.png                   (dirListing/remote.png)
+
+   skin/classic/global/icons/Authentication.png                (icons/Authentication.png)
+   skin/classic/global/icons/autocomplete-search.svg           (icons/autocomplete-search.svg)
+   skin/classic/global/icons/autoscroll.png                    (icons/autoscroll.png)
+   skin/classic/global/icons/blacklist_favicon.png             (icons/blacklist_favicon.png)
+   skin/classic/global/icons/blacklist_large.png               (icons/blacklist_large.png)
+   skin/classic/global/icons/close.svg                         (icons/close.svg)
+   skin/classic/global/icons/loading_16.png                    (icons/loading_16.png)
+   skin/classic/global/icons/panelarrow-horizontal.svg         (icons/panelarrow-horizontal.svg)
+   skin/classic/global/icons/panelarrow-vertical.svg           (icons/panelarrow-vertical.svg)
+   skin/classic/global/icons/resizer.png                       (icons/resizer.png)
+   skin/classic/global/icons/sslWarning.png                    (icons/sslWarning.png)
+   skin/classic/global/icons/webapps-16.png                    (icons/webapps-16.png)
+   skin/classic/global/icons/webapps-64.png                    (icons/webapps-64.png)
+
 *  skin/classic/global/in-content/common.css                   (in-content/common.css)
 *  skin/classic/global/in-content/info-pages.css               (in-content/info-pages.css)
-+  skin/classic/global/toolbar/spring.png                      (toolbar/spring.png)
+   skin/classic/global/toolbar/spring.png                      (toolbar/spring.png)
--- a/toolkit/themes/linux/help/jar.mn
+++ b/toolkit/themes/linux/help/jar.mn
@@ -1,6 +1,6 @@
 # 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/.
 
 toolkit.jar:
-+  skin/classic/help/help.css
+  skin/classic/help/help.css
--- a/toolkit/themes/linux/mozapps/jar.mn
+++ b/toolkit/themes/linux/mozapps/jar.mn
@@ -1,42 +1,42 @@
 # 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/.
 
 toolkit.jar:
 #include ../../shared/mozapps.inc.mn
-+ skin/classic/mozapps/update/updates.css                  (update/updates.css)
-+ skin/classic/mozapps/downloads/downloadIcon.png          (downloads/downloadIcon.png)
-+ skin/classic/mozapps/downloads/downloads.css             (downloads/downloads.css)
+  skin/classic/mozapps/downloads/downloadIcon.png          (downloads/downloadIcon.png)
+  skin/classic/mozapps/downloads/downloads.css             (downloads/downloads.css)
 * skin/classic/mozapps/extensions/extensions.css           (extensions/extensions.css)
-+ skin/classic/mozapps/extensions/category-search.png      (extensions/category-search.png)
-+ skin/classic/mozapps/extensions/category-discover.png    (extensions/category-discover.png)
-+ skin/classic/mozapps/extensions/category-plugins.png     (extensions/category-plugins.png)
-+ skin/classic/mozapps/extensions/category-service.png     (extensions/category-service.png)
-+ skin/classic/mozapps/extensions/category-recent.png      (extensions/category-recent.png)
-+ skin/classic/mozapps/extensions/category-available.png   (extensions/category-available.png)
-+ skin/classic/mozapps/extensions/extensionGeneric-16.png  (extensions/extensionGeneric-16.png)
-+ skin/classic/mozapps/extensions/dictionaryGeneric.png    (extensions/dictionaryGeneric.png)
-+ skin/classic/mozapps/extensions/dictionaryGeneric-16.png (extensions/dictionaryGeneric-16.png)
-+ skin/classic/mozapps/extensions/themeGeneric.png         (extensions/themeGeneric.png)
-+ skin/classic/mozapps/extensions/themeGeneric-16.png      (extensions/themeGeneric-16.png)
-+ skin/classic/mozapps/extensions/localeGeneric.png        (extensions/localeGeneric.png)
+  skin/classic/mozapps/extensions/category-search.png      (extensions/category-search.png)
+  skin/classic/mozapps/extensions/category-discover.png    (extensions/category-discover.png)
+  skin/classic/mozapps/extensions/category-plugins.png     (extensions/category-plugins.png)
+  skin/classic/mozapps/extensions/category-service.png     (extensions/category-service.png)
+  skin/classic/mozapps/extensions/category-recent.png      (extensions/category-recent.png)
+  skin/classic/mozapps/extensions/category-available.png   (extensions/category-available.png)
+  skin/classic/mozapps/extensions/extensionGeneric-16.png  (extensions/extensionGeneric-16.png)
+  skin/classic/mozapps/extensions/dictionaryGeneric.png    (extensions/dictionaryGeneric.png)
+  skin/classic/mozapps/extensions/dictionaryGeneric-16.png (extensions/dictionaryGeneric-16.png)
+  skin/classic/mozapps/extensions/themeGeneric.png         (extensions/themeGeneric.png)
+  skin/classic/mozapps/extensions/themeGeneric-16.png      (extensions/themeGeneric-16.png)
+  skin/classic/mozapps/extensions/localeGeneric.png        (extensions/localeGeneric.png)
 * skin/classic/mozapps/extensions/newaddon.css             (extensions/newaddon.css)
-+ skin/classic/mozapps/extensions/selectAddons.css         (extensions/selectAddons.css)
-+ skin/classic/mozapps/extensions/heart.png                (extensions/heart.png)
-+ skin/classic/mozapps/passwordmgr/key-16.png              (passwordmgr/key-16.png)
-+ skin/classic/mozapps/passwordmgr/key-64.png              (passwordmgr/key-64.png)
-+ skin/classic/mozapps/plugins/pluginGeneric.png           (plugins/pluginGeneric.png)
-+ skin/classic/mozapps/plugins/pluginBlocked.png           (plugins/pluginBlocked.png)
-+ skin/classic/mozapps/plugins/pluginGeneric-16.png        (plugins/pluginGeneric-16.png)
-+ skin/classic/mozapps/profile/profileicon.png             (profile/profileicon.png)
-+ skin/classic/mozapps/viewsource/viewsource.css           (viewsource/viewsource.css)
+  skin/classic/mozapps/extensions/selectAddons.css         (extensions/selectAddons.css)
+  skin/classic/mozapps/extensions/heart.png                (extensions/heart.png)
+  skin/classic/mozapps/passwordmgr/key-16.png              (passwordmgr/key-16.png)
+  skin/classic/mozapps/passwordmgr/key-64.png              (passwordmgr/key-64.png)
+  skin/classic/mozapps/plugins/pluginGeneric.png           (plugins/pluginGeneric.png)
+  skin/classic/mozapps/plugins/pluginBlocked.png           (plugins/pluginBlocked.png)
+  skin/classic/mozapps/plugins/pluginGeneric-16.png        (plugins/pluginGeneric-16.png)
+  skin/classic/mozapps/profile/profileicon.png             (profile/profileicon.png)
+  skin/classic/mozapps/update/updates.css                  (update/updates.css)
+  skin/classic/mozapps/viewsource/viewsource.css           (viewsource/viewsource.css)
 #ifdef MOZ_PLACES
-+ skin/classic/mozapps/places/defaultFavicon.png           (places/defaultFavicon.png)
+  skin/classic/mozapps/places/defaultFavicon.png           (places/defaultFavicon.png)
 #endif
 
 #if MOZ_BUILD_APP == browser
 [browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar:
 #elif MOZ_SEPARATE_MANIFEST_FOR_THEME_OVERRIDES
 [extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar:
 #endif
 % override chrome://mozapps/skin/passwordmgr/key.png       chrome://mozapps/skin/passwordmgr/key-16.png
--- a/toolkit/themes/moz.build
+++ b/toolkit/themes/moz.build
@@ -1,28 +1,31 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # 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/.
 
 # Theme Selection
 #
+# Shared (toolkit/themes/shared/) is always included.
+#
 # MacOS X                 osx (toolkit/themes/osx)
-# Windows                 windows (toolkit/themes/windows)
-# GNOME/Linux             windows (toolkit/themes/windows) + 
-#                         linux overrides (toolkit/themes/linux)
+# Windows                 windows (toolkit/themes/windows) +
+#                         non-mac (toolkit/themes/shared/non-mac)
+# GNOME/Linux             linux (toolkit/themes/linux)
+#                         non-mac (toolkit/themes/shared/non-mac)
 # faststripe              windows + faststripe (no native theme components)
 
 toolkit = CONFIG['MOZ_WIDGET_TOOLKIT']
 
 if toolkit == 'cocoa':
     DIRS += ['osx']
+elif toolkit in ('gtk2', 'gtk3', 'qt'):
+    DIRS += ['linux']
 else:
     DIRS += ['windows']
 
-    if toolkit in ('gtk2', 'gtk3', 'qt'):
-        DIRS += ['linux']
-    elif CONFIG['MOZ_THEME_FASTSTRIPE']:
+    if CONFIG['MOZ_THEME_FASTSTRIPE']:
         DIRS += ['faststripe/global']
 
 with Files('**'):
     BUG_COMPONENT = ('Toolkit', 'Themes')
--- a/toolkit/themes/osx/global/jar.mn
+++ b/toolkit/themes/osx/global/jar.mn
@@ -1,15 +1,15 @@
 # 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/.
 
+#include ../../shared/jar.inc.mn
+
 toolkit.jar:
-% skin global classic/1.0 %skin/classic/global/
-#include ../../shared/jar.inc.mn
   skin/classic/global/10pct_transparent_grey.png
   skin/classic/global/50pct_transparent_grey.png
   skin/classic/global/arrow.css
   skin/classic/global/autocomplete.css
   skin/classic/global/button.css
   skin/classic/global/checkbox.css
   skin/classic/global/colorpicker.css
   skin/classic/global/commonDialog.css
--- a/toolkit/themes/osx/help/jar.mn
+++ b/toolkit/themes/osx/help/jar.mn
@@ -1,11 +1,10 @@
 # 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/.
 
 toolkit.jar:
-% skin help classic/1.0 %skin/classic/help/
   skin/classic/help/dropmark-nav.png
   skin/classic/help/help.css
   skin/classic/help/Toolbar.png
   skin/classic/help/helpFileLayout.css
   skin/classic/help/Weblink.png
--- a/toolkit/themes/osx/mozapps/jar.mn
+++ b/toolkit/themes/osx/mozapps/jar.mn
@@ -1,14 +1,13 @@
 # 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/.
 
 toolkit.jar:
-% skin mozapps classic/1.0 %skin/classic/mozapps/
 #include ../../shared/mozapps.inc.mn
   skin/classic/mozapps/downloads/buttons.png                      (downloads/buttons.png)
   skin/classic/mozapps/downloads/downloadIcon.png                 (downloads/downloadIcon.png)
 * skin/classic/mozapps/downloads/downloads.css                    (downloads/downloads.css)
   skin/classic/mozapps/downloads/unknownContentType.css           (downloads/unknownContentType.css)
   skin/classic/mozapps/extensions/category-search.png             (extensions/category-search.png)
   skin/classic/mozapps/extensions/category-discover.png           (extensions/category-discover.png)
   skin/classic/mozapps/extensions/category-plugins.png            (extensions/category-plugins.png)
--- a/toolkit/themes/shared/jar.inc.mn
+++ b/toolkit/themes/shared/jar.inc.mn
@@ -2,16 +2,20 @@
 # 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/.
 
 # This is not a complete / proper jar manifest. It is included by the
 # actual theme-specific manifests, so that shared resources need only
 # be specified once. As a result, the source file paths are relative
 # to the location of the actual manifest.
 
+toolkit.jar:
+% skin global classic/1.0 %skin/classic/global/
+% skin help classic/1.0 %skin/classic/help/
+% skin mozapps classic/1.0 %skin/classic/mozapps/
   skin/classic/global/about.css                            (../../shared/about.css)
   skin/classic/global/aboutCache.css                       (../../shared/aboutCache.css)
   skin/classic/global/aboutCacheEntry.css                  (../../shared/aboutCacheEntry.css)
   skin/classic/global/aboutMemory.css                      (../../shared/aboutMemory.css)
   skin/classic/global/aboutReader.css                      (../../shared/aboutReader.css)
   skin/classic/global/aboutReaderContent.css               (../../shared/aboutReaderContent.css)
 * skin/classic/global/aboutReaderControls.css              (../../shared/aboutReaderControls.css)
   skin/classic/global/aboutSupport.css                     (../../shared/aboutSupport.css)
@@ -35,8 +39,9 @@
   skin/classic/global/reader/RM-Add-24x24.svg              (../../shared/reader/RM-Add-24x24.svg)
   skin/classic/global/reader/RM-Close-24x24.svg            (../../shared/reader/RM-Close-24x24.svg)
   skin/classic/global/reader/RM-Delete-24x24.svg           (../../shared/reader/RM-Delete-24x24.svg)
   skin/classic/global/reader/RM-Minus-24x24.svg            (../../shared/reader/RM-Minus-24x24.svg)
   skin/classic/global/reader/RM-Plus-24x24.svg             (../../shared/reader/RM-Plus-24x24.svg)
   skin/classic/global/reader/RM-Reading-List-24x24.svg     (../../shared/reader/RM-Reading-List-24x24.svg)
   skin/classic/global/reader/RM-Type-Controls-24x24.svg    (../../shared/reader/RM-Type-Controls-24x24.svg)
   skin/classic/global/reader/RM-Type-Controls-Arrow.svg    (../../shared/reader/RM-Type-Controls-Arrow.svg)
+
new file mode 100644
--- /dev/null
+++ b/toolkit/themes/shared/non-mac.jar.inc.mn
@@ -0,0 +1,183 @@
+# 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/.
+
+# This is not a complete / proper jar manifest. It is conditionally included
+# by the shared jar manifest, which in turn is included by the os-specific
+# manifests.
+# As a result, the source file paths are relative to the location of the
+# actual manifests.
+
+#include jar.inc.mn
+
+  skin/classic/global/arrow.css                            (../../windows/global/arrow.css)
+  skin/classic/global/customizeToolbar.css                 (../../windows/global/customizeToolbar.css)
+  skin/classic/global/datetimepicker.css                   (../../windows/global/datetimepicker.css)
+  skin/classic/global/dialog.css                           (../../windows/global/dialog.css)
+  skin/classic/global/expander.css                         (../../windows/global/expander.css)
+  skin/classic/global/filefield.css                        (../../windows/global/filefield.css)
+  skin/classic/global/globalBindings.xml                   (../../windows/global/globalBindings.xml)
+  skin/classic/global/linkTree.css                         (../../windows/global/linkTree.css)
+  skin/classic/global/passwordmgr.css                      (../../windows/global/passwordmgr.css)
+  skin/classic/global/progressmeter.css                    (../../windows/global/progressmeter.css)
+  skin/classic/global/resizer.css                          (../../windows/global/resizer.css)
+  skin/classic/global/richlistbox.css                      (../../windows/global/richlistbox.css)
+  skin/classic/global/scale.css                            (../../windows/global/scale.css)
+  skin/classic/global/scrollbars.css                       (../../windows/global/xulscrollbars.css)
+  skin/classic/global/spinbuttons.css                      (../../windows/global/spinbuttons.css)
+  skin/classic/global/tabprompts.css                       (../../windows/global/tabprompts.css)
+  skin/classic/global/wizard.css                           (../../windows/global/wizard.css)
+
+  skin/classic/global/arrow/arrow-dn.gif                   (../../windows/global/arrow/arrow-dn.gif)
+  skin/classic/global/arrow/arrow-dn-dis.gif               (../../windows/global/arrow/arrow-dn-dis.gif)
+  skin/classic/global/arrow/arrow-dn-hov.gif               (../../windows/global/arrow/arrow-dn-hov.gif)
+  skin/classic/global/arrow/arrow-dn-sharp.gif             (../../windows/global/arrow/arrow-dn-sharp.gif)
+  skin/classic/global/arrow/arrow-down.png                 (../../windows/global/arrow/arrow-down.png)
+  skin/classic/global/arrow/arrow-lft.gif                  (../../windows/global/arrow/arrow-lft.gif)
+  skin/classic/global/arrow/arrow-lft-dis.gif              (../../windows/global/arrow/arrow-lft-dis.gif)
+  skin/classic/global/arrow/arrow-lft-sharp.gif            (../../windows/global/arrow/arrow-lft-sharp.gif)
+  skin/classic/global/arrow/arrow-lft-sharp-end.gif        (../../windows/global/arrow/arrow-lft-sharp-end.gif)
+  skin/classic/global/arrow/arrow-rit.gif                  (../../windows/global/arrow/arrow-rit.gif)
+  skin/classic/global/arrow/arrow-rit-dis.gif              (../../windows/global/arrow/arrow-rit-dis.gif)
+  skin/classic/global/arrow/arrow-rit-sharp.gif            (../../windows/global/arrow/arrow-rit-sharp.gif)
+  skin/classic/global/arrow/arrow-rit-sharp-end.gif        (../../windows/global/arrow/arrow-rit-sharp-end.gif)
+  skin/classic/global/arrow/arrow-up.gif                   (../../windows/global/arrow/arrow-up.gif)
+  skin/classic/global/arrow/arrow-up-dis.gif               (../../windows/global/arrow/arrow-up-dis.gif)
+  skin/classic/global/arrow/arrow-up-hov.gif               (../../windows/global/arrow/arrow-up-hov.gif)
+  skin/classic/global/arrow/arrow-up-sharp.gif             (../../windows/global/arrow/arrow-up-sharp.gif)
+  skin/classic/global/arrow/panelarrow-horizontal.svg      (../../windows/global/arrow/panelarrow-horizontal.svg)
+  skin/classic/global/arrow/panelarrow-vertical.svg        (../../windows/global/arrow/panelarrow-vertical.svg)
+  skin/classic/global/arrow/panelarrow-horizontal-themed.svg (../../windows/global/arrow/panelarrow-horizontal-themed.svg)
+  skin/classic/global/arrow/panelarrow-vertical-themed.svg   (../../windows/global/arrow/panelarrow-vertical-themed.svg)
+
+  skin/classic/global/checkbox/cbox-check.gif              (../../windows/global/checkbox/cbox-check.gif)
+  skin/classic/global/checkbox/cbox-check-dis.gif          (../../windows/global/checkbox/cbox-check-dis.gif)
+  skin/classic/global/console/console-error-caret.gif      (../../windows/global/console/console-error-caret.gif)
+  skin/classic/global/console/console-error-dash.gif       (../../windows/global/console/console-error-dash.gif)
+  skin/classic/global/console/itemSelected.png             (../../windows/global/console/itemSelected.png)
+* skin/classic/global/dirListing/dirListing.css            (../../windows/global/dirListing/dirListing.css)
+  skin/classic/global/dirListing/folder.png                (../../windows/global/dirListing/folder.png)
+  skin/classic/global/dirListing/local.png                 (../../windows/global/dirListing/local.png)
+  skin/classic/global/dirListing/up.png                    (../../windows/global/dirListing/up.png)
+  skin/classic/global/icons/Close.gif                      (../../windows/global/icons/Close.gif)
+  skin/classic/global/icons/close.png                      (../../windows/global/icons/close.png)
+  skin/classic/global/icons/close@2x.png                   (../../windows/global/icons/close@2x.png)
+  skin/classic/global/icons/close-inverted.png             (../../windows/global/icons/close-inverted.png)
+  skin/classic/global/icons/close-inverted@2x.png          (../../windows/global/icons/close-inverted@2x.png)
+  skin/classic/global/icons/collapse.png                   (../../windows/global/icons/collapse.png)
+  skin/classic/global/icons/Error.png                      (../../windows/global/icons/Error.png)
+  skin/classic/global/icons/error-16.png                   (../../windows/global/icons/error-16.png)
+  skin/classic/global/icons/error-64.png                   (../../windows/global/icons/error-64.png)
+  skin/classic/global/icons/expand.png                     (../../windows/global/icons/expand.png)
+  skin/classic/global/icons/find-arrows.png                (../../windows/global/icons/find-arrows.png)
+  skin/classic/global/icons/folder-item.png                (../../windows/global/icons/folder-item.png)
+  skin/classic/global/icons/information-16.png             (../../windows/global/icons/information-16.png)
+  skin/classic/global/icons/information-24.png             (../../windows/global/icons/information-24.png)
+  skin/classic/global/icons/information-32.png             (../../windows/global/icons/information-32.png)
+  skin/classic/global/icons/Minimize.gif                   (../../windows/global/icons/Minimize.gif)
+  skin/classic/global/icons/Print-preview.png              (../../windows/global/icons/Print-preview.png)
+  skin/classic/global/icons/Portrait.png                   (../../windows/global/icons/Portrait.png)
+  skin/classic/global/icons/Landscape.png                  (../../windows/global/icons/Landscape.png)
+  skin/classic/global/icons/Question.png                   (../../windows/global/icons/Question.png)
+  skin/classic/global/icons/question-16.png                (../../windows/global/icons/question-16.png)
+  skin/classic/global/icons/question-64.png                (../../windows/global/icons/question-64.png)
+  skin/classic/global/icons/resizer-rtl.png                (../../windows/global/icons/resizer-rtl.png)
+  skin/classic/global/icons/Restore.gif                    (../../windows/global/icons/Restore.gif)
+  skin/classic/global/icons/Search-close.png               (../../windows/global/icons/Search-close.png)
+  skin/classic/global/icons/Search-glass.png               (../../windows/global/icons/Search-glass.png)
+  skin/classic/global/icons/tabprompts-bgtexture.png       (../../windows/global/icons/tabprompts-bgtexture.png)
+  skin/classic/global/icons/Warning.png                    (../../windows/global/icons/Warning.png)
+  skin/classic/global/icons/warning-large.png              (../../windows/global/icons/warning-large.png)
+  skin/classic/global/icons/warning-16.png                 (../../windows/global/icons/warning-16.png)
+  skin/classic/global/icons/warning-64.png                 (../../windows/global/icons/warning-64.png)
+  skin/classic/global/icons/windowControls.png             (../../windows/global/icons/windowControls.png)
+  skin/classic/global/media/TopLevelImageDocument.css      (../../windows/global/media/TopLevelImageDocument.css)
+  skin/classic/global/media/TopLevelVideoDocument.css      (../../windows/global/media/TopLevelVideoDocument.css)
+  skin/classic/global/media/imagedoc-lightnoise.png        (../../windows/global/media/imagedoc-lightnoise.png)
+  skin/classic/global/media/imagedoc-darknoise.png         (../../windows/global/media/imagedoc-darknoise.png)
+  skin/classic/global/media/videocontrols.css              (../../windows/global/media/videocontrols.css)
+  skin/classic/global/media/pauseButton.png                (../../windows/global/media/pauseButton.png)
+  skin/classic/global/media/playButton.png                 (../../windows/global/media/playButton.png)
+  skin/classic/global/media/muteButton.png                 (../../windows/global/media/muteButton.png)
+  skin/classic/global/media/unmuteButton.png               (../../windows/global/media/unmuteButton.png)
+  skin/classic/global/media/noAudio.png                    (../../windows/global/media/noAudio.png)
+  skin/classic/global/media/fullscreenButton.png           (../../windows/global/media/fullscreenButton.png)
+  skin/classic/global/media/scrubberThumb.png              (../../windows/global/media/scrubberThumb.png)
+  skin/classic/global/media/scrubberThumbWide.png          (../../windows/global/media/scrubberThumbWide.png)
+  skin/classic/global/media/throbber.png                   (../../windows/global/media/throbber.png)
+  skin/classic/global/media/stalled.png                    (../../windows/global/media/stalled.png)
+  skin/classic/global/media/volume-empty.png               (../../windows/global/media/volume-empty.png)
+  skin/classic/global/media/volume-full.png                (../../windows/global/media/volume-full.png)
+  skin/classic/global/media/error.png                      (../../windows/global/media/error.png)
+  skin/classic/global/media/clicktoplay-bgtexture.png      (../../windows/global/media/clicktoplay-bgtexture.png)
+  skin/classic/global/media/videoClickToPlayButton.svg     (../../windows/global/media/videoClickToPlayButton.svg)
+  skin/classic/global/printpreview/arrow-left.png          (../../windows/global/printpreview/arrow-left.png)
+  skin/classic/global/printpreview/arrow-left-end.png      (../../windows/global/printpreview/arrow-left-end.png)
+  skin/classic/global/printpreview/arrow-right.png         (../../windows/global/printpreview/arrow-right.png)
+  skin/classic/global/printpreview/arrow-right-end.png     (../../windows/global/printpreview/arrow-right-end.png)
+  skin/classic/global/radio/radio-check.gif                (../../windows/global/radio/radio-check.gif)
+  skin/classic/global/radio/radio-check-dis.gif            (../../windows/global/radio/radio-check-dis.gif)
+  skin/classic/global/scrollbar/slider.gif                 (../../windows/global/scrollbar/slider.gif)
+  skin/classic/global/splitter/grip-bottom.gif             (../../windows/global/splitter/grip-bottom.gif)
+  skin/classic/global/splitter/grip-top.gif                (../../windows/global/splitter/grip-top.gif)
+  skin/classic/global/splitter/grip-left.gif               (../../windows/global/splitter/grip-left.gif)
+  skin/classic/global/splitter/grip-right.gif              (../../windows/global/splitter/grip-right.gif)
+  skin/classic/global/toolbar/chevron.gif                  (../../windows/global/toolbar/chevron.gif)
+  skin/classic/global/toolbar/chevron-inverted.png         (../../windows/global/toolbar/chevron-inverted.png)
+  skin/classic/global/tree/columnpicker.gif                (../../windows/global/tree/columnpicker.gif)
+  skin/classic/global/tree/sort-asc.png                    (../../windows/global/tree/sort-asc.png)
+  skin/classic/global/tree/sort-dsc.png                    (../../windows/global/tree/sort-dsc.png)
+  skin/classic/global/tree/sort-asc-classic.png            (../../windows/global/tree/sort-asc-classic.png)
+  skin/classic/global/tree/sort-dsc-classic.png            (../../windows/global/tree/sort-dsc-classic.png)
+  skin/classic/global/tree/twisty-clsd.png                 (../../windows/global/tree/twisty-clsd.png)
+  skin/classic/global/tree/twisty-clsd-rtl.png             (../../windows/global/tree/twisty-clsd-rtl.png)
+  skin/classic/global/tree/twisty-clsd-hover.png           (../../windows/global/tree/twisty-clsd-hover.png)
+  skin/classic/global/tree/twisty-clsd-hover-rtl.png       (../../windows/global/tree/twisty-clsd-hover-rtl.png)
+  skin/classic/global/tree/twisty-open.png                 (../../windows/global/tree/twisty-open.png)
+  skin/classic/global/tree/twisty-open-rtl.png             (../../windows/global/tree/twisty-open-rtl.png)
+  skin/classic/global/tree/twisty-open-hover.png           (../../windows/global/tree/twisty-open-hover.png)
+  skin/classic/global/tree/twisty-open-hover-rtl.png       (../../windows/global/tree/twisty-open-hover-rtl.png)
+
+  skin/classic/help/Toolbar.png                            (../../windows/help/Toolbar.png)
+  skin/classic/help/Toolbar-rtl.png                        (../../windows/help/Toolbar-rtl.png)
+  skin/classic/help/helpFileLayout.css                     (../../windows/help/helpFileLayout.css)
+  skin/classic/help/Weblink.png                            (../../windows/help/Weblink.png)
+  skin/classic/help/Weblink-rtl.png                        (../../windows/help/Weblink-rtl.png)
+
+  skin/classic/mozapps/downloads/downloadButtons.png         (../../windows/mozapps/downloads/downloadButtons.png)
+  skin/classic/mozapps/downloads/unknownContentType.css      (../../windows/mozapps/downloads/unknownContentType.css)
+  skin/classic/mozapps/extensions/about.css                  (../../windows/mozapps/extensions/about.css)
+  skin/classic/mozapps/extensions/blocklist.css              (../../windows/mozapps/extensions/blocklist.css)
+  skin/classic/mozapps/extensions/update.css                 (../../windows/mozapps/extensions/update.css)
+  skin/classic/mozapps/extensions/discover-logo.png          (../../windows/mozapps/extensions/discover-logo.png)
+  skin/classic/mozapps/extensions/experimentGeneric.png      (../../windows/mozapps/extensions/experimentGeneric.png)
+  skin/classic/mozapps/extensions/rating-won.png             (../../windows/mozapps/extensions/rating-won.png)
+  skin/classic/mozapps/extensions/rating-not-won.png         (../../windows/mozapps/extensions/rating-not-won.png)
+  skin/classic/mozapps/extensions/cancel.png                 (../../windows/mozapps/extensions/cancel.png)
+  skin/classic/mozapps/extensions/eula.css                   (../../windows/mozapps/extensions/eula.css)
+  skin/classic/mozapps/handling/handling.css                 (../../windows/mozapps/handling/handling.css)
+#ifdef MOZ_PLACES
+  skin/classic/mozapps/places/defaultFavicon@2x.png          (../../windows/mozapps/places/defaultFavicon@2x.png)
+#endif
+  skin/classic/mozapps/plugins/pluginBlocked-64.png          (../../windows/mozapps/plugins/pluginBlocked-64.png)
+  skin/classic/mozapps/plugins/pluginHelp-16.png             (../../windows/mozapps/plugins/pluginHelp-16.png)
+  skin/classic/mozapps/profile/profileSelection.css          (../../windows/mozapps/profile/profileSelection.css)
+  skin/classic/mozapps/update/downloadButtons.png            (../../windows/mozapps/update/downloadButtons.png)
+* skin/classic/mozapps/xpinstall/xpinstallConfirm.css        (../../windows/mozapps/extensions/xpinstallConfirm.css)
+
+#if MOZ_BUILD_APP == browser
+[browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar:
+#elif MOZ_SEPARATE_MANIFEST_FOR_THEME_OVERRIDES
+[extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar:
+#endif
+% override chrome://global/skin/arrow/arrow-lft-hov.gif           chrome://global/skin/arrow/arrow-lft.gif
+% override chrome://global/skin/arrow/arrow-rit-hov.gif           chrome://global/skin/arrow/arrow-rit.gif
+% override chrome://mozapps/skin/extensions/category-dictionaries.png     chrome://mozapps/skin/extensions/dictionaryGeneric.png
+% override chrome://mozapps/skin/extensions/category-experiments.png      chrome://mozapps/skin/extensions/experimentGeneric.png
+% override chrome://mozapps/skin/extensions/category-extensions.svg       chrome://mozapps/skin/extensions/extensionGeneric.svg
+% override chrome://mozapps/skin/extensions/category-languages.png        chrome://mozapps/skin/extensions/localeGeneric.png
+% override chrome://mozapps/skin/extensions/category-themes.png           chrome://mozapps/skin/extensions/themeGeneric.png
+% override chrome://mozapps/skin/plugins/notifyPluginCrashed.png          chrome://mozapps/skin/plugins/pluginGeneric-16.png
+% override chrome://mozapps/skin/plugins/notifyPluginGeneric.png          chrome://mozapps/skin/plugins/pluginGeneric-16.png
+% override chrome://mozapps/skin/xpinstall/xpinstallItemGeneric.png       chrome://mozapps/skin/extensions/extensionGeneric.png
+
--- a/toolkit/themes/windows/global/jar.mn
+++ b/toolkit/themes/windows/global/jar.mn
@@ -1,196 +1,70 @@
 # 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/.
 
+#include ../../shared/non-mac.jar.inc.mn
+
 toolkit.jar:
-% skin global classic/1.0 %skin/classic/global/
-#include ../../shared/jar.inc.mn
-  skin/classic/global/arrow.css
 * skin/classic/global/autocomplete.css
   skin/classic/global/button.css
   skin/classic/global/checkbox.css
   skin/classic/global/colorpicker.css
   skin/classic/global/commonDialog.css
-  skin/classic/global/customizeToolbar.css
-  skin/classic/global/datetimepicker.css
-  skin/classic/global/dialog.css
   skin/classic/global/dropmarker.css
-  skin/classic/global/expander.css
-  skin/classic/global/filefield.css
   skin/classic/global/filepicker.css
+  skin/classic/global/Filepicker.png                       (filepicker/Filepicker.png)
   skin/classic/global/findBar.css
 * skin/classic/global/global.css
-  skin/classic/global/globalBindings.xml
   skin/classic/global/groupbox.css
-  skin/classic/global/linkTree.css
   skin/classic/global/listbox.css
 * skin/classic/global/menu.css
   skin/classic/global/menulist.css
   skin/classic/global/netError.css
   skin/classic/global/numberbox.css
 * skin/classic/global/notification.css
-  skin/classic/global/passwordmgr.css
 * skin/classic/global/popup.css
   skin/classic/global/preferences.css
   skin/classic/global/printPageSetup.css
   skin/classic/global/printPreview.css
-  skin/classic/global/progressmeter.css
   skin/classic/global/radio.css
-  skin/classic/global/resizer.css
-  skin/classic/global/richlistbox.css
-  skin/classic/global/scale.css
-  skin/classic/global/scrollbars.css                       (xulscrollbars.css)
   skin/classic/global/scrollbox.css
-  skin/classic/global/spinbuttons.css
   skin/classic/global/splitter.css
   skin/classic/global/tabbox.css
-  skin/classic/global/tabprompts.css
   skin/classic/global/textbox.css
   skin/classic/global/toolbar.css
   skin/classic/global/toolbarbutton.css
 * skin/classic/global/tree.css
-  skin/classic/global/wizard.css
   skin/classic/global/alerts/alert.css                     (alerts/alert.css)
-  skin/classic/global/arrow/arrow-dn.gif                   (arrow/arrow-dn.gif)
-  skin/classic/global/arrow/arrow-dn-dis.gif               (arrow/arrow-dn-dis.gif)
-  skin/classic/global/arrow/arrow-dn-hov.gif               (arrow/arrow-dn-hov.gif)
-  skin/classic/global/arrow/arrow-dn-sharp.gif             (arrow/arrow-dn-sharp.gif)
-  skin/classic/global/arrow/arrow-down.png                 (arrow/arrow-down.png)
-  skin/classic/global/arrow/arrow-lft.gif                  (arrow/arrow-lft.gif)
-  skin/classic/global/arrow/arrow-lft-dis.gif              (arrow/arrow-lft-dis.gif)
-  skin/classic/global/arrow/arrow-lft-sharp.gif            (arrow/arrow-lft-sharp.gif)
-  skin/classic/global/arrow/arrow-lft-sharp-end.gif        (arrow/arrow-lft-sharp-end.gif)
-  skin/classic/global/arrow/arrow-rit.gif                  (arrow/arrow-rit.gif)
-  skin/classic/global/arrow/arrow-rit-dis.gif              (arrow/arrow-rit-dis.gif)
-  skin/classic/global/arrow/arrow-rit-sharp.gif            (arrow/arrow-rit-sharp.gif)
-  skin/classic/global/arrow/arrow-rit-sharp-end.gif        (arrow/arrow-rit-sharp-end.gif)
-  skin/classic/global/arrow/arrow-up.gif                   (arrow/arrow-up.gif)
-  skin/classic/global/arrow/arrow-up-dis.gif               (arrow/arrow-up-dis.gif)
-  skin/classic/global/arrow/arrow-up-hov.gif               (arrow/arrow-up-hov.gif)
-  skin/classic/global/arrow/arrow-up-sharp.gif             (arrow/arrow-up-sharp.gif)
-  skin/classic/global/arrow/panelarrow-horizontal.svg      (arrow/panelarrow-horizontal.svg)
-  skin/classic/global/arrow/panelarrow-vertical.svg        (arrow/panelarrow-vertical.svg)
-  skin/classic/global/arrow/panelarrow-horizontal-themed.svg (arrow/panelarrow-horizontal-themed.svg)
-  skin/classic/global/arrow/panelarrow-vertical-themed.svg   (arrow/panelarrow-vertical-themed.svg)
-  skin/classic/global/checkbox/cbox-check.gif              (checkbox/cbox-check.gif)
-  skin/classic/global/checkbox/cbox-check-dis.gif          (checkbox/cbox-check-dis.gif)
 * skin/classic/global/console/console.css                  (console/console.css)
   skin/classic/global/console/console-toolbar.png          (console/console-toolbar.png)
-  skin/classic/global/console/console-error-caret.gif      (console/console-error-caret.gif)
-  skin/classic/global/console/console-error-dash.gif       (console/console-error-dash.gif)
-  skin/classic/global/console/itemSelected.png             (console/itemSelected.png)
-* skin/classic/global/dirListing/dirListing.css            (dirListing/dirListing.css)
-  skin/classic/global/dirListing/folder.png                (dirListing/folder.png)
-  skin/classic/global/dirListing/local.png                 (dirListing/local.png)
   skin/classic/global/dirListing/remote.png                (dirListing/remote.png)
-  skin/classic/global/dirListing/up.png                    (dirListing/up.png)
-  skin/classic/global/Filepicker.png                       (filepicker/Filepicker.png)
-  skin/classic/global/icons/autoscroll.png                 (icons/autoscroll.png)
   skin/classic/global/icons/autocomplete-search.svg        (icons/autocomplete-search.svg)
   skin/classic/global/icons/blacklist_favicon.png          (icons/blacklist_favicon.png)
   skin/classic/global/icons/blacklist_large.png            (icons/blacklist_large.png)
-  skin/classic/global/icons/Close.gif                      (icons/Close.gif)
-  skin/classic/global/icons/close.png                      (icons/close.png)
-  skin/classic/global/icons/close@2x.png                   (icons/close@2x.png)
   skin/classic/global/icons/close-XPVista7.png             (icons/close-XPVista7.png)
   skin/classic/global/icons/close-XPVista7@2x.png          (icons/close-XPVista7@2x.png)
-  skin/classic/global/icons/close-inverted.png             (icons/close-inverted.png)
-  skin/classic/global/icons/close-inverted@2x.png          (icons/close-inverted@2x.png)
   skin/classic/global/icons/close-inverted-XPVista7.png    (icons/close-inverted-XPVista7.png)
   skin/classic/global/icons/close-inverted-XPVista7@2x.png (icons/close-inverted-XPVista7@2x.png)
-  skin/classic/global/icons/collapse.png                   (icons/collapse.png)
-  skin/classic/global/icons/Error.png                      (icons/Error.png)
-  skin/classic/global/icons/error-16.png                   (icons/error-16.png)
-  skin/classic/global/icons/error-64.png                   (icons/error-64.png)
-  skin/classic/global/icons/expand.png                     (icons/expand.png)
-  skin/classic/global/icons/find-arrows.png                (icons/find-arrows.png)
-  skin/classic/global/icons/folder-item.png                (icons/folder-item.png)
-  skin/classic/global/icons/information-16.png             (icons/information-16.png)
-  skin/classic/global/icons/information-24.png             (icons/information-24.png)
-  skin/classic/global/icons/information-32.png             (icons/information-32.png)
   skin/classic/global/icons/loading_16.png                 (icons/loading_16.png)
-  skin/classic/global/icons/Minimize.gif                   (icons/Minimize.gif)
-  skin/classic/global/icons/Print-preview.png              (icons/Print-preview.png)
-  skin/classic/global/icons/Portrait.png                   (icons/Portrait.png)
-  skin/classic/global/icons/Landscape.png                  (icons/Landscape.png)
-  skin/classic/global/icons/Question.png                   (icons/Question.png)
-  skin/classic/global/icons/question-16.png                (icons/question-16.png)
-  skin/classic/global/icons/question-64.png                (icons/question-64.png)
   skin/classic/global/icons/resizer.png                    (icons/resizer.png)
-  skin/classic/global/icons/resizer-rtl.png                (icons/resizer-rtl.png)
-  skin/classic/global/icons/Restore.gif                    (icons/Restore.gif)
-  skin/classic/global/icons/Search-close.png               (icons/Search-close.png)
-  skin/classic/global/icons/Search-glass.png               (icons/Search-glass.png)
   skin/classic/global/icons/sslWarning.png                 (icons/sslWarning.png)
-  skin/classic/global/icons/tabprompts-bgtexture.png       (icons/tabprompts-bgtexture.png)
-  skin/classic/global/icons/Warning.png                    (icons/Warning.png)
-  skin/classic/global/icons/warning-large.png              (icons/warning-large.png)
-  skin/classic/global/icons/warning-16.png                 (icons/warning-16.png)
-  skin/classic/global/icons/warning-64.png                 (icons/warning-64.png)
-  skin/classic/global/icons/windowControls.png             (icons/windowControls.png)
   skin/classic/global/icons/webapps-16.png                 (icons/webapps-16.png)
   skin/classic/global/icons/webapps-64.png                 (icons/webapps-64.png)
-  skin/classic/global/media/TopLevelImageDocument.css      (media/TopLevelImageDocument.css)
-  skin/classic/global/media/TopLevelVideoDocument.css      (media/TopLevelVideoDocument.css)
-  skin/classic/global/media/imagedoc-lightnoise.png        (media/imagedoc-lightnoise.png)
-  skin/classic/global/media/imagedoc-darknoise.png         (media/imagedoc-darknoise.png)
-  skin/classic/global/media/videocontrols.css              (media/videocontrols.css)
-  skin/classic/global/media/pauseButton.png                (media/pauseButton.png)
-  skin/classic/global/media/playButton.png                 (media/playButton.png)
-  skin/classic/global/media/muteButton.png                 (media/muteButton.png)
-  skin/classic/global/media/unmuteButton.png               (media/unmuteButton.png)
-  skin/classic/global/media/noAudio.png                    (media/noAudio.png)
-  skin/classic/global/media/fullscreenButton.png           (media/fullscreenButton.png)
-  skin/classic/global/media/scrubberThumb.png              (media/scrubberThumb.png)
-  skin/classic/global/media/scrubberThumbWide.png          (media/scrubberThumbWide.png)
-  skin/classic/global/media/throbber.png                   (media/throbber.png)
-  skin/classic/global/media/stalled.png                    (media/stalled.png)
-  skin/classic/global/media/volume-empty.png               (media/volume-empty.png)
-  skin/classic/global/media/volume-full.png                (media/volume-full.png)
-  skin/classic/global/media/error.png                      (media/error.png)
-  skin/classic/global/media/clicktoplay-bgtexture.png      (media/clicktoplay-bgtexture.png)
-  skin/classic/global/media/videoClickToPlayButton.svg     (media/videoClickToPlayButton.svg)
 * skin/classic/global/in-content/common.css                (in-content/common.css)
 * skin/classic/global/in-content/info-pages.css            (in-content/info-pages.css)
-  skin/classic/global/printpreview/arrow-left.png          (printpreview/arrow-left.png)
-  skin/classic/global/printpreview/arrow-left-end.png      (printpreview/arrow-left-end.png)
-  skin/classic/global/printpreview/arrow-right.png         (printpreview/arrow-right.png)
-  skin/classic/global/printpreview/arrow-right-end.png     (printpreview/arrow-right-end.png)
-  skin/classic/global/radio/radio-check.gif                (radio/radio-check.gif)
-  skin/classic/global/radio/radio-check-dis.gif            (radio/radio-check-dis.gif)
-  skin/classic/global/scrollbar/slider.gif                 (scrollbar/slider.gif)
-  skin/classic/global/splitter/grip-bottom.gif             (splitter/grip-bottom.gif)
-  skin/classic/global/splitter/grip-top.gif                (splitter/grip-top.gif)
-  skin/classic/global/splitter/grip-left.gif               (splitter/grip-left.gif)
-  skin/classic/global/splitter/grip-right.gif              (splitter/grip-right.gif)
-  skin/classic/global/toolbar/chevron.gif                  (toolbar/chevron.gif)
-  skin/classic/global/toolbar/chevron-inverted.png         (toolbar/chevron-inverted.png)
   skin/classic/global/toolbar/spring.png                   (toolbar/spring.png)
-  skin/classic/global/tree/columnpicker.gif                (tree/columnpicker.gif)
-  skin/classic/global/tree/sort-asc.png                    (tree/sort-asc.png)
-  skin/classic/global/tree/sort-dsc.png                    (tree/sort-dsc.png)
-  skin/classic/global/tree/sort-asc-classic.png            (tree/sort-asc-classic.png)
-  skin/classic/global/tree/sort-dsc-classic.png            (tree/sort-dsc-classic.png)
-  skin/classic/global/tree/twisty-clsd.png                 (tree/twisty-clsd.png)
-  skin/classic/global/tree/twisty-clsd-rtl.png             (tree/twisty-clsd-rtl.png)
-  skin/classic/global/tree/twisty-clsd-hover.png           (tree/twisty-clsd-hover.png)
-  skin/classic/global/tree/twisty-clsd-hover-rtl.png       (tree/twisty-clsd-hover-rtl.png)
-  skin/classic/global/tree/twisty-open.png                 (tree/twisty-open.png)
-  skin/classic/global/tree/twisty-open-rtl.png             (tree/twisty-open-rtl.png)
-  skin/classic/global/tree/twisty-open-hover.png           (tree/twisty-open-hover.png)
-  skin/classic/global/tree/twisty-open-hover-rtl.png       (tree/twisty-open-hover-rtl.png)
 
-#ifdef XP_WIN
   skin/classic/global/console/console-toolbar-XP.png             (console/console-toolbar-XP.png)
   skin/classic/global/dirListing/folder-XP.png                   (dirListing/folder-XP.png)
   skin/classic/global/dirListing/local-XP.png                    (dirListing/local-XP.png)
   skin/classic/global/dirListing/remote-XP.png                   (dirListing/remote-XP.png)
   skin/classic/global/dirListing/up-XP.png                       (dirListing/up-XP.png)
+  skin/classic/global/icons/autoscroll.png                       (icons/autoscroll.png)
   skin/classic/global/icons/autoscroll-XP.png                    (icons/autoscroll-XP.png)
   skin/classic/global/icons/blacklist_favicon-XP.png             (icons/blacklist_favicon-XP.png)
   skin/classic/global/icons/blacklist_large-XP.png               (icons/blacklist_large-XP.png)
   skin/classic/global/icons/Error-XP.png                         (icons/Error-XP.png)
   skin/classic/global/icons/error-16-XP.png                      (icons/error-16-XP.png)
   skin/classic/global/icons/error-64-XP.png                      (icons/error-64-XP.png)
   skin/classic/global/icons/folder-item-XP.png                   (icons/folder-item-XP.png)
   skin/classic/global/icons/information-16-XP.png                (icons/information-16-XP.png)
@@ -263,17 +137,8 @@ toolkit.jar:
 % override chrome://global/skin/tree/sort-dsc.png                 chrome://global/skin/tree/sort-dsc-XP.png                osversion<6
 % override chrome://global/skin/tree/twisty-clsd.png              chrome://global/skin/tree/twisty-clsd-XP.png             osversion<6
 % override chrome://global/skin/tree/twisty-open.png              chrome://global/skin/tree/twisty-open-XP.png             osversion<6
 
 % override chrome://global/skin/icons/close.png                   chrome://global/skin/icons/close-XPVista7.png            osversion<=6.1
 % override chrome://global/skin/icons/close@2x.png                chrome://global/skin/icons/close-XPVista7@2x.png         osversion<=6.1
 % override chrome://global/skin/icons/close-inverted.png          chrome://global/skin/icons/close-inverted-XPVista7.png   osversion<=6.1
 % override chrome://global/skin/icons/close-inverted@2x.png       chrome://global/skin/icons/close-inverted-XPVista7@2x.png osversion<=6.1
-#endif
-
-#if MOZ_BUILD_APP == browser
-[browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar:
-#elif MOZ_SEPARATE_MANIFEST_FOR_THEME_OVERRIDES
-[extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar:
-#endif
-% override chrome://global/skin/arrow/arrow-lft-hov.gif           chrome://global/skin/arrow/arrow-lft.gif
-% override chrome://global/skin/arrow/arrow-rit-hov.gif           chrome://global/skin/arrow/arrow-rit.gif
--- a/toolkit/themes/windows/help/jar.mn
+++ b/toolkit/themes/windows/help/jar.mn
@@ -1,12 +1,6 @@
 # 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/.
 
 toolkit.jar:
-% skin help classic/1.0 %skin/classic/help/
   skin/classic/help/help.css
-  skin/classic/help/Toolbar.png
-  skin/classic/help/Toolbar-rtl.png
-  skin/classic/help/helpFileLayout.css
-  skin/classic/help/Weblink.png
-  skin/classic/help/Weblink-rtl.png
--- a/toolkit/themes/windows/mozapps/jar.mn
+++ b/toolkit/themes/windows/mozapps/jar.mn
@@ -1,64 +1,45 @@
 # 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/.
 
 toolkit.jar:
-% skin mozapps classic/1.0 %skin/classic/mozapps/
 #include ../../shared/mozapps.inc.mn
-  skin/classic/mozapps/downloads/downloadButtons.png         (downloads/downloadButtons.png)
   skin/classic/mozapps/downloads/downloadIcon.png            (downloads/downloadIcon.png)
   skin/classic/mozapps/downloads/downloads.css               (downloads/downloads.css)
-  skin/classic/mozapps/downloads/unknownContentType.css      (downloads/unknownContentType.css)
   skin/classic/mozapps/extensions/about.css                  (extensions/about.css)
-  skin/classic/mozapps/extensions/blocklist.css              (extensions/blocklist.css)
 * skin/classic/mozapps/extensions/extensions.css             (extensions/extensions.css)
 * skin/classic/mozapps/extensions/selectAddons.css           (extensions/selectAddons.css)
-  skin/classic/mozapps/extensions/update.css                 (extensions/update.css)
   skin/classic/mozapps/extensions/category-search.png        (extensions/category-search.png)
   skin/classic/mozapps/extensions/category-discover.png      (extensions/category-discover.png)
   skin/classic/mozapps/extensions/category-plugins.png       (extensions/category-plugins.png)
   skin/classic/mozapps/extensions/category-service.png       (extensions/category-service.png)
   skin/classic/mozapps/extensions/category-recent.png        (extensions/category-recent.png)
   skin/classic/mozapps/extensions/category-available.png     (extensions/category-available.png)
-  skin/classic/mozapps/extensions/discover-logo.png          (extensions/discover-logo.png)
   skin/classic/mozapps/extensions/extensionGeneric-16.png    (extensions/extensionGeneric-16.png)
   skin/classic/mozapps/extensions/themeGeneric.png           (extensions/themeGeneric.png)
   skin/classic/mozapps/extensions/themeGeneric-16.png        (extensions/themeGeneric-16.png)
   skin/classic/mozapps/extensions/dictionaryGeneric.png      (extensions/dictionaryGeneric.png)
   skin/classic/mozapps/extensions/dictionaryGeneric-16.png   (extensions/dictionaryGeneric-16.png)
-  skin/classic/mozapps/extensions/experimentGeneric.png      (extensions/experimentGeneric.png)
   skin/classic/mozapps/extensions/localeGeneric.png          (extensions/localeGeneric.png)
-  skin/classic/mozapps/extensions/rating-won.png             (extensions/rating-won.png)
-  skin/classic/mozapps/extensions/rating-not-won.png         (extensions/rating-not-won.png)
-  skin/classic/mozapps/extensions/cancel.png                 (extensions/cancel.png)
   skin/classic/mozapps/extensions/heart.png                  (extensions/heart.png)
-  skin/classic/mozapps/extensions/eula.css                   (extensions/eula.css)
 * skin/classic/mozapps/extensions/newaddon.css               (extensions/newaddon.css)
-  skin/classic/mozapps/handling/handling.css                 (handling/handling.css)
   skin/classic/mozapps/passwordmgr/key.png                   (passwordmgr/key.png)
   skin/classic/mozapps/passwordmgr/key-16.png                (passwordmgr/key-16.png)
   skin/classic/mozapps/passwordmgr/key-64.png                (passwordmgr/key-64.png)
 #ifdef MOZ_PLACES
   skin/classic/mozapps/places/defaultFavicon.png             (places/defaultFavicon.png)
-  skin/classic/mozapps/places/defaultFavicon@2x.png          (places/defaultFavicon@2x.png)
 #endif
   skin/classic/mozapps/plugins/pluginGeneric.png             (plugins/pluginGeneric.png)
   skin/classic/mozapps/plugins/pluginBlocked.png             (plugins/pluginBlocked.png)
-  skin/classic/mozapps/plugins/pluginBlocked-64.png          (plugins/pluginBlocked-64.png)
   skin/classic/mozapps/plugins/pluginGeneric-16.png          (plugins/pluginGeneric-16.png)
-  skin/classic/mozapps/plugins/pluginHelp-16.png             (plugins/pluginHelp-16.png)
   skin/classic/mozapps/profile/profileicon.png               (profile/profileicon.png)
-  skin/classic/mozapps/profile/profileSelection.css          (profile/profileSelection.css)
-  skin/classic/mozapps/update/downloadButtons.png            (update/downloadButtons.png)
   skin/classic/mozapps/update/updates.css                    (update/updates.css)
   skin/classic/mozapps/viewsource/viewsource.css             (viewsource/viewsource.css)
-* skin/classic/mozapps/xpinstall/xpinstallConfirm.css        (extensions/xpinstallConfirm.css)
-#ifdef XP_WIN
   skin/classic/mozapps/downloads/downloadButtons-XP.png      (downloads/downloadButtons-XP.png)
   skin/classic/mozapps/downloads/downloadIcon-XP.png         (downloads/downloadIcon-XP.png)
   skin/classic/mozapps/extensions/category-discover-XP.png   (extensions/category-discover-XP.png)
   skin/classic/mozapps/extensions/category-plugins-XP.png    (extensions/category-plugins-XP.png)
   skin/classic/mozapps/extensions/category-recent-XP.png     (extensions/category-recent-XP.png)
   skin/classic/mozapps/extensions/category-available-XP.png  (extensions/category-available-XP.png)
   skin/classic/mozapps/extensions/extensionGeneric-16-XP.png (extensions/extensionGeneric-16-XP.png)
   skin/classic/mozapps/extensions/themeGeneric-XP.png        (extensions/themeGeneric-XP.png)
@@ -85,22 +66,8 @@ toolkit.jar:
 % override chrome://mozapps/skin/extensions/themeGeneric.png              chrome://mozapps/skin/extensions/themeGeneric-XP.png          osversion<6
 % override chrome://mozapps/skin/extensions/themeGeneric-16.png           chrome://mozapps/skin/extensions/themeGeneric-16-XP.png       osversion<6
 % override chrome://mozapps/skin/extensions/localeGeneric.png             chrome://mozapps/skin/extensions/localeGeneric-XP.png         osversion<6
 % override chrome://mozapps/skin/plugins/pluginGeneric.png                chrome://mozapps/skin/plugins/pluginGeneric-XP.png            osversion<6
 % override chrome://mozapps/skin/plugins/pluginBlocked.png                chrome://mozapps/skin/plugins/pluginBlocked-XP.png            osversion<6
 % override chrome://mozapps/skin/plugins/pluginGeneric-16.png             chrome://mozapps/skin/plugins/pluginGeneric-16-XP.png         osversion<6
 % override chrome://mozapps/skin/profile/profileicon.png                  chrome://mozapps/skin/profile/profileicon-XP.png              osversion<6
 % override chrome://mozapps/skin/update/downloadButtons.png               chrome://mozapps/skin/update/downloadButtons-XP.png           osversion<6
-#endif
-
-#if MOZ_BUILD_APP == browser
-[browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar:
-#elif MOZ_SEPARATE_MANIFEST_FOR_THEME_OVERRIDES
-[extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}] chrome.jar:
-#endif
-% override chrome://mozapps/skin/extensions/category-dictionaries.png     chrome://mozapps/skin/extensions/dictionaryGeneric.png
-% override chrome://mozapps/skin/extensions/category-experiments.png      chrome://mozapps/skin/extensions/experimentGeneric.png
-% override chrome://mozapps/skin/extensions/category-extensions.svg       chrome://mozapps/skin/extensions/extensionGeneric.svg
-% override chrome://mozapps/skin/extensions/category-languages.png        chrome://mozapps/skin/extensions/localeGeneric.png
-% override chrome://mozapps/skin/extensions/category-themes.png           chrome://mozapps/skin/extensions/themeGeneric.png
-% override chrome://mozapps/skin/plugins/notifyPluginCrashed.png          chrome://mozapps/skin/plugins/pluginGeneric-16.png
-% override chrome://mozapps/skin/plugins/notifyPluginGeneric.png          chrome://mozapps/skin/plugins/pluginGeneric-16.png
--- a/webapprt/themes/linux/jar.mn
+++ b/webapprt/themes/linux/jar.mn
@@ -1,7 +1,9 @@
 # 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/.
 
 webapprt.jar:
-+ skin/classic/webapprt/downloads/downloadIcon.png          (downloads/downloadIcon.png)
-+ skin/classic/webapprt/downloads/downloads.css             (downloads/downloads.css)
+% skin webapprt classic/1.0 %skin/classic/webapprt/
+  skin/classic/webapprt/downloads/downloadButtons.png       (../windows/downloads/downloadButtons.png)
+  skin/classic/webapprt/downloads/downloadIcon.png          (downloads/downloadIcon.png)
+  skin/classic/webapprt/downloads/downloads.css             (downloads/downloads.css)
--- a/webapprt/themes/moz.build
+++ b/webapprt/themes/moz.build
@@ -10,13 +10,13 @@
 # Windows                 windows (toolkit/themes/windows)
 # GNOME/Linux             windows (toolkit/themes/windows) +
 #                         linux overrides (toolkit/themes/linux)
 
 toolkit = CONFIG['MOZ_WIDGET_TOOLKIT']
 
 if toolkit == 'cocoa':
     DIRS += ['osx']
+elif toolkit in ('gtk2', 'gtk3', 'qt'):
+    DIRS += ['linux']
 else:
     DIRS += ['windows']
 
-    if toolkit in ('gtk2', 'gtk3', 'qt'):
-        DIRS += ['linux']
--- a/webapprt/themes/windows/jar.mn
+++ b/webapprt/themes/windows/jar.mn
@@ -5,10 +5,10 @@
 webapprt.jar:
 % skin webapprt classic/1.0 %skin/classic/webapprt/
         skin/classic/webapprt/downloads/downloadButtons.png         (downloads/downloadButtons.png)
         skin/classic/webapprt/downloads/downloadButtons-XP.png      (downloads/downloadButtons-XP.png)
         skin/classic/webapprt/downloads/downloadIcon.png            (downloads/downloadIcon.png)
         skin/classic/webapprt/downloads/downloadIcon-XP.png         (downloads/downloadIcon-XP.png)
         skin/classic/webapprt/downloads/downloads.css               (downloads/downloads.css)
 
-% override chrome://webapprt/skin/downloads/downloadButtons.png     chrome://webapprt/skin/downloads/downloadButtons-XP.png  os=WINNT osversion<6
-% override chrome://webapprt/skin/downloads/downloadIcon.png        chrome://webapprt/skin/downloads/downloadIcon-XP.png     os=WINNT osversion<6
+% override chrome://webapprt/skin/downloads/downloadButtons.png     chrome://webapprt/skin/downloads/downloadButtons-XP.png  osversion<6
+% override chrome://webapprt/skin/downloads/downloadIcon.png        chrome://webapprt/skin/downloads/downloadIcon-XP.png     osversion<6