Merge m-c to m-i
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="d4177902b04b8fedcb7df9a30ae6e9677e03d2d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="4868c56c0a3b7a1e51d55b24457e44a7709ea1ae"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2e9f0341416e97926d4cfdb1ff961ec4d4069b0a"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="cc41a48baff8d13bcd10cd96879ffdcf29beb1f2"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="33d5be1dca607d3a5cca5d87f53951cd991e1cdb"/>
|
||||
<!-- 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"/>
|
||||
|
@ -19,13 +19,13 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="d4177902b04b8fedcb7df9a30ae6e9677e03d2d4"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="4868c56c0a3b7a1e51d55b24457e44a7709ea1ae"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2e9f0341416e97926d4cfdb1ff961ec4d4069b0a"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="93f9ba577f68d772093987c2f1c0a4ae293e1802"/>
|
||||
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="97c3d9b8b87774ca7a08c89145e95b55652459ef"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="cc41a48baff8d13bcd10cd96879ffdcf29beb1f2"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="33d5be1dca607d3a5cca5d87f53951cd991e1cdb"/>
|
||||
<!-- Stock Android things -->
|
||||
<project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
|
||||
<project name="platform_bionic" path="bionic" remote="b2g" revision="e2b3733ba3fa5e3f404e983d2e4142b1f6b1b846"/>
|
||||
|
@ -17,10 +17,10 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="d4177902b04b8fedcb7df9a30ae6e9677e03d2d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="4868c56c0a3b7a1e51d55b24457e44a7709ea1ae"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2e9f0341416e97926d4cfdb1ff961ec4d4069b0a"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="cc41a48baff8d13bcd10cd96879ffdcf29beb1f2"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="33d5be1dca607d3a5cca5d87f53951cd991e1cdb"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<!-- Stock Android things -->
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="d4177902b04b8fedcb7df9a30ae6e9677e03d2d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="4868c56c0a3b7a1e51d55b24457e44a7709ea1ae"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2e9f0341416e97926d4cfdb1ff961ec4d4069b0a"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="cc41a48baff8d13bcd10cd96879ffdcf29beb1f2"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="33d5be1dca607d3a5cca5d87f53951cd991e1cdb"/>
|
||||
<!-- 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"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="52775e03a2d8532429dff579cb2cd56718e488c3">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="d4177902b04b8fedcb7df9a30ae6e9677e03d2d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="4868c56c0a3b7a1e51d55b24457e44a7709ea1ae"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2e9f0341416e97926d4cfdb1ff961ec4d4069b0a"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="cc41a48baff8d13bcd10cd96879ffdcf29beb1f2"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="33d5be1dca607d3a5cca5d87f53951cd991e1cdb"/>
|
||||
<!-- 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="50d1ca4ab8add54523b7bc692860d57e8ee4c0d1"/>
|
||||
<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="fb3845864573857677f9b500040a8f011eaf5078"/>
|
||||
|
@ -19,13 +19,13 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="d4177902b04b8fedcb7df9a30ae6e9677e03d2d4"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="4868c56c0a3b7a1e51d55b24457e44a7709ea1ae"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2e9f0341416e97926d4cfdb1ff961ec4d4069b0a"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="93f9ba577f68d772093987c2f1c0a4ae293e1802"/>
|
||||
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="97c3d9b8b87774ca7a08c89145e95b55652459ef"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="cc41a48baff8d13bcd10cd96879ffdcf29beb1f2"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="33d5be1dca607d3a5cca5d87f53951cd991e1cdb"/>
|
||||
<!-- Stock Android things -->
|
||||
<project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
|
||||
<project name="platform_bionic" path="bionic" remote="b2g" revision="e2b3733ba3fa5e3f404e983d2e4142b1f6b1b846"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="ef937d1aca7c4cf89ecb5cc43ae8c21c2000a9db">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="d4177902b04b8fedcb7df9a30ae6e9677e03d2d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="4868c56c0a3b7a1e51d55b24457e44a7709ea1ae"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2e9f0341416e97926d4cfdb1ff961ec4d4069b0a"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="cc41a48baff8d13bcd10cd96879ffdcf29beb1f2"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="33d5be1dca607d3a5cca5d87f53951cd991e1cdb"/>
|
||||
<!-- 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"/>
|
||||
|
@ -17,10 +17,10 @@
|
||||
</project>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="d4177902b04b8fedcb7df9a30ae6e9677e03d2d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="4868c56c0a3b7a1e51d55b24457e44a7709ea1ae"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2e9f0341416e97926d4cfdb1ff961ec4d4069b0a"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="cc41a48baff8d13bcd10cd96879ffdcf29beb1f2"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="33d5be1dca607d3a5cca5d87f53951cd991e1cdb"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<!-- Stock Android things -->
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"git": {
|
||||
"git_revision": "d4177902b04b8fedcb7df9a30ae6e9677e03d2d4",
|
||||
"git_revision": "4868c56c0a3b7a1e51d55b24457e44a7709ea1ae",
|
||||
"remote": "https://git.mozilla.org/releases/gaia.git",
|
||||
"branch": ""
|
||||
},
|
||||
"revision": "23ffbbdd387271d8b8b94f4ce60ccb17ad6c5b10",
|
||||
"revision": "dbbbfe84294377ef3a7efaebcf57696a30b58cdb",
|
||||
"repo_path": "integration/gaia-central"
|
||||
}
|
||||
|
@ -17,10 +17,10 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="d4177902b04b8fedcb7df9a30ae6e9677e03d2d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="4868c56c0a3b7a1e51d55b24457e44a7709ea1ae"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2e9f0341416e97926d4cfdb1ff961ec4d4069b0a"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ed2cf97a6c37a4bbd0bbbbffe06ec7136d8c79ff"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="cc41a48baff8d13bcd10cd96879ffdcf29beb1f2"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="33d5be1dca607d3a5cca5d87f53951cd991e1cdb"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<!-- Stock Android things -->
|
||||
|
@ -15,7 +15,7 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="52775e03a2d8532429dff579cb2cd56718e488c3">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="d4177902b04b8fedcb7df9a30ae6e9677e03d2d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="4868c56c0a3b7a1e51d55b24457e44a7709ea1ae"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2e9f0341416e97926d4cfdb1ff961ec4d4069b0a"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
@ -23,7 +23,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="cc41a48baff8d13bcd10cd96879ffdcf29beb1f2"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="33d5be1dca607d3a5cca5d87f53951cd991e1cdb"/>
|
||||
<!-- 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="50d1ca4ab8add54523b7bc692860d57e8ee4c0d1"/>
|
||||
<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="fb3845864573857677f9b500040a8f011eaf5078"/>
|
||||
|
@ -1433,33 +1433,8 @@ pref("devtools.debugger.ui.variables-sorting-enabled", true);
|
||||
pref("devtools.debugger.ui.variables-only-enum-visible", false);
|
||||
pref("devtools.debugger.ui.variables-searchbox-visible", false);
|
||||
|
||||
// Enable the Profiler
|
||||
pref("devtools.profiler.enabled", true);
|
||||
|
||||
// Timeline panel settings
|
||||
#ifdef NIGHTLY_BUILD
|
||||
pref("devtools.timeline.enabled", true);
|
||||
#else
|
||||
pref("devtools.timeline.enabled", false);
|
||||
#endif
|
||||
|
||||
// TODO remove `devtools.timeline.hiddenMarkers.` branches when performance
|
||||
// tool lands (bug 1075567)
|
||||
pref("devtools.timeline.hiddenMarkers", "[]");
|
||||
|
||||
// Enable perftools via build command
|
||||
#ifdef MOZ_DEVTOOLS_PERFTOOLS
|
||||
pref("devtools.performance_dev.enabled", true);
|
||||
#else
|
||||
pref("devtools.performance_dev.enabled", false);
|
||||
#endif
|
||||
|
||||
// The default Profiler UI settings
|
||||
// TODO remove `devtools.profiler.ui.` branches when performance
|
||||
// tool lands (bug 1075567)
|
||||
pref("devtools.profiler.ui.flatten-tree-recursion", true);
|
||||
pref("devtools.profiler.ui.show-platform-data", false);
|
||||
pref("devtools.profiler.ui.show-idle-blocks", true);
|
||||
// Enable the Performance tools
|
||||
pref("devtools.performance.enabled", true);
|
||||
|
||||
// The default Performance UI settings
|
||||
pref("devtools.performance.memory.sample-probability", "0.05");
|
||||
|
@ -2475,12 +2475,6 @@
|
||||
// Make sure to unregister any open URIs.
|
||||
this._swapRegisteredOpenURIs(ourBrowser, aOtherBrowser);
|
||||
|
||||
// Give others a chance to swap state.
|
||||
let event = new CustomEvent("SwapDocShells", {"detail": aOtherBrowser});
|
||||
ourBrowser.dispatchEvent(event);
|
||||
event = new CustomEvent("SwapDocShells", {"detail": ourBrowser});
|
||||
aOtherBrowser.dispatchEvent(event);
|
||||
|
||||
// Swap the docshells
|
||||
ourBrowser.swapDocShells(aOtherBrowser);
|
||||
|
||||
|
@ -21,7 +21,7 @@ add_task(function*() {
|
||||
is(SessionStore.getClosedWindowCount(), 1, "Should have restore data for the closed window");
|
||||
|
||||
win = SessionStore.undoCloseWindow(0);
|
||||
yield BrowserTestUtils.waitForEvent(win, "load");
|
||||
yield BrowserTestUtils.waitForEvent(win, "load", 10000);
|
||||
yield BrowserTestUtils.waitForEvent(win.gBrowser.tabs[0], "SSTabRestored");
|
||||
|
||||
is(win.gBrowser.tabs.length, 1, "Should have restored one tab");
|
||||
|
@ -9,6 +9,7 @@
|
||||
*/
|
||||
function runTests() {
|
||||
requestLongerTimeout(2);
|
||||
yield addNewTabPageTab();
|
||||
|
||||
// test a simple drag-and-drop scenario
|
||||
yield setLinks("0,1,2,3,4,5,6,7,8");
|
||||
|
@ -13,6 +13,7 @@ const PREF_NEWTAB_COLUMNS = "browser.newtabpage.columns";
|
||||
*/
|
||||
function runTests() {
|
||||
registerCleanupFunction(_ => Services.prefs.clearUserPref(PREF_NEWTAB_COLUMNS));
|
||||
yield addNewTabPageTab();
|
||||
|
||||
// drag a new site onto the very first cell
|
||||
yield setLinks("0,1,2,3,4,5,6,7,8");
|
||||
|
@ -6,6 +6,8 @@
|
||||
* dragging them around.
|
||||
*/
|
||||
function runTests() {
|
||||
yield addNewTabPageTab();
|
||||
|
||||
// the first three sites are pinned - make sure they're re-arranged correctly
|
||||
yield setLinks("0,1,2,3,4,5,6,7,8");
|
||||
setPinnedLinks("0,1,2,,,5");
|
||||
|
@ -10,7 +10,7 @@ let gAddon, gClient, gThreadClient, gDebugger, gSources;
|
||||
let PREFS = [
|
||||
"devtools.canvasdebugger.enabled",
|
||||
"devtools.shadereditor.enabled",
|
||||
"devtools.profiler.enabled",
|
||||
"devtools.performance.enabled",
|
||||
"devtools.netmonitor.enabled"
|
||||
];
|
||||
function test() {
|
||||
|
@ -1217,8 +1217,8 @@ let gDevToolsBrowser = {
|
||||
* necessary because of the WebConsole's `profile` and `profileEnd` methods.
|
||||
*/
|
||||
_connectToProfiler: function DT_connectToProfiler(event, toolbox) {
|
||||
let SharedProfilerUtils = devtools.require("devtools/profiler/shared");
|
||||
let connection = SharedProfilerUtils.getProfilerConnection(toolbox);
|
||||
let SharedPerformanceUtils = devtools.require("devtools/performance/front");
|
||||
let connection = SharedPerformanceUtils.getPerformanceActorsConnection(toolbox.target);
|
||||
connection.open();
|
||||
},
|
||||
|
||||
|
@ -87,7 +87,7 @@
|
||||
<vbox id="profiler-options" class="options-groupbox">
|
||||
<checkbox label="&options.showPlatformData.label;"
|
||||
tooltiptext="&options.showPlatformData.tooltip;"
|
||||
data-pref="devtools.profiler.ui.show-platform-data"/>
|
||||
data-pref="devtools.performance.ui.show-platform-data"/>
|
||||
</vbox>
|
||||
</vbox>
|
||||
|
||||
|
@ -51,7 +51,7 @@ let connect = Task.async(function*() {
|
||||
// Certain options should be toggled since we can assume chrome debugging here
|
||||
function setPrefDefaults() {
|
||||
Services.prefs.setBoolPref("devtools.inspector.showUserAgentStyles", true);
|
||||
Services.prefs.setBoolPref("devtools.profiler.ui.show-platform-data", true);
|
||||
Services.prefs.setBoolPref("devtools.performance.ui.show-platform-data", true);
|
||||
Services.prefs.setBoolPref("browser.devedition.theme.showCustomizeButton", false);
|
||||
Services.prefs.setBoolPref("devtools.inspector.showAllAnonymousContent", true);
|
||||
Services.prefs.setBoolPref("browser.dom.window.dump.enabled", true);
|
||||
|
@ -89,11 +89,6 @@ browser.jar:
|
||||
content/browser/devtools/webaudioeditor/views/inspector.js (webaudioeditor/views/inspector.js)
|
||||
content/browser/devtools/webaudioeditor/views/properties.js (webaudioeditor/views/properties.js)
|
||||
content/browser/devtools/webaudioeditor/views/automation.js (webaudioeditor/views/automation.js)
|
||||
content/browser/devtools/profiler.xul (profiler/profiler.xul)
|
||||
content/browser/devtools/profiler.js (profiler/profiler.js)
|
||||
content/browser/devtools/ui-recordings.js (profiler/ui-recordings.js)
|
||||
content/browser/devtools/ui-profile.js (profiler/ui-profile.js)
|
||||
#ifdef MOZ_DEVTOOLS_PERFTOOLS
|
||||
content/browser/devtools/performance.xul (performance/performance.xul)
|
||||
content/browser/devtools/performance/performance-controller.js (performance/performance-controller.js)
|
||||
content/browser/devtools/performance/performance-view.js (performance/performance-view.js)
|
||||
@ -107,7 +102,6 @@ browser.jar:
|
||||
content/browser/devtools/performance/views/details-memory-call-tree.js (performance/views/details-memory-call-tree.js)
|
||||
content/browser/devtools/performance/views/details-memory-flamegraph.js (performance/views/details-memory-flamegraph.js)
|
||||
content/browser/devtools/performance/views/recordings.js (performance/views/recordings.js)
|
||||
#endif
|
||||
content/browser/devtools/responsivedesign/resize-commands.js (responsivedesign/resize-commands.js)
|
||||
content/browser/devtools/commandline.css (commandline/commandline.css)
|
||||
content/browser/devtools/commandlineoutput.xhtml (commandline/commandlineoutput.xhtml)
|
||||
@ -148,5 +142,3 @@ browser.jar:
|
||||
content/browser/devtools/eyedropper.xul (eyedropper/eyedropper.xul)
|
||||
content/browser/devtools/eyedropper/crosshairs.css (eyedropper/crosshairs.css)
|
||||
content/browser/devtools/eyedropper/nocursor.css (eyedropper/nocursor.css)
|
||||
content/browser/devtools/timeline/timeline.xul (timeline/timeline.xul)
|
||||
content/browser/devtools/timeline/timeline.js (timeline/timeline.js)
|
||||
|
@ -30,9 +30,7 @@ loader.lazyGetter(this, "StyleEditorPanel", () => require("devtools/styleeditor/
|
||||
loader.lazyGetter(this, "ShaderEditorPanel", () => require("devtools/shadereditor/panel").ShaderEditorPanel);
|
||||
loader.lazyGetter(this, "CanvasDebuggerPanel", () => require("devtools/canvasdebugger/panel").CanvasDebuggerPanel);
|
||||
loader.lazyGetter(this, "WebAudioEditorPanel", () => require("devtools/webaudioeditor/panel").WebAudioEditorPanel);
|
||||
loader.lazyGetter(this, "ProfilerPanel", () => require("devtools/profiler/panel").ProfilerPanel);
|
||||
loader.lazyGetter(this, "PerformancePanel", () => require("devtools/performance/panel").PerformancePanel);
|
||||
loader.lazyGetter(this, "TimelinePanel", () => require("devtools/timeline/panel").TimelinePanel);
|
||||
loader.lazyGetter(this, "NetMonitorPanel", () => require("devtools/netmonitor/panel").NetMonitorPanel);
|
||||
loader.lazyGetter(this, "StoragePanel", () => require("devtools/storage/panel").StoragePanel);
|
||||
loader.lazyGetter(this, "ScratchpadPanel", () => require("devtools/scratchpad/scratchpad-panel").ScratchpadPanel);
|
||||
@ -47,7 +45,6 @@ const shaderEditorProps = "chrome://browser/locale/devtools/shadereditor.propert
|
||||
const canvasDebuggerProps = "chrome://browser/locale/devtools/canvasdebugger.properties";
|
||||
const webAudioEditorProps = "chrome://browser/locale/devtools/webaudioeditor.properties";
|
||||
const profilerProps = "chrome://browser/locale/devtools/profiler.properties";
|
||||
const timelineProps = "chrome://browser/locale/devtools/timeline.properties";
|
||||
const netMonitorProps = "chrome://browser/locale/devtools/netmonitor.properties";
|
||||
const storageProps = "chrome://browser/locale/devtools/storage.properties";
|
||||
const scratchpadProps = "chrome://browser/locale/devtools/scratchpad.properties";
|
||||
@ -61,7 +58,6 @@ loader.lazyGetter(this, "shaderEditorStrings", () => Services.strings.createBund
|
||||
loader.lazyGetter(this, "canvasDebuggerStrings", () => Services.strings.createBundle(canvasDebuggerProps));
|
||||
loader.lazyGetter(this, "webAudioEditorStrings", () => Services.strings.createBundle(webAudioEditorProps));
|
||||
loader.lazyGetter(this, "inspectorStrings", () => Services.strings.createBundle(inspectorProps));
|
||||
loader.lazyGetter(this, "timelineStrings", () => Services.strings.createBundle(timelineProps));
|
||||
loader.lazyGetter(this, "netMonitorStrings", () => Services.strings.createBundle(netMonitorProps));
|
||||
loader.lazyGetter(this, "storageStrings", () => Services.strings.createBundle(storageProps));
|
||||
loader.lazyGetter(this, "scratchpadStrings", () => Services.strings.createBundle(scratchpadProps));
|
||||
@ -249,41 +245,15 @@ Tools.canvasDebugger = {
|
||||
}
|
||||
};
|
||||
|
||||
Tools.jsprofiler = {
|
||||
id: "jsprofiler",
|
||||
accesskey: l10n("profiler.accesskey", profilerStrings),
|
||||
key: l10n("profiler.commandkey2", profilerStrings),
|
||||
ordinal: 7,
|
||||
modifiers: "shift",
|
||||
visibilityswitch: "devtools.profiler.enabled",
|
||||
icon: "chrome://browser/skin/devtools/tool-profiler.svg",
|
||||
invertIconForLightTheme: true,
|
||||
url: "chrome://browser/content/devtools/profiler.xul",
|
||||
label: l10n("profiler.label2", profilerStrings),
|
||||
panelLabel: l10n("profiler.panelLabel2", profilerStrings),
|
||||
tooltip: l10n("profiler.tooltip2", profilerStrings),
|
||||
inMenu: true,
|
||||
|
||||
isTargetSupported: function (target) {
|
||||
// Hide the profiler when debugging devices pre bug 1046394,
|
||||
// that don't expose profiler actor in content processes.
|
||||
return target.hasActor("profiler");
|
||||
},
|
||||
|
||||
build: function (frame, target) {
|
||||
return new ProfilerPanel(frame, target);
|
||||
}
|
||||
};
|
||||
|
||||
Tools.performance = {
|
||||
id: "performance",
|
||||
ordinal: 19,
|
||||
ordinal: 7,
|
||||
icon: "chrome://browser/skin/devtools/tool-profiler.svg",
|
||||
invertIconForLightTheme: true,
|
||||
url: "chrome://browser/content/devtools/performance.xul",
|
||||
// TODO bug 1082695 audit the Performance tools labels
|
||||
label: "Performance++", //l10n("profiler.label2", profilerStrings),
|
||||
panelLabel: "Performance++", //l10n("profiler.panelLabel2", profilerStrings),
|
||||
visibilityswitch: "devtools.performance.enabled",
|
||||
label: l10n("profiler.label2", profilerStrings),
|
||||
panelLabel: l10n("profiler.panelLabel2", profilerStrings),
|
||||
tooltip: l10n("profiler.tooltip2", profilerStrings),
|
||||
accesskey: l10n("profiler.accesskey", profilerStrings),
|
||||
key: l10n("profiler.commandkey2", profilerStrings),
|
||||
@ -299,27 +269,6 @@ Tools.performance = {
|
||||
}
|
||||
};
|
||||
|
||||
Tools.timeline = {
|
||||
id: "timeline",
|
||||
ordinal: 8,
|
||||
visibilityswitch: "devtools.timeline.enabled",
|
||||
icon: "chrome://browser/skin/devtools/tool-network.svg",
|
||||
invertIconForLightTheme: true,
|
||||
url: "chrome://browser/content/devtools/timeline/timeline.xul",
|
||||
label: l10n("timeline.label", timelineStrings),
|
||||
panelLabel: l10n("timeline.panelLabel", timelineStrings),
|
||||
tooltip: l10n("timeline.tooltip", timelineStrings),
|
||||
|
||||
isTargetSupported: function(target) {
|
||||
return target.hasActor("timeline");
|
||||
},
|
||||
|
||||
build: function (iframeWindow, toolbox) {
|
||||
let panel = new TimelinePanel(iframeWindow, toolbox);
|
||||
return panel.open();
|
||||
}
|
||||
};
|
||||
|
||||
Tools.netMonitor = {
|
||||
id: "netmonitor",
|
||||
accesskey: l10n("netmonitor.accesskey", netMonitorStrings),
|
||||
@ -422,23 +371,12 @@ let defaultTools = [
|
||||
Tools.shaderEditor,
|
||||
Tools.canvasDebugger,
|
||||
Tools.webAudioEditor,
|
||||
Tools.jsprofiler,
|
||||
Tools.timeline,
|
||||
Tools.performance,
|
||||
Tools.netMonitor,
|
||||
Tools.storage,
|
||||
Tools.scratchpad
|
||||
];
|
||||
|
||||
// Only enable in-development performance tools if `--enable-devtools-perf`
|
||||
// used in build, turning on `devtools.performance_dev.enabled`.
|
||||
// Add to normal `defaultTools` when ready for normal release,
|
||||
// pull out MOZ_DEVTOOLS_PERFTOOLS setting in `./configure.in`, and
|
||||
// leave config on in `./browser/app/profile/firefox.js`, and always
|
||||
// build in `./browser/devtools/moz.build`.
|
||||
if (Services.prefs.getBoolPref("devtools.performance_dev.enabled")) {
|
||||
defaultTools.push(Tools.performance);
|
||||
}
|
||||
|
||||
exports.defaultTools = defaultTools;
|
||||
|
||||
for (let definition of defaultTools) {
|
||||
|
@ -17,7 +17,7 @@ DIRS += [
|
||||
'layoutview',
|
||||
'markupview',
|
||||
'netmonitor',
|
||||
'profiler',
|
||||
'performance',
|
||||
'projecteditor',
|
||||
'responsivedesign',
|
||||
'scratchpad',
|
||||
@ -28,15 +28,11 @@ DIRS += [
|
||||
'styleeditor',
|
||||
'styleinspector',
|
||||
'tilt',
|
||||
'timeline',
|
||||
'webaudioeditor',
|
||||
'webconsole',
|
||||
'webide',
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_DEVTOOLS_PERFTOOLS']:
|
||||
DIRS += ['performance']
|
||||
|
||||
EXTRA_COMPONENTS += [
|
||||
'devtools-clhandler.js',
|
||||
'devtools-clhandler.manifest',
|
||||
|
@ -322,29 +322,51 @@ PerformanceFront.prototype = {
|
||||
}),
|
||||
|
||||
/**
|
||||
* Starts recording allocations in the memory actor, if necessary.
|
||||
* Starts polling for allocations from the memory actor, if necessary.
|
||||
*/
|
||||
_startMemory: Task.async(function *(options) {
|
||||
if (!options.withAllocations) {
|
||||
return 0;
|
||||
}
|
||||
yield this._request("memory", "attach");
|
||||
let memoryStartTime = yield this._request("memory", "startRecordingAllocations", {
|
||||
probability: options.allocationsSampleProbability,
|
||||
maxLogLength: options.allocationsMaxLogLength
|
||||
});
|
||||
let memoryStartTime = yield this._startRecordingAllocations(options);
|
||||
yield this._pullAllocationSites();
|
||||
return memoryStartTime;
|
||||
}),
|
||||
|
||||
/**
|
||||
* Stops recording allocations in the memory actor, if necessary.
|
||||
* Stops polling for allocations from the memory actor, if necessary.
|
||||
*/
|
||||
_stopMemory: Task.async(function *(options) {
|
||||
if (!options.withAllocations) {
|
||||
return 0;
|
||||
}
|
||||
// Since `_pullAllocationSites` is usually running inside a timeout, and
|
||||
// it's performing asynchronous requests to the server, a recording may
|
||||
// be stopped before that method finishes executing. Therefore, we need to
|
||||
// wait for the last request to `getAllocations` to finish before actually
|
||||
// stopping recording allocations.
|
||||
yield this._lastPullAllocationSitesFinished;
|
||||
clearTimeout(this._sitesPullTimeout);
|
||||
|
||||
return yield this._stopRecordingAllocations();
|
||||
}),
|
||||
|
||||
/**
|
||||
* Starts recording allocations in the memory actor.
|
||||
*/
|
||||
_startRecordingAllocations: Task.async(function*(options) {
|
||||
yield this._request("memory", "attach");
|
||||
let memoryStartTime = yield this._request("memory", "startRecordingAllocations", {
|
||||
probability: options.allocationsSampleProbability,
|
||||
maxLogLength: options.allocationsMaxLogLength
|
||||
});
|
||||
return memoryStartTime;
|
||||
}),
|
||||
|
||||
/**
|
||||
* Stops recording allocations in the memory actor.
|
||||
*/
|
||||
_stopRecordingAllocations: Task.async(function*() {
|
||||
let memoryEndTime = yield this._request("memory", "stopRecordingAllocations");
|
||||
yield this._request("memory", "detach");
|
||||
return memoryEndTime;
|
||||
@ -355,13 +377,16 @@ PerformanceFront.prototype = {
|
||||
* them to consumers.
|
||||
*/
|
||||
_pullAllocationSites: Task.async(function *() {
|
||||
let deferred = promise.defer();
|
||||
this._lastPullAllocationSitesFinished = deferred.promise;
|
||||
|
||||
let isDetached = (yield this._request("memory", "getState")) !== "attached";
|
||||
if (isDetached) {
|
||||
deferred.resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
let memoryData = yield this._request("memory", "getAllocations");
|
||||
|
||||
this.emit("allocations", {
|
||||
sites: memoryData.allocations,
|
||||
timestamps: memoryData.allocationsTimestamps,
|
||||
@ -371,6 +396,8 @@ PerformanceFront.prototype = {
|
||||
|
||||
let delay = DEFAULT_ALLOCATION_SITES_PULL_TIMEOUT;
|
||||
this._sitesPullTimeout = setTimeout(this._pullAllocationSites, delay);
|
||||
|
||||
deferred.resolve();
|
||||
}),
|
||||
|
||||
/**
|
||||
|
@ -48,17 +48,13 @@ let DEFAULT_PREFS = [
|
||||
"devtools.performance.ui.show-idle-blocks",
|
||||
"devtools.performance.ui.enable-memory",
|
||||
"devtools.performance.ui.enable-framerate",
|
||||
|
||||
// remove after bug 1075567 is resolved.
|
||||
"devtools.performance_dev.enabled"
|
||||
].reduce((prefs, pref) => {
|
||||
prefs[pref] = Services.prefs.getBoolPref(pref);
|
||||
return prefs;
|
||||
}, {});
|
||||
|
||||
// Enable the new performance panel for all tests. Remove this after
|
||||
// bug 1075567 is resolved.
|
||||
Services.prefs.setBoolPref("devtools.performance_dev.enabled", true);
|
||||
// Enable the new performance panel for all tests.
|
||||
Services.prefs.setBoolPref("devtools.performance.enabled", true);
|
||||
// Enable logging for all the tests. Both the debugger server and frontend will
|
||||
// be affected by this pref.
|
||||
Services.prefs.setBoolPref("devtools.debugger.log", false);
|
||||
|
@ -7,5 +7,3 @@ EXTRA_JS_MODULES.devtools.profiler += [
|
||||
'panel.js',
|
||||
'utils/shared.js'
|
||||
]
|
||||
|
||||
BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
|
||||
|
@ -140,7 +140,7 @@ Telemetry.prototype = {
|
||||
userHistogram: "DEVTOOLS_CANVASDEBUGGER_OPENED_PER_USER_FLAG",
|
||||
timerHistogram: "DEVTOOLS_CANVASDEBUGGER_TIME_ACTIVE_SECONDS"
|
||||
},
|
||||
jsprofiler: {
|
||||
performance: {
|
||||
histogram: "DEVTOOLS_JSPROFILER_OPENED_BOOLEAN",
|
||||
userHistogram: "DEVTOOLS_JSPROFILER_OPENED_PER_USER_FLAG",
|
||||
timerHistogram: "DEVTOOLS_JSPROFILER_TIME_ACTIVE_SECONDS"
|
||||
|
@ -11,7 +11,7 @@ add_task(function*() {
|
||||
yield promiseTab(TEST_URI);
|
||||
let Telemetry = loadTelemetryAndRecordLogs();
|
||||
|
||||
yield openAndCloseToolbox(2, TOOL_DELAY, "jsprofiler");
|
||||
yield openAndCloseToolbox(2, TOOL_DELAY, "performance");
|
||||
checkTelemetryResults(Telemetry);
|
||||
|
||||
stopRecordingTelemetryLogs(Telemetry);
|
||||
|
@ -6,5 +6,3 @@
|
||||
EXTRA_JS_MODULES.devtools.timeline += [
|
||||
'panel.js',
|
||||
]
|
||||
|
||||
BROWSER_CHROME_MANIFESTS += ['test/browser.ini']
|
||||
|
@ -53,7 +53,7 @@ function test()
|
||||
yield openAndCheckPanel("jsdebugger");
|
||||
yield openAndCheckPanel("inspector");
|
||||
yield openAndCheckPanel("styleeditor");
|
||||
yield openAndCheckPanel("jsprofiler");
|
||||
yield openAndCheckPanel("performance");
|
||||
yield openAndCheckPanel("netmonitor");
|
||||
|
||||
yield checkWebconsolePanelOpened();
|
||||
|
@ -15,6 +15,7 @@ const XMLHttpRequest =
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/Task.jsm");
|
||||
Cu.import("resource://gre/modules/Timer.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
|
||||
"resource://gre/modules/NetUtil.jsm");
|
||||
@ -56,6 +57,9 @@ const ALLOWED_IMAGE_SCHEMES = new Set(["https", "data"]);
|
||||
// The frecency of a directory link
|
||||
const DIRECTORY_FRECENCY = 1000;
|
||||
|
||||
// The frecency of a related link
|
||||
const RELATED_FRECENCY = Infinity;
|
||||
|
||||
// Divide frecency by this amount for pings
|
||||
const PING_SCORE_DIVISOR = 10000;
|
||||
|
||||
@ -89,6 +93,11 @@ let DirectoryLinksProvider = {
|
||||
*/
|
||||
_relatedLinks: new Map(),
|
||||
|
||||
/**
|
||||
* A set of top sites that we can provide related links for
|
||||
*/
|
||||
_topSitesWithRelatedLinks: new Set(),
|
||||
|
||||
get _observedPrefs() Object.freeze({
|
||||
enhanced: PREF_NEWTAB_ENHANCED,
|
||||
linksURL: PREF_DIRECTORY_SOURCE,
|
||||
@ -432,7 +441,10 @@ let DirectoryLinksProvider = {
|
||||
}).catch(ex => {
|
||||
Cu.reportError(ex);
|
||||
return [];
|
||||
}).then(aCallback);
|
||||
}).then(links => {
|
||||
aCallback(links);
|
||||
this._populatePlacesLinks();
|
||||
});
|
||||
},
|
||||
|
||||
init: function DirectoryLinksProvider_init() {
|
||||
@ -441,6 +453,9 @@ let DirectoryLinksProvider = {
|
||||
// setup directory file path and last download timestamp
|
||||
this._directoryFilePath = OS.Path.join(OS.Constants.Path.localProfileDir, DIRECTORY_LINKS_FILE);
|
||||
this._lastDownloadMS = 0;
|
||||
|
||||
NewTabUtils.placesProvider.addObserver(this);
|
||||
|
||||
return Task.spawn(function() {
|
||||
// get the last modified time of the links file if it exists
|
||||
let doesFileExists = yield OS.File.exists(this._directoryFilePath);
|
||||
@ -453,6 +468,123 @@ let DirectoryLinksProvider = {
|
||||
}.bind(this));
|
||||
},
|
||||
|
||||
_handleManyLinksChanged: function() {
|
||||
this._topSitesWithRelatedLinks.clear();
|
||||
this._relatedLinks.forEach((relatedLinks, site) => {
|
||||
if (NewTabUtils.isTopPlacesSite(site)) {
|
||||
this._topSitesWithRelatedLinks.add(site);
|
||||
}
|
||||
});
|
||||
this._updateRelatedTile();
|
||||
},
|
||||
|
||||
/**
|
||||
* Updates _topSitesWithRelatedLinks based on the link that was changed.
|
||||
*
|
||||
* @return true if _topSitesWithRelatedLinks was modified, false otherwise.
|
||||
*/
|
||||
_handleLinkChanged: function(aLink) {
|
||||
let changedLinkSite = NewTabUtils.extractSite(aLink.url);
|
||||
let linkStored = this._topSitesWithRelatedLinks.has(changedLinkSite);
|
||||
|
||||
if (!NewTabUtils.isTopPlacesSite(changedLinkSite) && linkStored) {
|
||||
this._topSitesWithRelatedLinks.delete(changedLinkSite);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (this._relatedLinks.has(changedLinkSite) &&
|
||||
NewTabUtils.isTopPlacesSite(changedLinkSite) && !linkStored) {
|
||||
this._topSitesWithRelatedLinks.add(changedLinkSite);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
_populatePlacesLinks: function () {
|
||||
NewTabUtils.links.populateProviderCache(NewTabUtils.placesProvider, () => {
|
||||
this._handleManyLinksChanged();
|
||||
});
|
||||
},
|
||||
|
||||
onLinkChanged: function (aProvider, aLink) {
|
||||
// Make sure NewTabUtils.links handles the notification first.
|
||||
setTimeout(() => {
|
||||
if (this._handleLinkChanged(aLink)) {
|
||||
this._updateRelatedTile();
|
||||
}
|
||||
}, 0);
|
||||
},
|
||||
|
||||
onManyLinksChanged: function () {
|
||||
// Make sure NewTabUtils.links handles the notification first.
|
||||
setTimeout(() => {
|
||||
this._handleManyLinksChanged();
|
||||
}, 0);
|
||||
},
|
||||
|
||||
/**
|
||||
* Chooses and returns a related tile based on a user's top sites
|
||||
* that we have an available related tile for.
|
||||
*
|
||||
* @return the chosen related tile, or undefined if there isn't one
|
||||
*/
|
||||
_updateRelatedTile: function() {
|
||||
let sortedLinks = NewTabUtils.getProviderLinks(this);
|
||||
|
||||
if (!sortedLinks) {
|
||||
// If NewTabUtils.links.resetCache() is called before getting here,
|
||||
// sortedLinks may be undefined.
|
||||
return;
|
||||
}
|
||||
|
||||
// Delete the current related tile, if one exists.
|
||||
let initialLength = sortedLinks.length;
|
||||
this.maxNumLinks = initialLength;
|
||||
if (initialLength) {
|
||||
let mostFrecentLink = sortedLinks[0];
|
||||
if ("related" == mostFrecentLink.type) {
|
||||
this._callObservers("onLinkChanged", {
|
||||
url: mostFrecentLink.url,
|
||||
frecency: 0,
|
||||
lastVisitDate: mostFrecentLink.lastVisitDate,
|
||||
type: "related",
|
||||
}, 0, true);
|
||||
}
|
||||
}
|
||||
|
||||
if (this._topSitesWithRelatedLinks.size == 0) {
|
||||
// There are no potential related links we can show.
|
||||
return;
|
||||
}
|
||||
|
||||
// Create a flat list of all possible links we can show as related.
|
||||
// Note that many top sites may map to the same related links, but we only
|
||||
// want to count each related link once (based on url), thus possibleLinks is a map
|
||||
// from url to relatedLink. Thus, each link has an equal chance of being chosen at
|
||||
// random from flattenedLinks if it appears only once.
|
||||
let possibleLinks = new Map();
|
||||
this._topSitesWithRelatedLinks.forEach(topSiteWithRelatedLink => {
|
||||
let relatedLinksMap = this._relatedLinks.get(topSiteWithRelatedLink);
|
||||
relatedLinksMap.forEach((relatedLink, url) => {
|
||||
possibleLinks.set(url, relatedLink);
|
||||
})
|
||||
});
|
||||
let flattenedLinks = [...possibleLinks.values()];
|
||||
|
||||
// Choose our related link at random
|
||||
let relatedIndex = Math.floor(Math.random() * flattenedLinks.length);
|
||||
let chosenRelatedLink = flattenedLinks[relatedIndex];
|
||||
|
||||
// Show the new directory tile.
|
||||
this._callObservers("onLinkChanged", {
|
||||
url: chosenRelatedLink.url,
|
||||
frecency: RELATED_FRECENCY,
|
||||
lastVisitDate: chosenRelatedLink.lastVisitDate,
|
||||
type: "related",
|
||||
});
|
||||
return chosenRelatedLink;
|
||||
},
|
||||
|
||||
/**
|
||||
* Return the object to its pre-init state
|
||||
*/
|
||||
|
@ -19,6 +19,8 @@ Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
|
||||
"resource://gre/modules/NetUtil.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "NewTabUtils",
|
||||
"resource://gre/modules/NewTabUtils.jsm");
|
||||
|
||||
do_get_profile();
|
||||
|
||||
@ -58,6 +60,42 @@ const BinaryInputStream = CC("@mozilla.org/binaryinputstream;1",
|
||||
"setInputStream");
|
||||
|
||||
let gLastRequestPath;
|
||||
|
||||
let relatedTile1 = {
|
||||
url: "http://turbotax.com",
|
||||
type: "related",
|
||||
lastVisitDate: 4,
|
||||
related: [
|
||||
"taxact.com",
|
||||
"hrblock.com",
|
||||
"1040.com",
|
||||
"taxslayer.com"
|
||||
]
|
||||
};
|
||||
let relatedTile2 = {
|
||||
url: "http://irs.gov",
|
||||
type: "related",
|
||||
lastVisitDate: 3,
|
||||
related: [
|
||||
"taxact.com",
|
||||
"hrblock.com",
|
||||
"freetaxusa.com",
|
||||
"taxslayer.com"
|
||||
]
|
||||
};
|
||||
let relatedTile3 = {
|
||||
url: "http://hrblock.com",
|
||||
type: "related",
|
||||
lastVisitDate: 2,
|
||||
related: [
|
||||
"taxact.com",
|
||||
"freetaxusa.com",
|
||||
"1040.com",
|
||||
"taxslayer.com"
|
||||
]
|
||||
};
|
||||
let someOtherSite = {url: "http://someothersite.com", title: "Not_A_Related_Site"};
|
||||
|
||||
function getHttpHandler(path) {
|
||||
let code = 200;
|
||||
let body = JSON.stringify(kHttpHandlerData[path]);
|
||||
@ -161,6 +199,7 @@ function run_test() {
|
||||
server.registerPrefixHandler(kExamplePath, getHttpHandler(kExamplePath));
|
||||
server.registerPrefixHandler(kFailPath, getHttpHandler(kFailPath));
|
||||
server.start(kDefaultServerPort);
|
||||
NewTabUtils.init();
|
||||
|
||||
run_next_test();
|
||||
|
||||
@ -175,41 +214,132 @@ function run_test() {
|
||||
});
|
||||
}
|
||||
|
||||
add_task(function test_updateRelatedTile() {
|
||||
let topSites = ["site0.com", "1040.com", "site2.com", "hrblock.com", "site4.com", "freetaxusa.com", "site6.com"];
|
||||
|
||||
// Initial setup
|
||||
let data = {"en-US": [relatedTile1, relatedTile2, relatedTile3, someOtherSite]};
|
||||
let dataURI = 'data:application/json,' + JSON.stringify(data);
|
||||
|
||||
let testObserver = new TestFirstRun();
|
||||
DirectoryLinksProvider.addObserver(testObserver);
|
||||
|
||||
yield promiseSetupDirectoryLinksProvider({linksURL: dataURI});
|
||||
let links = yield fetchData();
|
||||
|
||||
let origIsTopPlacesSite = NewTabUtils.isTopPlacesSite;
|
||||
NewTabUtils.isTopPlacesSite = function(site) {
|
||||
return topSites.indexOf(site) >= 0;
|
||||
}
|
||||
|
||||
let origGetProviderLinks = NewTabUtils.getProviderLinks;
|
||||
NewTabUtils.getProviderLinks = function(provider) {
|
||||
return links;
|
||||
}
|
||||
|
||||
do_check_eq(DirectoryLinksProvider._updateRelatedTile(), undefined);
|
||||
|
||||
function TestFirstRun() {
|
||||
this.promise = new Promise(resolve => {
|
||||
this.onLinkChanged = (directoryLinksProvider, link) => {
|
||||
links.unshift(link);
|
||||
let possibleLinks = [relatedTile1.url, relatedTile2.url, relatedTile3.url];
|
||||
|
||||
isIdentical([...DirectoryLinksProvider._topSitesWithRelatedLinks], ["hrblock.com", "1040.com", "freetaxusa.com"]);
|
||||
do_check_true(possibleLinks.indexOf(link.url) > -1);
|
||||
do_check_eq(link.frecency, Infinity);
|
||||
do_check_eq(link.type, "related");
|
||||
resolve();
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function TestChangingRelatedTile() {
|
||||
this.count = 0;
|
||||
this.promise = new Promise(resolve => {
|
||||
this.onLinkChanged = (directoryLinksProvider, link) => {
|
||||
this.count++;
|
||||
let possibleLinks = [relatedTile1.url, relatedTile2.url, relatedTile3.url];
|
||||
|
||||
do_check_true(possibleLinks.indexOf(link.url) > -1);
|
||||
do_check_eq(link.type, "related");
|
||||
do_check_true(this.count <= 2);
|
||||
|
||||
if (this.count == 1) {
|
||||
// The removed related link is the one we added initially.
|
||||
do_check_eq(link.url, links.shift().url);
|
||||
do_check_eq(link.frecency, 0);
|
||||
} else {
|
||||
links.unshift(link);
|
||||
do_check_eq(link.frecency, Infinity);
|
||||
}
|
||||
isIdentical([...DirectoryLinksProvider._topSitesWithRelatedLinks], ["hrblock.com", "freetaxusa.com"]);
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function TestRemovingRelatedTile() {
|
||||
this.count = 0;
|
||||
this.promise = new Promise(resolve => {
|
||||
this.onLinkChanged = (directoryLinksProvider, link) => {
|
||||
this.count++;
|
||||
|
||||
do_check_eq(link.type, "related");
|
||||
do_check_eq(this.count, 1);
|
||||
do_check_eq(link.frecency, 0);
|
||||
do_check_eq(link.url, links.shift().url);
|
||||
isIdentical([...DirectoryLinksProvider._topSitesWithRelatedLinks], []);
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// Test first call to '_updateRelatedTile()', called when fetching directory links.
|
||||
yield testObserver.promise;
|
||||
DirectoryLinksProvider.removeObserver(testObserver);
|
||||
|
||||
// Removing a top site that doesn't have a related link should
|
||||
// not change the current related tile.
|
||||
let removedTopsite = topSites.shift();
|
||||
do_check_eq(removedTopsite, "site0.com");
|
||||
do_check_false(NewTabUtils.isTopPlacesSite(removedTopsite));
|
||||
let updateRelatedTile = DirectoryLinksProvider._handleLinkChanged({
|
||||
url: "http://" + removedTopsite,
|
||||
type: "history",
|
||||
});
|
||||
do_check_false(updateRelatedTile);
|
||||
|
||||
// Removing a top site that has a related link should
|
||||
// remove any current related tile and add a new one.
|
||||
testObserver = new TestChangingRelatedTile();
|
||||
DirectoryLinksProvider.addObserver(testObserver);
|
||||
removedTopsite = topSites.shift();
|
||||
do_check_eq(removedTopsite, "1040.com");
|
||||
do_check_false(NewTabUtils.isTopPlacesSite(removedTopsite));
|
||||
DirectoryLinksProvider.onLinkChanged(DirectoryLinksProvider, {
|
||||
url: "http://" + removedTopsite,
|
||||
type: "history",
|
||||
});
|
||||
yield testObserver.promise;
|
||||
do_check_eq(testObserver.count, 2);
|
||||
DirectoryLinksProvider.removeObserver(testObserver);
|
||||
|
||||
// Removing all top sites with related links should remove
|
||||
// the current related link and not replace it.
|
||||
topSites = [];
|
||||
testObserver = new TestRemovingRelatedTile();
|
||||
DirectoryLinksProvider.addObserver(testObserver);
|
||||
DirectoryLinksProvider.onManyLinksChanged();
|
||||
yield testObserver.promise;
|
||||
|
||||
// Cleanup
|
||||
yield promiseCleanDirectoryLinksProvider();
|
||||
NewTabUtils.isTopPlacesSite = origIsTopPlacesSite;
|
||||
NewTabUtils.getProviderLinks = origGetProviderLinks;
|
||||
});
|
||||
|
||||
add_task(function test_relatedLinksMap() {
|
||||
let relatedTile1 = {
|
||||
url: "http://turbotax.com",
|
||||
type: "related",
|
||||
lastVisitDate: 4,
|
||||
related: [
|
||||
"taxact.com",
|
||||
"hrblock.com",
|
||||
"1040.com",
|
||||
"taxslayer.com"
|
||||
]
|
||||
};
|
||||
let relatedTile2 = {
|
||||
url: "http://irs.gov",
|
||||
type: "related",
|
||||
lastVisitDate: 3,
|
||||
related: [
|
||||
"taxact.com",
|
||||
"hrblock.com",
|
||||
"freetaxusa.com",
|
||||
"taxslayer.com"
|
||||
]
|
||||
};
|
||||
let relatedTile3 = {
|
||||
url: "http://hrblock.com",
|
||||
type: "related",
|
||||
lastVisitDate: 2,
|
||||
related: [
|
||||
"taxact.com",
|
||||
"freetaxusa.com",
|
||||
"1040.com",
|
||||
"taxslayer.com"
|
||||
]
|
||||
};
|
||||
let someOtherSite = {url: "http://someothersite.com", title: "Not_A_Related_Site"};
|
||||
let data = {"en-US": [relatedTile1, relatedTile2, relatedTile3, someOtherSite]};
|
||||
let dataURI = 'data:application/json,' + JSON.stringify(data);
|
||||
|
||||
@ -240,6 +370,58 @@ add_task(function test_relatedLinksMap() {
|
||||
yield promiseCleanDirectoryLinksProvider();
|
||||
});
|
||||
|
||||
add_task(function test_topSitesWithRelatedLinks() {
|
||||
let topSites = ["site0.com", "1040.com", "site2.com", "hrblock.com", "site4.com", "freetaxusa.com", "site6.com"];
|
||||
let origIsTopPlacesSite = NewTabUtils.isTopPlacesSite;
|
||||
NewTabUtils.isTopPlacesSite = function(site) {
|
||||
return topSites.indexOf(site) >= 0;
|
||||
}
|
||||
|
||||
// Mock out getProviderLinks() so we don't have to populate cache in NewTabUtils
|
||||
let origGetProviderLinks = NewTabUtils.getProviderLinks;
|
||||
NewTabUtils.getProviderLinks = function(provider) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// We start off with no top sites with related links.
|
||||
do_check_eq(DirectoryLinksProvider._topSitesWithRelatedLinks.size, 0);
|
||||
|
||||
let data = {"en-US": [relatedTile1, relatedTile2, relatedTile3, someOtherSite]};
|
||||
let dataURI = 'data:application/json,' + JSON.stringify(data);
|
||||
|
||||
yield promiseSetupDirectoryLinksProvider({linksURL: dataURI});
|
||||
let links = yield fetchData();
|
||||
|
||||
// Check we've populated related links as expected.
|
||||
do_check_eq(DirectoryLinksProvider._relatedLinks.size, 5);
|
||||
|
||||
// When many sites change, we update _topSitesWithRelatedLinks as expected.
|
||||
let expectedTopSitesWithRelatedLinks = ["hrblock.com", "1040.com", "freetaxusa.com"];
|
||||
DirectoryLinksProvider._handleManyLinksChanged();
|
||||
isIdentical([...DirectoryLinksProvider._topSitesWithRelatedLinks], expectedTopSitesWithRelatedLinks);
|
||||
|
||||
// Removing site6.com as a topsite has no impact on _topSitesWithRelatedLinks.
|
||||
let popped = topSites.pop();
|
||||
DirectoryLinksProvider._handleLinkChanged({url: "http://" + popped});
|
||||
isIdentical([...DirectoryLinksProvider._topSitesWithRelatedLinks], expectedTopSitesWithRelatedLinks);
|
||||
|
||||
// Removing freetaxusa.com as a topsite will remove it from _topSitesWithRelatedLinks.
|
||||
popped = topSites.pop();
|
||||
expectedTopSitesWithRelatedLinks.pop();
|
||||
DirectoryLinksProvider._handleLinkChanged({url: "http://" + popped});
|
||||
isIdentical([...DirectoryLinksProvider._topSitesWithRelatedLinks], expectedTopSitesWithRelatedLinks);
|
||||
|
||||
// Re-adding freetaxusa.com as a topsite will add it to _topSitesWithRelatedLinks.
|
||||
topSites.push(popped);
|
||||
expectedTopSitesWithRelatedLinks.push(popped);
|
||||
DirectoryLinksProvider._handleLinkChanged({url: "http://" + popped});
|
||||
isIdentical([...DirectoryLinksProvider._topSitesWithRelatedLinks], expectedTopSitesWithRelatedLinks);
|
||||
|
||||
// Cleanup.
|
||||
NewTabUtils.isTopPlacesSite = origIsTopPlacesSite;
|
||||
NewTabUtils.getProviderLinks = origGetProviderLinks;
|
||||
});
|
||||
|
||||
add_task(function test_reportSitesAction() {
|
||||
yield DirectoryLinksProvider.init();
|
||||
let deferred, expectedPath, expectedPost;
|
||||
|
Before Width: | Height: | Size: 99 B After Width: | Height: | Size: 92 B |
Before Width: | Height: | Size: 816 B After Width: | Height: | Size: 802 B |
Before Width: | Height: | Size: 146 B After Width: | Height: | Size: 122 B |
Before Width: | Height: | Size: 827 B After Width: | Height: | Size: 814 B |
Before Width: | Height: | Size: 665 B After Width: | Height: | Size: 652 B |
Before Width: | Height: | Size: 669 B After Width: | Height: | Size: 658 B |
Before Width: | Height: | Size: 99 B After Width: | Height: | Size: 92 B |
Before Width: | Height: | Size: 142 B After Width: | Height: | Size: 120 B |
Before Width: | Height: | Size: 816 B After Width: | Height: | Size: 802 B |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 146 B After Width: | Height: | Size: 122 B |
Before Width: | Height: | Size: 931 B After Width: | Height: | Size: 782 B |
Before Width: | Height: | Size: 827 B After Width: | Height: | Size: 814 B |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 2.9 KiB |
Before Width: | Height: | Size: 665 B After Width: | Height: | Size: 652 B |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 669 B After Width: | Height: | Size: 658 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
@ -17,3 +17,6 @@ ac_add_options --enable-crashreporter
|
||||
ac_add_options --enable-release
|
||||
|
||||
. "$topsrcdir/build/mozconfig.automation"
|
||||
|
||||
# Temporarily enable building the new Performance++ tool.
|
||||
ac_add_options --enable-devtools-perf
|
||||
|
13
configure.in
@ -7665,19 +7665,6 @@ if test "$MOZ_CHROME_FILE_FORMAT" != "jar" &&
|
||||
AC_MSG_ERROR([--enable-chrome-format must be set to either jar, flat, or omni])
|
||||
fi
|
||||
|
||||
dnl =========================================================
|
||||
dnl Enable support for revamped devtools Performance Tools
|
||||
dnl =========================================================
|
||||
|
||||
MOZ_ARG_ENABLE_BOOL(devtools-perf,
|
||||
[ --enable-devtools-perf Set compile flags necessary for compiling devtools perftools],
|
||||
MOZ_DEVTOOLS_PERFTOOLS=1,
|
||||
MOZ_DEVTOOLS_PERFTOOLS= )
|
||||
if test -n "$MOZ_DEVTOOLS_PERFTOOLS"; then
|
||||
AC_DEFINE(MOZ_DEVTOOLS_PERFTOOLS)
|
||||
fi
|
||||
AC_SUBST(MOZ_DEVTOOLS_PERFTOOLS)
|
||||
|
||||
dnl =========================================================
|
||||
dnl Omnijar packaging (bug 552121)
|
||||
dnl =========================================================
|
||||
|
@ -43,7 +43,10 @@ static RedirEntry kRedirMap[] = {
|
||||
"mozilla", "chrome://global/content/mozilla.xhtml",
|
||||
nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT
|
||||
},
|
||||
{ "plugins", "chrome://global/content/plugins.html", 0 },
|
||||
{
|
||||
"plugins", "chrome://global/content/plugins.html",
|
||||
nsIAboutModule::URI_MUST_LOAD_IN_CHILD
|
||||
},
|
||||
{ "config", "chrome://global/content/config.xul", 0 },
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
{ "crashes", "chrome://global/content/crashes.xhtml", 0 },
|
||||
|
@ -1455,7 +1455,6 @@ InsertVsyncProfilerMarker(TimeStamp aVsyncTimestamp)
|
||||
{
|
||||
#ifdef MOZ_ENABLE_PROFILER_SPS
|
||||
MOZ_ASSERT(CompositorParent::IsInCompositorThread());
|
||||
MOZ_ASSERT(profiler_is_active());
|
||||
VsyncPayload* payload = new VsyncPayload(aVsyncTimestamp);
|
||||
PROFILER_MARKER_PAYLOAD("VsyncTimestamp", payload);
|
||||
#endif
|
||||
@ -1464,6 +1463,7 @@ InsertVsyncProfilerMarker(TimeStamp aVsyncTimestamp)
|
||||
/*static */ void
|
||||
CompositorParent::PostInsertVsyncProfilerMarker(TimeStamp aVsyncTimestamp)
|
||||
{
|
||||
// Called in the vsync thread
|
||||
if (profiler_is_active() && sCompositorThreadHolder) {
|
||||
CompositorLoop()->PostTask(FROM_HERE,
|
||||
NewRunnableFunction(InsertVsyncProfilerMarker, aVsyncTimestamp));
|
||||
|
@ -378,11 +378,15 @@
|
||||
</provider>
|
||||
|
||||
#ifdef MOZ_ANDROID_SHARE_OVERLAY
|
||||
<!-- Share overlay activity -->
|
||||
<!-- Share overlay activity
|
||||
|
||||
Setting launchMode="singleTop" ensures onNewIntent is called when the Activity is
|
||||
reused. Ideally we create a new instance but Android L breaks this (bug 1137928). -->
|
||||
<activity android:name="org.mozilla.gecko.overlays.ui.ShareDialog"
|
||||
android:label="@string/overlay_share_label"
|
||||
android:theme="@style/ShareOverlayActivity"
|
||||
android:configChanges="keyboard|keyboardHidden|mcc|mnc|locale|layoutDirection"
|
||||
android:launchMode="singleTop"
|
||||
android:windowSoftInputMode="stateAlwaysHidden|adjustResize">
|
||||
|
||||
<intent-filter>
|
||||
|
@ -58,6 +58,7 @@ import org.mozilla.gecko.mozglue.ContextUtils;
|
||||
import org.mozilla.gecko.mozglue.ContextUtils.SafeIntent;
|
||||
import org.mozilla.gecko.mozglue.RobocopTarget;
|
||||
import org.mozilla.gecko.firstrun.FirstrunPane;
|
||||
import org.mozilla.gecko.overlays.ui.ShareDialog;
|
||||
import org.mozilla.gecko.preferences.ClearOnShutdownPref;
|
||||
import org.mozilla.gecko.preferences.GeckoPreferences;
|
||||
import org.mozilla.gecko.prompts.Prompt;
|
||||
@ -3048,6 +3049,7 @@ public class BrowserApp extends GeckoApp
|
||||
shareIntent.putExtra(Intent.EXTRA_TEXT, url);
|
||||
shareIntent.putExtra(Intent.EXTRA_SUBJECT, tab.getDisplayTitle());
|
||||
shareIntent.putExtra(Intent.EXTRA_TITLE, tab.getDisplayTitle());
|
||||
shareIntent.putExtra(ShareDialog.INTENT_EXTRA_DEVICES_ONLY, true);
|
||||
|
||||
// Clear the existing thumbnail extras so we don't share an old thumbnail.
|
||||
shareIntent.removeExtra("share_screenshot_uri");
|
||||
|
@ -115,6 +115,10 @@
|
||||
<!ENTITY overlay_share_no_url "No link found in this share">
|
||||
<!ENTITY overlay_share_retry "Try again">
|
||||
<!ENTITY overlay_share_select_device "Select device">
|
||||
<!-- Localization note (overlay_no_synced_devices) : Used when the menu option
|
||||
to send a tab to a synced device is pressed and no other synced devices
|
||||
are found. -->
|
||||
<!ENTITY overlay_no_synced_devices "No Firefox Account connected devices found">
|
||||
|
||||
<!ENTITY pref_category_search3 "Search">
|
||||
<!ENTITY pref_category_search_summary "Customize your search providers">
|
||||
|
@ -114,15 +114,6 @@ public class SendTabList extends ListView {
|
||||
final ParcelableClientRecord[] clients = c == null ? new ParcelableClientRecord[0] : c;
|
||||
|
||||
clientListAdapter.setClientRecordList(Arrays.asList(clients));
|
||||
|
||||
if (clients.length <= MAXIMUM_INLINE_ELEMENTS) {
|
||||
// Show the list of devices in-line.
|
||||
switchState(LIST);
|
||||
return;
|
||||
}
|
||||
|
||||
// Just show a button to launch the list of devices to choose from.
|
||||
switchState(SHOW_DEVICES);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -163,16 +154,4 @@ public class SendTabList extends ListView {
|
||||
|
||||
return builder.create();
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevent scrolling of this ListView.
|
||||
*/
|
||||
@Override
|
||||
public boolean dispatchTouchEvent(MotionEvent ev) {
|
||||
if (ev.getAction() == MotionEvent.ACTION_MOVE) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.dispatchTouchEvent(ev);
|
||||
}
|
||||
}
|
||||
|
@ -50,8 +50,27 @@ import android.widget.Toast;
|
||||
* A transparent activity that displays the share overlay.
|
||||
*/
|
||||
public class ShareDialog extends Locales.LocaleAwareActivity implements SendTabTargetSelectedListener {
|
||||
|
||||
private enum State {
|
||||
DEFAULT,
|
||||
DEVICES_ONLY // Only display the device list.
|
||||
}
|
||||
|
||||
private static final String LOGTAG = "GeckoShareDialog";
|
||||
|
||||
/** Flag to indicate that we should always show the device list; specific to this release channel. **/
|
||||
public static final String INTENT_EXTRA_DEVICES_ONLY =
|
||||
AppConstants.ANDROID_PACKAGE_NAME + ".intent.extra.DEVICES_ONLY";
|
||||
|
||||
/** The maximum number of devices we'll show in the dialog when in State.DEFAULT. **/
|
||||
private static final int MAXIMUM_INLINE_DEVICES = 2;
|
||||
|
||||
private State state;
|
||||
|
||||
private SendTabList sendTabList;
|
||||
private OverlayDialogButton readingListButton;
|
||||
private OverlayDialogButton bookmarkButton;
|
||||
|
||||
private String url;
|
||||
private String title;
|
||||
|
||||
@ -82,10 +101,31 @@ public class ShareDialog extends Locales.LocaleAwareActivity implements SendTabT
|
||||
protected void handleSendTabUIEvent(Intent intent) {
|
||||
sendTabOverrideIntent = intent.getParcelableExtra(SendTab.OVERRIDE_INTENT);
|
||||
|
||||
SendTabList sendTabList = (SendTabList) findViewById(R.id.overlay_send_tab_btn);
|
||||
|
||||
ParcelableClientRecord[] clientrecords = (ParcelableClientRecord[]) intent.getParcelableArrayExtra(SendTab.EXTRA_CLIENT_RECORDS);
|
||||
|
||||
// Escape hatch: we don't show the option to open this dialog in this state so this should
|
||||
// never be run. However, due to potential inconsistencies in synced client state
|
||||
// (e.g. bug 1122302 comment 47), we might fail.
|
||||
if (state == State.DEVICES_ONLY && clientrecords.length == 0) {
|
||||
Log.e(LOGTAG, "In state: " + State.DEVICES_ONLY + " and received 0 synced clients. Finishing...");
|
||||
Toast.makeText(this, getResources().getText(R.string.overlay_no_synced_devices), Toast.LENGTH_SHORT)
|
||||
.show();
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
|
||||
sendTabList.setSyncClients(clientrecords);
|
||||
|
||||
if (state == State.DEVICES_ONLY ||
|
||||
clientrecords == null ||
|
||||
clientrecords.length <= MAXIMUM_INLINE_DEVICES) {
|
||||
// Show the list of devices in-line.
|
||||
sendTabList.switchState(SendTabList.State.LIST);
|
||||
return;
|
||||
}
|
||||
|
||||
// Just show a button to launch the list of devices to choose from.
|
||||
sendTabList.switchState(SendTabList.State.SHOW_DEVICES);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -117,9 +157,66 @@ public class ShareDialog extends Locales.LocaleAwareActivity implements SendTabT
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
getWindow().setWindowAnimations(0);
|
||||
setContentView(R.layout.overlay_share_dialog);
|
||||
|
||||
LocalBroadcastManager.getInstance(this).registerReceiver(uiEventListener,
|
||||
new IntentFilter(OverlayConstants.SHARE_METHOD_UI_EVENT));
|
||||
|
||||
// Send tab.
|
||||
sendTabList = (SendTabList) findViewById(R.id.overlay_send_tab_btn);
|
||||
|
||||
// Register ourselves as both the listener and the context for the Adapter.
|
||||
final SendTabDeviceListArrayAdapter adapter = new SendTabDeviceListArrayAdapter(this, this);
|
||||
sendTabList.setAdapter(adapter);
|
||||
sendTabList.setSendTabTargetSelectedListener(this);
|
||||
|
||||
bookmarkButton = (OverlayDialogButton) findViewById(R.id.overlay_share_bookmark_btn);
|
||||
readingListButton = (OverlayDialogButton) findViewById(R.id.overlay_share_reading_list_btn);
|
||||
|
||||
Intent intent = getIntent();
|
||||
final Resources resources = getResources();
|
||||
final String bookmarkEnabledLabel = resources.getString(R.string.overlay_share_bookmark_btn_label);
|
||||
final Drawable bookmarkEnabledIcon = resources.getDrawable(R.drawable.overlay_bookmark_icon);
|
||||
bookmarkButton.setEnabledLabelAndIcon(bookmarkEnabledLabel, bookmarkEnabledIcon);
|
||||
|
||||
final String bookmarkDisabledLabel = resources.getString(R.string.overlay_share_bookmark_btn_label_already);
|
||||
final Drawable bookmarkDisabledIcon = resources.getDrawable(R.drawable.overlay_bookmarked_already_icon);
|
||||
bookmarkButton.setDisabledLabelAndIcon(bookmarkDisabledLabel, bookmarkDisabledIcon);
|
||||
|
||||
bookmarkButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
addBookmark();
|
||||
}
|
||||
});
|
||||
|
||||
final String readingListEnabledLabel = resources.getString(R.string.overlay_share_reading_list_btn_label);
|
||||
final Drawable readingListEnabledIcon = resources.getDrawable(R.drawable.overlay_readinglist_icon);
|
||||
readingListButton.setEnabledLabelAndIcon(readingListEnabledLabel, readingListEnabledIcon);
|
||||
|
||||
final String readingListDisabledLabel = resources.getString(R.string.overlay_share_reading_list_btn_label_already);
|
||||
final Drawable readingListDisabledIcon = resources.getDrawable(R.drawable.overlay_readinglist_already_icon);
|
||||
readingListButton.setDisabledLabelAndIcon(readingListDisabledLabel, readingListDisabledIcon);
|
||||
|
||||
readingListButton.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
addToReadingList();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
|
||||
final Intent intent = getIntent();
|
||||
|
||||
state = intent.getBooleanExtra(INTENT_EXTRA_DEVICES_ONLY, false) ?
|
||||
State.DEVICES_ONLY : State.DEFAULT;
|
||||
|
||||
// If the Activity is being reused, we need to reset the state. Ideally, we create a
|
||||
// new instance for each call, but Android L breaks this (bug 1137928).
|
||||
sendTabList.switchState(SendTabList.State.LOADING);
|
||||
|
||||
// The URL is usually hiding somewhere in the extra text. Extract it.
|
||||
final String extraText = ContextUtils.getStringExtra(intent, Intent.EXTRA_TEXT);
|
||||
@ -134,12 +231,6 @@ public class ShareDialog extends Locales.LocaleAwareActivity implements SendTabT
|
||||
return;
|
||||
}
|
||||
|
||||
setContentView(R.layout.overlay_share_dialog);
|
||||
|
||||
|
||||
LocalBroadcastManager.getInstance(this).registerReceiver(uiEventListener,
|
||||
new IntentFilter(OverlayConstants.SHARE_METHOD_UI_EVENT));
|
||||
|
||||
// Have the service start any initialisation work that's necessary for us to show the correct
|
||||
// UI. The results of such work will come in via the BroadcastListener.
|
||||
Intent serviceStartupIntent = new Intent(this, OverlayActionService.class);
|
||||
@ -150,9 +241,9 @@ public class ShareDialog extends Locales.LocaleAwareActivity implements SendTabT
|
||||
// If not, we wing it with the URL.
|
||||
|
||||
// TODO: Consider polling Fennec databases to find better information to display.
|
||||
String subjectText = intent.getStringExtra(Intent.EXTRA_SUBJECT);
|
||||
final String subjectText = intent.getStringExtra(Intent.EXTRA_SUBJECT);
|
||||
|
||||
String telemetryExtras = "title=" + (subjectText != null);
|
||||
final String telemetryExtras = "title=" + (subjectText != null);
|
||||
if (subjectText != null) {
|
||||
((TextView) findViewById(R.id.title)).setText(subjectText);
|
||||
}
|
||||
@ -164,21 +255,30 @@ public class ShareDialog extends Locales.LocaleAwareActivity implements SendTabT
|
||||
|
||||
// Set the subtitle text on the view and cause it to marquee if it's too long (which it will
|
||||
// be, since it's a URL).
|
||||
TextView subtitleView = (TextView) findViewById(R.id.subtitle);
|
||||
final TextView subtitleView = (TextView) findViewById(R.id.subtitle);
|
||||
subtitleView.setText(pageUrl);
|
||||
subtitleView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
|
||||
subtitleView.setSingleLine(true);
|
||||
subtitleView.setMarqueeRepeatLimit(5);
|
||||
subtitleView.setSelected(true);
|
||||
|
||||
// Start the slide-up animation.
|
||||
Animation anim = AnimationUtils.loadAnimation(this, R.anim.overlay_slide_up);
|
||||
findViewById(R.id.sharedialog).startAnimation(anim);
|
||||
|
||||
// Configure buttons.
|
||||
final ImageView foxIcon = (ImageView) findViewById(R.id.share_overlay_icon);
|
||||
final LinearLayout topBar = (LinearLayout) findViewById(R.id.share_overlay_top_bar);
|
||||
View.OnClickListener launchBrowser = new View.OnClickListener() {
|
||||
|
||||
if (state == State.DEVICES_ONLY) {
|
||||
bookmarkButton.setVisibility(View.GONE);
|
||||
readingListButton.setVisibility(View.GONE);
|
||||
|
||||
foxIcon.setOnClickListener(null);
|
||||
topBar.setOnClickListener(null);
|
||||
return;
|
||||
}
|
||||
|
||||
bookmarkButton.setVisibility(View.VISIBLE);
|
||||
readingListButton.setVisibility(View.VISIBLE);
|
||||
|
||||
// Configure buttons.
|
||||
final View.OnClickListener launchBrowser = new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
ShareDialog.this.launchBrowser();
|
||||
@ -188,62 +288,27 @@ public class ShareDialog extends Locales.LocaleAwareActivity implements SendTabT
|
||||
foxIcon.setOnClickListener(launchBrowser);
|
||||
topBar.setOnClickListener(launchBrowser);
|
||||
|
||||
final OverlayDialogButton bookmarkBtn = (OverlayDialogButton) findViewById(R.id.overlay_share_bookmark_btn);
|
||||
final LocalBrowserDB browserDB = new LocalBrowserDB(getCurrentProfile());
|
||||
setButtonState(url, browserDB);
|
||||
|
||||
final String bookmarkEnabledLabel = resources.getString(R.string.overlay_share_bookmark_btn_label);
|
||||
final Drawable bookmarkEnabledIcon = resources.getDrawable(R.drawable.overlay_bookmark_icon);
|
||||
bookmarkBtn.setEnabledLabelAndIcon(bookmarkEnabledLabel, bookmarkEnabledIcon);
|
||||
|
||||
final String bookmarkDisabledLabel = resources.getString(R.string.overlay_share_bookmark_btn_label_already);
|
||||
final Drawable bookmarkDisabledIcon = resources.getDrawable(R.drawable.overlay_bookmarked_already_icon);
|
||||
bookmarkBtn.setDisabledLabelAndIcon(bookmarkDisabledLabel, bookmarkDisabledIcon);
|
||||
|
||||
bookmarkBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
addBookmark();
|
||||
}
|
||||
});
|
||||
|
||||
// Send tab.
|
||||
SendTabList sendTabList = (SendTabList) findViewById(R.id.overlay_send_tab_btn);
|
||||
|
||||
// Register ourselves as both the listener and the context for the Adapter.
|
||||
SendTabDeviceListArrayAdapter adapter = new SendTabDeviceListArrayAdapter(this, this);
|
||||
sendTabList.setAdapter(adapter);
|
||||
sendTabList.setSendTabTargetSelectedListener(this);
|
||||
|
||||
final OverlayDialogButton readinglistBtn = (OverlayDialogButton) findViewById(R.id.overlay_share_reading_list_btn);
|
||||
|
||||
final String readingListEnabledLabel = resources.getString(R.string.overlay_share_reading_list_btn_label);
|
||||
final Drawable readingListEnabledIcon = resources.getDrawable(R.drawable.overlay_readinglist_icon);
|
||||
readinglistBtn.setEnabledLabelAndIcon(readingListEnabledLabel, readingListEnabledIcon);
|
||||
|
||||
final String readingListDisabledLabel = resources.getString(R.string.overlay_share_reading_list_btn_label_already);
|
||||
final Drawable readingListDisabledIcon = resources.getDrawable(R.drawable.overlay_readinglist_already_icon);
|
||||
readinglistBtn.setDisabledLabelAndIcon(readingListDisabledLabel, readingListDisabledIcon);
|
||||
|
||||
readinglistBtn.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(View view) {
|
||||
addToReadingList();
|
||||
}
|
||||
});
|
||||
// Start the slide-up animation.
|
||||
final Animation anim = AnimationUtils.loadAnimation(this, R.anim.overlay_slide_up);
|
||||
findViewById(R.id.sharedialog).startAnimation(anim);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
protected void onNewIntent(final Intent intent) {
|
||||
super.onNewIntent(intent);
|
||||
|
||||
LocalBrowserDB browserDB = new LocalBrowserDB(getCurrentProfile());
|
||||
disableButtonsIfAlreadyAdded(url, browserDB);
|
||||
// The intent returned by getIntent is not updated automatically.
|
||||
setIntent(intent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Disables the bookmark/reading list buttons if the given URL is already in the corresponding
|
||||
* list.
|
||||
* Sets the state of the bookmark/reading list buttons: they are disabled if the given URL is
|
||||
* already in the corresponding list.
|
||||
*/
|
||||
private void disableButtonsIfAlreadyAdded(final String pageURL, final LocalBrowserDB browserDB) {
|
||||
private void setButtonState(final String pageURL, final LocalBrowserDB browserDB) {
|
||||
new UIAsyncTask.WithoutParams<Void>(ThreadUtils.getBackgroundHandler()) {
|
||||
// Flags to hold the result
|
||||
boolean isBookmark;
|
||||
|
BIN
mobile/android/base/resources/drawable-hdpi/share_plane.png
Normal file
After Width: | Height: | Size: 791 B |
BIN
mobile/android/base/resources/drawable-mdpi/share_plane.png
Normal file
After Width: | Height: | Size: 584 B |
BIN
mobile/android/base/resources/drawable-xhdpi/share_plane.png
Normal file
After Width: | Height: | Size: 1.0 KiB |
BIN
mobile/android/base/resources/drawable-xxhdpi/share_plane.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
@ -93,7 +93,7 @@
|
||||
<style name="Widget.MenuItemSecondaryActionBar">
|
||||
<item name="android:padding">8dip</item>
|
||||
<item name="android:background">@drawable/action_bar_button</item>
|
||||
<item name="android:scaleType">centerInside</item>
|
||||
<item name="android:scaleType">fitCenter</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.MenuItemActionView">
|
||||
|
@ -118,6 +118,7 @@
|
||||
<string name="overlay_share_no_url">&overlay_share_no_url;</string>
|
||||
<string name="overlay_share_retry">&overlay_share_retry;</string>
|
||||
<string name="overlay_share_select_device">&overlay_share_select_device;</string>
|
||||
<string name="overlay_no_synced_devices">&overlay_no_synced_devices;</string>
|
||||
|
||||
<string name="settings">&settings;</string>
|
||||
<string name="settings_title">&settings_title;</string>
|
||||
|
@ -21,8 +21,14 @@
|
||||
package org.mozilla.gecko.widget;
|
||||
|
||||
// Mozilla: New import
|
||||
import android.accounts.Account;
|
||||
import android.content.pm.PackageManager;
|
||||
import org.mozilla.gecko.distribution.Distribution;
|
||||
import org.mozilla.gecko.GeckoProfile;
|
||||
import org.mozilla.gecko.fxa.FirefoxAccounts;
|
||||
import org.mozilla.gecko.overlays.ui.ShareDialog;
|
||||
import org.mozilla.gecko.sync.repositories.android.ClientsDatabaseAccessor;
|
||||
import org.mozilla.gecko.R;
|
||||
import java.io.File;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
@ -323,6 +329,11 @@ public class ActivityChooserModel extends DataSetObservable {
|
||||
*/
|
||||
private OnChooseActivityListener mActivityChooserModelPolicy;
|
||||
|
||||
/**
|
||||
* Mozilla: Share overlay variables.
|
||||
*/
|
||||
private final SyncStatusListener mSyncStatusListener = new SyncStatusListener();
|
||||
|
||||
/**
|
||||
* Gets the data model backed by the contents of the provided file with historical data.
|
||||
* Note that only one data model is backed by a given file, thus multiple calls with
|
||||
@ -371,6 +382,12 @@ public class ActivityChooserModel extends DataSetObservable {
|
||||
* Mozilla: Uses modified receiver
|
||||
*/
|
||||
mPackageMonitor.register(mContext);
|
||||
|
||||
/**
|
||||
* Mozilla: Add Sync Status Listener.
|
||||
*/
|
||||
// TODO: We only need to add a sync status listener if the ShareDialog passes the intent filter.
|
||||
FirefoxAccounts.addSyncStatusListener(mSyncStatusListener);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -688,6 +705,7 @@ public class ActivityChooserModel extends DataSetObservable {
|
||||
* Mozilla: Not needed for the application.
|
||||
*/
|
||||
mPackageMonitor.unregister();
|
||||
FirefoxAccounts.removeSyncStatusListener(mSyncStatusListener);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -736,8 +754,37 @@ public class ActivityChooserModel extends DataSetObservable {
|
||||
List<ResolveInfo> resolveInfos = mContext.getPackageManager()
|
||||
.queryIntentActivities(mIntent, 0);
|
||||
final int resolveInfoCount = resolveInfos.size();
|
||||
|
||||
/**
|
||||
* Mozilla: Temporary variables to prevent performance degradation in the loop.
|
||||
*/
|
||||
final PackageManager packageManager = mContext.getPackageManager();
|
||||
final String channelToRemoveLabel = mContext.getResources().getString(R.string.overlay_share_label);
|
||||
final String shareDialogClassName = ShareDialog.class.getCanonicalName();
|
||||
|
||||
for (int i = 0; i < resolveInfoCount; i++) {
|
||||
ResolveInfo resolveInfo = resolveInfos.get(i);
|
||||
|
||||
/**
|
||||
* Mozilla: We want "Add to Firefox" to appear differently inside of Firefox than
|
||||
* from external applications - override the name and icon here.
|
||||
*
|
||||
* Do not display the menu item if there are no devices to share to.
|
||||
*
|
||||
* Note: we check both the class name and the label to ensure we only change the
|
||||
* label of the current channel.
|
||||
*/
|
||||
if (shareDialogClassName.equals(resolveInfo.activityInfo.name) &&
|
||||
channelToRemoveLabel.equals(resolveInfo.loadLabel(packageManager))) {
|
||||
// Don't add the menu item if there are no devices to share to.
|
||||
if (!hasOtherSyncClients()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
resolveInfo.labelRes = R.string.overlay_share_send_other;
|
||||
resolveInfo.icon = R.drawable.share_plane;
|
||||
}
|
||||
|
||||
mActivities.add(new ActivityResolveInfo(resolveInfo));
|
||||
}
|
||||
return true;
|
||||
@ -1251,5 +1298,41 @@ public class ActivityChooserModel extends DataSetObservable {
|
||||
mReloadActivities = true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Mozilla: Return whether or not there are other synced clients.
|
||||
*/
|
||||
private boolean hasOtherSyncClients() {
|
||||
final ClientsDatabaseAccessor db = new ClientsDatabaseAccessor(mContext);
|
||||
return db.clientsCount() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Mozilla: Reload activities on sync.
|
||||
*/
|
||||
private class SyncStatusListener implements FirefoxAccounts.SyncStatusListener {
|
||||
@Override
|
||||
public Context getContext() {
|
||||
return mContext;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Account getAccount() {
|
||||
return FirefoxAccounts.getFirefoxAccount(getContext());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSyncStarted() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSyncFinished() {
|
||||
// TODO: We only need to reload activities when the number of devices changes.
|
||||
// This may not be worth it if we have to touch the DB to get the client count.
|
||||
synchronized (mInstanceLock) {
|
||||
mReloadActivities = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5,11 +5,14 @@
|
||||
|
||||
package org.mozilla.gecko.widget;
|
||||
|
||||
import android.view.Menu;
|
||||
import org.mozilla.gecko.GeckoAppShell;
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.Telemetry;
|
||||
import org.mozilla.gecko.TelemetryContract;
|
||||
import org.mozilla.gecko.menu.MenuItemActionView;
|
||||
import org.mozilla.gecko.menu.QuickShareBarActionView;
|
||||
import org.mozilla.gecko.overlays.ui.ShareDialog;
|
||||
import org.mozilla.gecko.util.ThreadUtils;
|
||||
|
||||
import android.content.Context;
|
||||
@ -136,10 +139,24 @@ public class GeckoActionProvider {
|
||||
PackageManager packageManager = mContext.getPackageManager();
|
||||
|
||||
// Populate the sub-menu with a sub set of the activities.
|
||||
final String shareDialogClassName = ShareDialog.class.getCanonicalName();
|
||||
final String sendTabLabel = mContext.getResources().getString(R.string.overlay_share_send_other);
|
||||
final int count = dataModel.getActivityCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
ResolveInfo activity = dataModel.getActivity(i);
|
||||
subMenu.add(0, i, i, activity.loadLabel(packageManager))
|
||||
final CharSequence activityLabel = activity.loadLabel(packageManager);
|
||||
|
||||
// Pin internal actions to the top. Note:
|
||||
// the order here does not affect quick share.
|
||||
final int order;
|
||||
if (shareDialogClassName.equals(activity.activityInfo.name) &&
|
||||
sendTabLabel.equals(activityLabel)) {
|
||||
order = i;
|
||||
} else {
|
||||
order = i | Menu.CATEGORY_SECONDARY;
|
||||
}
|
||||
|
||||
subMenu.add(0, i, order, activityLabel)
|
||||
.setIcon(activity.loadIcon(packageManager))
|
||||
.setOnMenuItemClickListener(mCallbacks);
|
||||
}
|
||||
|
@ -34,6 +34,7 @@ REPOSITORY_PATHS = [
|
||||
'mozboot/__init__.py',
|
||||
'mozboot/android-ndk.rb',
|
||||
'mozboot/android.py',
|
||||
'mozboot/archlinux.py',
|
||||
'mozboot/base.py',
|
||||
'mozboot/bootstrap.py',
|
||||
'mozboot/centos.py',
|
||||
|
@ -9,6 +9,8 @@ import platform
|
||||
import sys
|
||||
import os.path
|
||||
|
||||
# Don't forgot to add new mozboot modules to the bootstrap download
|
||||
# list in bin/bootstrap.py!
|
||||
from mozboot.centos import CentOSBootstrapper
|
||||
from mozboot.debian import DebianBootstrapper
|
||||
from mozboot.fedora import FedoraBootstrapper
|
||||
|
@ -1081,4 +1081,4 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
|
||||
|
||||
static const int32_t kUnknownId = -1;
|
||||
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1434194312527000);
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1434795456425000);
|
||||
|
@ -1,3 +1,4 @@
|
||||
56ct.com: could not connect to host
|
||||
9point6.com: could not connect to host
|
||||
admin.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
adsfund.org: could not connect to host
|
||||
@ -49,6 +50,7 @@ cert.se: max-age too low: 2628001
|
||||
cg.search.yahoo.com: did not receive HSTS header
|
||||
ch.search.yahoo.com: did not receive HSTS header
|
||||
chainmonitor.com: could not connect to host
|
||||
changelab.cc: max-age too low: 0
|
||||
chatbot.me: could not connect to host
|
||||
checkout.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
chfr.search.yahoo.com: did not receive HSTS header
|
||||
@ -57,7 +59,7 @@ chrome-devtools-frontend.appspot.com: did not receive HSTS header (error ignored
|
||||
chrome.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
cimballa.com: did not receive HSTS header
|
||||
cl.search.yahoo.com: did not receive HSTS header
|
||||
cloud.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
classdojo.com: did not receive HSTS header
|
||||
cn.search.yahoo.com: did not receive HSTS header
|
||||
co.search.yahoo.com: did not receive HSTS header
|
||||
code.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
@ -71,7 +73,6 @@ crowdcurity.com: did not receive HSTS header
|
||||
crowdjuris.com: could not connect to host
|
||||
crypto.is: max-age too low: 7776000
|
||||
csawctf.poly.edu: could not connect to host
|
||||
cspbuilder.info: could not connect to host
|
||||
ct.search.yahoo.com: did not receive HSTS header
|
||||
cujanovic.com: did not receive HSTS header
|
||||
cyanogenmod.xxx: could not connect to host
|
||||
@ -105,6 +106,7 @@ es.search.yahoo.com: did not receive HSTS header
|
||||
esec.rs: did not receive HSTS header
|
||||
espanol.search.yahoo.com: did not receive HSTS header
|
||||
espra.com: could not connect to host
|
||||
ethitter.com: did not receive HSTS header
|
||||
etsysecure.com: could not connect to host
|
||||
fabianfischer.de: did not receive HSTS header
|
||||
fatzebra.com.au: did not receive HSTS header
|
||||
@ -131,7 +133,7 @@ googleplex.com: could not connect to host (error ignored - included regardless)
|
||||
goto.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
gparent.org: did not receive HSTS header
|
||||
gr.search.yahoo.com: did not receive HSTS header
|
||||
grandmascookieblog.com: could not connect to host
|
||||
grandmascookieblog.com: did not receive HSTS header
|
||||
greplin.com: could not connect to host
|
||||
groups.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
gunnarhafdal.com: could not connect to host
|
||||
@ -155,18 +157,20 @@ ie.search.yahoo.com: did not receive HSTS header
|
||||
ilmconpm.de: did not receive HSTS header
|
||||
in.search.yahoo.com: did not receive HSTS header
|
||||
inertianetworks.com: did not receive HSTS header
|
||||
iniiter.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 134" data: no]
|
||||
intercom.io: did not receive HSTS header
|
||||
interserved.com: did not receive HSTS header
|
||||
iop.intuit.com: max-age too low: 86400
|
||||
irccloud.com: did not receive HSTS header
|
||||
it.search.yahoo.com: did not receive HSTS header
|
||||
janoberst.com: did not receive HSTS header
|
||||
jonathan.ir: could not connect to host
|
||||
jottit.com: could not connect to host
|
||||
k-dev.de: could not connect to host
|
||||
keepclean.me: could not connect to host
|
||||
keymaster.lookout.com: did not receive HSTS header
|
||||
kirkforcongress.com: could not connect to host
|
||||
kirkforsenate.com: could not connect to host
|
||||
kirkforsenate.com: did not receive HSTS header
|
||||
kitsta.com: could not connect to host
|
||||
kiwiirc.com: max-age too low: 5256000
|
||||
klaxn.com: could not connect to host
|
||||
@ -204,6 +208,7 @@ megaxchange.com: did not receive HSTS header
|
||||
meinebo.it: could not connect to host
|
||||
minikneet.nl: did not receive HSTS header
|
||||
mirindadomo.ru: could not connect to host
|
||||
mnemotiv.com: did not receive HSTS header
|
||||
mobilethreat.net: could not connect to host
|
||||
mobilethreatnetwork.net: could not connect to host
|
||||
mocloud.eu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 134" data: no]
|
||||
@ -211,6 +216,7 @@ movelaria.com.br: did not receive HSTS header
|
||||
mqas.net: could not connect to host
|
||||
mt.search.yahoo.com: did not receive HSTS header
|
||||
mu.search.yahoo.com: did not receive HSTS header
|
||||
mujadin.se: max-age too low: 86400
|
||||
mw.search.yahoo.com: did not receive HSTS header
|
||||
mx.search.yahoo.com: did not receive HSTS header
|
||||
my.alfresco.com: did not receive HSTS header
|
||||
@ -221,17 +227,18 @@ myni.io: could not connect to host
|
||||
neftaly.com: did not receive HSTS header
|
||||
neonisi.com: could not connect to host
|
||||
netzpolitik.org: did not receive HSTS header
|
||||
netztest.at: did not receive HSTS header
|
||||
nexth.de: could not connect to host
|
||||
nexth.net: could not connect to host
|
||||
nexth.us: could not connect to host
|
||||
ni.search.yahoo.com: did not receive HSTS header
|
||||
nl.search.yahoo.com: did not receive HSTS header
|
||||
no.search.yahoo.com: did not receive HSTS header
|
||||
nodari.com.ar: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 134" data: no]
|
||||
noexpect.org: could not connect to host
|
||||
np.search.yahoo.com: did not receive HSTS header
|
||||
npw.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 134" data: no]
|
||||
null-sec.ru: could not connect to host
|
||||
nutsandboltsmedia.com: did not receive HSTS header
|
||||
nz.search.yahoo.com: did not receive HSTS header
|
||||
openshift.redhat.com: did not receive HSTS header
|
||||
otakurepublic.com: did not receive HSTS header
|
||||
@ -247,12 +254,11 @@ pk.search.yahoo.com: did not receive HSTS header
|
||||
pl.search.yahoo.com: did not receive HSTS header
|
||||
platform.lookout.com: could not connect to host
|
||||
play.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
pmg-offshore-company.com: did not receive HSTS header
|
||||
polymathematician.com: could not connect to host
|
||||
popcorntime.ws: max-age too low: 2592000
|
||||
pr.search.yahoo.com: did not receive HSTS header
|
||||
pressfreedomfoundation.org: did not receive HSTS header
|
||||
prodpad.com: did not receive HSTS header
|
||||
profiles.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
promecon-gmbh.de: did not receive HSTS header
|
||||
proximato.com: could not connect to host
|
||||
py.search.yahoo.com: did not receive HSTS header
|
||||
@ -282,11 +288,11 @@ serverdensity.io: did not receive HSTS header
|
||||
sg.search.yahoo.com: did not receive HSTS header
|
||||
shops.neonisi.com: could not connect to host
|
||||
siammedia.co: did not receive HSTS header
|
||||
sikayetvar.com: did not receive HSTS header
|
||||
silentcircle.org: could not connect to host
|
||||
simon.butcher.name: max-age too low: 2629743
|
||||
simplyfixit.co.uk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 134" data: no]
|
||||
sites.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
smartlend.se: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 134" data: no]
|
||||
sol.io: could not connect to host
|
||||
souyar.de: could not connect to host
|
||||
souyar.net: could not connect to host
|
||||
@ -306,9 +312,11 @@ sv.search.yahoo.com: did not receive HSTS header
|
||||
sylaps.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 134" data: no]
|
||||
t.facebook.com: did not receive HSTS header
|
||||
tablet.facebook.com: did not receive HSTS header
|
||||
tageau.com: could not connect to host
|
||||
talk.google.com: could not connect to host
|
||||
talk.google.com: could not connect to host (error ignored - included regardless)
|
||||
talkgadget.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
tandarts-haarlem.nl: did not receive HSTS header
|
||||
taxsquirrel.com: did not receive HSTS header
|
||||
tc-bonito.de: did not receive HSTS header
|
||||
tektoria.de: did not receive HSTS header
|
||||
@ -316,8 +324,8 @@ temehu.com: did not receive HSTS header
|
||||
terrax.berlin: could not connect to host
|
||||
th.search.yahoo.com: did not receive HSTS header
|
||||
the-sky-of-valkyries.com: could not connect to host
|
||||
thetomharling.com: did not receive HSTS header
|
||||
thomasgriffin.io: did not receive HSTS header
|
||||
toptexture.com: did not receive HSTS header
|
||||
tr.search.yahoo.com: did not receive HSTS header
|
||||
translate.googleapis.com: did not receive HSTS header (error ignored - included regardless)
|
||||
translatoruk.co.uk: did not receive HSTS header
|
||||
@ -333,7 +341,7 @@ uz.search.yahoo.com: did not receive HSTS header
|
||||
ve.search.yahoo.com: did not receive HSTS header
|
||||
viennan.net: did not receive HSTS header
|
||||
vn.search.yahoo.com: did not receive HSTS header
|
||||
vyncke.org: max-age too low: 2678400
|
||||
vyncke.org: did not receive HSTS header
|
||||
wallet.google.com: did not receive HSTS header (error ignored - included regardless)
|
||||
webmail.mayfirst.org: did not receive HSTS header
|
||||
wikidsystems.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 134" data: no]
|
||||
|
@ -8,7 +8,7 @@
|
||||
/*****************************************************************************/
|
||||
|
||||
#include <stdint.h>
|
||||
const PRTime gPreloadListExpirationTime = INT64_C(1436613506897000);
|
||||
const PRTime gPreloadListExpirationTime = INT64_C(1437214651606000);
|
||||
|
||||
class nsSTSPreload
|
||||
{
|
||||
@ -27,14 +27,17 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "1a-werkstattgeraete.de", true },
|
||||
{ "2048game.co.uk", true },
|
||||
{ "302.nyc", true },
|
||||
{ "5apps.com", false },
|
||||
{ "7183.org", true },
|
||||
{ "8ack.de", true },
|
||||
{ "abmahnhelfer.de", true },
|
||||
{ "accounts.firefox.com", true },
|
||||
{ "accounts.google.com", true },
|
||||
{ "aclu.org", false },
|
||||
{ "activiti.alfresco.com", false },
|
||||
{ "acus.gov", true },
|
||||
{ "adamkostecki.de", true },
|
||||
{ "adamstas.com", true },
|
||||
{ "addvocate.com", true },
|
||||
{ "adlershop.ch", true },
|
||||
{ "admin.fedoraproject.org", true },
|
||||
@ -51,8 +54,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "airlea.com", true },
|
||||
{ "aiticon.com", true },
|
||||
{ "ajouin.com", true },
|
||||
{ "akselinurmio.fi", true },
|
||||
{ "al-shami.net", true },
|
||||
{ "aladdinschools.appspot.com", false },
|
||||
{ "alainwolf.net", true },
|
||||
{ "alanrickmanflipstable.com", true },
|
||||
{ "alecvannoten.be", true },
|
||||
{ "alexsexton.com", true },
|
||||
{ "alexyang.me", true },
|
||||
@ -65,11 +71,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "angularjs.org", true },
|
||||
{ "anime.my", false },
|
||||
{ "animurecs.com", true },
|
||||
{ "ankakaak.com", true },
|
||||
{ "ankarakart.com.tr", true },
|
||||
{ "annahmeschluss.de", true },
|
||||
{ "annevankesteren.com", true },
|
||||
{ "annevankesteren.nl", true },
|
||||
{ "annevankesteren.org", true },
|
||||
{ "anonym-surfen.de", true },
|
||||
{ "ansdell.net", true },
|
||||
{ "antipolygraph.org", true },
|
||||
{ "anycoin.me", true },
|
||||
@ -86,6 +94,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "app.simpletax.ca", false },
|
||||
{ "app.yinxiang.com", false },
|
||||
{ "appengine.google.com", true },
|
||||
{ "apps-for-fishing.com", true },
|
||||
{ "apps.facebook.com", false },
|
||||
{ "apps.fedoraproject.org", true },
|
||||
{ "apps.stg.fedoraproject.org", true },
|
||||
@ -97,6 +106,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "arivo.com.br", true },
|
||||
{ "arlen.io", true },
|
||||
{ "aroonchande.com", true },
|
||||
{ "arteseideias.com.pt", true },
|
||||
{ "arty.name", true },
|
||||
{ "ask.fedoraproject.org", true },
|
||||
{ "ask.stg.fedoraproject.org", true },
|
||||
@ -104,12 +114,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "atavio.ch", true },
|
||||
{ "atavio.de", true },
|
||||
{ "atc.io", true },
|
||||
{ "athenelive.com", true },
|
||||
{ "atishchenko.com", true },
|
||||
{ "atlantischild.hu", true },
|
||||
{ "atlassian.net", true },
|
||||
{ "atte.fi", true },
|
||||
{ "auf-feindgebiet.de", true },
|
||||
{ "aurainfosec.com", true },
|
||||
{ "aurainfosec.com.au", true },
|
||||
{ "auraredeye.com", true },
|
||||
{ "auraredshield.com", true },
|
||||
{ "authentication.io", true },
|
||||
{ "autoledky.sk", true },
|
||||
{ "azabani.com", true },
|
||||
{ "badges.fedoraproject.org", true },
|
||||
{ "badges.stg.fedoraproject.org", true },
|
||||
@ -146,6 +162,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "billigssl.dk", true },
|
||||
{ "bit.voyage", true },
|
||||
{ "bitbucket.org", false },
|
||||
{ "bitchan.it", true },
|
||||
{ "bitcoinx.ro", true },
|
||||
{ "bitfactory.ws", true },
|
||||
{ "bitmex.com", true },
|
||||
{ "bitmon.net", true },
|
||||
@ -156,10 +174,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "bl4ckb0x.info", true },
|
||||
{ "bl4ckb0x.net", true },
|
||||
{ "bl4ckb0x.org", true },
|
||||
{ "blackberrycentral.com", true },
|
||||
{ "blacklane.com", true },
|
||||
{ "blessnet.jp", true },
|
||||
{ "blockchain.info", true },
|
||||
{ "blocksatz-medien.de", true },
|
||||
{ "bloemendal.me", true },
|
||||
{ "blog.cyveillance.com", true },
|
||||
{ "blog.gparent.org", true },
|
||||
{ "blog.linode.com", false },
|
||||
@ -171,8 +191,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "bonitabrazilian.co.nz", true },
|
||||
{ "bookingapp.nl", true },
|
||||
{ "boxcryptor.com", true },
|
||||
{ "boypoint.de", true },
|
||||
{ "brage.info", true },
|
||||
{ "brakemanpro.com", true },
|
||||
{ "bran.cc", true },
|
||||
{ "brandbuilderwebsites.com", true },
|
||||
{ "breeswish.org", true },
|
||||
{ "broeselei.at", true },
|
||||
@ -183,6 +205,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "bugzilla.mozilla.org", true },
|
||||
{ "bulktrade.de", true },
|
||||
{ "bundaberg.com", true },
|
||||
{ "burtrum.org", true },
|
||||
{ "business.facebook.com", false },
|
||||
{ "business.lookout.com", false },
|
||||
{ "bustimes.org", true },
|
||||
@ -202,6 +225,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "carezone.com", false },
|
||||
{ "cartouche24.eu", true },
|
||||
{ "cartucce24.it", true },
|
||||
{ "casa-su.casa", true },
|
||||
{ "cbhq.net", true },
|
||||
{ "cdnb.co", true },
|
||||
{ "celltek-server.de", false },
|
||||
{ "certible.com", true },
|
||||
@ -209,7 +234,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "cfo.gov", true },
|
||||
{ "chahub.com", true },
|
||||
{ "chainmonitor.com", true },
|
||||
{ "changelab.cc", true },
|
||||
{ "chartstoffarm.de", false },
|
||||
{ "chatbot.me", true },
|
||||
{ "check.torproject.org", false },
|
||||
@ -227,7 +251,6 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "cktennis.com", true },
|
||||
{ "clan-ww.com", true },
|
||||
{ "clapping-rhymes.com", true },
|
||||
{ "classdojo.com", true },
|
||||
{ "clerkendweller.uk", true },
|
||||
{ "clintwilson.technology", true },
|
||||
{ "cloud.google.com", true },
|
||||
@ -246,7 +269,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "codereview.chromium.org", true },
|
||||
{ "coffeeetc.co.uk", true },
|
||||
{ "coinapult.com", true },
|
||||
{ "coinbase.com", true },
|
||||
{ "comdurav.com", true },
|
||||
{ "commencepayments.com", true },
|
||||
{ "comssa.org.au", true },
|
||||
{ "config.schokokeks.org", false },
|
||||
{ "conformal.com", true },
|
||||
@ -256,11 +281,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "cor-ser.es", true },
|
||||
{ "cordial-restaurant.com", true },
|
||||
{ "cotonea.de", true },
|
||||
{ "courtlistener.com", true },
|
||||
{ "crm.onlime.ch", false },
|
||||
{ "crowdjuris.com", true },
|
||||
{ "crypto.cat", false },
|
||||
{ "cryptobin.org", true },
|
||||
{ "cryptopartyatx.org", true },
|
||||
{ "cryptopush.com", true },
|
||||
{ "cs50.harvard.edu", true },
|
||||
{ "cs50.net", true },
|
||||
{ "cspbuilder.info", true },
|
||||
@ -270,6 +297,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "cupcake.is", true },
|
||||
{ "curiosity-driven.org", true },
|
||||
{ "curlybracket.co.uk", true },
|
||||
{ "curtacircuitos.com.br", false },
|
||||
{ "cyanogenmod.xxx", true },
|
||||
{ "cybershambles.com", true },
|
||||
{ "cybozu.com", true },
|
||||
@ -278,6 +306,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "cyphertite.com", true },
|
||||
{ "cyprus-company-service.com", true },
|
||||
{ "czbix.com", true },
|
||||
{ "danskoferie.dk", true },
|
||||
{ "daphne.informatik.uni-freiburg.de", true },
|
||||
{ "darchoods.net", false },
|
||||
{ "darkpony.ru", true },
|
||||
@ -292,12 +321,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "daveoc64.co.uk", true },
|
||||
{ "davidlyness.com", true },
|
||||
{ "davidnoren.com", true },
|
||||
{ "daylightpirates.org", true },
|
||||
{ "dccode.gov", true },
|
||||
{ "deadbeef.ninja", true },
|
||||
{ "dealcruiser.nl", true },
|
||||
{ "debtkit.co.uk", true },
|
||||
{ "dedimax.de", true },
|
||||
{ "dee.pe", true },
|
||||
{ "deliverance.co.uk", true },
|
||||
{ "denh.am", true },
|
||||
{ "depechemode-live.com", true },
|
||||
{ "derevtsov.com", false },
|
||||
@ -305,10 +336,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "detectify.com", false },
|
||||
{ "developer.mydigipass.com", false },
|
||||
{ "developers.facebook.com", false },
|
||||
{ "devinfo.net", true },
|
||||
{ "diamante.ro", true },
|
||||
{ "die-besten-weisheiten.de", true },
|
||||
{ "dillonkorman.com", true },
|
||||
{ "dinamoelektrik.com", true },
|
||||
{ "disking.co.uk", true },
|
||||
{ "dist.torproject.org", false },
|
||||
{ "dixmag.com", true },
|
||||
{ "dl.google.com", true },
|
||||
@ -327,6 +360,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "dreamsforabetterworld.com.au", true },
|
||||
{ "drive.google.com", true },
|
||||
{ "dropbox.com", true },
|
||||
{ "dubrovskiy.net", true },
|
||||
{ "dyeager.org", true },
|
||||
{ "dylanscott.com.au", true },
|
||||
{ "dynaloop.net", true },
|
||||
{ "dzlibs.io", true },
|
||||
@ -342,6 +377,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "ectora.com", true },
|
||||
{ "ed.gs", true },
|
||||
{ "edit.yahoo.com", false },
|
||||
{ "edix.ru", true },
|
||||
{ "eduroam.no", true },
|
||||
{ "edyou.eu", true },
|
||||
{ "ef.gy", true },
|
||||
@ -358,11 +394,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "energy-drink-magazin.de", true },
|
||||
{ "enorekcah.com", true },
|
||||
{ "entropia.de", false },
|
||||
{ "erotische-aanbiedingen.nl", true },
|
||||
{ "errors.zenpayroll.com", false },
|
||||
{ "esoa.net", true },
|
||||
{ "espra.com", true },
|
||||
{ "ethack.org", true },
|
||||
{ "ethitter.com", true },
|
||||
{ "eurotramp.com", true },
|
||||
{ "eva.cz", true },
|
||||
{ "evalesc.com", true },
|
||||
{ "everhome.de", true },
|
||||
{ "evstatus.com", true },
|
||||
{ "exiahost.com", true },
|
||||
@ -380,6 +419,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "faq.lookout.com", false },
|
||||
{ "fassadenverkleidung24.de", true },
|
||||
{ "fastcomcorp.net", true },
|
||||
{ "faucetbox.com", true },
|
||||
{ "federalregister.gov", true },
|
||||
{ "fedorahosted.org", true },
|
||||
{ "fedorapeople.org", true },
|
||||
@ -417,15 +457,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "freesounding.com", true },
|
||||
{ "freesounding.ru", true },
|
||||
{ "freethought.org.au", true },
|
||||
{ "froggstack.de", true },
|
||||
{ "fronteers.nl", true },
|
||||
{ "ftccomplaintassistant.gov", true },
|
||||
{ "fundingempire.com", true },
|
||||
{ "futos.de", true },
|
||||
{ "fx5.de", true },
|
||||
{ "gallery44.org", true },
|
||||
{ "gambitnash.co.uk", true },
|
||||
{ "gamercredo.com", true },
|
||||
{ "garron.net", true },
|
||||
{ "gavick.com", true },
|
||||
{ "gaytorrent.ru", true },
|
||||
{ "gc.net", true },
|
||||
{ "gemeinfreie-lieder.de", true },
|
||||
{ "geoip.fedoraproject.org", true },
|
||||
{ "geoip.stg.fedoraproject.org", true },
|
||||
@ -447,19 +491,23 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "gmail.com", false },
|
||||
{ "gmantra.org", true },
|
||||
{ "gmcd.co", true },
|
||||
{ "gnetwork.eu", true },
|
||||
{ "go.xero.com", false },
|
||||
{ "gocardless.com", true },
|
||||
{ "googlemail.com", false },
|
||||
{ "googleplex.com", true },
|
||||
{ "goto.google.com", true },
|
||||
{ "gotowned.org", true },
|
||||
{ "gplintegratedit.com", true },
|
||||
{ "gpsfix.cz", true },
|
||||
{ "grc.com", true },
|
||||
{ "grc.com", false },
|
||||
{ "greensolid.biz", true },
|
||||
{ "grepular.com", true },
|
||||
{ "groetzner.net", true },
|
||||
{ "groups.google.com", true },
|
||||
{ "gtraxapp.com", true },
|
||||
{ "gudini.net", true },
|
||||
{ "gugga.dk", true },
|
||||
{ "guidetoiceland.is", true },
|
||||
{ "gunnarhafdal.com", true },
|
||||
{ "guphi.net", true },
|
||||
@ -487,6 +535,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "hemlockhillscabinrentals.com", true },
|
||||
{ "henriknoerr.com", true },
|
||||
{ "heppler.net", true },
|
||||
{ "herbert.io", true },
|
||||
{ "herocentral.de", true },
|
||||
{ "heute-kaufen.de", true },
|
||||
{ "hex2013.com", true },
|
||||
@ -521,9 +570,11 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "id.mayfirst.org", false },
|
||||
{ "ideaweb.de", true },
|
||||
{ "ihrlotto.de", true },
|
||||
{ "ijohan.nl", true },
|
||||
{ "ikkatsu-satei.jp", true },
|
||||
{ "ilikerainbows.co.uk", true },
|
||||
{ "ilikerainbows.co.uk", false },
|
||||
{ "imaginary.ca", true },
|
||||
{ "imgg.es", true },
|
||||
{ "imouto.my", false },
|
||||
{ "in.xero.com", false },
|
||||
{ "inb4.us", true },
|
||||
@ -533,31 +584,39 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "inleaked.com", true },
|
||||
{ "innophate-security.com", true },
|
||||
{ "innophate-security.nl", true },
|
||||
{ "insighti.org", true },
|
||||
{ "insouciant.org", true },
|
||||
{ "instasex.ch", true },
|
||||
{ "interasistmen.se", true },
|
||||
{ "ionas-law.ro", true },
|
||||
{ "ipmimagazine.com", true },
|
||||
{ "iranianlawschool.com", true },
|
||||
{ "iridiumbrowser.de", true },
|
||||
{ "irische-segenswuensche.info", true },
|
||||
{ "ironfistdesign.com", true },
|
||||
{ "isitchristmas.com", true },
|
||||
{ "isogram.nl", true },
|
||||
{ "it-schwerin.de", true },
|
||||
{ "itdashboard.gov", true },
|
||||
{ "itriskltd.com", true },
|
||||
{ "itsamurai.ru", true },
|
||||
{ "itshost.ru", true },
|
||||
{ "izdiwho.com", true },
|
||||
{ "j0s.at", true },
|
||||
{ "jackyyf.com", false },
|
||||
{ "jakub-boucek.cz", true },
|
||||
{ "janus-engineering.de", true },
|
||||
{ "jbn.mx", true },
|
||||
{ "jelmer.co.uk", true },
|
||||
{ "jelmer.uk", true },
|
||||
{ "jeremyness.com", true },
|
||||
{ "jettshome.org", true },
|
||||
{ "jfreitag.de", true },
|
||||
{ "jimshaver.net", true },
|
||||
{ "jira.com", true },
|
||||
{ "jitsi.org", false },
|
||||
{ "jkb.pics", true },
|
||||
{ "jkbuster.com", true },
|
||||
{ "jmdekker.it", true },
|
||||
{ "jmedved.com", true },
|
||||
{ "johannes.io", true },
|
||||
@ -566,15 +625,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "jonaswitmer.ch", true },
|
||||
{ "jonathan.ir", true },
|
||||
{ "jonnybarnes.uk", true },
|
||||
{ "jrc9.ca", true },
|
||||
{ "julian-kipka.de", true },
|
||||
{ "jwilsson.com", true },
|
||||
{ "jwilsson.me", true },
|
||||
{ "k-dev.de", true },
|
||||
{ "kaheim.de", true },
|
||||
{ "kalmar.com", true },
|
||||
{ "kamikano.com", true },
|
||||
{ "kanzashi.com", true },
|
||||
{ "kardize24.pl", true },
|
||||
{ "karmaspa.se", true },
|
||||
{ "kartonmodellbau.org", true },
|
||||
{ "kaufberatung.community", true },
|
||||
{ "kdex.de", true },
|
||||
{ "kdyby.org", true },
|
||||
{ "keeleysam.com", true },
|
||||
@ -595,7 +658,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "kinsights.com", false },
|
||||
{ "kintone.com", true },
|
||||
{ "kirei.se", true },
|
||||
{ "kirkforsenate.com", true },
|
||||
{ "kissflow.com", true },
|
||||
{ "kitsta.com", true },
|
||||
{ "klarmobil-empfehlen.de", true },
|
||||
{ "klatschreime.de", true },
|
||||
@ -609,6 +672,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "koenrouwhorst.nl", true },
|
||||
{ "koenvdheuvel.me", true },
|
||||
{ "kojipkgs.fedoraproject.org", true },
|
||||
{ "kollawat.me", true },
|
||||
{ "komandakovalchuk.com", true },
|
||||
{ "konklone.com", true },
|
||||
{ "koop-bremen.de", true },
|
||||
@ -626,15 +690,18 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "lastpass.com", false },
|
||||
{ "launchkey.com", true },
|
||||
{ "lavalite.de", true },
|
||||
{ "lavval.com", true },
|
||||
{ "lb-toner.de", true },
|
||||
{ "leadbook.ru", true },
|
||||
{ "ledgerscope.net", false },
|
||||
{ "ledhouse.sk", true },
|
||||
{ "leibniz-remscheid.de", true },
|
||||
{ "leifdreizler.com", true },
|
||||
{ "leonardcamacho.me", true },
|
||||
{ "leonklingele.de", true },
|
||||
{ "les-corsaires.net", true },
|
||||
{ "libraryfreedomproject.org", true },
|
||||
{ "lichtspot.de", true },
|
||||
{ "liebel.org", true },
|
||||
{ "light.mail.ru", true },
|
||||
{ "lighting-centres.co.uk", true },
|
||||
@ -687,26 +754,35 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "mailmag.net", true },
|
||||
{ "makeitdynamic.com", true },
|
||||
{ "makeyourlaws.org", true },
|
||||
{ "mall.cz", true },
|
||||
{ "mall.hu", true },
|
||||
{ "mall.pl", true },
|
||||
{ "mall.sk", true },
|
||||
{ "malnex.de", true },
|
||||
{ "malwre.io", true },
|
||||
{ "man3s.jp", true },
|
||||
{ "manage.zenpayroll.com", false },
|
||||
{ "manageprojects.com", true },
|
||||
{ "manager.linode.com", false },
|
||||
{ "mandala-ausmalbilder.de", true },
|
||||
{ "manicode.com", true },
|
||||
{ "markayapilandirma.com", true },
|
||||
{ "market.android.com", true },
|
||||
{ "markhaehnel.de", true },
|
||||
{ "markusueberallassetmanagement.de", true },
|
||||
{ "marshut.net", true },
|
||||
{ "massivum.de", true },
|
||||
{ "matatall.com", true },
|
||||
{ "mathiasbynens.be", true },
|
||||
{ "matteomarescotti.it", true },
|
||||
{ "mattfin.ch", true },
|
||||
{ "mattmccutchen.net", true },
|
||||
{ "mattsvensson.com", true },
|
||||
{ "max.gov", true },
|
||||
{ "mbasic.facebook.com", false },
|
||||
{ "mbp.banking.co.at", false },
|
||||
{ "md5file.com", true },
|
||||
{ "mdfnet.se", true },
|
||||
{ "mdfnet.se", false },
|
||||
{ "meamod.com", true },
|
||||
{ "mediacru.sh", true },
|
||||
{ "medium.com", true },
|
||||
@ -714,10 +790,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "mega.co.nz", false },
|
||||
{ "megaplan.cz", true },
|
||||
{ "megaplan.ru", true },
|
||||
{ "mehmetince.net", true },
|
||||
{ "meinebo.it", true },
|
||||
{ "members.mayfirst.org", false },
|
||||
{ "members.nearlyfreespeech.net", false },
|
||||
{ "mevs.cz", true },
|
||||
{ "mh-bloemen.co.jp", true },
|
||||
{ "miasarafina.de", true },
|
||||
{ "michalspacek.cz", true },
|
||||
{ "miconcinemas.com", true },
|
||||
@ -727,6 +805,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "mikewest.org", true },
|
||||
{ "miku.hatsune.my", false },
|
||||
{ "mimeit.de", true },
|
||||
{ "mimovrste.com", true },
|
||||
{ "mindoktor.se", true },
|
||||
{ "minecraftvoter.com", true },
|
||||
{ "mineover.es", true },
|
||||
@ -736,6 +815,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "mirrorx.com", true },
|
||||
{ "miskatonic.org", true },
|
||||
{ "mister.hosting", true },
|
||||
{ "mitell.jp", false },
|
||||
{ "mittenhacks.com", true },
|
||||
{ "mkcert.org", true },
|
||||
{ "mkw.st", true },
|
||||
{ "mnsure.org", true },
|
||||
@ -758,14 +839,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "mths.be", true },
|
||||
{ "mtouch.facebook.com", false },
|
||||
{ "mudcrab.us", true },
|
||||
{ "mujadin.se", true },
|
||||
{ "munich-rage.de", true },
|
||||
{ "munuc.org", true },
|
||||
{ "musicgamegalaxy.de", true },
|
||||
{ "mustika.cf", true },
|
||||
{ "mutamatic.com", true },
|
||||
{ "mutantmonkey.in", true },
|
||||
{ "mutantmonkey.info", true },
|
||||
{ "mutantmonkey.sexy", true },
|
||||
{ "mvno.io", true },
|
||||
{ "mvsecurity.nl", true },
|
||||
{ "mwe.st", true },
|
||||
{ "my.onlime.ch", false },
|
||||
{ "my.usa.gov", true },
|
||||
@ -777,32 +860,40 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "myplaceonline.com", true },
|
||||
{ "myprintcard.de", true },
|
||||
{ "myvirtualserver.com", true },
|
||||
{ "nachsendeauftrag.net", true },
|
||||
{ "nachsenden.info", true },
|
||||
{ "nameid.org", true },
|
||||
{ "namepros.com", true },
|
||||
{ "nan.zone", true },
|
||||
{ "narodniki.com", true },
|
||||
{ "nationalpriorities.org", true },
|
||||
{ "nbl.org.tw", true },
|
||||
{ "nctx.co.uk", true },
|
||||
{ "nectarleaf.com", true },
|
||||
{ "neg9.org", false },
|
||||
{ "neilwynne.com", false },
|
||||
{ "neko.li", true },
|
||||
{ "nemovement.org", true },
|
||||
{ "net-safe.info", true },
|
||||
{ "netera.se", true },
|
||||
{ "netrider.net.au", true },
|
||||
{ "netzbit.de", true },
|
||||
{ "netztest.at", true },
|
||||
{ "newkaliningrad.ru", true },
|
||||
{ "newstarnootropics.com", true },
|
||||
{ "ng-security.com", true },
|
||||
{ "nginxnudes.com", true },
|
||||
{ "nieselregen.com", true },
|
||||
{ "niloxy.com", true },
|
||||
{ "nmctest.net", true },
|
||||
{ "nodari.com.ar", true },
|
||||
{ "noemax.com", true },
|
||||
{ "noobs-r-us.co.uk", true },
|
||||
{ "nos-oignons.net", true },
|
||||
{ "notalone.gov", true },
|
||||
{ "nouvelle-vague-saint-cast.fr", true },
|
||||
{ "nowhere.dk", true },
|
||||
{ "npw.net", true },
|
||||
{ "nsboutique.com", true },
|
||||
{ "nu3.at", true },
|
||||
{ "nu3.ch", true },
|
||||
{ "nu3.co.uk", true },
|
||||
@ -814,13 +905,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "nu3.no", true },
|
||||
{ "nu3.se", true },
|
||||
{ "null-sec.ru", true },
|
||||
{ "nutsandboltsmedia.com", false },
|
||||
{ "nuvini.com", true },
|
||||
{ "nwa.xyz", true },
|
||||
{ "nwgh.org", true },
|
||||
{ "nymphetomania.net", true },
|
||||
{ "oakslighting.co.uk", true },
|
||||
{ "offshore-firma.org", true },
|
||||
{ "ohling.org", true },
|
||||
{ "okmx.de", true },
|
||||
{ "omitech.co.uk", true },
|
||||
{ "onedot.nl", true },
|
||||
@ -834,6 +925,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "opsmate.com", false },
|
||||
{ "optimus.io", true },
|
||||
{ "orbograph-hrcm.com", true },
|
||||
{ "orcahq.com", true },
|
||||
{ "oscarvk.ch", true },
|
||||
{ "osterkraenzchen.de", true },
|
||||
{ "otakuworld.de", true },
|
||||
@ -858,6 +950,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "passwd.io", true },
|
||||
{ "password.codes", true },
|
||||
{ "passwords.google.com", true },
|
||||
{ "pasta-factory.co.il", true },
|
||||
{ "paste.linode.com", false },
|
||||
{ "pastebin.linode.com", false },
|
||||
{ "patt.us", true },
|
||||
@ -869,6 +962,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "paymill.de", true },
|
||||
{ "paypal.com", false },
|
||||
{ "payroll.xero.com", false },
|
||||
{ "pclob.gov", true },
|
||||
{ "pdf.yt", true },
|
||||
{ "peercraft.com", true },
|
||||
{ "pentesterlab.com", true },
|
||||
@ -891,10 +985,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "plothost.com", true },
|
||||
{ "plus.google.com", false },
|
||||
{ "plus.sandbox.google.com", false },
|
||||
{ "plzenskybarcamp.cz", true },
|
||||
{ "pmg-offshore-company.com", true },
|
||||
{ "pmg-purchase.com", true },
|
||||
{ "pmg-purchase.net", true },
|
||||
{ "polymathematician.com", true },
|
||||
{ "polypho.nyc", true },
|
||||
{ "ponythread.com", true },
|
||||
{ "portal.tirol.gv.at", true },
|
||||
{ "posteo.de", false },
|
||||
{ "powerplannerapp.com", true },
|
||||
@ -909,6 +1006,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "propagandism.org", true },
|
||||
{ "prowhisky.de", true },
|
||||
{ "proximato.com", true },
|
||||
{ "ptn.moscow", true },
|
||||
{ "puac.de", true },
|
||||
{ "pubkey.is", true },
|
||||
{ "publications.qld.gov.au", false },
|
||||
@ -924,6 +1022,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "quuz.org", true },
|
||||
{ "r3s1stanc3.me", true },
|
||||
{ "rad-route.de", true },
|
||||
{ "radiormi.com", true },
|
||||
{ "rafaelcz.de", true },
|
||||
{ "ragingserenity.com", true },
|
||||
{ "raiseyourflag.com", true },
|
||||
@ -942,11 +1041,14 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "reishunger.de", true },
|
||||
{ "release-monitoring.org", true },
|
||||
{ "reliable-mail.de", true },
|
||||
{ "renem.net", true },
|
||||
{ "research.facebook.com", false },
|
||||
{ "reserve-online.net", true },
|
||||
{ "residentsinsurance.co.uk", true },
|
||||
{ "reviews.anime.my", true },
|
||||
{ "riccy.org", true },
|
||||
{ "richiemail.net", true },
|
||||
{ "ricochet.im", true },
|
||||
{ "riesenmagnete.de", true },
|
||||
{ "rika.me", true },
|
||||
{ "rippleunion.com", true },
|
||||
@ -956,28 +1058,38 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "rodosto.com", true },
|
||||
{ "roland.io", true },
|
||||
{ "romab.com", true },
|
||||
{ "roman-pavlik.cz", true },
|
||||
{ "romans-place.me.uk", true },
|
||||
{ "romulusapp.com", false },
|
||||
{ "room-checkin24.de", true },
|
||||
{ "roots.io", true },
|
||||
{ "rosenkeller.org", true },
|
||||
{ "roundcube.mayfirst.org", false },
|
||||
{ "royalacademy.org.uk", true },
|
||||
{ "rpavlik.cz", true },
|
||||
{ "rssr.se", true },
|
||||
{ "ru-sprachstudio.ch", true },
|
||||
{ "rubecodeberg.com", true },
|
||||
{ "rubendv.be", true },
|
||||
{ "rudloff.pro", true },
|
||||
{ "ruudkoot.nl", true },
|
||||
{ "rws-vertriebsportal.de", true },
|
||||
{ "s-c.se", true },
|
||||
{ "sabahattin-gucukoglu.com", true },
|
||||
{ "sagerus.com", true },
|
||||
{ "sageth.com", true },
|
||||
{ "saintsrobotics.com", true },
|
||||
{ "sakaki.anime.my", true },
|
||||
{ "salaervergleich.com", true },
|
||||
{ "sale4ru.ru", true },
|
||||
{ "salserocafe.com", true },
|
||||
{ "samba.org", true },
|
||||
{ "samfunnet.no", true },
|
||||
{ "samizdat.cz", true },
|
||||
{ "samuelkeeley.com", true },
|
||||
{ "sanatfilan.com", false },
|
||||
{ "sandbox.mydigipass.com", false },
|
||||
{ "saulchristie.com", true },
|
||||
{ "save.gov", true },
|
||||
{ "saveaward.gov", true },
|
||||
{ "savvytime.com", true },
|
||||
@ -993,7 +1105,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "scribe.systems", true },
|
||||
{ "script.google.com", true },
|
||||
{ "sdsl-speedtest.de", true },
|
||||
{ "secretserveronline.com", true },
|
||||
{ "secure.facebook.com", false },
|
||||
{ "securedrop.org", true },
|
||||
{ "securesuisse.ch", true },
|
||||
{ "securify.nl", true },
|
||||
{ "security-carpet.com", true },
|
||||
@ -1016,6 +1130,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "shodan.io", true },
|
||||
{ "shopontarget.com", true },
|
||||
{ "shortdiary.me", true },
|
||||
{ "sigterm.sh", true },
|
||||
{ "sikayetvar.com", true },
|
||||
{ "silentcircle.com", false },
|
||||
{ "simbolo.co.uk", false },
|
||||
{ "simple.com", false },
|
||||
@ -1033,6 +1149,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "skydrive.live.com", false },
|
||||
{ "slack.com", true },
|
||||
{ "slattery.co", true },
|
||||
{ "sleio.com", true },
|
||||
{ "slevomat.cz", true },
|
||||
{ "slidebatch.com", true },
|
||||
{ "smartcleaningcenter.nl", true },
|
||||
@ -1040,13 +1157,16 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "smartlend.se", true },
|
||||
{ "smartship.co.jp", true },
|
||||
{ "snakehosting.dk", true },
|
||||
{ "snowflake.ch", false },
|
||||
{ "sockeye.cc", true },
|
||||
{ "sorz.org", true },
|
||||
{ "souki.cz", true },
|
||||
{ "soulogic.com", true },
|
||||
{ "sour.is", true },
|
||||
{ "southside-crew.com", true },
|
||||
{ "souvik.me", true },
|
||||
{ "spawn.cz", true },
|
||||
{ "speedcounter.net", true },
|
||||
{ "spencerbaer.com", true },
|
||||
{ "spideroak.com", true },
|
||||
{ "spongepowered.org", true },
|
||||
@ -1066,7 +1186,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "static.wepay.com", false },
|
||||
{ "staticanime.net", false },
|
||||
{ "stationary-traveller.eu", true },
|
||||
{ "stesti.cz", true },
|
||||
{ "stevegrav.es", true },
|
||||
{ "steventress.com", true },
|
||||
{ "stillyarts.com", true },
|
||||
{ "stocktrade.de", false },
|
||||
{ "strasweb.fr", false },
|
||||
{ "stretchmyan.us", true },
|
||||
@ -1083,6 +1206,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "support.mayfirst.org", false },
|
||||
{ "surkatty.org", true },
|
||||
{ "survivalmonkey.com", true },
|
||||
{ "svager.cz", true },
|
||||
{ "swehack.org", false },
|
||||
{ "sychov.pro", true },
|
||||
{ "sylaps.com", true },
|
||||
@ -1091,6 +1215,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "syss.de", true },
|
||||
{ "tadigitalstore.com", true },
|
||||
{ "tageau.com", true },
|
||||
{ "taglondon.org", true },
|
||||
{ "talk.google.com", true },
|
||||
{ "talkgadget.google.com", true },
|
||||
{ "tallshoe.com", true },
|
||||
@ -1101,8 +1226,12 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "tatort-fanpage.de", true },
|
||||
{ "tauchkater.de", true },
|
||||
{ "tbspace.de", true },
|
||||
{ "tdrs.info", true },
|
||||
{ "teachforcanada.ca", true },
|
||||
{ "teamnorthgermany.de", true },
|
||||
{ "techhipster.net", true },
|
||||
{ "techllage.com", true },
|
||||
{ "techloaner.com", true },
|
||||
{ "tegelsensanitaironline.nl", true },
|
||||
{ "tekshrek.com", true },
|
||||
{ "tent.io", true },
|
||||
@ -1112,10 +1241,13 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "texte-zur-taufe.de", true },
|
||||
{ "thebimhub.com", true },
|
||||
{ "thecustomizewindows.com", true },
|
||||
{ "theescapistswiki.com", true },
|
||||
{ "themoep.at", true },
|
||||
{ "thepaymentscompany.com", true },
|
||||
{ "therapynotes.com", true },
|
||||
{ "therapyportal.com", true },
|
||||
{ "theshadestore.com", true },
|
||||
{ "thetomharling.com", true },
|
||||
{ "thomastimepieces.com.au", true },
|
||||
{ "thorncreek.net", false },
|
||||
{ "thusoy.com", true },
|
||||
@ -1127,7 +1259,9 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "tinte24.de", true },
|
||||
{ "tintenfix.net", true },
|
||||
{ "tipps-fuer-den-haushalt.de", true },
|
||||
{ "tirex.media", true },
|
||||
{ "tittelbach.at", true },
|
||||
{ "titties.ml", true },
|
||||
{ "tls.li", true },
|
||||
{ "tmtopup.com", true },
|
||||
{ "tno.io", true },
|
||||
@ -1135,6 +1269,8 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "todesschaf.org", true },
|
||||
{ "tollmanz.com", true },
|
||||
{ "tomfisher.eu", true },
|
||||
{ "tomharling.co.uk", true },
|
||||
{ "tomharling.uk", true },
|
||||
{ "tomvote.com", true },
|
||||
{ "toner24.at", true },
|
||||
{ "toner24.co.uk", true },
|
||||
@ -1160,15 +1296,19 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "toshnix.com", true },
|
||||
{ "touch.facebook.com", false },
|
||||
{ "touch.mail.ru", true },
|
||||
{ "tox.im", true },
|
||||
{ "traas.org", true },
|
||||
{ "tracktivity.com.au", true },
|
||||
{ "translate.fedoraproject.org", true },
|
||||
{ "translate.googleapis.com", true },
|
||||
{ "translate.stg.fedoraproject.org", true },
|
||||
{ "trashnothing.com", true },
|
||||
{ "trauertexte.info", true },
|
||||
{ "tresorit.com", true },
|
||||
{ "tribut.de", true },
|
||||
{ "tucuxi.org", true },
|
||||
{ "tunebitfm.de", true },
|
||||
{ "tuturulianda.com", true },
|
||||
{ "twentymilliseconds.com", true },
|
||||
{ "twisto.cz", true },
|
||||
{ "twitter.com", false },
|
||||
@ -1177,16 +1317,21 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "uae-company-service.com", true },
|
||||
{ "ub3rk1tten.com", true },
|
||||
{ "ubertt.org", true },
|
||||
{ "ucfirst.nl", true },
|
||||
{ "ukdefencejournal.org.uk", true },
|
||||
{ "ukhas.net", true },
|
||||
{ "ukrainians.ch", true },
|
||||
{ "unison.com", true },
|
||||
{ "unitedadmins.com", true },
|
||||
{ "unknownphenomena.net", true },
|
||||
{ "unterfrankenclan.de", true },
|
||||
{ "uonstaffhub.com", true },
|
||||
{ "upload.facebook.com", false },
|
||||
{ "uptrends.com", true },
|
||||
{ "uptrends.de", true },
|
||||
{ "usaa.com", false },
|
||||
{ "uspsoig.gov", true },
|
||||
{ "utilityapi.com", true },
|
||||
{ "utleieplassen.no", true },
|
||||
{ "vaddder.com", true },
|
||||
{ "vhost.co.id", true },
|
||||
@ -1204,6 +1349,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "warrencreative.com", false },
|
||||
{ "watsonhall.uk", true },
|
||||
{ "wbg-vs.de", true },
|
||||
{ "wearvr.com", true },
|
||||
{ "webandmore.de", false },
|
||||
{ "webandwords.com.au", true },
|
||||
{ "webassadors.com", false },
|
||||
@ -1223,8 +1369,10 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "webtrh.cz", true },
|
||||
{ "weggeweest.nl", true },
|
||||
{ "welches-kinderfahrrad.de", true },
|
||||
{ "welpy.com", true },
|
||||
{ "wepay.com", false },
|
||||
{ "wepay.in.th", true },
|
||||
{ "wesleyharris.ca", true },
|
||||
{ "wevahoo.com", true },
|
||||
{ "wf-bigsky-master.appspot.com", true },
|
||||
{ "wf-demo-eu.appspot.com", true },
|
||||
@ -1275,7 +1423,7 @@ static const nsSTSPreload kSTSPreloadList[] = {
|
||||
{ "www.gmail.com", false },
|
||||
{ "www.googlemail.com", false },
|
||||
{ "www.gov.uk", false },
|
||||
{ "www.grc.com", true },
|
||||
{ "www.grc.com", false },
|
||||
{ "www.heliosnet.com", true },
|
||||
{ "www.honeybadger.io", false },
|
||||
{ "www.intercom.io", false },
|
||||
|
@ -1,9 +1,122 @@
|
||||
FROM quay.io/mozilla/ubuntu:12.04
|
||||
MAINTAINER Jonas Finnemann Jensen <jopsen@gmail.com>
|
||||
|
||||
# Run system setup script
|
||||
ADD system-setup.sh /tmp/system-setup.sh
|
||||
RUN ["/tmp/system-setup.sh"]
|
||||
|
||||
COPY sources.list /etc/apt/sources.list
|
||||
|
||||
RUN useradd -d /home/worker -s /bin/bash -m worker
|
||||
RUN apt-get update && apt-get install -y --force-yes \
|
||||
alsa-base \
|
||||
alsa-utils \
|
||||
autoconf2.13 \
|
||||
bluez-alsa \
|
||||
bluez-alsa:i386 \
|
||||
bluez-cups \
|
||||
bluez-gstreamer \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
ccache \
|
||||
curl \
|
||||
fonts-kacst \
|
||||
fonts-kacst-one \
|
||||
fonts-liberation \
|
||||
fonts-stix \
|
||||
fonts-unfonts-core \
|
||||
fonts-unfonts-extra \
|
||||
fonts-vlgothic \
|
||||
g++-multilib \
|
||||
gcc-multilib \
|
||||
gir1.2-gnomebluetooth-1.0 \
|
||||
git \
|
||||
gstreamer0.10-alsa \
|
||||
gstreamer0.10-ffmpeg \
|
||||
gstreamer0.10-plugins-bad \
|
||||
gstreamer0.10-plugins-base \
|
||||
gstreamer0.10-plugins-good \
|
||||
gstreamer0.10-plugins-ugly \
|
||||
gstreamer0.10-tools \
|
||||
libasound2-dev \
|
||||
libasound2-plugins:i386 \
|
||||
libcanberra-pulse \
|
||||
libcurl4-openssl-dev \
|
||||
libdbus-1-dev \
|
||||
libdbus-glib-1-dev \
|
||||
libdrm-intel1:i386 \
|
||||
libdrm-nouveau1a:i386 \
|
||||
libdrm-radeon1:i386 \
|
||||
libdrm2:i386 \
|
||||
libexpat1:i386 \
|
||||
libgconf2-dev \
|
||||
libgl1-mesa-dri \
|
||||
libgl1-mesa-dri:i386 \
|
||||
libgl1-mesa-glx \
|
||||
libgl1-mesa-glx:i386 \
|
||||
libglapi-mesa \
|
||||
libglapi-mesa:i386 \
|
||||
libglu1-mesa \
|
||||
libglu1-mesa:i386 \
|
||||
libgnome-bluetooth8 \
|
||||
libgstreamer-plugins-base0.10-dev \
|
||||
libgstreamer0.10-dev \
|
||||
libgtk2.0-dev \
|
||||
libiw-dev \
|
||||
libllvm2.9 \
|
||||
libllvm3.0:i386 \
|
||||
libncurses5:i386 \
|
||||
libnotify-dev \
|
||||
libpulse-dev \
|
||||
libpulse-mainloop-glib0:i386 \
|
||||
libpulsedsp:i386 \
|
||||
libsdl1.2debian:i386 \
|
||||
libsox-fmt-alsa \
|
||||
libx11-xcb1:i386 \
|
||||
libxcb-glx0 \
|
||||
libxcb-glx0:i386 \
|
||||
libxdamage1:i386 \
|
||||
libxfixes3:i386 \
|
||||
libxt-dev \
|
||||
libxxf86vm1 \
|
||||
libxxf86vm1:i386 \
|
||||
llvm \
|
||||
llvm-2.9 \
|
||||
llvm-2.9-dev \
|
||||
llvm-2.9-runtime \
|
||||
llvm-dev \
|
||||
llvm-runtime \
|
||||
mercurial \
|
||||
mesa-common-dev \
|
||||
nano \
|
||||
pulseaudio \
|
||||
pulseaudio-module-X11 \
|
||||
pulseaudio-module-bluetooth \
|
||||
pulseaudio-module-gconf \
|
||||
python-dev \
|
||||
python-pip \
|
||||
rlwrap \
|
||||
screen \
|
||||
software-properties-common \
|
||||
sudo \
|
||||
tar \
|
||||
ttf-arphic-uming \
|
||||
ttf-dejavu \
|
||||
ttf-indic-fonts-core \
|
||||
ttf-kannada-fonts \
|
||||
ttf-oriya-fonts \
|
||||
ttf-paktype \
|
||||
ttf-punjabi-fonts \
|
||||
ttf-sazanami-mincho \
|
||||
unzip \
|
||||
uuid \
|
||||
vim \
|
||||
wget \
|
||||
xvfb \
|
||||
yasm \
|
||||
zip
|
||||
|
||||
ENV NODE_VERSION v0.10.36
|
||||
RUN cd /usr/local/ && \
|
||||
curl https://nodejs.org/dist/$NODE_VERSION/node-$NODE_VERSION-linux-x64.tar.gz | tar -xz --strip-components 1 && \
|
||||
node -v
|
||||
|
||||
# Set variable normally configured at login, by the shells parent process, these
|
||||
# are taken from GNU su manual
|
||||
@ -14,6 +127,6 @@ ENV LOGNAME worker
|
||||
|
||||
# Declare default working folder
|
||||
WORKDIR /home/worker
|
||||
|
||||
|
||||
# Set a default command useful for debugging
|
||||
CMD ["/bin/bash", "--login"]
|
||||
|
@ -1 +1 @@
|
||||
0.0.1
|
||||
0.0.5
|
||||
|
@ -1,149 +0,0 @@
|
||||
#!/bin/bash -ve
|
||||
|
||||
################################### setup.sh ###################################
|
||||
|
||||
### Check that we are running as root
|
||||
test `whoami` == 'root';
|
||||
|
||||
### Add worker user
|
||||
# Minimize the number of things which the build script can do, security-wise
|
||||
# it's not a problem to let the build script install things with apt-get. But it
|
||||
# really shouldn't do this, so let's forbid root access.
|
||||
useradd -d /home/worker -s /bin/bash -m worker;
|
||||
|
||||
### Install Useful Packages
|
||||
# First we update and upgrade to latest versions.
|
||||
apt-get update;
|
||||
apt-get upgrade -y;
|
||||
|
||||
# Let's install some goodies, ca-certificates is needed for https with hg.
|
||||
# sudo will be required anyway, but let's make it explicit. It nice to have
|
||||
# sudo around. We'll also install nano, this is pure bloat I know, but it's
|
||||
# useful a text editor.
|
||||
apt-get install -y \
|
||||
ca-certificates \
|
||||
sudo \
|
||||
nano \
|
||||
tar \
|
||||
;
|
||||
|
||||
# Then let's install all firefox build dependencies, this are extracted from
|
||||
# mozboot. See python/mozboot/bin/bootstrap.py in mozilla-central.
|
||||
apt-get install -y \
|
||||
autoconf2.13 \
|
||||
build-essential \
|
||||
ccache \
|
||||
libasound2-dev \
|
||||
libcurl4-openssl-dev \
|
||||
libdbus-1-dev \
|
||||
libdbus-glib-1-dev \
|
||||
libgconf2-dev \
|
||||
libgstreamer0.10-dev \
|
||||
libgstreamer-plugins-base0.10-dev \
|
||||
libgtk2.0-dev \
|
||||
libiw-dev \
|
||||
libnotify-dev \
|
||||
libpulse-dev \
|
||||
libxt-dev \
|
||||
mercurial \
|
||||
git \
|
||||
mesa-common-dev \
|
||||
python-dev \
|
||||
unzip \
|
||||
uuid \
|
||||
yasm \
|
||||
xvfb \
|
||||
zip \
|
||||
software-properties-common \
|
||||
;
|
||||
|
||||
### Firefox Test Setup
|
||||
apt-get install -y \
|
||||
alsa-base \
|
||||
alsa-utils \
|
||||
bluez-alsa \
|
||||
bluez-alsa:i386 \
|
||||
bluez-cups \
|
||||
bluez-gstreamer \
|
||||
g++-multilib \
|
||||
gcc-multilib \
|
||||
gir1.2-gnomebluetooth-1.0 \
|
||||
gstreamer0.10-alsa \
|
||||
libasound2-plugins:i386 \
|
||||
libcanberra-pulse \
|
||||
libdrm-intel1:i386 \
|
||||
libdrm-nouveau1a:i386 \
|
||||
libdrm-radeon1:i386 \
|
||||
libdrm2:i386 \
|
||||
libexpat1:i386 \
|
||||
libgnome-bluetooth8 \
|
||||
libllvm2.9 \
|
||||
libllvm3.0:i386 \
|
||||
libncurses5:i386 \
|
||||
libpulse-mainloop-glib0:i386 \
|
||||
libpulsedsp:i386 \
|
||||
libsdl1.2debian:i386 \
|
||||
libsox-fmt-alsa \
|
||||
libx11-xcb1:i386 \
|
||||
libxcb-glx0:i386 \
|
||||
libxcb-glx0 \
|
||||
libxdamage1:i386 \
|
||||
libxfixes3:i386 \
|
||||
libxxf86vm1:i386 \
|
||||
libxxf86vm1 \
|
||||
llvm \
|
||||
llvm-2.9 \
|
||||
llvm-2.9-dev \
|
||||
llvm-2.9-runtime \
|
||||
llvm-dev \
|
||||
llvm-runtime \
|
||||
pulseaudio-module-bluetooth \
|
||||
pulseaudio-module-gconf \
|
||||
pulseaudio-module-X11 \
|
||||
pulseaudio \
|
||||
python-pip
|
||||
|
||||
# Install some utilities
|
||||
curl -sL https://deb.nodesource.com/setup | sudo bash -
|
||||
apt-get install -y \
|
||||
screen \
|
||||
vim \
|
||||
wget \
|
||||
curl \
|
||||
rlwrap \
|
||||
nodejs \
|
||||
;
|
||||
|
||||
# Mozilla-patched mesa libs required for many reftests -- see bug 975034
|
||||
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libgl1-mesa-dri_8.0.4-0ubuntu0.6mozilla1_i386.deb
|
||||
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libgl1-mesa-dri_8.0.4-0ubuntu0.6mozilla1_amd64.deb
|
||||
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libgl1-mesa-glx_8.0.4-0ubuntu0.6mozilla1_i386.deb
|
||||
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libgl1-mesa-glx_8.0.4-0ubuntu0.6mozilla1_amd64.deb
|
||||
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libglapi-mesa_8.0.4-0ubuntu0.6mozilla1_i386.deb
|
||||
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libglapi-mesa_8.0.4-0ubuntu0.6mozilla1_amd64.deb
|
||||
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libglu1-mesa_8.0.4-0ubuntu0.6mozilla1_i386.deb
|
||||
wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/pool/main/m/mesa/libglu1-mesa_8.0.4-0ubuntu0.6mozilla1_amd64.deb
|
||||
dpkg -i libgl1-mesa-dri_8.0.4-0ubuntu0.6mozilla1_amd64.deb
|
||||
dpkg -i libgl1-mesa-dri_8.0.4-0ubuntu0.6mozilla1_i386.deb
|
||||
dpkg -i libglapi-mesa_8.0.4-0ubuntu0.6mozilla1_amd64.deb
|
||||
dpkg -i libglapi-mesa_8.0.4-0ubuntu0.6mozilla1_i386.deb
|
||||
dpkg -i libgl1-mesa-glx_8.0.4-0ubuntu0.6mozilla1_i386.deb
|
||||
dpkg -i libgl1-mesa-glx_8.0.4-0ubuntu0.6mozilla1_amd64.deb
|
||||
dpkg -i libglu1-mesa_8.0.4-0ubuntu0.6mozilla1_i386.deb
|
||||
dpkg -i libglu1-mesa_8.0.4-0ubuntu0.6mozilla1_amd64.deb
|
||||
|
||||
# Install releng package of nodejs that includes npm
|
||||
#wget http://puppetagain.pub.build.mozilla.org/data/repos/apt/releng/precise/pool/main/n/nodejs/nodejs_0.10.21-1chl1~precise1_amd64.deb
|
||||
#dpkg -i nodejs_0.10.21-1chl1~precise1_amd64.deb
|
||||
|
||||
### Clean up from setup
|
||||
# Remove cached .deb packages. Cached package takes up a lot of space and
|
||||
# distributing them to workers is wasteful.
|
||||
apt-get clean
|
||||
rm *.deb
|
||||
|
||||
# Remove the setup.sh setup, we don't really need this script anymore, deleting
|
||||
# it keeps the image as clean as possible.
|
||||
rm $0; echo "Deleted $0";
|
||||
|
||||
################################### setup.sh ###################################
|
@ -1,4 +1,4 @@
|
||||
FROM quay.io/mozilla/base-test:0.0.1
|
||||
FROM quay.io/mozilla/base-test:0.0.5
|
||||
MAINTAINER Jonas Finnemann Jensen <jopsen@gmail.com>
|
||||
|
||||
# Add utilities and configuration
|
||||
@ -13,7 +13,7 @@ ADD https://raw.githubusercontent.com/taskcluster/buildbot-step/maste
|
||||
|
||||
# Run test setup script
|
||||
RUN chmod u+x /home/worker/bin/buildbot_step
|
||||
RUN pip install virtualenv;
|
||||
RUN apt-get install -y python-pip && pip install virtualenv;
|
||||
RUN mkdir Documents; mkdir Pictures; mkdir Music; mkdir Videos; mkdir artifacts
|
||||
RUN chown -R worker:worker /home/worker/* /home/worker/.*
|
||||
RUN npm install -g taskcluster-vcs@2.3.1
|
||||
|
@ -1 +1 @@
|
||||
0.0.15
|
||||
0.2.5
|
||||
|
@ -10,6 +10,7 @@ test $MOZHARNESS_REV # mozharness revision
|
||||
|
||||
# XXX: Note that all tests could be faster at smaller bit depth
|
||||
Xvfb :0 -nolisten tcp -screen 0 1600x1200x24 2>/dev/null &
|
||||
|
||||
export DISPLAY=:0
|
||||
|
||||
# First check if the mozharness directory is available. This is intended to be
|
||||
|
@ -336,15 +336,20 @@ class Graph(object):
|
||||
test_parameters = copy.copy(build_parameters)
|
||||
test_parameters['build_url'] = build_url
|
||||
test_parameters['tests_url'] = tests_url
|
||||
test_parameters['total_chunks'] = 1
|
||||
|
||||
test_definition = templates.load(test['task'], {})['task']
|
||||
chunk_config = test_definition['extra']['chunks']
|
||||
|
||||
# Allow branch configs to override task level chunking...
|
||||
if 'chunks' in test:
|
||||
test_parameters['total_chunks'] = test['chunks']
|
||||
chunk_config['total'] = test['chunks']
|
||||
|
||||
for chunk in range(1, test_parameters['total_chunks'] + 1):
|
||||
test_parameters['total_chunks'] = chunk_config['total']
|
||||
|
||||
for chunk in range(1, chunk_config['total'] + 1):
|
||||
if 'only_chunks' in test and \
|
||||
chunk not in test['only_chunks']:
|
||||
continue;
|
||||
continue
|
||||
|
||||
test_parameters['chunk'] = chunk
|
||||
test_task = templates.load(test['task'], test_parameters)
|
||||
|
@ -6,6 +6,7 @@ flags:
|
||||
- emulator
|
||||
- emulator-jb
|
||||
- emulator-kk
|
||||
- emulator-l
|
||||
- linux32_gecko # b2g desktop linux 32 bit
|
||||
- linux64_gecko # b2g desktop linux 64 bit
|
||||
- linux64-mulet # Firefox desktop - b2g gecko linux 64 bit
|
||||
|
@ -56,7 +56,6 @@ tests:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_emulator_ics_opt.yml:
|
||||
task: tasks/tests/b2g_emulator_crashtest.yml
|
||||
chunks: 3
|
||||
gaia-build:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
@ -69,7 +68,6 @@ tests:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
task: tasks/tests/b2g_gaia_js_integration_tests.yml
|
||||
chunks: 4
|
||||
gaia-linter:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
@ -84,10 +82,8 @@ tests:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
task: tasks/tests/b2g_gaia_ui_test_functional.yml
|
||||
chunks: 3
|
||||
tasks/builds/b2g_desktop_debug.yml:
|
||||
task: tasks/tests/b2g_gaia_ui_test_functional.yml
|
||||
chunks: 3
|
||||
gaia-ui-test-unit:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
@ -110,32 +106,25 @@ tests:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_emulator_ics_opt.yml:
|
||||
task: tasks/tests/b2g_emulator_mochitest.yml
|
||||
chunks: 9
|
||||
tasks/builds/b2g_emulator_ics_debug.yml:
|
||||
task: tasks/tests/b2g_emulator_mochitest.yml
|
||||
chunks: 20
|
||||
tasks/builds/mulet_linux.yml:
|
||||
task: tasks/tests/mulet_mochitests.yml
|
||||
chunks: 5
|
||||
mochitest-oop:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
task: tasks/tests/b2g_mochitest_oop.yml
|
||||
chunks: 1
|
||||
reftest:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_emulator_ics_opt.yml:
|
||||
task: tasks/tests/b2g_emulator_reftest.yml
|
||||
chunks: 20
|
||||
reftest-sanity-oop:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
task: tasks/tests/b2g_reftests_sanity_oop.yml
|
||||
chunks: 1
|
||||
xpcshell:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_emulator_ics_opt.yml:
|
||||
task: tasks/tests/b2g_emulator_xpcshell.yml
|
||||
task: tasks/tests/b2g_emulator_xpcshell_chunked.yml
|
||||
tasks/builds/b2g_emulator_ics_debug.yml:
|
||||
task: tasks/tests/b2g_emulator_xpcshell_chunked.yml
|
||||
chunks: 2
|
||||
|
@ -20,6 +20,14 @@ builds:
|
||||
types:
|
||||
opt:
|
||||
task: tasks/builds/mulet_linux.yml
|
||||
emulator-l:
|
||||
platfoms:
|
||||
- b2g
|
||||
types:
|
||||
opt:
|
||||
task: tasks/builds/b2g_emulator_l_opt.yml
|
||||
debug:
|
||||
task: tasks/builds/b2g_emulator_l_debug.yml
|
||||
emulator-kk:
|
||||
platfoms:
|
||||
- b2g
|
||||
@ -68,7 +76,6 @@ tests:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_emulator_ics_opt.yml:
|
||||
task: tasks/tests/b2g_emulator_crashtest.yml
|
||||
chunks: 3
|
||||
gaia-build:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
@ -81,10 +88,8 @@ tests:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
task: tasks/tests/b2g_gaia_js_integration_tests.yml
|
||||
chunks: 10
|
||||
tasks/builds/mulet_linux.yml:
|
||||
task: tasks/tests/mulet_gaia_js_integration_tests.yml
|
||||
chunks: 10
|
||||
gaia-linter:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
@ -99,10 +104,8 @@ tests:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
task: tasks/tests/b2g_gaia_ui_test_functional.yml
|
||||
chunks: 3
|
||||
tasks/builds/b2g_desktop_debug.yml:
|
||||
task: tasks/tests/b2g_gaia_ui_test_functional.yml
|
||||
chunks: 3
|
||||
gaia-ui-test-unit:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
@ -129,46 +132,35 @@ tests:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_emulator_kk_debug.yml:
|
||||
task: tasks/tests/b2g_emulator_mochitest.yml
|
||||
chunks: 20
|
||||
tasks/builds/b2g_emulator_kk_opt.yml:
|
||||
task: tasks/tests/b2g_emulator_mochitest.yml
|
||||
chunks: 20
|
||||
tasks/builds/b2g_emulator_ics_opt.yml:
|
||||
task: tasks/tests/b2g_emulator_mochitest.yml
|
||||
chunks: 9
|
||||
tasks/builds/b2g_emulator_ics_debug.yml:
|
||||
task: tasks/tests/b2g_emulator_mochitest.yml
|
||||
chunks: 20
|
||||
tasks/builds/mulet_linux.yml:
|
||||
task: tasks/tests/mulet_mochitests.yml
|
||||
chunks: 5
|
||||
mochitest-oop:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
task: tasks/tests/b2g_mochitest_oop.yml
|
||||
chunks: 1
|
||||
reftest:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/mulet_linux.yml:
|
||||
task: tasks/tests/mulet_reftests.yml
|
||||
chunks: 6
|
||||
tasks/builds/b2g_emulator_kk_opt.yml:
|
||||
task: tasks/tests/b2g_emulator_reftest.yml
|
||||
chunks: 20
|
||||
tasks/builds/b2g_emulator_ics_opt.yml:
|
||||
task: tasks/tests/b2g_emulator_reftest.yml
|
||||
chunks: 20
|
||||
reftest-sanity-oop:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_desktop_opt.yml:
|
||||
task: tasks/tests/b2g_reftests_sanity_oop.yml
|
||||
chunks: 1
|
||||
xpcshell:
|
||||
allowed_build_tasks:
|
||||
tasks/builds/b2g_emulator_kk_opt.yml:
|
||||
task: tasks/tests/b2g_emulator_xpcshell.yml
|
||||
task: tasks/tests/b2g_emulator_xpcshell_chunked.yml
|
||||
tasks/builds/b2g_emulator_ics_opt.yml:
|
||||
task: tasks/tests/b2g_emulator_xpcshell.yml
|
||||
task: tasks/tests/b2g_emulator_xpcshell_chunked.yml
|
||||
tasks/builds/b2g_emulator_ics_debug.yml:
|
||||
task: tasks/tests/b2g_emulator_xpcshell_chunked.yml
|
||||
chunks: 2
|
||||
|
@ -5,10 +5,12 @@ task:
|
||||
scopes:
|
||||
- 'docker-worker:cache:workspace-emulator-jb-debug'
|
||||
metadata:
|
||||
name: '[TC] B2G Emulator JB Debug'
|
||||
name: '[TC] B2G Emulator JB: (Debug)'
|
||||
|
||||
extra:
|
||||
# Disable "TC" prefix...
|
||||
treeherder:
|
||||
groupSymbol: "?"
|
||||
collection:
|
||||
debug: true
|
||||
machine:
|
||||
|
@ -5,10 +5,15 @@ task:
|
||||
scopes:
|
||||
- 'docker-worker:cache:workspace-emulator-jb-opt'
|
||||
metadata:
|
||||
name: '[TC] B2G JB Emulator Opt'
|
||||
name: '[TC] B2G JB Emulator: (Opt)'
|
||||
|
||||
extra:
|
||||
treeherderEnv:
|
||||
- production
|
||||
- staging
|
||||
# Disable "TC" prefix...
|
||||
treeherder:
|
||||
groupSymbol: "?"
|
||||
machine:
|
||||
platform: b2g-emu-jb
|
||||
|
||||
|
@ -5,10 +5,15 @@ task:
|
||||
scopes:
|
||||
- 'docker-worker:cache:workspace-emulator-kk-debug'
|
||||
metadata:
|
||||
name: '[TC] B2G Emulator KK Debug'
|
||||
name: '[TC] B2G Emulator KK (Debug)'
|
||||
|
||||
extra:
|
||||
treeherderEnv:
|
||||
- production
|
||||
- staging
|
||||
treeherder:
|
||||
# Disable "TC" prefix...
|
||||
groupSymbol: "?"
|
||||
collection:
|
||||
debug: true
|
||||
machine:
|
||||
|
@ -5,10 +5,15 @@ task:
|
||||
scopes:
|
||||
- 'docker-worker:cache:workspace-emulator-kk-opt'
|
||||
metadata:
|
||||
name: '[TC] B2G KK Emulator Opt'
|
||||
name: '[TC] B2G KK Emulator (Opt)'
|
||||
|
||||
extra:
|
||||
treeherderEnv:
|
||||
- production
|
||||
- staging
|
||||
treeherder:
|
||||
# Disable "TC" prefix...
|
||||
groupSymbol: "?"
|
||||
machine:
|
||||
platform: b2g-emu-kk
|
||||
|
||||
|
23
testing/taskcluster/tasks/builds/b2g_emulator_l_debug.yml
Normal file
@ -0,0 +1,23 @@
|
||||
$inherits:
|
||||
from: 'tasks/builds/b2g_emulator_base.yml'
|
||||
task:
|
||||
workerType: emulator-l-debug
|
||||
scopes:
|
||||
- 'docker-worker:cache:workspace-emulator-l-debug'
|
||||
metadata:
|
||||
name: '[TC] B2G Emulator L Debug'
|
||||
|
||||
extra:
|
||||
treeherder:
|
||||
collection:
|
||||
debug: true
|
||||
machine:
|
||||
platform: b2g-emu-l
|
||||
|
||||
payload:
|
||||
cache:
|
||||
workspace-emulator-l-debug: /home/worker/workspace
|
||||
env:
|
||||
TARGET: 'emulator-l'
|
||||
B2G_DEBUG: 1
|
||||
|
21
testing/taskcluster/tasks/builds/b2g_emulator_l_opt.yml
Normal file
@ -0,0 +1,21 @@
|
||||
$inherits:
|
||||
from: 'tasks/builds/b2g_emulator_base.yml'
|
||||
task:
|
||||
workerType: emulator-l
|
||||
scopes:
|
||||
- 'docker-worker:cache:workspace-emulator-l-opt'
|
||||
metadata:
|
||||
name: '[TC] B2G L Emulator Opt'
|
||||
|
||||
extra:
|
||||
treeherder:
|
||||
machine:
|
||||
platform: b2g-emu-l
|
||||
|
||||
payload:
|
||||
cache:
|
||||
workspace-emulator-l-opt: /home/worker/workspace
|
||||
env:
|
||||
TARGET: 'emulator-l'
|
||||
|
||||
|
@ -16,6 +16,8 @@ tasks:
|
||||
- taskId: '{{#as_slugid}}decision task{{/as_slugid}}'
|
||||
reruns: 3
|
||||
task:
|
||||
routes:
|
||||
- tc-treeherder-stage.{{project}}.{{revision_hash}}
|
||||
created: '{{now}}'
|
||||
deadline: '{{#from_now}}1 day{{/from_now}}'
|
||||
metadata:
|
||||
|
@ -42,6 +42,9 @@ task:
|
||||
expires: '{{#from_now}}1 year{{/from_now}}'
|
||||
|
||||
extra:
|
||||
chunks:
|
||||
total: 1
|
||||
current: {{chunk}}
|
||||
treeherder:
|
||||
groupSymbol: tc
|
||||
groupName: Submitted by taskcluster
|
||||
|
@ -6,6 +6,7 @@ task:
|
||||
name: '[TC] CPP Unit Tests'
|
||||
description: CPP Unit Tests test run
|
||||
|
||||
workerType: b2gtest-emulator
|
||||
payload:
|
||||
command:
|
||||
- entrypoint
|
||||
|
@ -6,6 +6,7 @@ task:
|
||||
name: '[TC] Crashtest'
|
||||
description: Crashtest test run {{chunk}}
|
||||
|
||||
workerType: b2gtest-emulator
|
||||
payload:
|
||||
maxRunTime: 3600
|
||||
command:
|
||||
@ -28,6 +29,9 @@ task:
|
||||
expires: '{{#from_now}}1 year{{/from_now}}'
|
||||
|
||||
extra:
|
||||
chunks:
|
||||
total: 5
|
||||
|
||||
treeherder:
|
||||
groupName: Reftest
|
||||
groupSymbol: tc-R
|
||||
|
@ -6,6 +6,7 @@ task:
|
||||
name: '[TC] JSReftest'
|
||||
description: JSReftest test run {{chunk}}
|
||||
|
||||
workerType: b2gtest-emulator
|
||||
payload:
|
||||
command:
|
||||
- entrypoint
|
||||
|
@ -6,6 +6,7 @@ task:
|
||||
name: '[TC] Marionette Framework Unit Tests'
|
||||
description: Marionette Framework Unit Tests test run
|
||||
|
||||
workerType: b2gtest-emulator
|
||||
payload:
|
||||
command:
|
||||
- entrypoint
|
||||
|
@ -6,6 +6,7 @@ task:
|
||||
name: '[TC] Marionette WebAPI Tests'
|
||||
description: Marionette WebAPI test run
|
||||
|
||||
workerType: b2gtest-emulator
|
||||
payload:
|
||||
command:
|
||||
- entrypoint
|
||||
|
@ -6,6 +6,7 @@ task:
|
||||
name: '[TC] Mochitest'
|
||||
description: Mochitest test run {{chunk}}
|
||||
|
||||
workerType: b2gtest-emulator
|
||||
payload:
|
||||
maxRunTime: 7200
|
||||
command:
|
||||
@ -29,6 +30,8 @@ task:
|
||||
expires: '{{#from_now}}1 year{{/from_now}}'
|
||||
|
||||
extra:
|
||||
chunks:
|
||||
total: 50
|
||||
treeherder:
|
||||
groupName: Mochitest
|
||||
groupSymbol: tc-M
|
||||
|
@ -6,6 +6,7 @@ task:
|
||||
name: '[TC] Mochitest'
|
||||
description: Mochitest Media test run
|
||||
|
||||
workerType: b2gtest-emulator
|
||||
payload:
|
||||
command:
|
||||
- entrypoint
|
||||
|
@ -6,6 +6,7 @@ task:
|
||||
name: '[TC] Reftest'
|
||||
description: Reftest test run {{chunk}}
|
||||
|
||||
workerType: b2gtest-emulator
|
||||
payload:
|
||||
command:
|
||||
- entrypoint
|
||||
@ -27,6 +28,8 @@ task:
|
||||
expires: '{{#from_now}}1 year{{/from_now}}'
|
||||
|
||||
extra:
|
||||
chunks:
|
||||
total: 40
|
||||
treeherder:
|
||||
groupName: Reftest
|
||||
groupSymbol: tc-R
|
||||
|
@ -6,6 +6,7 @@ task:
|
||||
name: '[TC] XPCShell'
|
||||
description: XPCShell test run
|
||||
|
||||
workerType: b2gtest-emulator
|
||||
payload:
|
||||
maxRunTime: 6000
|
||||
command:
|
||||
|