зеркало из https://github.com/mozilla/gecko-dev.git
Merge mozilla-central to mozilla-inbound
This commit is contained in:
Коммит
dfee85ecef
|
@ -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
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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 -->
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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 -->
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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 -->
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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"/>
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
},
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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") {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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>
|
|
@ -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);
|
||||
|
|
|
@ -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$/)) {
|
||||
|
|
|
@ -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);
|
|
@ -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);
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -24,6 +24,7 @@ DevToolsModules(
|
|||
'demangle.js',
|
||||
'developer-toolbar.js',
|
||||
'devices.js',
|
||||
'devtools-file-watcher.js',
|
||||
'DOMHelpers.jsm',
|
||||
'doorhanger.js',
|
||||
'file-watcher-worker.js',
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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>
|
|
@ -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
|
||||
|
|
|
@ -1 +1 @@
|
|||
0.1.5.20160323120600
|
||||
0.1.6.20160329195300
|
||||
|
|
|
@ -1 +1 @@
|
|||
0.1.5
|
||||
0.1.6
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1 +1 @@
|
|||
0.1.8.20160218152601
|
||||
0.1.9.20160329211700
|
||||
|
|
|
@ -1 +1 @@
|
|||
0.1.8
|
||||
0.1.9
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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'
|
|
@ -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'
|
|
@ -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
|
|
@ -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
|
|
@ -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'
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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'
|
|
@ -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'
|
|
@ -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
|
|
@ -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'
|
||||
|
|
@ -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'
|
|
@ -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'
|
|
@ -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'
|
|
@ -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'
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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'
|
|
@ -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'
|
|
@ -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'
|
|
@ -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'
|
|
@ -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'
|
|
@ -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
|
|
@ -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'
|
|
@ -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
|
|
@ -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'
|
|
@ -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'
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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});
|
||||
});
|
||||
},
|
||||
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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(),
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
<!DOCTYPE HTML>
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script>
|
||||
"use strict";
|
||||
window.close();
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
|
@ -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
|
||||
|
|
|
@ -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.");
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче