Merge mozilla-central to mozilla-inbound

This commit is contained in:
Carsten "Tomcat" Book 2016-04-05 16:54:06 +02:00
commit dfee85ecef
110 changed files with 1711 additions and 724 deletions

View File

@ -611,6 +611,8 @@ var settingsToObserve = {
},
'app.update.interval': 86400,
'apz.overscroll.enabled': true,
'browser.safebrowsing.enabled': true,
'browser.safebrowsing.malware.enabled': true,
'debug.fps.enabled': {
prefName: 'layers.acceleration.draw-fps',
defaultValue: false

View File

@ -21,15 +21,15 @@
<!--
B2G repositories for all targets
-->
<project name="gaia" path="gaia" remote="mozillaorg" revision="eeedf205f728573c570c3b86f71d51916288bd04"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b2254b3e272133e9286d5986960e66bdecac0eb"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="a954bd2954c422b7d24d92cfd73000cb455dce44"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="19150d320e6802ec211ccc5e74c254ae9992312d"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="99c333dab00ed79baff9e1cf76b320aee8e1c123"/>
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="34adfb400e031f3dd3353d92413572db5e3a7376"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="ac4e539dbd73522c466ebffba53edea61702082f"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="f1a61fa8f97cc0a1ac4eca160acc222981b21d90"/>
<project name="platform_system_sensorsd" path="system/sensorsd" remote="b2g" revision="3618678c472320de386f5ddc27897992d0e148a8"/>
<!-- B2G specific things. -->
<project name="platform_build" path="build" remote="b2g" revision="be4b291a90b371b41b62ade68c31ad173bb87baa">
<project name="platform_build" path="build" remote="b2g" revision="aee7ff3dba262a037559d360b62af429b62cb876">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
@ -38,15 +38,17 @@
<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="fc7902b057d00a3bd94548bec58e5c04ec5643f7"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="7c5a77c651bcde37005e6b6e209747edcc6c9361"/>
<!-- Stock Android things -->
<project groups="pdk,linux" name="platform/prebuilts/clang/linux-x86/host/3.5" path="prebuilts/clang/linux-x86/host/3.5" revision="0f86914b89cf8a069533e66b218533a17bad6b43"/>
<project groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" revision="6b1fb5b730b1299f99f9194c1fcf088579cc7977"/>
<project groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8" path="prebuilts/gcc/linux-x86/arm/arm-eabi-4.8" revision="755656d9a7c79c6463920ad13f95d71e45e21397"/>
<project groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" revision="ad086223028d281b2ea95f0f42f23ff4435917dd"/>
<project depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" remote="caf" revision="c09e1b3a55153d1ba142d5bf548c90487ea71f9e"/>
<project groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6" revision="94d88f335cdc90bf43471bacf243006e99cff908"/>
<project groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" revision="ac160a43fddd833d4a0bc430f44f8b1956bac1e9"/>
<project groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.8" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.8" revision="966dbeff106bf36966d4c80a4f2c58a464ae314e"/>
<project depth="1" groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" remote="caf" revision="c33513f9de95fcdf4ec832db5e3ebd612382f541"/>
<project groups="linux" name="platform/prebuilts/python/linux-x86/2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="accd992f11a8ec0a0ec52cdc891302dc54e2941e"/>
<project name="device/common" path="device/common" revision="cf1543ff569188c1df9f4e9c7fa53b75393c49e3"/>
<project name="device/sample" path="device/sample" revision="3bbddd699b3e093a664aae7d9a63032b798b561b"/>
@ -139,7 +141,7 @@
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="3881c90cec9a89b1b1e13c97af537647dcf63c71"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="a259bbcab27bb60bb75b16bce581549c724954cc"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="a6dda1861aee67e18947fee510e4e85f8c1ffeb7"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bb356d6505f914347690c8143dbd03af427dd07e"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="6c9cebe5892c69e8b4bb2ea4e202f36ad095a4f0"/>
<project name="platform/system/extras" path="system/extras" revision="7eb50bad98466762626ae1dd31df2acd77202c06"/>
<project name="platform/system/media" path="system/media" revision="9de34d557017fe115051fbbd49f05564de6ba3de"/>
<project name="platform/system/netd" path="system/netd" revision="313c71603fbfa643ff5f62f4fb3c26aa4696435c"/>
@ -169,7 +171,7 @@
<!-- Sony platform specific things -->
<project name="codeaurora_kernel_msm" path="kernel" remote="b2g" revision="36e3286b400566d0cfe9ea9f54ca76039910bf92"/>
<project name="device-qcom-sepolicy" path="device/qcom/sepolicy" remote="b2g" revision="e0a1cce6a8559ccc88e15da148531d36e18ae5f7"/>
<project name="device-sony-common" path="device/sony/common" remote="b2g" revision="8956834338d21b18718149575a6c0a1466446cda"/>
<project name="device-sony-common" path="device/sony/common" remote="b2g" revision="8ef37488798b6a1340dd9aac22e9e338cab905f7"/>
<project name="android_external_busybox" path="external/busybox" remote="b2g" revision="757a15c84e7bf9897b908058f2e529fcffea73b8"/>
<project groups="device" name="init_sh" path="hardware/sony/init_sh" remote="b2g" revision="58d94ebe3a2e9a1af4bc8c003cd6837e53cc4867"/>
<project groups="device" name="macaddrsetup" path="hardware/sony/macaddrsetup" remote="b2g" revision="1e31df0400fda7d80151bd4c5441027cd49749f8"/>

View File

@ -21,12 +21,12 @@
<!--
B2G repositories for all targets
-->
<project name="gaia" path="gaia" remote="mozillaorg" revision="eeedf205f728573c570c3b86f71d51916288bd04"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b2254b3e272133e9286d5986960e66bdecac0eb"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="a954bd2954c422b7d24d92cfd73000cb455dce44"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="19150d320e6802ec211ccc5e74c254ae9992312d"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="99c333dab00ed79baff9e1cf76b320aee8e1c123"/>
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="34adfb400e031f3dd3353d92413572db5e3a7376"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="ac4e539dbd73522c466ebffba53edea61702082f"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="f1a61fa8f97cc0a1ac4eca160acc222981b21d90"/>
<project name="platform_system_sensorsd" path="system/sensorsd" remote="b2g" revision="3618678c472320de386f5ddc27897992d0e148a8"/>
<!-- B2G specific things. -->
<project name="platform_build" path="build" remote="b2g" revision="964d9fa4eabe9eb473ef9101ca2a690880f28547">
@ -38,7 +38,7 @@
<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="fc7902b057d00a3bd94548bec58e5c04ec5643f7"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="7c5a77c651bcde37005e6b6e209747edcc6c9361"/>
<!-- Stock Android things -->
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="ebdad82e61c16772f6cd47e9f11936bf6ebe9aa0"/>
@ -125,7 +125,7 @@
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="c792f0bd9fff7aea2887c60bbb3a9bbdb534ffa3"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="69d524e80cdf3981006627c65ac85f3a871238a3"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5a48c04c4bb5f079bc757e29864a42427378e051"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bb356d6505f914347690c8143dbd03af427dd07e"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="6c9cebe5892c69e8b4bb2ea4e202f36ad095a4f0"/>
<project name="platform/system/extras" path="system/extras" revision="576f57b6510de59c08568b53c0fb60588be8689e"/>
<project name="platform/system/netd" path="system/netd" revision="a6531f7befb49b1c81bc0de7e51c5482b308e1c5"/>
<project name="platform/system/security" path="system/security" revision="ee8068b9e7bfb2770635062fc9c2035be2142bd8"/>
@ -167,6 +167,7 @@
<project name="platform/system/qcom" path="system/qcom" revision="63e3f6f176caad587d42bba4c16b66d953fb23c2"/>
<project name="platform/vendor/qcom/copper" path="device/qcom/msm8974" revision="ec7bc1a26610922156d7d412b4d3de6b4adb93da"/>
<project name="vendor_broadcom_wlan" path="vendor/broadcom/wlan" remote="b2g" revision="114b9491a8a919687da4e22fbd89fab511d6d8d7"/>
<project name="nginx" path="external/nginx" remote="b2g" revision="584bf310e21510e56af7e9dccd779eb7671118ef"/>
<!-- Shinano specific things -->
<project name="device-shinano" path="device/sony/leo" remote="b2g" revision="653f7e1f093b948e40262fcb3c665c2b4976df74"/>
<!-- Aries specific things -->

View File

@ -21,12 +21,12 @@
<!--
B2G repositories for all targets
-->
<project name="gaia" path="gaia" remote="mozillaorg" revision="eeedf205f728573c570c3b86f71d51916288bd04"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b2254b3e272133e9286d5986960e66bdecac0eb"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="a954bd2954c422b7d24d92cfd73000cb455dce44"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="19150d320e6802ec211ccc5e74c254ae9992312d"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="99c333dab00ed79baff9e1cf76b320aee8e1c123"/>
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="34adfb400e031f3dd3353d92413572db5e3a7376"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="ac4e539dbd73522c466ebffba53edea61702082f"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="f1a61fa8f97cc0a1ac4eca160acc222981b21d90"/>
<project name="platform_system_sensorsd" path="system/sensorsd" remote="b2g" revision="3618678c472320de386f5ddc27897992d0e148a8"/>
<!-- B2G specific things. -->
<project name="platform_build" path="build" remote="b2g" revision="964d9fa4eabe9eb473ef9101ca2a690880f28547">
@ -38,7 +38,7 @@
<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="fc7902b057d00a3bd94548bec58e5c04ec5643f7"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="7c5a77c651bcde37005e6b6e209747edcc6c9361"/>
<!-- Stock Android things -->
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="ebdad82e61c16772f6cd47e9f11936bf6ebe9aa0"/>
@ -131,7 +131,7 @@
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="c792f0bd9fff7aea2887c60bbb3a9bbdb534ffa3"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="cfcef469537869947abb9aa1d656774cc2678d4c"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5a48c04c4bb5f079bc757e29864a42427378e051"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bb356d6505f914347690c8143dbd03af427dd07e"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="6c9cebe5892c69e8b4bb2ea4e202f36ad095a4f0"/>
<project name="platform/system/extras" path="system/extras" revision="10e78a05252b3de785f88c2d0b9ea8a428009c50"/>
<project name="platform/system/media" path="system/media" revision="188b3e51e0a2ce1e16dc8067edef7be3d2365ad9"/>
<project name="platform/system/netd" path="system/netd" revision="3ae56364946d4a5bf5a5f83f12f9a45a30398e33"/>

View File

@ -21,12 +21,12 @@
<!--
B2G repositories for all targets
-->
<project name="gaia" path="gaia" remote="mozillaorg" revision="eeedf205f728573c570c3b86f71d51916288bd04"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b2254b3e272133e9286d5986960e66bdecac0eb"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="a954bd2954c422b7d24d92cfd73000cb455dce44"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="19150d320e6802ec211ccc5e74c254ae9992312d"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="99c333dab00ed79baff9e1cf76b320aee8e1c123"/>
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="34adfb400e031f3dd3353d92413572db5e3a7376"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="ac4e539dbd73522c466ebffba53edea61702082f"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="f1a61fa8f97cc0a1ac4eca160acc222981b21d90"/>
<project name="platform_system_sensorsd" path="system/sensorsd" remote="b2g" revision="3618678c472320de386f5ddc27897992d0e148a8"/>
<default remote="caf" revision="refs/tags/android-4.0.4_r2.1" sync-j="4"/>
<!-- Gonk-specific things and forks -->

View File

@ -21,12 +21,12 @@
<!--
B2G repositories for all targets
-->
<project name="gaia" path="gaia" remote="mozillaorg" revision="eeedf205f728573c570c3b86f71d51916288bd04"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b2254b3e272133e9286d5986960e66bdecac0eb"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="a954bd2954c422b7d24d92cfd73000cb455dce44"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="19150d320e6802ec211ccc5e74c254ae9992312d"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="99c333dab00ed79baff9e1cf76b320aee8e1c123"/>
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="34adfb400e031f3dd3353d92413572db5e3a7376"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="ac4e539dbd73522c466ebffba53edea61702082f"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="f1a61fa8f97cc0a1ac4eca160acc222981b21d90"/>
<project name="platform_system_sensorsd" path="system/sensorsd" remote="b2g" revision="3618678c472320de386f5ddc27897992d0e148a8"/>
<!-- B2G specific things. -->
<project name="platform_build" path="build" remote="b2g" revision="8df1b0580ade1786bc1bf05a6abc06bcd62c2d6b">
@ -34,7 +34,7 @@
</project>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="fc7902b057d00a3bd94548bec58e5c04ec5643f7"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="7c5a77c651bcde37005e6b6e209747edcc6c9361"/>
<project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
<project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
<!-- Stock Android things -->
@ -131,7 +131,7 @@
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="842e33e43a55ea44833b9e23e4d180fa17c843af"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5db24726f0f42124304195a6bdea129039eeeaeb"/>
<project name="platform/system/bluetooth" path="system/bluetooth" revision="930ae098543881f47eac054677726ee4b998b2f8"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bb356d6505f914347690c8143dbd03af427dd07e"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="6c9cebe5892c69e8b4bb2ea4e202f36ad095a4f0"/>
<project name="platform_system_core" path="system/core" remote="b2g" revision="542d1f59dc331b472307e5bd043101d14d5a3a3e"/>
<project name="platform/system/extras" path="system/extras" revision="18c1180e848e7ab8691940481f5c1c8d22c37b3e"/>
<project name="platform/system/media" path="system/media" revision="d90b836f66bf1d9627886c96f3a2d9c3007fbb80"/>

View File

@ -21,12 +21,12 @@
<!--
B2G repositories for all targets
-->
<project name="gaia" path="gaia" remote="mozillaorg" revision="eeedf205f728573c570c3b86f71d51916288bd04"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b2254b3e272133e9286d5986960e66bdecac0eb"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="a954bd2954c422b7d24d92cfd73000cb455dce44"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="19150d320e6802ec211ccc5e74c254ae9992312d"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="99c333dab00ed79baff9e1cf76b320aee8e1c123"/>
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="34adfb400e031f3dd3353d92413572db5e3a7376"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="ac4e539dbd73522c466ebffba53edea61702082f"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="f1a61fa8f97cc0a1ac4eca160acc222981b21d90"/>
<project name="platform_system_sensorsd" path="system/sensorsd" remote="b2g" revision="3618678c472320de386f5ddc27897992d0e148a8"/>
<!-- B2G specific things. -->
<project name="platform_build" path="build" remote="b2g" revision="964d9fa4eabe9eb473ef9101ca2a690880f28547">
@ -37,7 +37,7 @@
<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="fc7902b057d00a3bd94548bec58e5c04ec5643f7"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="7c5a77c651bcde37005e6b6e209747edcc6c9361"/>
<!-- Stock Android things -->
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="f92a936f2aa97526d4593386754bdbf02db07a12"/>
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="6e47ff2790f5656b5b074407829ceecf3e6188c4"/>
@ -129,7 +129,7 @@
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="6aa61f8557a22039a30b42b7f283996381fd625d"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="b562b01c93de9578d5db537b6a602a38e1aaa0ce"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="387f03e815f57d536dd922706db1622bddba8d81"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bb356d6505f914347690c8143dbd03af427dd07e"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="6c9cebe5892c69e8b4bb2ea4e202f36ad095a4f0"/>
<project name="platform/system/extras" path="system/extras" revision="5356165f67f4a81c2ef28671c13697f1657590df"/>
<project name="platform/system/media" path="system/media" revision="be0e2fe59a8043fa5200f75697df9220a99abe9d"/>
<project name="platform/system/netd" path="system/netd" revision="36704b0da24debcab8090156568ac236315036bb"/>

View File

@ -21,15 +21,15 @@
<!--
B2G repositories for all targets
-->
<project name="gaia" path="gaia" remote="mozillaorg" revision="eeedf205f728573c570c3b86f71d51916288bd04"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b2254b3e272133e9286d5986960e66bdecac0eb"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="a954bd2954c422b7d24d92cfd73000cb455dce44"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="19150d320e6802ec211ccc5e74c254ae9992312d"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="99c333dab00ed79baff9e1cf76b320aee8e1c123"/>
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="34adfb400e031f3dd3353d92413572db5e3a7376"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="ac4e539dbd73522c466ebffba53edea61702082f"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="f1a61fa8f97cc0a1ac4eca160acc222981b21d90"/>
<project name="platform_system_sensorsd" path="system/sensorsd" remote="b2g" revision="3618678c472320de386f5ddc27897992d0e148a8"/>
<!-- B2G specific things. -->
<project name="platform_build" path="build" remote="b2g" revision="be4b291a90b371b41b62ade68c31ad173bb87baa">
<project name="platform_build" path="build" remote="b2g" revision="aee7ff3dba262a037559d360b62af429b62cb876">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
@ -37,15 +37,17 @@
<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="fc7902b057d00a3bd94548bec58e5c04ec5643f7"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="7c5a77c651bcde37005e6b6e209747edcc6c9361"/>
<!-- Stock Android things -->
<project groups="pdk,linux" name="platform/prebuilts/clang/linux-x86/host/3.5" path="prebuilts/clang/linux-x86/host/3.5" revision="ffc05a232799fe8fcb3e47b7440b52b1fb4244c0"/>
<project groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" revision="337e0ef5e40f02a1ae59b90db0548976c70a7226"/>
<project groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8" path="prebuilts/gcc/linux-x86/arm/arm-eabi-4.8" revision="8af5ff6f5dced9eb5a8127459df6c75d24342204"/>
<project groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" revision="30915518fa7ea07166efedc191a4f40aef516fe7"/>
<project depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" remote="caf" revision="c09e1b3a55153d1ba142d5bf548c90487ea71f9e"/>
<project groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6" revision="96eee58e3389fb05a835310d6a06a6ba4486097a"/>
<project groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" revision="7c8a46698171aa2e0be09edb43d15a6acf832770"/>
<project groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.8" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.8" revision="24b2038be8a636fd4a5d21f0abae1e466b07bcf7"/>
<project depth="1" groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" remote="caf" revision="c33513f9de95fcdf4ec832db5e3ebd612382f541"/>
<project groups="linux" name="platform/prebuilts/python/linux-x86/2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="ab14644af0429dfb6744e9709f9ef46fb7bf73e4"/>
<project name="device/common" path="device/common" revision="05f67c8cf7b9669da6f37f74b3388b594e319b84"/>
<project name="device/sample" path="device/sample" revision="298675b60a633253434c4829339534c08292dc92"/>
@ -139,7 +141,7 @@
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="1d080491f26dfdfd76d5bbc3e6b40c660e8565af"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="61a10cbd19d6b7fc052a8cb92dfa1b37b93754f3"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="9e892a67a01671f312c76b0880dedaa6ba478148"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bb356d6505f914347690c8143dbd03af427dd07e"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="6c9cebe5892c69e8b4bb2ea4e202f36ad095a4f0"/>
<project name="platform/system/extras" path="system/extras" revision="47fa016e2248b80aebd5928402c7409f8e0ca64e"/>
<project name="platform/system/media" path="system/media" revision="70bfebc66d9c6a4c614a8c7efde90e8e7e1d8641"/>
<project name="platform/system/netd" path="system/netd" revision="d113f0ceefa9ce29eb3c86e2d23c7417a70b4048"/>

View File

@ -21,12 +21,12 @@
<!--
B2G repositories for all targets
-->
<project name="gaia" path="gaia" remote="mozillaorg" revision="eeedf205f728573c570c3b86f71d51916288bd04"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b2254b3e272133e9286d5986960e66bdecac0eb"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="a954bd2954c422b7d24d92cfd73000cb455dce44"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="19150d320e6802ec211ccc5e74c254ae9992312d"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="99c333dab00ed79baff9e1cf76b320aee8e1c123"/>
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="34adfb400e031f3dd3353d92413572db5e3a7376"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="ac4e539dbd73522c466ebffba53edea61702082f"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="f1a61fa8f97cc0a1ac4eca160acc222981b21d90"/>
<project name="platform_system_sensorsd" path="system/sensorsd" remote="b2g" revision="3618678c472320de386f5ddc27897992d0e148a8"/>
<default remote="caf" revision="refs/tags/android-4.0.4_r2.1" sync-j="4"/>
<!-- Gonk-specific things and forks -->

View File

@ -21,12 +21,12 @@
<!--
B2G repositories for all targets
-->
<project name="gaia" path="gaia" remote="mozillaorg" revision="eeedf205f728573c570c3b86f71d51916288bd04"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b2254b3e272133e9286d5986960e66bdecac0eb"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="a954bd2954c422b7d24d92cfd73000cb455dce44"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="19150d320e6802ec211ccc5e74c254ae9992312d"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="99c333dab00ed79baff9e1cf76b320aee8e1c123"/>
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="34adfb400e031f3dd3353d92413572db5e3a7376"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="ac4e539dbd73522c466ebffba53edea61702082f"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="f1a61fa8f97cc0a1ac4eca160acc222981b21d90"/>
<project name="platform_system_sensorsd" path="system/sensorsd" remote="b2g" revision="3618678c472320de386f5ddc27897992d0e148a8"/>
<!-- B2G specific things. -->
<project name="platform_build" path="build" remote="b2g" revision="964d9fa4eabe9eb473ef9101ca2a690880f28547">
@ -38,7 +38,7 @@
<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="fc7902b057d00a3bd94548bec58e5c04ec5643f7"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="7c5a77c651bcde37005e6b6e209747edcc6c9361"/>
<!-- Stock Android things -->
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="ebdad82e61c16772f6cd47e9f11936bf6ebe9aa0"/>
@ -124,7 +124,7 @@
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="c792f0bd9fff7aea2887c60bbb3a9bbdb534ffa3"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="69d524e80cdf3981006627c65ac85f3a871238a3"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5a48c04c4bb5f079bc757e29864a42427378e051"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bb356d6505f914347690c8143dbd03af427dd07e"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="6c9cebe5892c69e8b4bb2ea4e202f36ad095a4f0"/>
<project name="platform/system/extras" path="system/extras" revision="576f57b6510de59c08568b53c0fb60588be8689e"/>
<project name="platform/system/netd" path="system/netd" revision="a6531f7befb49b1c81bc0de7e51c5482b308e1c5"/>
<project name="platform/system/security" path="system/security" revision="ee8068b9e7bfb2770635062fc9c2035be2142bd8"/>

View File

@ -1,9 +1,9 @@
{
"git": {
"git_revision": "eeedf205f728573c570c3b86f71d51916288bd04",
"git_revision": "a954bd2954c422b7d24d92cfd73000cb455dce44",
"remote": "https://git.mozilla.org/releases/gaia.git",
"branch": ""
},
"revision": "8bec48f18dee7096595892f822f8807060999859",
"revision": "e9e8c44b43178139fca915cfe97ae3c52a9afe34",
"repo_path": "integration/gaia-central"
}

View File

@ -21,12 +21,12 @@
<!--
B2G repositories for all targets
-->
<project name="gaia" path="gaia" remote="mozillaorg" revision="eeedf205f728573c570c3b86f71d51916288bd04"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b2254b3e272133e9286d5986960e66bdecac0eb"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="a954bd2954c422b7d24d92cfd73000cb455dce44"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="19150d320e6802ec211ccc5e74c254ae9992312d"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="99c333dab00ed79baff9e1cf76b320aee8e1c123"/>
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="34adfb400e031f3dd3353d92413572db5e3a7376"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="ac4e539dbd73522c466ebffba53edea61702082f"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="f1a61fa8f97cc0a1ac4eca160acc222981b21d90"/>
<project name="platform_system_sensorsd" path="system/sensorsd" remote="b2g" revision="3618678c472320de386f5ddc27897992d0e148a8"/>
<!-- B2G specific things. -->
<project name="platform_build" path="build" remote="b2g" revision="964d9fa4eabe9eb473ef9101ca2a690880f28547">
@ -38,7 +38,7 @@
<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="fc7902b057d00a3bd94548bec58e5c04ec5643f7"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="7c5a77c651bcde37005e6b6e209747edcc6c9361"/>
<!-- Stock Android things -->
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="f92a936f2aa97526d4593386754bdbf02db07a12"/>
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="6e47ff2790f5656b5b074407829ceecf3e6188c4"/>
@ -131,7 +131,7 @@
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="6aa61f8557a22039a30b42b7f283996381fd625d"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="b562b01c93de9578d5db537b6a602a38e1aaa0ce"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="387f03e815f57d536dd922706db1622bddba8d81"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bb356d6505f914347690c8143dbd03af427dd07e"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="6c9cebe5892c69e8b4bb2ea4e202f36ad095a4f0"/>
<project name="platform/system/extras" path="system/extras" revision="5356165f67f4a81c2ef28671c13697f1657590df"/>
<project name="platform/system/media" path="system/media" revision="be0e2fe59a8043fa5200f75697df9220a99abe9d"/>
<project name="platform/system/netd" path="system/netd" revision="36704b0da24debcab8090156568ac236315036bb"/>

View File

@ -21,12 +21,12 @@
<!--
B2G repositories for all targets
-->
<project name="gaia" path="gaia" remote="mozillaorg" revision="eeedf205f728573c570c3b86f71d51916288bd04"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b2254b3e272133e9286d5986960e66bdecac0eb"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="a954bd2954c422b7d24d92cfd73000cb455dce44"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="19150d320e6802ec211ccc5e74c254ae9992312d"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="99c333dab00ed79baff9e1cf76b320aee8e1c123"/>
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="34adfb400e031f3dd3353d92413572db5e3a7376"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="ac4e539dbd73522c466ebffba53edea61702082f"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="f1a61fa8f97cc0a1ac4eca160acc222981b21d90"/>
<project name="platform_system_sensorsd" path="system/sensorsd" remote="b2g" revision="3618678c472320de386f5ddc27897992d0e148a8"/>
<!-- B2G specific things. -->
<project name="platform_build" path="build" remote="b2g" revision="8df1b0580ade1786bc1bf05a6abc06bcd62c2d6b">
@ -35,7 +35,7 @@
<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="apitrace" path="external/apitrace" remote="apitrace" revision="fc7902b057d00a3bd94548bec58e5c04ec5643f7"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="7c5a77c651bcde37005e6b6e209747edcc6c9361"/>
<project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
<project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
<!-- Stock Android things -->
@ -132,7 +132,7 @@
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="842e33e43a55ea44833b9e23e4d180fa17c843af"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5db24726f0f42124304195a6bdea129039eeeaeb"/>
<project name="platform/system/bluetooth" path="system/bluetooth" revision="930ae098543881f47eac054677726ee4b998b2f8"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bb356d6505f914347690c8143dbd03af427dd07e"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="6c9cebe5892c69e8b4bb2ea4e202f36ad095a4f0"/>
<project name="platform_system_core" path="system/core" remote="b2g" revision="542d1f59dc331b472307e5bd043101d14d5a3a3e"/>
<project name="platform/system/extras" path="system/extras" revision="18c1180e848e7ab8691940481f5c1c8d22c37b3e"/>
<project name="platform/system/media" path="system/media" revision="d90b836f66bf1d9627886c96f3a2d9c3007fbb80"/>

View File

@ -21,15 +21,15 @@
<!--
B2G repositories for all targets
-->
<project name="gaia" path="gaia" remote="mozillaorg" revision="eeedf205f728573c570c3b86f71d51916288bd04"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6b2254b3e272133e9286d5986960e66bdecac0eb"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="a954bd2954c422b7d24d92cfd73000cb455dce44"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="19150d320e6802ec211ccc5e74c254ae9992312d"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="99c333dab00ed79baff9e1cf76b320aee8e1c123"/>
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="34adfb400e031f3dd3353d92413572db5e3a7376"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="ac4e539dbd73522c466ebffba53edea61702082f"/>
<project name="platform_system_libpdu" path="system/libpdu" remote="b2g" revision="f1a61fa8f97cc0a1ac4eca160acc222981b21d90"/>
<project name="platform_system_sensorsd" path="system/sensorsd" remote="b2g" revision="3618678c472320de386f5ddc27897992d0e148a8"/>
<!-- B2G specific things. -->
<project name="platform_build" path="build" remote="b2g" revision="be4b291a90b371b41b62ade68c31ad173bb87baa">
<project name="platform_build" path="build" remote="b2g" revision="aee7ff3dba262a037559d360b62af429b62cb876">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
@ -38,15 +38,17 @@
<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="fc7902b057d00a3bd94548bec58e5c04ec5643f7"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="7c5a77c651bcde37005e6b6e209747edcc6c9361"/>
<!-- Stock Android things -->
<project groups="pdk,linux" name="platform/prebuilts/clang/linux-x86/host/3.5" path="prebuilts/clang/linux-x86/host/3.5" revision="ffc05a232799fe8fcb3e47b7440b52b1fb4244c0"/>
<project groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.8" revision="337e0ef5e40f02a1ae59b90db0548976c70a7226"/>
<project groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.8" path="prebuilts/gcc/linux-x86/arm/arm-eabi-4.8" revision="8af5ff6f5dced9eb5a8127459df6c75d24342204"/>
<project groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" revision="30915518fa7ea07166efedc191a4f40aef516fe7"/>
<project depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" remote="caf" revision="c09e1b3a55153d1ba142d5bf548c90487ea71f9e"/>
<project groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6" revision="96eee58e3389fb05a835310d6a06a6ba4486097a"/>
<project groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" revision="7c8a46698171aa2e0be09edb43d15a6acf832770"/>
<project groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.8" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.8" revision="24b2038be8a636fd4a5d21f0abae1e466b07bcf7"/>
<project depth="1" groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" remote="caf" revision="c33513f9de95fcdf4ec832db5e3ebd612382f541"/>
<project groups="linux" name="platform/prebuilts/python/linux-x86/2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="ab14644af0429dfb6744e9709f9ef46fb7bf73e4"/>
<project name="device/common" path="device/common" revision="05f67c8cf7b9669da6f37f74b3388b594e319b84"/>
<project name="device/sample" path="device/sample" revision="298675b60a633253434c4829339534c08292dc92"/>
@ -140,7 +142,7 @@
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="1d080491f26dfdfd76d5bbc3e6b40c660e8565af"/>
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="61a10cbd19d6b7fc052a8cb92dfa1b37b93754f3"/>
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="9e892a67a01671f312c76b0880dedaa6ba478148"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bb356d6505f914347690c8143dbd03af427dd07e"/>
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="6c9cebe5892c69e8b4bb2ea4e202f36ad095a4f0"/>
<project name="platform/system/extras" path="system/extras" revision="47fa016e2248b80aebd5928402c7409f8e0ca64e"/>
<project name="platform/system/media" path="system/media" revision="70bfebc66d9c6a4c614a8c7efde90e8e7e1d8641"/>
<project name="platform/system/netd" path="system/netd" revision="d113f0ceefa9ce29eb3c86e2d23c7417a70b4048"/>
@ -154,7 +156,7 @@
<default remote="caf" revision="refs/tags/android-5.1.0_r1" sync-j="4"/>
<!-- Nexus 5 specific things -->
<project name="device/generic/armv7-a-neon" path="device/generic/armv7-a-neon" revision="fe7df1bc8dd0fd71571505d7be1c31a4ad1e40fb"/>
<project name="device-hammerhead" path="device/lge/hammerhead" remote="b2g" revision="c4e9ed9053fbd21f57a7f014aaf898ac72ee1077"/>
<project name="device-hammerhead" path="device/lge/hammerhead" remote="b2g" revision="acbb7a8914059426180c9059fc9419e57668a478"/>
<project name="device_lge_hammerhead-kernel" path="device/lge/hammerhead-kernel" remote="b2g" revision="8b3ffcfdd3d3852eca5488628f8bb2a08acbffa7"/>
<project name="platform/external/libnfc-nci" path="external/libnfc-nci" revision="5d0ae53d9588c3d70c005aec9be94af9a534de16"/>
<project name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="c15b6e266136cd0cdd9b94d0bbed1962d9dd6672"/>

View File

@ -1018,6 +1018,11 @@
</body>
</method>
<!-- Holds a unique ID for the tab change that's currently being timed.
Used to make sure that multiple, rapid tab switches do not try to
create overlapping timers. -->
<field name="_tabSwitchID">null</field>
<method name="updateCurrentBrowser">
<parameter name="aForceUpdate"/>
<body>
@ -1033,11 +1038,23 @@
// Waiting until the next MozAfterPaint ensures that we capture
// the time it takes to paint, upload the textures to the compositor,
// and then composite.
if (this._tabSwitchID) {
TelemetryStopwatch.cancel("FX_TAB_SWITCH_TOTAL_MS");
}
let tabSwitchID = Symbol();
TelemetryStopwatch.start("FX_TAB_SWITCH_TOTAL_MS");
window.addEventListener("MozAfterPaint", function onMozAfterPaint() {
TelemetryStopwatch.finish("FX_TAB_SWITCH_TOTAL_MS");
this._tabSwitchID = tabSwitchID;
let onMozAfterPaint = () => {
if (this._tabSwitchID === tabSwitchID) {
TelemetryStopwatch.finish("FX_TAB_SWITCH_TOTAL_MS");
this._tabSwitchID = null;
}
window.removeEventListener("MozAfterPaint", onMozAfterPaint);
});
}
window.addEventListener("MozAfterPaint", onMozAfterPaint);
}
}

View File

@ -286,7 +286,7 @@ const CustomizableWidgets = [
}, {
id: "sync-button",
label: "remotetabs-panelmenu.label",
tooltiptext: "remotetabs-panelmenu.tooltiptext",
tooltiptext: "remotetabs-panelmenu.tooltiptext2",
type: "view",
viewId: "PanelUI-remotetabs",
defaultArea: CustomizableUI.AREA_PANEL,

View File

@ -253,7 +253,7 @@ var gMainPane = {
let win = wm.getMostRecentWindow("navigator:browser");
if (win) {
let accountsTab = win.gBrowser.addTab("about:accounts");
let accountsTab = win.gBrowser.addTab("about:accounts?action=signin&entrypoint=dev-edition-setup");
win.gBrowser.selectedTab = accountsTab;
}
},

View File

@ -7,7 +7,7 @@ history-panelmenu.label = History
history-panelmenu.tooltiptext2 = Show your history (%S)
remotetabs-panelmenu.label = Synced Tabs
remotetabs-panelmenu.tooltiptext = Show your synced tabs from other devices
remotetabs-panelmenu.tooltiptext2 = Show tabs from other devices
privatebrowsing-button.label = New Private Window
# LOCALIZATION NOTE(privatebrowsing-button.tooltiptext): %S is the keyboard shortcut

View File

@ -315,7 +315,11 @@ var SourceUtils = {
}
// Prepend the hostname and port number.
if (aSeq == 4) {
let host = aUrl.hostPort;
let host;
try {
// Bug 1261860: jar: URLs throw when accessing `hostPost`
host = aUrl.hostPort;
} catch(e) {}
if (host) {
return this.trimUrl(aUrl, host + "/" + aLabel, aSeq + 1);
}

View File

@ -478,16 +478,18 @@ TabTarget.prototype = {
this.client.addListener("tabDetached", this._onTabDetached);
this._onTabNavigated = (aType, aPacket) => {
// Update the title and url on tabNavigated event.
this._url = aPacket.url;
this._title = aPacket.title;
let event = Object.create(null);
event.url = aPacket.url;
event.title = aPacket.title;
event.nativeConsoleAPI = aPacket.nativeConsoleAPI;
event.isFrameSwitching = aPacket.isFrameSwitching;
if (!aPacket.isFrameSwitching) {
// Update the title and url unless this is a frame switch.
this._url = aPacket.url;
this._title = aPacket.title;
}
// Send any stored event payload (DOMWindow or nsIRequest) for backwards
// compatibility with non-remotable tools.
if (aPacket.state == "start") {

View File

@ -7,6 +7,7 @@ support-files =
browser_toolbox_options_disable_cache.sjs
browser_toolbox_sidebar_tool.xul
browser_toolbox_window_title_changes_page.html
browser_toolbox_window_title_frame_select_page.html
code_math.js
code_ugly.js
head.js
@ -74,6 +75,7 @@ skip-if = e10s # Bug 1069044 - destroyInspector may hang during shutdown
[browser_toolbox_window_shortcuts.js]
skip-if = os == "mac" && os_version == "10.8" || os == "win" && os_version == "5.1" # Bug 851129 - Re-enable browser_toolbox_window_shortcuts.js test after leaks are fixed
[browser_toolbox_window_title_changes.js]
[browser_toolbox_window_title_frame_select.js]
[browser_toolbox_zoom.js]
[browser_two_tabs.js]
skip-if = e10s && debug && os == 'win' # Bug 1231869

View File

@ -0,0 +1,72 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
/* import-globals-from shared-head.js */
"use strict";
/**
* Check that the detached devtools window title is not updated when switching
* the selected frame.
*/
var {Toolbox} = require("devtools/client/framework/toolbox");
const URL = URL_ROOT + "browser_toolbox_window_title_frame_select_page.html";
const IFRAME_URL = URL_ROOT + "browser_toolbox_window_title_changes_page.html";
add_task(function* () {
Services.prefs.setBoolPref("devtools.command-button-frames.enabled", true);
yield addTab(URL);
let target = TargetFactory.forTab(gBrowser.selectedTab);
let toolbox = yield gDevTools.showToolbox(target, null,
Toolbox.HostType.BOTTOM);
yield toolbox.selectTool("inspector");
yield toolbox.switchHost(Toolbox.HostType.WINDOW);
is(getTitle(), "Inspector - Page title",
"Devtools title correct after switching to detached window host");
// Verify that the frame list button is visible and populated
let btn = toolbox.doc.getElementById("command-button-frames");
let frames = Array.slice(btn.firstChild.querySelectorAll("[data-window-id]"));
is(frames.length, 2, "We have both frames in the list");
let topFrameBtn = frames.filter(b => b.getAttribute("label") == URL)[0];
let iframeBtn = frames.filter(b => b.getAttribute("label") == IFRAME_URL)[0];
ok(topFrameBtn, "Got top level document in the list");
ok(iframeBtn, "Got iframe document in the list");
// Listen to will-navigate to check if the view is empty
let willNavigate = toolbox.target.once("will-navigate");
// Only select the iframe after we are able to select an element from the top
// level document.
let newRoot = toolbox.getPanel("inspector").once("new-root");
info("Select the iframe");
iframeBtn.click();
yield willNavigate;
yield newRoot;
info("Navigation to the iframe is done, the inspector should be back up");
is(getTitle(), "Inspector - Page title",
"Devtools title was not updated after changing inspected frame");
info("Cleanup toolbox and test preferences.");
yield toolbox.destroy();
toolbox = null;
gBrowser.removeCurrentTab();
Services.prefs.clearUserPref("devtools.toolbox.host");
Services.prefs.clearUserPref("devtools.toolbox.selectedTool");
Services.prefs.clearUserPref("devtools.toolbox.sideEnabled");
Services.prefs.clearUserPref("devtools.command-button-frames.enabled");
finish();
});
function getTitle() {
return Services.wm.getMostRecentWindow("devtools:toolbox").document.title;
}

View File

@ -0,0 +1,11 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Page title</title>
<!-- Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ -->
<iframe src="browser_toolbox_window_title_changes_page.html"></iframe>
</head>
<body></body>
</html>

View File

@ -79,7 +79,6 @@ function BrowserLoaderBuilder({ baseURI, window, useOnlyShared }) {
const loaderOptions = devtools.require("@loader/options");
const dynamicPaths = {};
const componentProxies = new Map();
const hotReloadEnabled = Services.prefs.getBoolPref("devtools.loader.hotreload");
if (AppConstants.DEBUG || AppConstants.DEBUG_JS_MODULES) {
dynamicPaths["devtools/client/shared/vendor/react"] =
@ -134,7 +133,7 @@ function BrowserLoaderBuilder({ baseURI, window, useOnlyShared }) {
}
};
if (hotReloadEnabled) {
if (Services.prefs.getBoolPref("devtools.loader.hotreload")) {
opts.loadModuleHook = (module, require) => {
const { uri, exports } = module;
@ -158,24 +157,19 @@ function BrowserLoaderBuilder({ baseURI, window, useOnlyShared }) {
}
return exports;
}
const watcher = devtools.require("devtools/client/shared/devtools-file-watcher");
let onFileChanged = (_, relativePath, path) => {
this.hotReloadFile(componentProxies, "resource://devtools/" + relativePath);
};
watcher.on("file-changed", onFileChanged);
window.addEventListener("unload", () => {
watcher.off("file-changed", onFileChanged);
});
}
const mainModule = loaders.Module(baseURI, joinURI(baseURI, "main.js"));
this.loader = loaders.Loader(opts);
this.require = loaders.Require(this.loader, mainModule);
if (hotReloadEnabled) {
const watcher = devtools.require("devtools/client/shared/file-watcher");
const onFileChanged = (_, relativePath) => {
this.hotReloadFile(window, componentProxies,
"resource://devtools/" + relativePath);
};
watcher.on("file-changed", onFileChanged);
window.addEventListener("unload", () => {
watcher.off("file-changed", onFileChanged);
});
}
}
BrowserLoaderBuilder.prototype = {
@ -201,7 +195,7 @@ BrowserLoaderBuilder.prototype = {
});
},
hotReloadFile: function(window, componentProxies, fileURI) {
hotReloadFile: function(componentProxies, fileURI) {
if (fileURI.match(/\.js$/)) {
// Test for React proxy components
const proxy = componentProxies.get(fileURI);

View File

@ -103,7 +103,7 @@ function replaceCSSResource(window, fileURI) {
function watchCSS(window) {
if (Services.prefs.getBoolPref("devtools.loader.hotreload")) {
const watcher = require("devtools/client/shared/file-watcher");
const watcher = require("devtools/client/shared/devtools-file-watcher");
function onFileChanged(_, relativePath) {
if (relativePath.match(/\.css$/)) {

View File

@ -0,0 +1,77 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
const { Ci } = require("chrome");
const Services = require("Services");
const EventEmitter = require("devtools/shared/event-emitter");
loader.lazyImporter(this, "OS", "resource://gre/modules/osfile.jsm");
const HOTRELOAD_PREF = "devtools.loader.hotreload";
function resolveResourcePath(uri) {
const handler = Services.io.getProtocolHandler("resource")
.QueryInterface(Ci.nsIResProtocolHandler);
const resolved = handler.resolveURI(Services.io.newURI(uri, null, null));
return resolved.replace(/file:\/\//, "");
}
function findSourceDir(path) {
if (path === "" || path === "/") {
return Promise.resolve(null);
}
return OS.File.exists(
OS.Path.join(path, "devtools/client/shared/file-watcher.js")
).then(exists => {
if (exists) {
return path;
} else {
return findSourceDir(OS.Path.dirname(path));
}
});
}
let worker = null;
const onPrefChange = function() {
// We need to figure out a src dir to watch. These are the actual
// files the user is working with, not the files in the obj dir. We
// do this by walking up the filesystem and looking for the devtools
// directories, and falling back to the raw path. This means none of
// this will work for users who store their obj dirs outside of the
// src dir.
//
// We take care not to mess with the `devtoolsPath` if that's what
// we end up using, because it might be intentionally mapped to a
// specific place on the filesystem for loading devtools externally.
//
// `devtoolsPath` is currently the devtools directory inside of the
// obj dir, and we search for `devtools/client`, so go up 2 levels
// to skip that devtools dir and start searching for the src dir.
if (Services.prefs.getBoolPref(HOTRELOAD_PREF) && !worker) {
const devtoolsPath = resolveResourcePath("resource://devtools")
.replace(/\/$/, "");
const searchPoint = OS.Path.dirname(OS.Path.dirname(devtoolsPath));
findSourceDir(searchPoint)
.then(srcPath => {
const rootPath = srcPath ? OS.Path.join(srcPath, "devtools") : devtoolsPath;
const watchPath = OS.Path.join(rootPath, "client");
const { watchFiles } = require("devtools/client/shared/file-watcher");
worker = watchFiles(watchPath, path => {
let relativePath = path.replace(rootPath + "/", "");
module.exports.emit("file-changed", relativePath, path);
});
});
} else if (worker) {
worker.terminate();
worker = null;
}
}
Services.prefs.addObserver(HOTRELOAD_PREF, {
observe: onPrefChange
}, false);
onPrefChange();
EventEmitter.decorate(module.exports);

View File

@ -9,17 +9,6 @@ importScripts("resource://gre/modules/osfile.jsm");
const modifiedTimes = new Map();
function findSourceDir(path) {
if (path === "" || path === "/") {
return null;
} else if (OS.File.exists(
OS.Path.join(path, "devtools/client/shared/file-watcher.js")
)) {
return path;
}
return findSourceDir(OS.Path.dirname(path));
}
function gatherFiles(path, fileRegex) {
let files = [];
const iterator = new OS.File.DirectoryIterator(path);
@ -71,28 +60,8 @@ function scanFiles(files, onChangedFile) {
onmessage = function(event) {
const { path, fileRegex } = event.data;
const devtoolsPath = event.data.devtoolsPath.replace(/\/$/, "");
// We need to figure out a src dir to watch. These are the actual
// files the user is working with, not the files in the obj dir. We
// do this by walking up the filesystem and looking for the devtools
// directories, and falling back to the raw path. This means none of
// this will work for users who store their obj dirs outside of the
// src dir.
//
// We take care not to mess with the `devtoolsPath` if that's what
// we end up using, because it might be intentionally mapped to a
// specific place on the filesystem for loading devtools externally.
//
// `devtoolsPath` is currently the devtools directory inside of the
// obj dir, and we search for `devtools/client`, so go up 2 levels
// to skip that devtools dir and start searching for the src dir.
const searchPoint = OS.Path.dirname(OS.Path.dirname(devtoolsPath));
const srcPath = findSourceDir(searchPoint);
const rootPath = srcPath ? OS.Path.join(srcPath, "devtools") : devtoolsPath;
const watchPath = OS.Path.join(rootPath, path.replace(/^devtools\//, ""));
const info = OS.File.stat(watchPath);
const info = OS.File.stat(path);
if (!info.isDir) {
throw new Error("Watcher expects a directory as root path");
}
@ -100,14 +69,13 @@ onmessage = function(event) {
// We get a list of all the files upfront, which means we don't
// support adding new files. But you need to rebuild Firefox when
// adding a new file anyway.
const files = gatherFiles(watchPath, fileRegex || /.*/);
const files = gatherFiles(path, fileRegex || /.*/);
// Every second, scan for file changes by stat-ing each of them and
// comparing modification time.
setInterval(() => {
scanFiles(files, changedFile => {
postMessage({ fullPath: changedFile,
relativePath: changedFile.replace(rootPath + "/", "") });
postMessage({ path: changedFile });
});
}, 1000);
};

View File

@ -5,22 +5,8 @@
const { Ci, ChromeWorker } = require("chrome");
const Services = require("Services");
const EventEmitter = require("devtools/shared/event-emitter");
const HOTRELOAD_PREF = "devtools.loader.hotreload";
function resolveResourcePath(uri) {
const handler = Services.io.getProtocolHandler("resource")
.QueryInterface(Ci.nsIResProtocolHandler);
const resolved = handler.resolveURI(Services.io.newURI(uri, null, null));
return resolved.replace(/file:\/\//, "");
}
function watchFiles(path, onFileChanged) {
if (!path.startsWith("devtools/")) {
throw new Error("`watchFiles` expects a devtools path");
}
const watchWorker = new ChromeWorker(
"resource://devtools/client/shared/file-watcher-worker.js"
);
@ -30,35 +16,14 @@ function watchFiles(path, onFileChanged) {
// chrome). This means that this system will only work when built
// files are symlinked, so that these URIs actually read from
// local sources. There might be a better way to do this.
const { relativePath, fullPath } = event.data;
onFileChanged(relativePath, fullPath);
const { path } = event.data;
onFileChanged(path);
};
watchWorker.postMessage({
path: path,
// We must do this here because we can't access the needed APIs in
// a worker.
devtoolsPath: resolveResourcePath("resource://devtools"),
fileRegex: /\.(js|css|svg|png)$/ });
path,
fileRegex: /\.(js|css|svg|png)$/
});
return watchWorker;
}
EventEmitter.decorate(module.exports);
let watchWorker;
function onPrefChange() {
if (Services.prefs.getBoolPref(HOTRELOAD_PREF) && !watchWorker) {
watchWorker = watchFiles("devtools/client", (relativePath, fullPath) => {
module.exports.emit("file-changed", relativePath, fullPath);
});
} else if (watchWorker) {
watchWorker.terminate();
watchWorker = null;
}
}
Services.prefs.addObserver(HOTRELOAD_PREF, {
observe: onPrefChange
}, false);
onPrefChange();
exports.watchFiles = watchFiles;

View File

@ -382,7 +382,7 @@ InplaceEditor.prototype = {
}
}
copyTextStyles(this.input, this._measurement);
copyAllStyles(this.input, this._measurement);
this._updateSize();
},
@ -1367,6 +1367,17 @@ function copyTextStyles(from, to) {
to.style.fontSize = getCssText("font-size");
to.style.fontWeight = getCssText("font-weight");
to.style.fontStyle = getCssText("font-style");
}
/**
* Copy all styles which could have an impact on the element size.
*/
function copyAllStyles(from, to) {
let win = from.ownerDocument.defaultView;
let style = win.getComputedStyle(from);
let getCssText = name => style.getPropertyCSSValue(name).cssText;
copyTextStyles(from, to);
to.style.lineHeight = getCssText("line-height");
// If box-sizing is set to border-box, box model styles also need to be

View File

@ -24,6 +24,7 @@ DevToolsModules(
'demangle.js',
'developer-toolbar.js',
'devices.js',
'devtools-file-watcher.js',
'DOMHelpers.jsm',
'doorhanger.js',
'file-watcher-worker.js',

View File

@ -6,7 +6,6 @@
var { editableField } = require("devtools/client/shared/inplace-editor");
const LINE_HEIGHT = 15;
const MAX_WIDTH = 300;
const START_TEXT = "Start text";
const LONG_TEXT = "I am a long text and I will not fit in a 300px container. " +
@ -95,7 +94,10 @@ let testMaxWidth = Task.async(function* (editor) {
* @return {Number} the number of lines
*/
function getLines(textarea) {
return Math.floor(textarea.clientHeight / LINE_HEIGHT);
let win = textarea.ownerDocument.defaultView;
let style = win.getComputedStyle(textarea);
let lineHeight = style.getPropertyCSSValue("line-height").cssText;
return Math.floor(textarea.clientHeight / parseFloat(lineHeight));
}
/**
@ -125,7 +127,6 @@ function createSpan(doc) {
info("Creating a new span element");
let span = doc.createElement("span");
span.setAttribute("tabindex", "0");
span.style.lineHeight = LINE_HEIGHT + "px";
span.style.fontSize = "11px";
span.style.fontFamily = "monospace";
span.textContent = START_TEXT;

View File

@ -1,3 +1,45 @@
### Getting data from the store
To get data from the store, use `connect()`.
When using connect, you'll break up your component into two parts:
1. The part that displays the data (presentational component)
// todos.js
const Todos = React.createClass({
propTypes: {
todos: PropTypes.array.isRequired
}
render: function() {...}
})
module.exports = Todos;
2. The part that gets the data from the store (container component)
// todos-container.js
const Todos = require("path/to/todos");
function mapStateToProps(state) {
return {
todos: state.todos
};
}
module.exports = connect(mapStateToProps)(Todos);
`connect()` generates the container component. It wraps around the presentational component that was passed in (e.g. Todos).
The `mapStateToProps` is often called a selector. That's because it selects data from the state object. When the container component is rendering, the the selector will be called. It will pick out the data that the presentational component is going to need. Redux will take this object and pass it in to the presentational component as props.
With this setup, a presentational component is easy to share across different apps. It doesn't have any dependencies on the app, or any hardcoded expectations about how to get data. It just gets props that are passed to it and renders them.
For more advanced use cases, you can pass additional parameters into the selector and `connect()` functions. Read about those in the [`connect()`](https://github.com/reactjs/react-redux/blob/master/docs/api.md#connectmapstatetoprops-mapdispatchtoprops-mergeprops-options) docs.
---
Need to answer the following questions:
@ -7,4 +49,4 @@ Need to answer the following questions:
* What file structure should I use?
* How do I test redux code?
And more.
And more.

View File

@ -222,7 +222,11 @@ public:
{
DaemonSocketPDU& pdu = GetPDU();
aArg1 = pdu.AcquireFd();
auto receiveFds = pdu.AcquireFds();
if (NS_WARN_IF(receiveFds.Length() == 0)) {
return NS_ERROR_ILLEGAL_VALUE;
}
aArg1 = receiveFds[0];
if (NS_WARN_IF(aArg1 < 0)) {
return NS_ERROR_ILLEGAL_VALUE;
@ -279,7 +283,14 @@ BluetoothDaemonSocketModule::ConnectRsp(const DaemonSocketPDUHeader& aHeader,
BluetoothSocketResultHandler* aRes)
{
/* the file descriptor is attached in the PDU's ancillary data */
int fd = aPDU.AcquireFd();
auto receiveFds = aPDU.AcquireFds();
if (receiveFds.Length() == 0) {
ErrorRunnable::Dispatch(aRes, &BluetoothSocketResultHandler::OnError,
ConstantInitOp1<BluetoothStatus>(STATUS_FAIL));
return;
}
int fd = -1;
fd = receiveFds[0];
if (fd < 0) {
ErrorRunnable::Dispatch(aRes, &BluetoothSocketResultHandler::OnError,
ConstantInitOp1<BluetoothStatus>(STATUS_FAIL));

View File

@ -6,12 +6,12 @@
#include "NfcService.h"
#include <binder/Parcel.h>
#include <cutils/properties.h>
#include "mozilla/ClearOnShutdown.h"
#include "mozilla/dom/NfcOptionsBinding.h"
#include "mozilla/dom/ToJSValue.h"
#include "mozilla/dom/RootedDictionary.h"
#include "mozilla/Endian.h"
#include "mozilla/Hal.h"
#include "mozilla/ipc/ListenSocket.h"
#include "mozilla/ipc/ListenSocketConsumer.h"
#include "mozilla/ipc/NfcConnector.h"
@ -32,6 +32,7 @@
using namespace android;
using namespace mozilla::dom;
using namespace mozilla::ipc;
using namespace mozilla::hal;
namespace mozilla {
@ -109,7 +110,7 @@ NfcConsumer::Start()
// If we could not cleanup properly before and an old
// instance of the daemon is still running, we kill it
// here.
Unused << NS_WARN_IF(property_set("ctl.stop", "nfcd") < 0);
StopSystemService("nfcd");
mHandler = MakeUnique<NfcMessageHandler>();
@ -377,9 +378,10 @@ NfcConsumer::OnConnectSuccess(int aIndex)
switch (aIndex) {
case LISTEN_SOCKET: {
nsCString value("nfcd:-S -a ");
value.Append(mListenSocketName);
if (NS_WARN_IF(property_set("ctl.start", value.get()) < 0)) {
nsCString args("-S -a ");
args.Append(mListenSocketName);
nsresult rv = StartSystemService("nfcd", args.get());
if (NS_FAILED(rv)) {
OnConnectError(STREAM_SOCKET);
}
break;

View File

@ -119,7 +119,7 @@ DaemonSocketPDU::Receive(int aFd)
iv.iov_base = GetData(0);
iv.iov_len = GetAvailableSpace();
uint8_t cmsgbuf[CMSG_SPACE(sizeof(int))];
uint8_t cmsgbuf[CMSG_SPACE(sizeof(int)* MAX_NFDS)];
struct msghdr msg;
memset(&msg, 0, sizeof(msg));
@ -140,24 +140,33 @@ DaemonSocketPDU::Receive(int aFd)
SetRange(0, res);
struct cmsghdr *chdr = CMSG_FIRSTHDR(&msg);
struct cmsghdr* chdr = CMSG_FIRSTHDR(&msg);
for (; chdr; chdr = CMSG_NXTHDR(&msg, chdr)) {
if (NS_WARN_IF(!CMSGHDR_CONTAINS_FD(chdr))) {
continue;
}
// Retrieve sent file descriptor. If multiple file descriptors
// have been sent, we close all but the final one.
mReceivedFd = *(static_cast<int*>(CMSG_DATA(chdr)));
// Retrieve sent file descriptors.
size_t fdCount = (chdr->cmsg_len - CMSG_ALIGN(sizeof(struct cmsghdr))) / sizeof(int);
for (size_t i = 0; i < fdCount; i++) {
int* receivedFd = static_cast<int*>(CMSG_DATA(chdr)) + i;
mReceivedFds.AppendElement(ScopedClose(*receivedFd));
}
}
return res;
}
int
DaemonSocketPDU::AcquireFd()
nsTArray<int>
DaemonSocketPDU::AcquireFds()
{
return mReceivedFd.forget();
// Forget all RAII object to avoid closing the fds.
nsTArray<int> fds;
for (auto& fd : mReceivedFds) {
fds.AppendElement(fd.forget());
}
mReceivedFds.Clear();
return fds;
}
nsresult

View File

@ -10,10 +10,12 @@
#include "mozilla/FileUtils.h"
#include "mozilla/ipc/SocketBase.h"
#include "mozilla/ipc/DaemonSocketMessageHandlers.h"
#include "nsTArray.h"
namespace mozilla {
namespace ipc {
static const size_t MAX_NFDS = 16;
class DaemonSocketIOConsumer;
/**
@ -72,7 +74,7 @@ public:
ssize_t Send(int aFd) override;
ssize_t Receive(int aFd) override;
int AcquireFd();
nsTArray<int> AcquireFds();
nsresult UpdateHeader();
@ -82,7 +84,7 @@ private:
DaemonSocketIOConsumer* mConsumer;
RefPtr<DaemonSocketResultHandler> mRes;
ScopedClose mReceivedFd;
nsTArray<ScopedClose> mReceivedFds;
};
}

View File

@ -10,9 +10,12 @@
#include ../search/manifests/SearchAndroidManifest_permissions.xml.in
#endif
#ifdef MOZ_ANDROID_GCM
<!-- Bug 1261302: we have two new permissions to request,
RECEIVE_BOOT_COMPLETED and the permission for push. We want to ask for
them during the same release, which should be Fennec 48. Therefore we
decouple the push permission from MOZ_ANDROID_GCM to let it ride ahead
(potentially) of the push feature. -->
#include GcmAndroidManifest_permissions.xml.in
#endif
<!-- A signature level permission specific to each Firefox version (Android
package name, e.g., org.mozilla.firefox). Use this permission to

View File

@ -375,7 +375,7 @@ res/raw/browsersearch.json: .locales.deps ;
res/raw/suggestedsites.json: .locales.deps ;
all_resources = \
$(abspath $(CURDIR)/AndroidManifest.xml) \
$(DEPTH)/mobile/android/base/AndroidManifest.xml \
$(android_res_files) \
$(ANDROID_GENERATED_RESFILES) \
$(NULL)
@ -496,8 +496,8 @@ ifdef MOZ_BUILD_MOBILE_ANDROID_WITH_GRADLE
.aapt.nodeps: FORCE
cp $(gradle_dir)/app/intermediates/res/resources-automation-debug.ap_ gecko-nodeps.ap_
else
# .aapt.nodeps: $(CURDIR)/AndroidManifest.xml FORCE
$(eval $(call aapt_command,.aapt.nodeps,$(CURDIR)/AndroidManifest.xml FORCE,gecko-nodeps.ap_,gecko-nodeps/,gecko-nodeps/))
# .aapt.nodeps: $(DEPTH)/mobile/android/base/AndroidManifest.xml FORCE
$(eval $(call aapt_command,.aapt.nodeps,$(DEPTH)/mobile/android/base/AndroidManifest.xml FORCE,gecko-nodeps.ap_,gecko-nodeps/,gecko-nodeps/))
endif
# Override the Java settings with some specific android settings
@ -525,7 +525,7 @@ $(ABS_DIST)/fennec/$(OMNIJAR_NAME): FORCE
# Targets built very early during a Gradle build.
gradle-targets: $(foreach f,$(constants_PP_JAVAFILES),$(f))
gradle-targets: $(abspath AndroidManifest.xml)
gradle-targets: $(DEPTH)/mobile/android/base/AndroidManifest.xml
gradle-targets: $(ANDROID_GENERATED_RESFILES)
ifndef MOZILLA_OFFICIAL

View File

@ -1770,7 +1770,6 @@ public class BrowserApp extends GeckoApp
Telemetry.addToHistogram("FENNEC_BOOKMARKS_COUNT", db.getCount(cr, "bookmarks"));
Telemetry.addToHistogram("FENNEC_READING_LIST_COUNT", db.getReadingListAccessor().getCount(cr));
Telemetry.addToHistogram("BROWSER_IS_USER_DEFAULT", (isDefaultBrowser(Intent.ACTION_VIEW) ? 1 : 0));
Telemetry.addToHistogram("FENNEC_TABQUEUE_ENABLED", (TabQueueHelper.isTabQueueEnabled(BrowserApp.this) ? 1 : 0));
Telemetry.addToHistogram("FENNEC_CUSTOM_HOMEPAGE", (TextUtils.isEmpty(getHomepage()) ? 0 : 1));
final SharedPreferences prefs = GeckoSharedPrefs.forProfile(getContext());
final boolean hasCustomHomepanels = prefs.contains(HomeConfigPrefsBackend.PREFS_CONFIG_KEY) || prefs.contains(HomeConfigPrefsBackend.PREFS_CONFIG_KEY_OLD);
@ -4093,17 +4092,23 @@ public class BrowserApp extends GeckoApp
}
@Override
protected StartupAction getStartupAction(final String passedURL, final String action) {
final boolean inGuestMode = GeckoProfile.get(this).inGuestMode();
if (inGuestMode) {
return StartupAction.GUEST;
}
if (Restrictions.isRestrictedProfile(this)) {
return StartupAction.RESTRICTED;
}
protected void recordStartupActionTelemetry(final String passedURL, final String action) {
final TelemetryContract.Method method;
if (ACTION_HOMESCREEN_SHORTCUT.equals(action)) {
return StartupAction.SHORTCUT;
// This action is also recorded via "loadurl.1" > "homescreen".
method = TelemetryContract.Method.HOMESCREEN;
} else if (passedURL == null) {
Telemetry.sendUIEvent(TelemetryContract.Event.LAUNCH, TelemetryContract.Method.HOMESCREEN, "launcher");
method = TelemetryContract.Method.HOMESCREEN;
} else {
// This is action is also recorded via "loadurl.1" > "intent".
method = TelemetryContract.Method.INTENT;
}
if (GeckoProfile.get(this).inGuestMode()) {
Telemetry.sendUIEvent(TelemetryContract.Event.LAUNCH, method, "guest");
} else if (Restrictions.isRestrictedProfile(this)) {
Telemetry.sendUIEvent(TelemetryContract.Event.LAUNCH, method, "restricted");
}
return (passedURL == null ? StartupAction.NORMAL : StartupAction.URL);
}
}

View File

@ -141,15 +141,6 @@ public abstract class GeckoApp
private static final String LOGTAG = "GeckoApp";
private static final int ONE_DAY_MS = 1000*60*60*24;
public enum StartupAction {
NORMAL, /* normal application start */
URL, /* launched with a passed URL */
PREFETCH, /* launched with a passed URL that we prefetch */
GUEST, /* launched in guest browsing */
RESTRICTED, /* launched with restricted profile */
SHORTCUT /* launched from a homescreen shortcut */
}
public static final String ACTION_ALERT_CALLBACK = "org.mozilla.gecko.ACTION_ALERT_CALLBACK";
public static final String ACTION_HOMESCREEN_SHORTCUT = "org.mozilla.gecko.BOOKMARK";
public static final String ACTION_DEBUG = "org.mozilla.gecko.DEBUG";
@ -1537,8 +1528,7 @@ public abstract class GeckoApp
getProfile().moveSessionFile();
}
final StartupAction startupAction = getStartupAction(passedUri, action);
Telemetry.addToHistogram("FENNEC_GECKOAPP_STARTUP_ACTION", startupAction.ordinal());
recordStartupActionTelemetry(passedUri, action);
// Check if launched from data reporting notification.
if (ACTION_LAUNCH_SETTINGS.equals(action)) {
@ -1945,8 +1935,7 @@ public abstract class GeckoApp
startActivity(settingsIntent);
}
final StartupAction startupAction = getStartupAction(passedUri, action);
Telemetry.addToHistogram("FENNEC_GECKOAPP_STARTUP_ACTION", startupAction.ordinal());
recordStartupActionTelemetry(passedUri, action);
}
/**
@ -2762,9 +2751,7 @@ public abstract class GeckoApp
return new StubbedHealthRecorder();
}
protected StartupAction getStartupAction(final String passedURL, final String action) {
// Default to NORMAL here. Subclasses can handle the other types.
return StartupAction.NORMAL;
protected void recordStartupActionTelemetry(final String passedURL, final String action) {
}
@Override

View File

@ -9,6 +9,7 @@ import org.mozilla.gecko.GeckoSharedPrefs;
import org.mozilla.gecko.Locales;
import org.mozilla.gecko.R;
import org.mozilla.gecko.Telemetry;
import org.mozilla.gecko.TelemetryContract;
import android.annotation.TargetApi;
import android.content.Intent;
@ -49,20 +50,18 @@ public class TabQueuePrompt extends Locales.LocaleAwareActivity {
private void showTabQueueEnablePrompt() {
setContentView(R.layout.tab_queue_prompt);
final int numberOfTimesTabQueuePromptSeen = GeckoSharedPrefs.forApp(this).getInt(TabQueueHelper.PREF_TAB_QUEUE_TIMES_PROMPT_SHOWN, 0);
final View okButton = findViewById(R.id.ok_button);
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onConfirmButtonPressed();
Telemetry.addToHistogram("FENNEC_TABQUEUE_PROMPT_ENABLE_YES", numberOfTimesTabQueuePromptSeen);
Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.BUTTON, "tabqueue_prompt_yes");
}
});
findViewById(R.id.cancel_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Telemetry.addToHistogram("FENNEC_TABQUEUE_PROMPT_ENABLE_NO", numberOfTimesTabQueuePromptSeen);
Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.BUTTON, "tabqueue_prompt_no");
setResult(TabQueueHelper.TAB_QUEUE_NO);
finish();
}
@ -168,8 +167,7 @@ public class TabQueuePrompt extends Locales.LocaleAwareActivity {
if (TabQueueHelper.canDrawOverlays(this)) {
// User granted the permission in Android's settings.
final int numberOfTimesTabQueuePromptSeen = GeckoSharedPrefs.forApp(this).getInt(TabQueueHelper.PREF_TAB_QUEUE_TIMES_PROMPT_SHOWN, 0);
Telemetry.addToHistogram("FENNEC_TABQUEUE_PROMPT_ENABLE_YES", numberOfTimesTabQueuePromptSeen);
Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.BUTTON, "tabqueue_prompt_yes");
setResult(TabQueueHelper.TAB_QUEUE_YES);
finish();

View File

@ -43,16 +43,11 @@ var MemoryObserver = {
let data = browser.__SS_data;
let extra = browser.__SS_extdata;
// Destroying the tab will stop audio playback without invoking the
// normal events, therefore we need to explicitly tell the Java UI
// to stop displaying the audio playing indicator.
if (tab.playingAudio) {
Messaging.sendRequest({
type: "Tab:AudioPlayingChange",
tabID: tab.id,
isAudioPlaying: false
});
}
// Notify any interested parties (e.g. the session store)
// that the original tab object is going to be destroyed
let evt = document.createEvent("UIEvents");
evt.initUIEvent("TabPreZombify", true, false, window, null);
browser.dispatchEvent(evt);
// We need this data to correctly create and position the new browser
// If this browser is already a zombie, fallback to the session data
@ -69,6 +64,11 @@ var MemoryObserver = {
browser.__SS_extdata = extra;
browser.__SS_restore = true;
browser.setAttribute("pending", "true");
// Notify the session store to reattach its listeners to the new tab object
evt = document.createEvent("UIEvents");
evt.initUIEvent("TabPostZombify", true, false, window, null);
browser.dispatchEvent(evt);
},
gc: function() {

View File

@ -3465,6 +3465,7 @@ Tab.prototype = {
this.browser.addEventListener("MozScrolledAreaChanged", this, true);
this.browser.addEventListener("pageshow", this, true);
this.browser.addEventListener("MozApplicationManifest", this, true);
this.browser.addEventListener("TabPreZombify", this, true);
// Note that the XBL binding is untrusted
this.browser.addEventListener("PluginBindingAttached", this, true, true);
@ -3572,6 +3573,7 @@ Tab.prototype = {
this.browser.removeEventListener("MozScrolledAreaChanged", this, true);
this.browser.removeEventListener("pageshow", this, true);
this.browser.removeEventListener("MozApplicationManifest", this, true);
this.browser.removeEventListener("TabPreZombify", this, true);
this.browser.removeEventListener("PluginBindingAttached", this, true, true);
this.browser.removeEventListener("VideoBindingAttached", this, true, true);
@ -4095,7 +4097,8 @@ Tab.prototype = {
}
case "DOMAudioPlaybackStarted":
case "DOMAudioPlaybackStopped": {
case "DOMAudioPlaybackStopped":
case "TabPreZombify": {
if (!Services.prefs.getBoolPref("browser.tabs.showAudioPlayingIcon") ||
!aEvent.isTrusted) {
return;

View File

@ -213,6 +213,16 @@ SessionStore.prototype = {
this.onTabRemove(window, browser);
break;
}
case "TabPreZombify": {
let browser = aEvent.target;
this.onTabRemove(window, browser, true);
break;
}
case "TabPostZombify": {
let browser = aEvent.target;
this.onTabAdd(window, browser, true);
break;
}
case "TabSelect": {
let browser = aEvent.target;
this.onTabSelect(window, browser);
@ -277,11 +287,13 @@ SessionStore.prototype = {
for (let i = 0; i < tabs.length; i++)
this.onTabAdd(aWindow, tabs[i].browser, true);
// Notification of tab add/remove/selection
// Notification of tab add/remove/selection/zombification
let browsers = aWindow.document.getElementById("browsers");
browsers.addEventListener("TabOpen", this, true);
browsers.addEventListener("TabClose", this, true);
browsers.addEventListener("TabSelect", this, true);
browsers.addEventListener("TabPreZombify", this, true);
browsers.addEventListener("TabPostZombify", this, true);
},
onWindowClose: function ss_onWindowClose(aWindow) {
@ -293,6 +305,8 @@ SessionStore.prototype = {
browsers.removeEventListener("TabOpen", this, true);
browsers.removeEventListener("TabClose", this, true);
browsers.removeEventListener("TabSelect", this, true);
browsers.removeEventListener("TabPreZombify", this, true);
browsers.removeEventListener("TabPostZombify", this, true);
if (this._loadState == STATE_RUNNING) {
// Update all window data for a last time
@ -972,6 +986,8 @@ SessionStore.prototype = {
};
let tab = window.BrowserApp.addTab(tabData.entries[tabData.index - 1].url, params);
tab.browser.__SS_data = tabData;
tab.browser.__SS_extdata = tabData.extData;
this._restoreTab(tabData, tab.browser);
}
},
@ -991,12 +1007,18 @@ SessionStore.prototype = {
* point, but text data must be delayed until the content loads.
*/
_restoreTab: function ss_restoreTab(aTabData, aBrowser) {
// aTabData shouldn't be empty here, but if it is,
// _restoreHistory() will crash otherwise.
if (!aTabData || aTabData.entries.length == 0) {
Cu.reportError("SessionStore.js: Error trying to restore tab with empty tabdata");
return;
}
this._restoreHistory(aTabData, aBrowser.sessionHistory);
// Restoring the text data requires waiting for the content to load. So
// we set a flag and delay this until the "load" event.
//this._restoreTextData(aTabData, aBrowser);
aBrowser.__SS_restore_data = aTabData || {};
aBrowser.__SS_restore_data = aTabData;
},
/**
@ -1094,19 +1116,19 @@ SessionStore.prototype = {
}
}
tab.browser.__SS_data = tabData;
tab.browser.__SS_extdata = tabData.extData;
if (window.BrowserApp.selectedTab == tab) {
this._restoreTab(tabData, tab.browser);
delete tab.browser.__SS_restore;
tab.browser.removeAttribute("pending");
} else {
// Make sure the browser has its session data for the delay reload
tab.browser.__SS_data = tabData;
// Mark the browser for delay loading
tab.browser.__SS_restore = true;
tab.browser.setAttribute("pending", "true");
}
tab.browser.__SS_extdata = tabData.extData;
}
// Restore the closed tabs array on the current window.
@ -1153,13 +1175,12 @@ SessionStore.prototype = {
tabIndex: this._lastClosedTabIndex
};
let tab = aWindow.BrowserApp.addTab(aCloseTabData.entries[aCloseTabData.index - 1].url, params);
tab.browser.__SS_data = aCloseTabData;
tab.browser.__SS_extdata = aCloseTabData.extData;
this._restoreTab(aCloseTabData, tab.browser);
this._lastClosedTabIndex = -1;
// Put back the extra data
tab.browser.__SS_extdata = aCloseTabData.extData;
if (this._notifyClosedTabs) {
this._sendClosedTabsToJava(aWindow);
}

View File

@ -38,6 +38,7 @@ skip-if = true # Bug 1241478
[test_restricted_profiles.html]
[test_selectoraddtab.html]
[test_session_form_data.html]
[test_session_zombification.html]
[test_shared_preferences.html]
[test_simple_discovery.html]
[test_video_discovery.html]

View File

@ -19,6 +19,19 @@ function promiseBrowserEvent(browser, eventType) {
});
}
function promiseTabEvent(container, eventType) {
return new Promise((resolve) => {
function handle(event) {
info("Received event " + eventType + " from container");
container.removeEventListener(eventType, handle, true);
resolve(event);
}
container.addEventListener(eventType, handle, true);
info("Now waiting for " + eventType + " event from container");
});
}
function promiseNotification(topic) {
Cu.import("resource://gre/modules/Services.jsm");

View File

@ -21,19 +21,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1216047
Cu.import("resource://gre/modules/Messaging.jsm");
Cu.import("resource://gre/modules/Task.jsm");
function promiseTabEvent(container, eventType) {
return new Promise((resolve) => {
function handle(event) {
info("Received event " + eventType + " from container");
container.removeEventListener(eventType, handle, true);
resolve(event);
}
container.addEventListener(eventType, handle, true);
info("Now waiting for " + eventType + " event from container");
});
}
// The chrome window
let chromeWin;

View File

@ -0,0 +1,110 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=1044556
-->
<head>
<meta charset="utf-8">
<title>Test for Bug 1044556</title>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SpawnTask.js"></script>
<link rel="stylesheet" type="text/css" href="chrome://global/skin"/>
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
<script type="application/javascript" src="head.js"></script>
<script type="application/javascript">
/** Test for Bug 1044556 **/
"use strict";
const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/Messaging.jsm");
Cu.import("resource://gre/modules/Task.jsm");
// Import the MemoryObserver
Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
XPCOMUtils.defineLazyGetter(this, "MemoryObserver", function() {
let sandbox = {};
Services.scriptloader.loadSubScript("chrome://browser/content/MemoryObserver.js", sandbox);
return sandbox["MemoryObserver"];
});
// The chrome window
let chromeWin;
// Track the tabs where the tests are happening
let tabBlank;
let tabTest;
const url1 = "data:text/html;charset=utf-8,It%20was%20a%20dark%20and%20stormy%20night.";
const url2 = "data:text/html;charset=utf-8,Suddenly%2C%20a%20tab%20was%20zombified.";
add_task(function* test_sessionStoreZombify() {
chromeWin = Services.wm.getMostRecentWindow("navigator:browser");
let BrowserApp = chromeWin.BrowserApp;
SimpleTest.registerCleanupFunction(function() {
BrowserApp.closeTab(tabBlank);
BrowserApp.closeTab(tabTest);
});
// Add a new tab with some content
tabTest = BrowserApp.addTab(url1 , { selected: true, parentId: BrowserApp.selectedTab.id });
yield promiseBrowserEvent(tabTest.browser, "DOMContentLoaded");
// Add a new tab with a blank page
tabBlank = BrowserApp.addTab("about:blank", { selected: true, parentId: BrowserApp.selectedTab.id });
is(BrowserApp.selectedTab, tabBlank, "Test tab is in background.");
// Zombify the backgrounded test tab
MemoryObserver.zombify(tabTest);
// Check that the test tab is actually zombified
ok(tabTest.browser.__SS_restore, "Test tab is set for delay loading.");
// Switch back to the test tab and wait for it to reload
BrowserApp.selectTab(tabTest);
yield promiseBrowserEvent(tabTest.browser, "DOMContentLoaded");
// Check that the test tab has loaded the correct url
is(tabTest.browser.currentURI.spec, url1, "Test tab is showing the first URL.");
// Navigate to some other content
BrowserApp.loadURI(url2, tabTest.browser);
yield promiseBrowserEvent(tabTest.browser, "DOMContentLoaded");
is(tabTest.browser.currentURI.spec, url2, "Test tab is showing the second URL.");
// Switch to the other tab
BrowserApp.selectTab(tabBlank);
yield promiseTabEvent(BrowserApp.deck, "TabSelect");
is(BrowserApp.selectedTab, tabBlank, "Test tab is in background.");
// Zombify the backgrounded test tab again
MemoryObserver.zombify(tabTest);
// Check that the test tab is actually zombified
ok(tabTest.browser.__SS_restore, "Test tab is set for delay loading.");
// Switch back to the test tab and wait for it to reload
BrowserApp.selectTab(tabTest);
yield promiseBrowserEvent(tabTest.browser, "DOMContentLoaded");
// Check that the test tab has loaded the correct url
is(tabTest.browser.currentURI.spec, url2, "Test tab is showing the second URL.");
});
</script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1044556">Mozilla Bug 1044556</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<pre id="test">
</pre>
</body>
</html>

View File

@ -1,4 +1,4 @@
FROM taskcluster/centos6-build:0.1.5
FROM taskcluster/centos6-build:0.1.6
MAINTAINER Dustin J. Mitchell <dustin@mozilla.com>
### update to latest from upstream repositories

View File

@ -1 +1 @@
0.1.5.20160323120600
0.1.6.20160329195300

View File

@ -1 +1 @@
0.1.5
0.1.6

View File

@ -421,8 +421,8 @@ cat >requirements.txt <<'EOF'
# sha256: 90pZQ6kAXB6Je8-H9-ivfgDAb6l3e5rWkfafn6VKh9g
virtualenv==13.1.2
# sha256: W6lDjWqw25P3sHhrpjITjrZKncDZPjDd4rF7Mo_cbXo
mercurial==3.7.2
# sha256: wJnELXTi1SC2HdNyzZlrD6dgXAZheDT9exPHm5qaWzA
mercurial==3.7.3
EOF
peep install -r requirements.txt

View File

@ -1,4 +1,4 @@
FROM taskcluster/centos6-build-upd:0.1.5.20160323120600
FROM taskcluster/centos6-build-upd:0.1.6.20160329195300
MAINTAINER Dustin J. Mitchell <dustin@mozilla.com>
# Add build scripts; these are the entry points from the taskcluster worker, and

View File

@ -1,4 +1,4 @@
FROM taskcluster/ubuntu1204-test-upd:0.1.8.20160218152601
FROM taskcluster/ubuntu1204-test-upd:0.1.9.20160329211700
MAINTAINER Jonas Finnemann Jensen <jopsen@gmail.com>
# Add utilities and configuration

View File

@ -1,4 +1,4 @@
FROM taskcluster/ubuntu1204-test:0.1.8
FROM taskcluster/ubuntu1204-test:0.1.9
MAINTAINER Dustin J. Mitchell <dustin@mozilla.com>
### update to latest from upstream repositories

View File

@ -1 +1 @@
0.1.8.20160218152601
0.1.9.20160329211700

View File

@ -1 +1 @@
0.1.8
0.1.9

View File

@ -155,8 +155,8 @@ cat >requirements.txt <<'EOF'
# sha256: qryO8YzdvYoqnH-SvEPi_qVLEUczDWXbkg7zzpgS49w
virtualenv==13.1.2
# sha256: tQ9peOfTn-DLKY-j-j6c5B0jVnIdFV5SiPnFfl8T6ac
mercurial==3.5
# sha256: wJnELXTi1SC2HdNyzZlrD6dgXAZheDT9exPHm5qaWzA
mercurial==3.7.3
EOF
peep install -r requirements.txt

View File

@ -14,7 +14,6 @@ config = {
"GAIA_OPTIMIZE": "1",
"B2G_UPDATER": "1",
"LIGHTSABER": "1",
"DOGFOOD": "1",
"BOWER_FLAGS": "--allow-root",
"B2G_PATH": "%(work_dir)s",
"GAIA_DISTRIBUTION_DIR": "%(work_dir)s/gaia/distros/spark",

View File

@ -7,6 +7,10 @@ PATH=$DIRNAME:$PATH
. desktop-setup.sh
# use "simple" package names so that they can be hard-coded in the task's
# extras.locations
export MOZ_SIMPLE_PACKAGE_NAME=target
cd $GECKO_DIR
./mach build;
@ -20,22 +24,12 @@ cd $MOZ_OBJDIR/dist;
ls -lah $MOZ_OBJDIR/dist/
# Target names are cached so make sure we discard them first if found.
rm -f target.linux-x86_64.tar.bz2 target.linux-x86_64.json target*.tests.zip
# Artifacts folder is outside of the cache.
mkdir -p $HOME/artifacts/
# Discard version numbers from packaged files, they just make it hard to write
# the right filename in the task payload where artifacts are declared
mv *.linux-x86_64.tar.bz2 $HOME/artifacts/target.linux-x86_64.tar.bz2
mv *.linux-x86_64.json $HOME/artifacts/target.linux-x86_64.json
for name in common cppunittest reftest mochitest xpcshell web-platform; do
mv *.$name.tests.zip $HOME/artifacts/target.$name.tests.zip ;
done
mv *.test_packages.json $HOME/artifacts/target.test_packages.json
mv *.crashreporter-symbols.zip $HOME/artifacts/target.crashreporter-symbols.zip
mv jsshell-linux-x86_64.zip $HOME/artifacts/jsshell-linux-x86_64.zip
mv target.* $HOME/artifacts
mv mozharness.zip $HOME/artifacts/mozharness.zip
ccache -s

View File

@ -0,0 +1,31 @@
$inherits:
from: 'tasks/builds/b2g_aries_spark_ota_base.yml'
variables:
build_name: 'aries-dogfood'
build_type: 'debug'
task:
metadata:
name: '[TC] B2G Aries Dogfood'
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-aries-spark-dogfood'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-aries-spark-dogfood-objdir-gecko'
payload:
cache:
level-{{level}}-{{project}}-build-aries-spark-dogfood: /home/worker/workspace
level-{{level}}-{{project}}-build-aries-spark-dogfood-objdir-gecko: /home/worker/objdir-gecko
env:
VARIANT: userdebug
MOZHARNESS_CONFIG: b2g/taskcluster-spark-dogfood.py
B2G_UPDATE_CHANNEL: '{{b2g_update_channel}}'
extra:
treeherderEnv:
- production
- staging
treeherder:
symbol: B
groupSymbol: Aries-DogFood
groupName: Aries Device Image
machine:
platform: b2g-device-image
collection:
debug: true

View File

@ -0,0 +1,43 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
variables:
build_name: 'aries-noril'
build_type: 'opt'
task:
workerType: flame-kk
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-aries-opt'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-aries-opt-objdir-gecko'
metadata:
name: '[TC] B2G Aries No RIL Opt'
payload:
cache:
level-{{level}}-{{project}}-build-aries-opt: /home/worker/workspace
level-{{level}}-{{project}}-build-aries-opt-objdir-gecko: /home/worker/objdir-gecko
env:
TARGET: 'aries'
DEBUG: 0
VARIANT: user
GAIA_OPTIMIZE: '1'
B2G_SYSTEM_APPS: '1'
MOZHARNESS_CONFIG: b2g/taskcluster-spark.py
GECKO_CONFIGURE_ARGS: "--disable-b2g-ril"
command:
- >
checkout-gecko workspace &&
cd ./workspace/gecko/testing/taskcluster/scripts/phone-builder &&
buildbot_step 'Build' ./build-phone.sh $HOME/workspace
extra:
treeherderEnv:
- production
- staging
treeherder:
symbol: Bnr
groupSymbol: Aries
groupName: Aries Device Image
tier: 2
machine:
platform: b2g-device-image
locations:
img: 'private/build/aries.zip'

View File

@ -0,0 +1,41 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
variables:
build_name: 'aries'
build_type: 'opt'
task:
workerType: flame-kk
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-aries-opt'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-aries-opt-objdir-gecko'
metadata:
name: '[TC] B2G Aries Opt'
payload:
cache:
level-{{level}}-{{project}}-build-aries-opt: /home/worker/workspace
level-{{level}}-{{project}}-build-aries-opt-objdir-gecko: /home/worker/objdir-gecko
env:
TARGET: 'aries'
DEBUG: 0
VARIANT: user
GAIA_OPTIMIZE: '1'
B2G_SYSTEM_APPS: '1'
MOZHARNESS_CONFIG: b2g/taskcluster-spark.py
command:
- >
checkout-gecko workspace &&
cd ./workspace/gecko/testing/taskcluster/scripts/phone-builder &&
buildbot_step 'Build' ./build-phone.sh $HOME/workspace
extra:
treeherderEnv:
- production
- staging
treeherder:
symbol: B
groupSymbol: Aries
groupName: Aries Device Image
machine:
platform: b2g-device-image
locations:
img: 'private/build/aries.zip'

View File

@ -0,0 +1,6 @@
$inherits:
from: 'tasks/builds/b2g_aries_spark_ota_debug.yml'
task:
payload:
env:
MOZHARNESS_CONFIG: b2g/taskcluster-spark-ota-balrog.py

View File

@ -0,0 +1,6 @@
$inherits:
from: 'tasks/builds/b2g_aries_spark_ota_opt.yml'
task:
payload:
env:
MOZHARNESS_CONFIG: b2g/taskcluster-spark-ota-balrog.py

View File

@ -0,0 +1,25 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
task:
workerType: flame-kk
payload:
env:
TARGET: 'aries'
DEBUG: 0
MOZHARNESS_CONFIG: b2g/taskcluster-spark-ota.py
B2G_UPDATE_CHANNEL: '{{b2g_update_channel}}'
command:
- >
checkout-gecko workspace &&
cd ./workspace/gecko/testing/taskcluster/scripts/phone-builder &&
buildbot_step 'Build' ./build-phone-ota.sh $HOME/workspace
extra:
treeherder:
machine:
platform: b2g-device-image
locations:
img: 'private/build/aries.zip'
mar: 'public/build/b2g-aries-gecko-update.mar'

View File

@ -0,0 +1,29 @@
$inherits:
from: 'tasks/builds/b2g_aries_spark_ota_base.yml'
variables:
build_name: 'aries-ota'
build_type: 'debug'
task:
metadata:
name: '[TC] B2G Aries OTA (userdebug)'
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-aries-spark-ota-debug'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-aries-spark-ota-debug-objdir-gecko'
payload:
cache:
level-{{level}}-{{project}}-build-aries-spark-ota-debug: /home/worker/workspace
level-{{level}}-{{project}}-build-aries-spark-ota-debug-objdir-gecko: /home/worker/objdir-gecko
env:
VARIANT: userdebug
B2G_DEBUG: 0
extra:
treeherderEnv:
- staging
treeherder:
symbol: B
groupSymbol: Aries-Spark-OTA
groupName: Aries Device Image
machine:
platform: b2g-device-image
collection:
debug: true

View File

@ -0,0 +1,26 @@
$inherits:
from: 'tasks/builds/b2g_aries_spark_ota_base.yml'
variables:
build_name: 'aries-ota'
build_type: 'opt'
task:
metadata:
name: '[TC] B2G Aries OTA (user)'
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-aries-spark-ota-user'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-aries-spark-ota-user-objdir-gecko'
payload:
cache:
level-{{level}}-{{project}}-build-aries-spark-ota-user: /home/worker/workspace
level-{{level}}-{{project}}-build-aries-spark-ota-user-objdir-gecko: /home/worker/objdir-gecko
env:
VARIANT: user
extra:
treeherderEnv:
- staging
treeherder:
symbol: B
groupSymbol: Aries-Spark-OTA
groupName: Aries Device Image
machine:
platform: b2g-device-image

View File

@ -0,0 +1,26 @@
$inherits:
from: 'tasks/builds/b2g_dolphin_base.yml'
variables:
build_name: 'dolphin-512-eng'
build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-dolphin-512-eng'
metadata:
name: '[TC] B2G Dolphin 512 Eng'
extra:
treeherder:
symbol: Be
groupSymbol: Dolphin-512
groupName: Dolphin 512 Device Image
machine:
platform: b2g-device-image
payload:
cache:
level-{{level}}-{{project}}-build-dolphin-512-eng: /home/worker/workspace
env:
TARGET: 'dolphin-512'
VARIANT: eng

View File

@ -0,0 +1,23 @@
$inherits:
from: 'tasks/builds/b2g_dolphin_base.yml'
variables:
build_name: 'dolphin-512'
build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-dolphin-512-opt'
metadata:
name: '[TC] B2G Dolphin 512 Opt'
extra:
treeherder:
groupSymbol: Dolphin-512
groupName: Dolphin 512 Device Image
machine:
platform: b2g-device-image
payload:
cache:
level-{{level}}-{{project}}-build-dolphin-512-opt: /home/worker/workspace
env:
TARGET: 'dolphin-512'

View File

@ -0,0 +1,31 @@
$inherits:
from: 'tasks/phone_build.yml'
task:
workerType: dolphin
metadata:
description: |
Dolphin phones + b2g environment used in full stack testing.
payload:
env:
REPO_TRACE: 1
VARIANT: user
DEBUG: 0
# Dolphin could take more than one hours to build!
maxRunTime: 7200
command:
- >
checkout-gecko workspace &&
cd ./workspace/gecko/testing/taskcluster/scripts/phone-builder &&
buildbot_step 'Build' ./build-dolphin.sh $HOME/workspace
extra:
# Rather then enforcing particular conventions we require that all build
# tasks provide the "build" extra field to specify where the build and tests
# files are located.
locations:
build: 'private/build/b2g-android-arm.tar.gz'
tests: 'private/build/gaia.zip'
symbols: 'private/build/b2g-crashreporter-symbols.zip'
sources: 'private/build/sources.xml'

View File

@ -0,0 +1,25 @@
$inherits:
from: 'tasks/builds/b2g_dolphin_base.yml'
variables:
build_name: 'dolphin-eng'
build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-dolphin-eng'
metadata:
name: '[TC] B2G Dolphin Eng'
extra:
treeherder:
symbol: Be
groupSymbol: Dolphin
groupName: Dolphin Device Image
machine:
platform: b2g-device-image
payload:
cache:
level-{{level}}-{{project}}-build-dolphin-eng: /home/worker/workspace
env:
TARGET: 'dolphin'
VARIANT: eng

View File

@ -0,0 +1,24 @@
$inherits:
from: 'tasks/builds/b2g_dolphin_base.yml'
variables:
build_name: 'dolphin'
build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-dolphin-opt'
metadata:
name: '[TC] B2G Dolphin Opt'
extra:
treeherder:
groupSymbol: Dolphin
groupName: Dolphin Device Image
machine:
platform: b2g-device-image
payload:
cache:
level-{{level}}-{{project}}-build-dolphin-opt: /home/worker/workspace
env:
TARGET: 'dolphin'

View File

@ -0,0 +1,40 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
variables:
build_name: 'flame-kk'
build_type: 'debug'
task:
workerType: flame-kk
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-flame-kk-debug'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-flame-kk-debug-objdir-gecko'
metadata:
name: '[TC] B2G Flame KK Debug'
payload:
cache:
level-{{level}}-{{project}}-build-flame-kk-debug: /home/worker/workspace
level-{{level}}-{{project}}-build-flame-kk-debug-objdir-gecko: /home/worker/objdir-gecko
env:
TARGET: 'flame-kk'
DEBUG: 0
VARIANT: userdebug
command:
- >
checkout-gecko workspace &&
cd ./workspace/gecko/testing/taskcluster/scripts/phone-builder &&
buildbot_step 'Build' ./build-phone.sh $HOME/workspace
extra:
treeherderEnv:
- production
- staging
treeherder:
symbol: B
groupSymbol: Flame-KK
groupName: Flame KitKat Device Image
machine:
platform: b2g-device-image
collection:
debug: true
locations:
img: 'private/build/flame-kk.zip'

View File

@ -0,0 +1,30 @@
$inherits:
from: 'tasks/builds/b2g_phone_eng_base.yml'
variables:
build_name: 'flame-kk-eng'
build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-flame-kk-eng'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-flame-kk-eng-objdir-gecko'
metadata:
name: '[TC] B2G Flame KK Eng'
payload:
cache:
level-{{level}}-{{project}}-build-flame-kk-eng: /home/worker/workspace
level-{{level}}-{{project}}-build-flame-kk-eng-objdir-gecko: /home/worker/objdir-gecko
env:
TARGET: 'flame-kk'
extra:
treeherderEnv:
- production
- staging
treeherder:
symbol: Be
groupSymbol: Flame-KK
groupName: Flame KitKat Device Image
machine:
platform: b2g-device-image
locations:
img: 'private/build/flame-kk.zip'

View File

@ -0,0 +1,37 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
variables:
build_name: 'flame-kk'
build_type: 'opt'
task:
workerType: flame-kk
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-flame-kk-opt'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-flame-kk-opt-objdir-gecko'
metadata:
name: '[TC] B2G Flame KK Opt'
payload:
cache:
level-{{level}}-{{project}}-build-flame-kk-opt: /home/worker/workspace
level-{{level}}-{{project}}-build-flame-kk-opt-objdir-gecko: /home/worker/objdir-gecko
env:
TARGET: 'flame-kk'
DEBUG: 0
command:
- >
checkout-gecko workspace &&
cd ./workspace/gecko/testing/taskcluster/scripts/phone-builder &&
buildbot_step 'Build' ./build-phone.sh $HOME/workspace
extra:
treeherderEnv:
- production
- staging
treeherder:
symbol: B
groupSymbol: Flame-KK
groupName: Flame KitKat Device Image
machine:
platform: b2g-device-image
locations:
img: 'private/build/flame-kk.zip'

View File

@ -0,0 +1,19 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
task:
workerType: flame-kk
payload:
env:
TARGET: 'flame-kk'
DEBUG: 0
command:
- >
checkout-gecko workspace &&
cd ./workspace/gecko/testing/taskcluster/scripts/phone-builder &&
buildbot_step 'Build' ./build-phone-ota.sh $HOME/workspace
extra:
locations:
img: 'private/build/flame-kk.zip'
mar: 'public/build/b2g-flame-gecko-update.mar'

View File

@ -0,0 +1,32 @@
$inherits:
from: 'tasks/builds/b2g_flame_kk_ota_base.yml'
variables:
build_name: 'flame-kk-ota'
build_type: 'debug'
task:
metadata:
name: '[TC] B2G Flame KK OTA (userdebug)'
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-flame-kk-ota-debug'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-flame-kk-ota-debug-objdir-gecko'
payload:
cache:
level-{{level}}-{{project}}-build-flame-kk-ota-debug: /home/worker/workspace
level-{{level}}-{{project}}-build-flame-kk-ota-debug-objdir-gecko: /home/worker/objdir-gecko
env:
VARIANT: userdebug
B2G_DEBUG: 0
MOZHARNESS_CONFIG: b2g/taskcluster-phone-fota.py
B2G_UPDATE_CHANNEL: '{{b2g_update_channel}}'
extra:
treeherderEnv:
- staging
treeherder:
symbol: B
groupSymbol: Flame-KK-OTA
groupName: Flame KitKat Device Image
machine:
platform: b2g-device-image
collection:
debug: true

View File

@ -0,0 +1,29 @@
$inherits:
from: 'tasks/builds/b2g_flame_kk_ota_base.yml'
variables:
build_name: 'flame-kk-ota'
build_type: 'opt'
task:
metadata:
name: '[TC] B2G Flame KK OTA (user)'
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-flame-kk-ota-user'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-flame-kk-ota-user-objdir-gecko'
payload:
cache:
level-{{level}}-{{project}}-build-flame-kk-ota-user: /home/worker/workspace
level-{{level}}-{{project}}-build-flame-kk-ota-user-objdir-gecko: /home/worker/objdir-gecko
env:
VARIANT: user
MOZHARNESS_CONFIG: b2g/taskcluster-phone-fota.py
B2G_UPDATE_CHANNEL: '{{b2g_update_channel}}'
extra:
treeherderEnv:
- staging
treeherder:
symbol: B
groupSymbol: Flame-KK-OTA
groupName: Flame KitKat Device Image
machine:
platform: b2g-device-image

View File

@ -0,0 +1,30 @@
$inherits:
from: 'tasks/builds/b2g_phone_eng_base.yml'
variables:
build_name: 'flame-kk-spark-eng'
build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-flame-kk-spark-eng'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-flame-kk-spark-eng-objdir-gecko'
metadata:
name: '[TC] B2G Flame KK Eng (spark)'
payload:
cache:
level-{{level}}-{{project}}-build-flame-kk-spark-eng: /home/worker/workspace
level-{{level}}-{{project}}-build-flame-kk-spark-eng-objdir-gecko: /home/worker/objdir-gecko
env:
TARGET: 'flame-kk'
MOZHARNESS_CONFIG: b2g/taskcluster-spark.py
extra:
treeherderEnv:
- staging
treeherder:
symbol: Be
groupSymbol: Flame-KK-spark
groupName: Flame KitKat Device Image
machine:
platform: b2g-device-image
locations:
img: 'private/build/flame-kk.zip'

View File

@ -0,0 +1,20 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
variables:
build_name: 'hamachi-eng'
build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-hamachi-eng'
metadata:
name: B2G Hamachi Eng
payload:
cache:
level-{{level}}-{{project}}-build-hamachi-eng: /home/worker/object-folder
env:
TARGET: 'hamachi'
DEBUG: 0
VARIANT: 'eng'
extra:
locations:
img: 'private/build/hamachi.zip'

View File

@ -0,0 +1,19 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
variables:
build_name: 'hamachi'
build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-hamachi-user'
metadata:
name: B2G Hamachi User
payload:
cache:
level-{{level}}-{{project}}-build-hamachi-user: /home/worker/object-folder
env:
TARGET: 'hamachi'
DEBUG: 0
extra:
locations:
img: 'private/build/hamachi.zip'

View File

@ -0,0 +1,19 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
variables:
build_name: 'helix'
build_type: 'opt'
task:
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-helix-user'
metadata:
name: B2G Helix User
payload:
cache:
level-{{level}}-{{project}}-build-helix-user: /home/worker/object-folder
env:
TARGET: 'helix'
DEBUG: 0
extra:
locations:
img: 'private/build/helix.zip'

View File

@ -0,0 +1,36 @@
$inherits:
from: 'tasks/builds/b2g_phone_eng_base.yml'
variables:
build_name: 'nexus-4-kk-eng'
build_type: 'opt'
task:
workerType: flame-kk
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-4-kk-eng'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-4-kk-eng-objdir-gecko'
metadata:
name: '[TC] B2G Nexus 4 KK Eng'
payload:
cache:
level-{{level}}-{{project}}-build-nexus-4-kk-eng: /home/worker/workspace
level-{{level}}-{{project}}-build-nexus-4-kk-eng-objdir-gecko: /home/worker/objdir-gecko
env:
TARGET: 'nexus-4-kk'
DEBUG: 0
command:
- >
checkout-gecko workspace &&
cd ./workspace/gecko/testing/taskcluster/scripts/phone-builder &&
buildbot_step 'Build' ./build-phone.sh $HOME/workspace
extra:
treeherderEnv:
- production
- staging
treeherder:
symbol: Be
groupSymbol: Nexus 4 KK
groupName: Nexus 4 Kitkat Device Image
machine:
platform: b2g-device-image
locations:
img: 'private/build/nexus-4-kk.zip'

View File

@ -0,0 +1,42 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
variables:
build_name: 'nexus-4-kk-ota'
build_type: 'debug'
task:
workerType: flame-kk
metadata:
name: '[TC] B2G Nexus 4 KK OTA (userdebug)'
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-4-kk-ota-debug'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-4-kk-ota-debug-objdir-gecko'
payload:
features:
cache:
level-{{level}}-{{project}}-build-nexus-4-kk-ota-debug: /home/worker/workspace
level-{{level}}-{{project}}-build-nexus-4-kk-ota-debug-objdir-gecko: /home/worker/objdir-gecko
env:
VARIANT: userdebug
B2G_DEBUG: 0
TARGET: 'nexus-4-kk'
DEBUG: 0
B2G_UPDATE_CHANNEL: '{{b2g_update_channel}}'
command:
- >
checkout-gecko workspace &&
cd ./workspace/gecko/testing/taskcluster/scripts/phone-builder &&
buildbot_step 'Build' ./build-phone-ota.sh $HOME/workspace
extra:
locations:
img: 'private/build/nexus-4-kk.zip'
treeherderEnv:
- staging
treeherder:
symbol: B
groupSymbol: Nexus-4-KK-OTA
groupName: Nexus 4 KitKat Device Image
machine:
platform: b2g-device-image
collection:
debug: true

View File

@ -0,0 +1,36 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
variables:
build_name: 'nexus-4-kk-user'
build_type: 'opt'
task:
workerType: flame-kk
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-4-kk-user'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-4-kk-user-objdir-gecko'
metadata:
name: '[TC] B2G Nexus 4 KK User'
payload:
cache:
level-{{level}}-{{project}}-build-nexus-4-kk-user: /home/worker/workspace
level-{{level}}-{{project}}-build-nexus-4-kk-user-objdir-gecko: /home/worker/objdir-gecko
env:
TARGET: 'nexus-4-kk'
DEBUG: 0
command:
- >
checkout-gecko workspace &&
cd ./workspace/gecko/testing/taskcluster/scripts/phone-builder &&
buildbot_step 'Build' ./build-phone.sh $HOME/workspace
extra:
treeherderEnv:
- production
- staging
treeherder:
symbol: B
groupSymbol: Nexus 4 KK
groupName: Nexus 4 Kitkat Device Image
machine:
platform: b2g-device-image
locations:
img: 'private/build/nexus-4-kk.zip'

View File

@ -0,0 +1,43 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
variables:
build_name: 'nexus-5-l-ota'
build_type: 'debug'
task:
workerType: flame-kk
metadata:
name: '[TC] B2G Nexus 5L OTA (userdebug)'
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-5l-ota-debug'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-5l-ota-debug-objdir-gecko'
payload:
features:
cache:
level-{{level}}-{{project}}-build-nexus-5l-ota-debug: /home/worker/workspace
level-{{level}}-{{project}}-build-nexus-5l-ota-debug-objdir-gecko: /home/worker/objdir-gecko
env:
VARIANT: userdebug
B2G_DEBUG: 0
TARGET: 'nexus-5-l'
DEBUG: 0
MOZHARNESS_CONFIG: b2g/taskcluster-phone-fota.py
B2G_UPDATE_CHANNEL: '{{b2g_update_channel}}'
command:
- >
checkout-gecko workspace &&
cd ./workspace/gecko/testing/taskcluster/scripts/phone-builder &&
buildbot_step 'Build' ./build-phone-ota.sh $HOME/workspace
extra:
locations:
img: 'private/build/nexus-5-l.zip'
treeherderEnv:
- staging
treeherder:
symbol: B
groupSymbol: Nexus-5L-OTA
groupName: Nexus 5 Lollipop Device Image
machine:
platform: b2g-device-image
collection:
debug: true

View File

@ -0,0 +1,37 @@
$inherits:
from: 'tasks/builds/b2g_phone_base.yml'
variables:
build_name: 'nexus-5-user'
build_type: 'opt'
task:
workerType: flame-kk
scopes:
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-5-l-user'
- 'docker-worker:cache:level-{{level}}-{{project}}-build-nexus-5-l-user-objdir-gecko'
metadata:
name: '[TC] B2G Nexus 5-L User'
payload:
cache:
level-{{level}}-{{project}}-build-nexus-5-l-user: /home/worker/object-folder
level-{{level}}-{{project}}-build-nexus-5-l-user-objdir-gecko: /home/worker/objdir-gecko
env:
TARGET: 'nexus-5-l'
DEBUG: 0
command:
- >
checkout-gecko workspace &&
cd ./workspace/gecko/testing/taskcluster/scripts/phone-builder &&
buildbot_step 'Build' ./build-phone.sh $HOME/workspace
extra:
treeherderEnv:
- production
- staging
treeherder:
symbol: B
groupSymbol: Nexus 5-L
groupName: Nexus 5-L Device Image
machine:
platform: b2g-device-image
locations:
img: 'private/build/nexus-5-l.zip'

View File

@ -54,5 +54,5 @@ task:
# tasks provide the "build" extra field to specify where the build and tests
# files are located.
locations:
build: 'public/build/target.linux-x86_64.tar.bz2'
build: 'public/build/target.tar.bz2'
test_packages: 'public/build/target.test_packages.json'

View File

@ -671,34 +671,16 @@ ExtensionData.prototype = {
});
},
// Reads the extension's |manifest.json| file and optional |mozilla.json|,
// and stores the parsed and merged contents in |this.manifest|.
// Reads the extension's |manifest.json| file, and stores its
// parsed contents in |this.manifest|.
readManifest() {
return Promise.all([
this.readJSON("manifest.json"),
this.readJSON("mozilla.json").catch(err => null),
Management.lazyInit(),
]).then(([manifest, mozManifest]) => {
]).then(([manifest]) => {
this.manifest = manifest;
this.rawManifest = manifest;
if (mozManifest) {
if (typeof mozManifest != "object") {
this.logger.warn(`Loading extension '${this.id}': mozilla.json has unexpected type ${typeof mozManifest}`);
} else {
Object.keys(mozManifest).forEach(key => {
if (key != "applications") {
throw new Error(`Illegal property "${key}" in mozilla.json`);
}
if (key in manifest) {
this.logger.warn(`Ignoring property "${key}" from mozilla.json`);
} else {
manifest[key] = mozManifest[key];
}
});
}
}
if (manifest && manifest.default_locale) {
return this.initLocale();
}

View File

@ -120,7 +120,7 @@ var api = context => {
i18n: {
getMessage: function(messageName, substitutions) {
return context.extension.localizeMessage(messageName, substitutions);
return context.extension.localizeMessage(messageName, substitutions, {cloneScope: context.cloneScope});
},
getAcceptLanguages: function(callback) {

View File

@ -317,6 +317,7 @@ function LocaleData(data) {
this.defaultLocale = data.defaultLocale;
this.selectedLocale = data.selectedLocale;
this.locales = data.locales || new Map();
this.warnedMissingKeys = new Set();
// Map(locale-name -> Map(message-key -> localized-string))
//
@ -348,8 +349,16 @@ LocaleData.prototype = {
},
// https://developer.chrome.com/extensions/i18n
localizeMessage(message, substitutions = [], locale = this.selectedLocale, defaultValue = "??") {
let locales = new Set([this.BUILTIN, locale, this.defaultLocale]
localizeMessage(message, substitutions = [], options = {}) {
let defaultOptions = {
locale: this.selectedLocale,
defaultValue: "",
cloneScope: null,
};
options = Object.assign(defaultOptions, options);
let locales = new Set([this.BUILTIN, options.locale, this.defaultLocale]
.filter(locale => this.messages.has(locale)));
// Message names are case-insensitive, so normalize them to lower-case.
@ -398,8 +407,15 @@ LocaleData.prototype = {
}
}
Cu.reportError(`Unknown localization message ${message}`);
return defaultValue;
if (!this.warnedMissingKeys.has(message)) {
let error = `Unknown localization message ${message}`;
if (options.cloneScope) {
error = new options.cloneScope.Error(error);
}
Cu.reportError(error);
this.warnedMissingKeys.add(message);
}
return options.defaultValue;
},
// Localize a string, replacing all |__MSG_(.*)__| tokens with the
@ -414,7 +430,7 @@ LocaleData.prototype = {
}
return str.replace(/__MSG_([A-Za-z0-9@_]+?)__/g, (matched, message) => {
return this.localizeMessage(message, [], locale, matched);
return this.localizeMessage(message, [], {locale, defaultValue: matched});
});
},

View File

@ -11,7 +11,7 @@ extensions.registerSchemaAPI("i18n", null, (extension, context) => {
return {
i18n: {
getMessage: function(messageName, substitutions) {
return extension.localizeMessage(messageName, substitutions);
return extension.localizeMessage(messageName, substitutions, {cloneScope: context.cloneScope});
},
getAcceptLanguages: function() {

View File

@ -34,6 +34,7 @@ function WebRequestEventManager(context, eventName) {
let data2 = {
requestId: data.requestId,
url: data.url,
originUrl: data.originUrl,
method: data.method,
type: data.type,
timeStamp: Date.now(),

View File

@ -28,5 +28,16 @@
<iframe src="data:text/plain,webRequestTest" width="200" height="200"></iframe>
<iframe src="data:text/plain,webRequestTest_bad" width="200" height="200"></iframe>
<iframe src="https://invalid.localhost/" width="200" height="200"></iframe>
<a href="file_WebRequest_page3.html?trigger=a" target="webrequest_link">link</a>
<form method="post" action="file_WebRequest_page3.html?trigger=form" target="webrequest_form"></form>
<script>
"use strict";
for (let a of document.links) {
a.click();
}
for (let f of document.forms) {
f.submit();
}
</script>
</body>
</html>

View File

@ -0,0 +1,11 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script>
"use strict";
window.close();
</script>
</head>
</html>

View File

@ -4,6 +4,7 @@ support-files =
head.js
file_WebRequest_page1.html
file_WebRequest_page2.html
file_WebRequest_page3.html
file_WebNavigation_page1.html
file_WebNavigation_page2.html
file_WebNavigation_page3.html

View File

@ -28,10 +28,10 @@ add_task(function* test_i18n() {
assertEq("(bar)", _("bar"), "Simple message fallback in default locale.");
assertEq("??", _("some-unknown-locale-string"), "Unknown locale string.");
assertEq("", _("some-unknown-locale-string"), "Unknown locale string.");
assertEq("??", _("@@unknown_builtin_string"), "Unknown built-in string.");
assertEq("??", _("@@bidi_unknown_builtin_string"), "Unknown built-in bidi string.");
assertEq("", _("@@unknown_builtin_string"), "Unknown built-in string.");
assertEq("", _("@@bidi_unknown_builtin_string"), "Unknown built-in bidi string.");
assertEq("Føo.", _("Föo"), "Multi-byte message in selected locale.");

View File

@ -98,7 +98,8 @@ function backgroundScript() {
let savedTabId = -1;
function shouldRecord(url) {
return url.startsWith(BASE) || /^data:.*\bwebRequestTest|\/invalid\./.test(url);
return url.startsWith(BASE) && !url.includes("_page3.html") ||
/^data:.*\bwebRequestTest|\/invalid\./.test(url);
}
let statuses = [
@ -115,6 +116,12 @@ function backgroundScript() {
}
}
function checkOrigin(details) {
let isCorrectOrigin = details.url.includes("_page1.html") ? details.originUrl.endsWith("/test_ext_webrequest.html")
: /\/file_WebRequest_page\d\.html\b/.test(details.originUrl);
browser.test.assertTrue(isCorrectOrigin, `originUrl for ${details.url} is correct (${details.originUrl})`);
}
function checkType(details) {
let expected_type = "???";
if (details.url.includes("style")) {
@ -280,6 +287,7 @@ function backgroundScript() {
requestIDs.set(details.url, new Set([details.requestId]));
}
checkResourceType(details.type);
checkOrigin(details);
if (shouldRecord(details.url)) {
recorded.requested.push(details.url);
@ -311,6 +319,7 @@ function backgroundScript() {
function onBeforeSendHeaders(details) {
browser.test.log(`onBeforeSendHeaders ${details.url}`);
checkRequestId(details);
checkOrigin(details);
checkResourceType(details.type);
processHeaders("request", details);
if (shouldRecord(details.url)) {
@ -331,6 +340,7 @@ function backgroundScript() {
function onBeforeRedirect(details) {
browser.test.log(`onBeforeRedirect ${details.url} -> ${details.redirectUrl}`);
checkRequestId(details, "redirect");
checkOrigin(details);
checkResourceType(details.type);
if (shouldRecord(details.url)) {
recorded.beforeRedirect.push(details.url);
@ -354,6 +364,7 @@ function backgroundScript() {
browser.test.log(`${kind} ${details.requestId} ${details.url}`);
checkResourceType(details.type);
checkRequestId(details, kind);
checkOrigin(details);
if (kind in recorded && shouldRecord(details.url)) {
recorded[kind].push(details.url);
}

View File

@ -30,7 +30,7 @@
static const int TIME_TO_WAIT_ON_UPDATER = 15 * 60 * 1000;
wchar_t* MakeCommandLine(int argc, wchar_t** argv);
BOOL WriteStatusFailure(LPCWSTR updateDirPath, int errorCode);
BOOL PathGetSiblingFilePath(LPWSTR destinationBuffer, LPCWSTR siblingFilePath,
BOOL PathGetSiblingFilePath(LPWSTR destinationBuffer, LPCWSTR siblingFilePath,
LPCWSTR newFileName);
/*
@ -479,79 +479,6 @@ ProcessSoftwareUpdateCommand(DWORD argc, LPWSTR *argv)
return result;
}
/**
* Obtains the updater path alongside a subdir of the service binary.
* The purpose of this function is to return a path that is likely high
* integrity and therefore more safe to execute code from.
*
* @param serviceUpdaterPath Out parameter for the path where the updater
* should be copied to.
* @return TRUE if a file path was obtained.
*/
BOOL
GetSecureUpdaterPath(WCHAR serviceUpdaterPath[MAX_PATH + 1])
{
if (!GetModuleFileNameW(nullptr, serviceUpdaterPath, MAX_PATH)) {
LOG_WARN(("Could not obtain module filename when attempting to "
"use a secure updater path. (%d)", GetLastError()));
return FALSE;
}
if (!PathRemoveFileSpecW(serviceUpdaterPath)) {
LOG_WARN(("Couldn't remove file spec when attempting to use a secure "
"updater path. (%d)", GetLastError()));
return FALSE;
}
if (!PathAppendSafe(serviceUpdaterPath, L"update")) {
LOG_WARN(("Couldn't append file spec when attempting to use a secure "
"updater path. (%d)", GetLastError()));
return FALSE;
}
CreateDirectoryW(serviceUpdaterPath, nullptr);
if (!PathAppendSafe(serviceUpdaterPath, L"updater.exe")) {
LOG_WARN(("Couldn't append file spec when attempting to use a secure "
"updater path. (%d)", GetLastError()));
return FALSE;
}
return TRUE;
}
/**
* Deletes the passed in updater path and the associated updater.ini file.
*
* @param serviceUpdaterPath The path to delete.
* @return TRUE if a file was deleted.
*/
BOOL
DeleteSecureUpdater(WCHAR serviceUpdaterPath[MAX_PATH + 1])
{
BOOL result = FALSE;
if (serviceUpdaterPath[0]) {
result = DeleteFileW(serviceUpdaterPath);
if (!result && GetLastError() != ERROR_PATH_NOT_FOUND &&
GetLastError() != ERROR_FILE_NOT_FOUND) {
LOG_WARN(("Could not delete service updater path: '%ls'.",
serviceUpdaterPath));
}
WCHAR updaterINIPath[MAX_PATH + 1] = { L'\0' };
if (PathGetSiblingFilePath(updaterINIPath, serviceUpdaterPath,
L"updater.ini")) {
result = DeleteFileW(updaterINIPath);
if (!result && GetLastError() != ERROR_PATH_NOT_FOUND &&
GetLastError() != ERROR_FILE_NOT_FOUND) {
LOG_WARN(("Could not delete service updater INI path: '%ls'.",
updaterINIPath));
}
}
}
return result;
}
/**
* Executes a service command.
*
@ -584,52 +511,7 @@ ExecuteServiceCommand(int argc, LPWSTR *argv)
BOOL result = FALSE;
if (!lstrcmpi(argv[2], L"software-update")) {
// Use the passed in command line arguments for the update, except for the
// path to updater.exe. We copy updater.exe to a the directory of the
// MozillaMaintenance service so that a low integrity process cannot
// replace the updater.exe at any point and use that for the update.
// It also makes DLL injection attacks harder.
LPWSTR oldUpdaterPath = argv[3];
WCHAR secureUpdaterPath[MAX_PATH + 1] = { L'\0' };
result = GetSecureUpdaterPath(secureUpdaterPath); // Does its own logging
if (result) {
LOG(("Passed in path: '%ls'; Using this path for updating: '%ls'.",
oldUpdaterPath, secureUpdaterPath));
DeleteSecureUpdater(secureUpdaterPath);
result = CopyFileW(oldUpdaterPath, secureUpdaterPath, FALSE);
}
if (!result) {
LOG_WARN(("Could not copy path to secure location. (%d)",
GetLastError()));
if (argc > 4 && !WriteStatusFailure(argv[4],
SERVICE_COULD_NOT_COPY_UPDATER)) {
LOG_WARN(("Could not write update.status could not copy updater error"));
}
} else {
// We obtained the path and copied it successfully, update the path to
// use for the service update.
argv[3] = secureUpdaterPath;
WCHAR oldUpdaterINIPath[MAX_PATH + 1] = { L'\0' };
WCHAR secureUpdaterINIPath[MAX_PATH + 1] = { L'\0' };
if (PathGetSiblingFilePath(secureUpdaterINIPath, secureUpdaterPath,
L"updater.ini") &&
PathGetSiblingFilePath(oldUpdaterINIPath, oldUpdaterPath,
L"updater.ini")) {
// This is non fatal if it fails there is no real harm
if (!CopyFileW(oldUpdaterINIPath, secureUpdaterINIPath, FALSE)) {
LOG_WARN(("Could not copy updater.ini from: '%ls' to '%ls'. (%d)",
oldUpdaterINIPath, secureUpdaterINIPath, GetLastError()));
}
}
result = ProcessSoftwareUpdateCommand(argc - 3, argv + 3);
DeleteSecureUpdater(secureUpdaterPath);
}
result = ProcessSoftwareUpdateCommand(argc - 3, argv + 3);
// We might not reach here if the service install succeeded
// because the service self updates itself and the service
// installer will stop the service.

Some files were not shown because too many files have changed in this diff Show More