Merge m-c to mozilla-inbound
@ -36,7 +36,7 @@ XPCOMUtils.defineLazyGetter(this, 'MemoryFront', function() {
|
||||
|
||||
Cu.import('resource://gre/modules/Frames.jsm');
|
||||
|
||||
var _telemetryDebug = true;
|
||||
var _telemetryDebug = false;
|
||||
|
||||
function telemetryDebug(...args) {
|
||||
if (_telemetryDebug) {
|
||||
@ -108,8 +108,8 @@ var developerHUD = {
|
||||
this._logging = enabled;
|
||||
});
|
||||
|
||||
SettingsListener.observe('debug.performance_data.advanced_telemetry', this._telemetry, enabled => {
|
||||
this._telemetry = enabled;
|
||||
SettingsListener.observe('metrics.selectedMetrics.level', "", level => {
|
||||
this._telemetry = (level === 'Enhanced');
|
||||
});
|
||||
},
|
||||
|
||||
|
@ -15,10 +15,10 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75a7e01912cee313fed92ff2089586f507b2ba5"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75bd584aca0a751a5bed115800250faa8412927"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="7938df689aa87769fad3f2cf9097fb4ecb106a43"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="31a7849fe9a8b743d6f5e5facc212f0ef9d57499"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
@ -106,7 +106,7 @@
|
||||
<project name="platform/libcore" path="libcore" revision="baf7d8068dd501cfa338d3a8b1b87216d6ce0571"/>
|
||||
<project name="platform/libnativehelper" path="libnativehelper" revision="50c4430e32849530ced32680fd6ee98963b3f7ac"/>
|
||||
<project name="platform/ndk" path="ndk" revision="e58ef003be4306bb53a8c11331146f39e4eab31f"/>
|
||||
<project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="23404f05422c6bf3c39573325a4f4909167671b4"/>
|
||||
<project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="88fe75533255e99261c96cb497dcbd99820b7a3a"/>
|
||||
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="c792f0bd9fff7aea2887c60bbb3a9bbdb534ffa3"/>
|
||||
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="69d524e80cdf3981006627c65ac85f3a871238a3"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5a48c04c4bb5f079bc757e29864a42427378e051"/>
|
||||
|
@ -15,10 +15,10 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75a7e01912cee313fed92ff2089586f507b2ba5"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75bd584aca0a751a5bed115800250faa8412927"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="7938df689aa87769fad3f2cf9097fb4ecb106a43"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="31a7849fe9a8b743d6f5e5facc212f0ef9d57499"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
@ -111,7 +111,7 @@
|
||||
<project name="platform/libcore" path="libcore" revision="e195beab082c09217318fc19250caeaf4c1bd800"/>
|
||||
<project name="platform/libnativehelper" path="libnativehelper" revision="feeb36c2bd4adfe285f98f5de92e0f3771b2c115"/>
|
||||
<project name="platform/ndk" path="ndk" revision="e58ef003be4306bb53a8c11331146f39e4eab31f"/>
|
||||
<project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="23404f05422c6bf3c39573325a4f4909167671b4"/>
|
||||
<project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="88fe75533255e99261c96cb497dcbd99820b7a3a"/>
|
||||
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="c792f0bd9fff7aea2887c60bbb3a9bbdb534ffa3"/>
|
||||
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="cfcef469537869947abb9aa1d656774cc2678d4c"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5a48c04c4bb5f079bc757e29864a42427378e051"/>
|
||||
|
@ -19,8 +19,8 @@
|
||||
<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="f75a7e01912cee313fed92ff2089586f507b2ba5"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="7938df689aa87769fad3f2cf9097fb4ecb106a43"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="f75bd584aca0a751a5bed115800250faa8412927"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="4ace9aaee0e048dfda11bb787646c59982a3dc80"/>
|
||||
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="c72c9278ddc2f442d193474993d36e7f2cfb08c4"/>
|
||||
|
@ -17,8 +17,8 @@
|
||||
</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="f75a7e01912cee313fed92ff2089586f507b2ba5"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="7938df689aa87769fad3f2cf9097fb4ecb106a43"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75bd584aca0a751a5bed115800250faa8412927"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="31a7849fe9a8b743d6f5e5facc212f0ef9d57499"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0c28789b9957913be975eb002a22323f93585d4c"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
|
||||
|
@ -15,9 +15,9 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75a7e01912cee313fed92ff2089586f507b2ba5"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75bd584aca0a751a5bed115800250faa8412927"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="7938df689aa87769fad3f2cf9097fb4ecb106a43"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="31a7849fe9a8b743d6f5e5facc212f0ef9d57499"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
@ -110,7 +110,7 @@
|
||||
<project name="platform/libcore" path="libcore" revision="9877ade9617bb0db6e59aa2a54719a9bc92600f3"/>
|
||||
<project name="platform/libnativehelper" path="libnativehelper" revision="46c96ace65eb1ccab05bf15b9bf8e53e443039af"/>
|
||||
<project name="platform/ndk" path="ndk" revision="cb5519af32ae7b4a9c334913a612462ecd04c5d0"/>
|
||||
<project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="23404f05422c6bf3c39573325a4f4909167671b4"/>
|
||||
<project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="88fe75533255e99261c96cb497dcbd99820b7a3a"/>
|
||||
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="6aa61f8557a22039a30b42b7f283996381fd625d"/>
|
||||
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="b562b01c93de9578d5db537b6a602a38e1aaa0ce"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="387f03e815f57d536dd922706db1622bddba8d81"/>
|
||||
|
@ -15,9 +15,9 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="c9d4fe680662ee44a4bdea42ae00366f5df399cf">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75a7e01912cee313fed92ff2089586f507b2ba5"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75bd584aca0a751a5bed115800250faa8412927"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="7938df689aa87769fad3f2cf9097fb4ecb106a43"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="31a7849fe9a8b743d6f5e5facc212f0ef9d57499"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
|
@ -19,8 +19,8 @@
|
||||
<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="f75a7e01912cee313fed92ff2089586f507b2ba5"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="7938df689aa87769fad3f2cf9097fb4ecb106a43"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="f75bd584aca0a751a5bed115800250faa8412927"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="4ace9aaee0e048dfda11bb787646c59982a3dc80"/>
|
||||
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="c72c9278ddc2f442d193474993d36e7f2cfb08c4"/>
|
||||
|
@ -15,10 +15,10 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75a7e01912cee313fed92ff2089586f507b2ba5"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75bd584aca0a751a5bed115800250faa8412927"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="7938df689aa87769fad3f2cf9097fb4ecb106a43"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="31a7849fe9a8b743d6f5e5facc212f0ef9d57499"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
@ -105,7 +105,7 @@
|
||||
<project name="platform/libcore" path="libcore" revision="baf7d8068dd501cfa338d3a8b1b87216d6ce0571"/>
|
||||
<project name="platform/libnativehelper" path="libnativehelper" revision="50c4430e32849530ced32680fd6ee98963b3f7ac"/>
|
||||
<project name="platform/ndk" path="ndk" revision="e58ef003be4306bb53a8c11331146f39e4eab31f"/>
|
||||
<project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="23404f05422c6bf3c39573325a4f4909167671b4"/>
|
||||
<project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="88fe75533255e99261c96cb497dcbd99820b7a3a"/>
|
||||
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="c792f0bd9fff7aea2887c60bbb3a9bbdb534ffa3"/>
|
||||
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="69d524e80cdf3981006627c65ac85f3a871238a3"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5a48c04c4bb5f079bc757e29864a42427378e051"/>
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"git": {
|
||||
"git_revision": "f75a7e01912cee313fed92ff2089586f507b2ba5",
|
||||
"git_revision": "f75bd584aca0a751a5bed115800250faa8412927",
|
||||
"remote": "https://git.mozilla.org/releases/gaia.git",
|
||||
"branch": ""
|
||||
},
|
||||
"revision": "f51f8770b9665f44e57e9e09faee2b967a80abf1",
|
||||
"revision": "8c3fb9e6ae490d957278e80817c0735241b11146",
|
||||
"repo_path": "integration/gaia-central"
|
||||
}
|
||||
|
@ -15,10 +15,10 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="8d83715f08b7849f16a0dfc88f78d5c3a89c0a54">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75a7e01912cee313fed92ff2089586f507b2ba5"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75bd584aca0a751a5bed115800250faa8412927"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="7938df689aa87769fad3f2cf9097fb4ecb106a43"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="31a7849fe9a8b743d6f5e5facc212f0ef9d57499"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
@ -111,7 +111,7 @@
|
||||
<project name="platform/libcore" path="libcore" revision="9877ade9617bb0db6e59aa2a54719a9bc92600f3"/>
|
||||
<project name="platform/libnativehelper" path="libnativehelper" revision="46c96ace65eb1ccab05bf15b9bf8e53e443039af"/>
|
||||
<project name="platform/ndk" path="ndk" revision="cb5519af32ae7b4a9c334913a612462ecd04c5d0"/>
|
||||
<project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="23404f05422c6bf3c39573325a4f4909167671b4"/>
|
||||
<project name="platform_prebuilts_misc" path="prebuilts/misc" remote="b2g" revision="88fe75533255e99261c96cb497dcbd99820b7a3a"/>
|
||||
<project name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="6aa61f8557a22039a30b42b7f283996381fd625d"/>
|
||||
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="b562b01c93de9578d5db537b6a602a38e1aaa0ce"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="387f03e815f57d536dd922706db1622bddba8d81"/>
|
||||
|
@ -18,8 +18,8 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75a7e01912cee313fed92ff2089586f507b2ba5"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="7938df689aa87769fad3f2cf9097fb4ecb106a43"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75bd584aca0a751a5bed115800250faa8412927"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="31a7849fe9a8b743d6f5e5facc212f0ef9d57499"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0c28789b9957913be975eb002a22323f93585d4c"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
|
||||
|
@ -15,10 +15,10 @@
|
||||
<project name="platform_build" path="build" remote="b2g" revision="c9d4fe680662ee44a4bdea42ae00366f5df399cf">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75a7e01912cee313fed92ff2089586f507b2ba5"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="f75bd584aca0a751a5bed115800250faa8412927"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="fake-qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="939b377d55a2f081d94029a30a75d05e5a20daf3"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="7938df689aa87769fad3f2cf9097fb4ecb106a43"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="c1bbb66f52f9e2d76ce97e7b3aa0cb29957cd7d8"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="31a7849fe9a8b743d6f5e5facc212f0ef9d57499"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
|
@ -493,6 +493,10 @@ extensions.registerAPI((extension, context) => {
|
||||
|
||||
sendMessage: function(tabId, message, options, responseCallback) {
|
||||
let tab = TabManager.getTab(tabId);
|
||||
if (!tab) {
|
||||
// ignore sendMessage to non existent tab id
|
||||
return;
|
||||
}
|
||||
let mm = tab.linkedBrowser.messageManager;
|
||||
|
||||
let recipient = {extensionId: extension.id};
|
||||
|
@ -13,6 +13,7 @@ support-files =
|
||||
[browser_ext_tabs_executeScript.js]
|
||||
[browser_ext_tabs_query.js]
|
||||
[browser_ext_tabs_update.js]
|
||||
[browser_ext_tabs_sendMessage.js]
|
||||
[browser_ext_windows_update.js]
|
||||
[browser_ext_contentscript_connect.js]
|
||||
[browser_ext_tab_runtimeConnect.js]
|
||||
|
@ -0,0 +1,31 @@
|
||||
add_task(function* tabsSendMessageNoExceptionOnNonExistentTab() {
|
||||
let extension = ExtensionTestUtils.loadExtension({
|
||||
manifest: {
|
||||
"permissions": ["tabs"]
|
||||
},
|
||||
|
||||
background: function() {
|
||||
chrome.tabs.create({ url: "about:robots"}, function (tab) {
|
||||
var exception;
|
||||
try {
|
||||
browser.tabs.sendMessage(tab.id, "message");
|
||||
browser.tabs.sendMessage(tab.id + 100, "message");
|
||||
} catch(e) {
|
||||
exception = e;
|
||||
}
|
||||
|
||||
browser.test.assertEq(undefined, exception, "no exception should be raised on tabs.sendMessage to unexistent tabs");
|
||||
chrome.tabs.remove(tab.id, function() {
|
||||
browser.test.notifyPass("tabs.sendMessage");
|
||||
})
|
||||
})
|
||||
},
|
||||
});
|
||||
|
||||
yield Promise.all([
|
||||
extension.startup(),
|
||||
extension.awaitFinish("tabs.sendMessage")
|
||||
]);
|
||||
|
||||
yield extension.unload();
|
||||
});
|
@ -64,8 +64,8 @@ browser.jar:
|
||||
skin/classic/browser/privatebrowsing-mask-titlebar-XPVista7-tall.png
|
||||
skin/classic/browser/reload-stop-go.png
|
||||
skin/classic/browser/reload-stop-go@2x.png
|
||||
skin/classic/browser/reload-stop-go-preWin10.png
|
||||
skin/classic/browser/reload-stop-go-preWin10@2x.png
|
||||
skin/classic/browser/reload-stop-go-XPVista7.png
|
||||
skin/classic/browser/reload-stop-go-XPVista7@2x.png
|
||||
skin/classic/browser/searchbar.css
|
||||
skin/classic/browser/setDesktopBackground.css
|
||||
skin/classic/browser/slowStartup-16.png
|
||||
@ -85,8 +85,8 @@ browser.jar:
|
||||
skin/classic/browser/urlbar-popup-blocked.png
|
||||
skin/classic/browser/urlbar-history-dropmarker.png
|
||||
skin/classic/browser/urlbar-history-dropmarker@2x.png
|
||||
skin/classic/browser/urlbar-history-dropmarker-preWin10.png
|
||||
skin/classic/browser/urlbar-history-dropmarker-preWin10@2x.png
|
||||
skin/classic/browser/urlbar-history-dropmarker-XPVista7.png
|
||||
skin/classic/browser/urlbar-history-dropmarker-XPVista7@2x.png
|
||||
skin/classic/browser/webRTC-indicator.css
|
||||
skin/classic/browser/loop/menuPanel.png (loop/menuPanel.png)
|
||||
skin/classic/browser/loop/menuPanel@2x.png (loop/menuPanel@2x.png)
|
||||
@ -323,6 +323,8 @@ browser.jar:
|
||||
% override chrome://browser/skin/preferences/saveFile.png chrome://browser/skin/preferences/saveFile-XP.png os=WINNT osversion<6
|
||||
|
||||
% override chrome://browser/skin/actionicon-tab.png chrome://browser/skin/actionicon-tab-XPVista7.png os=WINNT osversion<=6.1
|
||||
% override chrome://browser/skin/reload-stop-go.png chrome://browser/skin/reload-stop-go-XPVista7.png os=WINNT osversion<=6.1
|
||||
% override chrome://browser/skin/reload-stop-go@2x.png chrome://browser/skin/reload-stop-go-XPVista7@2x.png os=WINNT osversion<=6.1
|
||||
% override chrome://browser/skin/sync-horizontalbar.png chrome://browser/skin/sync-horizontalbar-XPVista7.png os=WINNT osversion<=6.1
|
||||
% override chrome://browser/skin/sync-horizontalbar@2x.png chrome://browser/skin/sync-horizontalbar-XPVista7@2x.png os=WINNT osversion<=6.1
|
||||
% override chrome://browser/skin/syncProgress-horizontalbar.png chrome://browser/skin/syncProgress-horizontalbar-XPVista7.png os=WINNT osversion<=6.1
|
||||
@ -330,6 +332,8 @@ browser.jar:
|
||||
% override chrome://browser/skin/syncProgress-toolbar.png chrome://browser/skin/syncProgress-toolbar-XPVista7.png os=WINNT osversion<=6.1
|
||||
% override chrome://browser/skin/syncProgress-toolbar@2x.png chrome://browser/skin/syncProgress-toolbar-XPVista7@2x.png os=WINNT osversion<=6.1
|
||||
% override chrome://browser/skin/toolbarbutton-dropdown-arrow.png chrome://browser/skin/toolbarbutton-dropdown-arrow-XPVista7.png os=WINNT osversion<=6.1
|
||||
% override chrome://browser/skin/urlbar-history-dropmarker.png chrome://browser/skin/urlbar-history-dropmarker-XPVista7.png os=WINNT osversion<=6.1
|
||||
% override chrome://browser/skin/urlbar-history-dropmarker@2x.png chrome://browser/skin/urlbar-history-dropmarker-XPVista7@2x.png os=WINNT osversion<=6.1
|
||||
% override chrome://browser/skin/places/autocomplete-star.png chrome://browser/skin/places/autocomplete-star-XPVista7.png os=WINNT osversion<=6.1
|
||||
% override chrome://browser/skin/tabbrowser/newtab.png chrome://browser/skin/tabbrowser/newtab-XPVista7.png os=WINNT osversion<=6.1
|
||||
% override chrome://browser/skin/tabbrowser/newtab@2x.png chrome://browser/skin/tabbrowser/newtab-XPVista7@2x.png os=WINNT osversion<=6.1
|
||||
@ -384,11 +388,6 @@ browser.jar:
|
||||
% override chrome://browser/skin/preferences/checkbox.png chrome://browser/skin/preferences/checkbox-aero.png os=WINNT osversion=6.1
|
||||
% override chrome://browser/skin/preferences/checkbox.png chrome://browser/skin/preferences/checkbox-xp.png os=WINNT osversion<6
|
||||
|
||||
% override chrome://browser/skin/reload-stop-go.png chrome://browser/skin/reload-stop-go-preWin10.png os=WINNT osversion<=6.3
|
||||
% override chrome://browser/skin/reload-stop-go@2x.png chrome://browser/skin/reload-stop-go-preWin10@2x.png os=WINNT osversion<=6.3
|
||||
% override chrome://browser/skin/urlbar-history-dropmarker.png chrome://browser/skin/urlbar-history-dropmarker-preWin10.png os=WINNT osversion<=6.3
|
||||
% override chrome://browser/skin/urlbar-history-dropmarker@2x.png chrome://browser/skin/urlbar-history-dropmarker-preWin10@2x.png os=WINNT osversion<=6.3
|
||||
|
||||
% override chrome://browser/skin/tabbrowser/tab-background-start.png chrome://browser/skin/tabbrowser/tab-background-start-preWin10.png os=WINNT osversion<=6.3
|
||||
% override chrome://browser/skin/tabbrowser/tab-background-start@2x.png chrome://browser/skin/tabbrowser/tab-background-start-preWin10@2x.png os=WINNT osversion<=6.3
|
||||
% override chrome://browser/skin/tabbrowser/tab-background-middle.png chrome://browser/skin/tabbrowser/tab-background-middle-preWin10.png os=WINNT osversion<=6.3
|
||||
|
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 479 B After Width: | Height: | Size: 479 B |
Before Width: | Height: | Size: 788 B After Width: | Height: | Size: 788 B |
12
configure.in
@ -8777,6 +8777,18 @@ if test "$MOZILLA_OFFICIAL"; then
|
||||
MOZ_INCLUDE_SOURCE_INFO=1
|
||||
fi
|
||||
|
||||
# On official builds, we need to know in Telemetry what revision this is built from.
|
||||
# This is e.g. needed to match incoming data to a specific revision of the Histograms.json
|
||||
# file.
|
||||
if test "$MOZILLA_OFFICIAL" && test -d ${_topsrcdir}/.hg; then
|
||||
SOURCE_REV=`cd $_topsrcdir && hg parent --template='{node|short}'`
|
||||
SOURCE_REPO=`cd $_topsrcdir && hg showconfig paths.default | sed -e 's|^ssh://|http://|' -e 's|/$||'`
|
||||
SOURCE_REV_URL=$SOURCE_REPO/rev/$SOURCE_REV
|
||||
else
|
||||
SOURCE_REV_URL=
|
||||
fi
|
||||
AC_SUBST(SOURCE_REV_URL)
|
||||
|
||||
AC_SUBST(MOZ_INCLUDE_SOURCE_INFO)
|
||||
|
||||
AC_DEFINE_UNQUOTED(MOZ_TELEMETRY_DISPLAY_REV, 2)
|
||||
|
@ -196,18 +196,18 @@ var Converter = Class({
|
||||
|
||||
toHTML: function(json, headers, title) {
|
||||
var themeClassName = "theme-" + JsonViewUtils.getCurrentTheme();
|
||||
var baseUrl = "resource:///modules/devtools/client/jsonview/";
|
||||
var theme = (themeClassName == "theme-light") ? "light" : "dark";
|
||||
var themeUrl = '<link rel="stylesheet" type="text/css" ' +
|
||||
'href="css/' + theme + '-theme.css">';
|
||||
var clientBaseUrl = "resource:///modules/devtools/client/";
|
||||
var baseUrl = clientBaseUrl + "jsonview/";
|
||||
var themeVarsUrl = clientBaseUrl + "themes/variables.css";
|
||||
|
||||
return '<!DOCTYPE html>\n' +
|
||||
'<html><head><title>' + this.htmlEncode(title) + '</title>' +
|
||||
'<html class="' + themeClassName + '">' +
|
||||
'<head><title>' + this.htmlEncode(title) + '</title>' +
|
||||
'<base href="' + this.htmlEncode(baseUrl) + '">' +
|
||||
'<link rel="stylesheet" type="text/css" href="' + themeVarsUrl + '">' +
|
||||
'<link rel="stylesheet" type="text/css" href="css/main.css">' +
|
||||
themeUrl +
|
||||
'<script data-main="viewer-config" src="lib/require.js"></script>' +
|
||||
'</head><body class="' + themeClassName + '">' +
|
||||
'</head><body>' +
|
||||
'<div id="content"></div>' +
|
||||
'<div id="json">' + this.htmlEncode(json) + '</div>' +
|
||||
'<div id="headers">' + this.htmlEncode(headers) + '</div>' +
|
||||
|
@ -1,27 +0,0 @@
|
||||
/* vim:set ts=2 sw=2 sts=2 et: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/******************************************************************************/
|
||||
/* Dark Theme (copied from themes/dark-theme.css) */
|
||||
|
||||
:root {
|
||||
--theme-body-background: #14171a;
|
||||
|
||||
--theme-tab-toolbar-background: #252c33;
|
||||
--theme-toolbar-background: #343c45;
|
||||
--theme-selection-background: #1d4f73;
|
||||
--theme-splitter-color: black;
|
||||
--theme-selection-color: #f5f7fa;
|
||||
--theme-comment: #757873;
|
||||
|
||||
--theme-body-color: #8fa1b2;
|
||||
--theme-body-color-alt: #b6babf;
|
||||
--theme-content-color1: #a9bacb;
|
||||
|
||||
--theme-highlight-green: #70bf53;
|
||||
--theme-highlight-blue: #46afe3;
|
||||
--theme-highlight-orange: #d96629;
|
||||
--theme-highlight-bluegrey: #5e88b0;
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
/* vim:set ts=2 sw=2 sts=2 et: */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
/******************************************************************************/
|
||||
/* Light Theme Constants (copied from themes/light-theme.css) */
|
||||
|
||||
:root {
|
||||
--theme-body-background: #fcfcfc;
|
||||
|
||||
--theme-tab-toolbar-background: #ebeced;
|
||||
--theme-toolbar-background: #f0f1f2;
|
||||
--theme-selection-background: #4c9ed9;
|
||||
--theme-splitter-color: #aaaaaa;
|
||||
--theme-selection-color: #f5f7fa;
|
||||
--theme-comment: #757873;
|
||||
|
||||
--theme-body-color: #18191a;
|
||||
--theme-body-color-alt: #585959;
|
||||
--theme-content-color1: #292e33;
|
||||
|
||||
--theme-highlight-green: #2cbb0f;
|
||||
--theme-highlight-blue: #0088cc;
|
||||
--theme-highlight-orange: #f13c00;
|
||||
--theme-highlight-bluegrey: #0072ab;
|
||||
}
|
@ -6,12 +6,10 @@
|
||||
|
||||
|
||||
DevToolsModules(
|
||||
'dark-theme.css',
|
||||
'dom-tree.css',
|
||||
'general.css',
|
||||
'headers-panel.css',
|
||||
'json-panel.css',
|
||||
'light-theme.css',
|
||||
'main.css',
|
||||
'read-only-prop.svg',
|
||||
'reps.css',
|
||||
|
@ -35,6 +35,7 @@ DIRS += [
|
||||
'storage',
|
||||
'styleeditor',
|
||||
'styleinspector',
|
||||
'themes',
|
||||
'tilt',
|
||||
'webaudioeditor',
|
||||
'webconsole',
|
||||
|
@ -130,7 +130,7 @@ var WaterfallView = Heritage.extend(DetailsSubview, {
|
||||
* Called when MarkerDetails view emits an event to view source.
|
||||
*/
|
||||
_onViewSource: function (_, data) {
|
||||
gToolbox.viewSourceInDebugger(data.file, data.line);
|
||||
gToolbox.viewSourceInDebugger(data.url, data.line);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -20,6 +20,12 @@ body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#browser-style-checkbox {
|
||||
/* Bug 1200073 - extra space before the browser styles checkbox so
|
||||
they aren't squished together in a small window. */
|
||||
-moz-margin-start: 5px;
|
||||
}
|
||||
|
||||
#propertyContainer {
|
||||
-moz-user-select: text;
|
||||
overflow: auto;
|
||||
|
9
devtools/client/themes/moz.build
Normal file
@ -0,0 +1,9 @@
|
||||
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
|
||||
# vim: set filetype=python:
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
DevToolsModules(
|
||||
'variables.css',
|
||||
)
|
@ -441,7 +441,18 @@ exports.defineLazyGetter = function defineLazyGetter(aObject, aName, aLambda) {
|
||||
};
|
||||
|
||||
// DEPRECATED: use DevToolsUtils.assert(condition, message) instead!
|
||||
let haveLoggedDeprecationMessage = false;
|
||||
exports.dbg_assert = function dbg_assert(cond, e) {
|
||||
if (!haveLoggedDeprecationMessage) {
|
||||
haveLoggedDeprecationMessage = true;
|
||||
const deprecationMessage = "DevToolsUtils.dbg_assert is deprecated! Use DevToolsUtils.assert instead!\n"
|
||||
+ Error().stack;
|
||||
dump(deprecationMessage);
|
||||
if (typeof console === "object" && console && console.warn) {
|
||||
console.warn(deprecationMessage);
|
||||
}
|
||||
}
|
||||
|
||||
if (!cond) {
|
||||
return e;
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ const CONTENT_SECURITY_POLICY_REPORT_ONLY_MSG = l10n.lookup("securityCSPROHeader
|
||||
const NEXT_URI_HEADER = l10n.lookup("securityReferrerNextURI");
|
||||
const CALCULATED_REFERRER_HEADER = l10n.lookup("securityReferrerCalculatedReferrer");
|
||||
/* The official names from the W3C Referrer Policy Draft http://www.w3.org/TR/referrer-policy/ */
|
||||
const REFERRER_POLICY_NAMES = [ "None When Downgrade", "None", "Origin Only", "Origin When Cross-Origin", "Unsafe URL" ];
|
||||
const REFERRER_POLICY_NAMES = [ "None When Downgrade (default)", "None", "Origin Only", "Origin When Cross-Origin", "Unsafe URL" ];
|
||||
|
||||
exports.items = [
|
||||
{
|
||||
@ -201,35 +201,54 @@ exports.items = [
|
||||
var sameDomainReferrer = "";
|
||||
var otherDomainReferrer = "";
|
||||
var downgradeReferrer = "";
|
||||
var otherDowngradeReferrer = "";
|
||||
var origin = pageURI.prePath;
|
||||
|
||||
switch (referrerPolicy) {
|
||||
case Ci.nsIHttpChannel.REFERRER_POLICY_NO_REFERRER:
|
||||
// sends no referrer
|
||||
sameDomainReferrer = otherDomainReferrer = downgradeReferrer = "(no referrer)";
|
||||
sameDomainReferrer
|
||||
= otherDomainReferrer
|
||||
= downgradeReferrer
|
||||
= otherDowngradeReferrer
|
||||
= "(no referrer)";
|
||||
break;
|
||||
case Ci.nsIHttpChannel.REFERRER_POLICY_ORIGIN:
|
||||
// only sends the origin of the referring URL
|
||||
sameDomainReferrer = otherDomainReferrer = downgradeReferrer = origin;
|
||||
sameDomainReferrer
|
||||
= otherDomainReferrer
|
||||
= downgradeReferrer
|
||||
= otherDowngradeReferrer
|
||||
= origin;
|
||||
break;
|
||||
case Ci.nsIHttpChannel.REFERRER_POLICY_ORIGIN_WHEN_XORIGIN:
|
||||
// same as default, but reduced to ORIGIN when cross-origin.
|
||||
sameDomainReferrer = pageURI.spec;
|
||||
otherDomainReferrer = origin;
|
||||
downgradeReferrer = "(no referrer)";
|
||||
otherDomainReferrer
|
||||
= downgradeReferrer
|
||||
= otherDowngradeReferrer
|
||||
= origin;
|
||||
break;
|
||||
case Ci.nsIHttpChannel.REFERRER_POLICY_UNSAFE_URL:
|
||||
// always sends the referrer, even on downgrade.
|
||||
sameDomainReferrer = otherDomainReferrer = downgradeReferrer = pageURI.spec;
|
||||
sameDomainReferrer
|
||||
= otherDomainReferrer
|
||||
= downgradeReferrer
|
||||
= otherDowngradeReferrer
|
||||
= pageURI.spec;
|
||||
break;
|
||||
case Ci.nsIHttpChannel.REFERRER_POLICY_NO_REFERRER_WHEN_DOWNGRADE:
|
||||
// default state, doesn't send referrer from https->http
|
||||
sameDomainReferrer = otherDomainReferrer = pageURI.spec;
|
||||
downgradeReferrer = "(no referrer)";
|
||||
downgradeReferrer = otherDowngradeReferrer = "(no referrer)";
|
||||
break;
|
||||
default:
|
||||
// this is a new referrer policy which we do not know about
|
||||
sameDomainReferrer = otherDomainReferrer = downgradeReferrer = "(unknown Referrer Policy)";
|
||||
sameDomainReferrer
|
||||
= otherDomainReferrer
|
||||
= downgradeReferrer
|
||||
= otherDowngradeReferrer
|
||||
= "(unknown Referrer Policy)";
|
||||
break;
|
||||
}
|
||||
|
||||
@ -237,17 +256,39 @@ exports.items = [
|
||||
|
||||
var referrerUrls = [
|
||||
// add the referrer uri 'referrer' we would send when visiting 'uri'
|
||||
{uri: 'http://example.com/', referrer: otherDomainReferrer},
|
||||
{uri: sameDomainUri, referrer: sameDomainReferrer}
|
||||
{
|
||||
uri: pageURI.scheme+'://example.com/',
|
||||
referrer: otherDomainReferrer,
|
||||
description: l10n.lookup('securityReferrerPolicyOtherDomain')},
|
||||
{
|
||||
uri: sameDomainUri,
|
||||
referrer: sameDomainReferrer,
|
||||
description: l10n.lookup('securityReferrerPolicySameDomain')}
|
||||
];
|
||||
|
||||
if (pageURI.schemeIs('https')) {
|
||||
// add the referrer we would send on downgrading http->https
|
||||
referrerUrls.push({uri: "http://"+pageURI.hostPort+"/*", referrer: downgradeReferrer});
|
||||
if (sameDomainReferrer != downgradeReferrer) {
|
||||
referrerUrls.push({
|
||||
uri: "http://"+pageURI.hostPort+"/*",
|
||||
referrer: downgradeReferrer,
|
||||
description:
|
||||
l10n.lookup('securityReferrerPolicySameDomainDowngrade')
|
||||
});
|
||||
}
|
||||
if (otherDomainReferrer != otherDowngradeReferrer) {
|
||||
referrerUrls.push({
|
||||
uri: "http://example.com/",
|
||||
referrer: otherDowngradeReferrer,
|
||||
description:
|
||||
l10n.lookup('securityReferrerPolicyOtherDomainDowngrade')
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
header: l10n.lookupFormat("securityReferrerPolicyReportHeader", [pageURI.spec]),
|
||||
header: l10n.lookupFormat("securityReferrerPolicyReportHeader",
|
||||
[pageURI.spec]),
|
||||
policyName: REFERRER_POLICY_NAMES[referrerPolicy],
|
||||
urls: referrerUrls
|
||||
}
|
||||
@ -264,10 +305,13 @@ exports.items = [
|
||||
" <strong> ${rpi.header} </strong> <br />" +
|
||||
" ${rpi.policyName} <br />" +
|
||||
" <table class='gcli-referrer-policy-detail' cellspacing='10' >" +
|
||||
" <tr><th> " + NEXT_URI_HEADER + " </th><th> " + CALCULATED_REFERRER_HEADER + " </th></tr>" +
|
||||
" <tr>" +
|
||||
" <th> " + NEXT_URI_HEADER + " </th>" +
|
||||
" <th> " + CALCULATED_REFERRER_HEADER + " </th>" +
|
||||
" </tr>" +
|
||||
// iterate all policies
|
||||
" <tr foreach='nextURI in ${rpi.urls}' >" +
|
||||
" <td> ${nextURI.uri} </td>" +
|
||||
" <td> ${nextURI.description} (e.g., ${nextURI.uri}) </td>" +
|
||||
" <td> ${nextURI.referrer} </td>" +
|
||||
" </tr>" +
|
||||
" </table>" +
|
||||
|
@ -31,6 +31,9 @@ DEFINE_KEYNAME_WITH_SAME_NAME(Unidentified)
|
||||
DEFINE_KEYNAME_INTERNAL(PrintableKey, "MozPrintableKey")
|
||||
DEFINE_KEYNAME_INTERNAL(HomeScreen, "MozHomeScreen")
|
||||
DEFINE_KEYNAME_INTERNAL(CameraFocusAdjust, "MozCameraFocusAdjust")
|
||||
DEFINE_KEYNAME_INTERNAL(PhoneCall, "MozPhoneCall")
|
||||
DEFINE_KEYNAME_INTERNAL(SoftLeft, "MozSoftLeft")
|
||||
DEFINE_KEYNAME_INTERNAL(SoftRight, "MozSoftRight")
|
||||
|
||||
/******************************************************************************
|
||||
* Modifier Keys
|
||||
|
@ -510,16 +510,8 @@ private:
|
||||
content->GetIPCChannel()->Unblock();
|
||||
}
|
||||
|
||||
nsTArray<IToplevelProtocol*> actors;
|
||||
content->GetOpenedActors(actors);
|
||||
for (size_t j = 0; j < actors.Length(); j++) {
|
||||
IToplevelProtocol* actor = actors[j];
|
||||
if (aBlock) {
|
||||
actor->GetIPCChannel()->Block();
|
||||
} else {
|
||||
actor->GetIPCChannel()->Unblock();
|
||||
}
|
||||
}
|
||||
// Other IPC channels do not perform the checks through Block() and
|
||||
// Unblock().
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
@ -16,7 +16,7 @@ skip-if = buildapp == 'b2g' || buildapp == 'mulet'
|
||||
[test_NuwaProcessCreation.html]
|
||||
skip-if = toolkit != 'gonk'
|
||||
[test_NuwaProcessDeadlock.html]
|
||||
skip-if = true # bug 1166923
|
||||
skip-if = toolkit != 'gonk'
|
||||
[test_child_docshell.html]
|
||||
skip-if = toolkit == 'cocoa' # disabled due to hangs, see changeset 6852e7c47edf
|
||||
[test_CrashService_crash.html]
|
||||
|
@ -14,6 +14,9 @@ Test if Nuwa process created successfully.
|
||||
|
||||
function runTest()
|
||||
{
|
||||
info("Shut down processes by disabling process prelaunch");
|
||||
SpecialPowers.setBoolPref('dom.ipc.processPrelaunch.enabled', false);
|
||||
|
||||
info("Launch the Nuwa process");
|
||||
let cpmm = SpecialPowers.Cc["@mozilla.org/childprocessmessagemanager;1"]
|
||||
.getService(SpecialPowers.Ci.nsISyncMessageSender);
|
||||
@ -22,12 +25,11 @@ function runTest()
|
||||
receiveMessage: function receiveMessage(msg) {
|
||||
msg = SpecialPowers.wrap(msg);
|
||||
if (msg.name == 'TEST-ONLY:nuwa-ready') {
|
||||
ok(true, "Got nuwa-ready");
|
||||
is(seenNuwaReady, false, "Already received nuwa ready");
|
||||
is(seenNuwaReady, false, "The Nuwa process is launched");
|
||||
seenNuwaReady = true;
|
||||
} else if (msg.name == 'TEST-ONLY:nuwa-add-new-process') {
|
||||
ok(true, "Got nuwa-add-new-process");
|
||||
is(seenNuwaReady, true, "Receive nuwa-add-new-process before nuwa-ready");
|
||||
is(seenNuwaReady, true, "The preallocated process is launched from the Nuwa process");
|
||||
shutdown();
|
||||
}
|
||||
}
|
||||
@ -51,12 +53,11 @@ function runTest()
|
||||
|
||||
function setup()
|
||||
{
|
||||
info("Set up preferences for testing deadlock in the Nuwa process.");
|
||||
info("Set up preferences for testing the Nuwa process.");
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
SpecialPowers.pushPrefEnv({
|
||||
'set': [
|
||||
['dom.ipc.processPrelaunch.enabled', false],
|
||||
['dom.ipc.preallocatedProcessManager.testMode', true],
|
||||
['dom.ipc.processPrelaunch.testMode', true] // For testing deadlock
|
||||
]
|
||||
|
@ -1563,6 +1563,38 @@ MediaManager::Get() {
|
||||
prefs->AddObserver("media.navigator.video.default_fps", sSingleton, false);
|
||||
prefs->AddObserver("media.navigator.video.default_minfps", sSingleton, false);
|
||||
}
|
||||
|
||||
// Prepare async shutdown
|
||||
|
||||
nsCOMPtr<nsIAsyncShutdownClient> profileBeforeChange;
|
||||
{
|
||||
nsCOMPtr<nsIAsyncShutdownService> svc = services::GetAsyncShutdown();
|
||||
MOZ_RELEASE_ASSERT(svc);
|
||||
nsresult rv = svc->GetProfileBeforeChange(getter_AddRefs(profileBeforeChange));
|
||||
MOZ_RELEASE_ASSERT(NS_SUCCEEDED(rv));
|
||||
}
|
||||
|
||||
class Blocker : public media::ShutdownBlocker
|
||||
{
|
||||
public:
|
||||
Blocker()
|
||||
: media::ShutdownBlocker(NS_LITERAL_STRING(
|
||||
"Media shutdown: blocking on media thread")) {}
|
||||
|
||||
NS_IMETHOD BlockShutdown(nsIAsyncShutdownClient* aProfileBeforeChange) override
|
||||
{
|
||||
MOZ_RELEASE_ASSERT(MediaManager::GetIfExists());
|
||||
MediaManager::GetIfExists()->Shutdown();
|
||||
return NS_OK;
|
||||
}
|
||||
};
|
||||
|
||||
sSingleton->mShutdownBlocker = new Blocker();
|
||||
nsresult rv = profileBeforeChange->AddBlocker(sSingleton->mShutdownBlocker,
|
||||
NS_LITERAL_STRING(__FILE__),
|
||||
__LINE__,
|
||||
NS_LITERAL_STRING("Media shutdown"));
|
||||
MOZ_RELEASE_ASSERT(NS_SUCCEEDED(rv));
|
||||
#ifdef MOZ_B2G
|
||||
// Init MediaPermissionManager before sending out any permission requests.
|
||||
(void) MediaPermissionManager::GetInstance();
|
||||
@ -2533,12 +2565,119 @@ MediaManager::GetPrefs(nsIPrefBranch *aBranch, const char *aData)
|
||||
GetPref(aBranch, "media.navigator.audio.fake_frequency", aData, &mPrefs.mFreq);
|
||||
}
|
||||
|
||||
void
|
||||
MediaManager::Shutdown()
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
if (sInShutdown) {
|
||||
return;
|
||||
}
|
||||
sInShutdown = true;
|
||||
|
||||
nsCOMPtr<nsIObserverService> obs = services::GetObserverService();
|
||||
|
||||
obs->RemoveObserver(this, "xpcom-will-shutdown");
|
||||
obs->RemoveObserver(this, "last-pb-context-exited");
|
||||
obs->RemoveObserver(this, "getUserMedia:privileged:allow");
|
||||
obs->RemoveObserver(this, "getUserMedia:response:allow");
|
||||
obs->RemoveObserver(this, "getUserMedia:response:deny");
|
||||
obs->RemoveObserver(this, "getUserMedia:revoke");
|
||||
|
||||
nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID);
|
||||
if (prefs) {
|
||||
prefs->RemoveObserver("media.navigator.video.default_width", this);
|
||||
prefs->RemoveObserver("media.navigator.video.default_height", this);
|
||||
prefs->RemoveObserver("media.navigator.video.default_fps", this);
|
||||
prefs->RemoveObserver("media.navigator.video.default_minfps", this);
|
||||
prefs->RemoveObserver("media.navigator.audio.fake_frequency", this);
|
||||
}
|
||||
|
||||
// Close off any remaining active windows.
|
||||
GetActiveWindows()->Clear();
|
||||
mActiveCallbacks.Clear();
|
||||
mCallIds.Clear();
|
||||
{
|
||||
MutexAutoLock lock(mMutex);
|
||||
if (mBackend) {
|
||||
mBackend->Shutdown(); // ok to invoke multiple times
|
||||
}
|
||||
}
|
||||
|
||||
// Because mMediaThread is not an nsThread, we must dispatch to it so it can
|
||||
// clean up BackgroundChild. Continue stopping thread once this is done.
|
||||
|
||||
class ShutdownTask : public Task
|
||||
{
|
||||
public:
|
||||
ShutdownTask(already_AddRefed<MediaEngine> aBackend,
|
||||
nsRunnable* aReply)
|
||||
: mReply(aReply)
|
||||
, mBackend(aBackend) {}
|
||||
private:
|
||||
virtual void
|
||||
Run()
|
||||
{
|
||||
LOG(("MediaManager Thread Shutdown"));
|
||||
MOZ_ASSERT(MediaManager::IsInMediaThread());
|
||||
mozilla::ipc::BackgroundChild::CloseForCurrentThread();
|
||||
// must explicitly do this before dispatching the reply, since the reply may kill us with Stop()
|
||||
mBackend = nullptr; // last reference, will invoke Shutdown() again
|
||||
|
||||
if (NS_FAILED(NS_DispatchToMainThread(mReply.forget()))) {
|
||||
LOG(("Will leak thread: DispatchToMainthread of reply runnable failed in MediaManager shutdown"));
|
||||
}
|
||||
}
|
||||
RefPtr<nsRunnable> mReply;
|
||||
RefPtr<MediaEngine> mBackend;
|
||||
};
|
||||
|
||||
// Post ShutdownTask to execute on mMediaThread and pass in a lambda
|
||||
// callback to be executed back on this thread once it is done.
|
||||
//
|
||||
// The lambda callback "captures" the 'this' pointer for member access.
|
||||
// This is safe since this is guaranteed to be here since sSingleton isn't
|
||||
// cleared until the lambda function clears it.
|
||||
|
||||
// note that this == sSingleton
|
||||
RefPtr<MediaManager> that(sSingleton);
|
||||
// Release the backend (and call Shutdown()) from within the MediaManager thread
|
||||
RefPtr<MediaEngine> temp;
|
||||
{
|
||||
MutexAutoLock lock(mMutex);
|
||||
temp = mBackend.forget();
|
||||
}
|
||||
// Don't use MediaManager::PostTask() because we're sInShutdown=true here!
|
||||
mMediaThread->message_loop()->PostTask(FROM_HERE, new ShutdownTask(
|
||||
temp.forget(),
|
||||
media::NewRunnableFrom([this, that]() mutable {
|
||||
LOG(("MediaManager shutdown lambda running, releasing MediaManager singleton and thread"));
|
||||
if (mMediaThread) {
|
||||
mMediaThread->Stop();
|
||||
}
|
||||
|
||||
// Remove async shutdown blocker
|
||||
|
||||
nsCOMPtr<nsIAsyncShutdownClient> profileBeforeChange;
|
||||
{
|
||||
nsCOMPtr<nsIAsyncShutdownService> svc = services::GetAsyncShutdown();
|
||||
MOZ_RELEASE_ASSERT(svc);
|
||||
nsresult rv = svc->GetProfileBeforeChange(getter_AddRefs(profileBeforeChange));
|
||||
MOZ_RELEASE_ASSERT(NS_SUCCEEDED(rv));
|
||||
}
|
||||
profileBeforeChange->RemoveBlocker(sSingleton->mShutdownBlocker);
|
||||
|
||||
// we hold a ref to 'that' which is the same as sSingleton
|
||||
sSingleton = nullptr;
|
||||
|
||||
return NS_OK;
|
||||
})));
|
||||
}
|
||||
|
||||
nsresult
|
||||
MediaManager::Observe(nsISupports* aSubject, const char* aTopic,
|
||||
const char16_t* aData)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
nsCOMPtr<nsIObserverService> obs = services::GetObserverService();
|
||||
|
||||
if (!strcmp(aTopic, NS_PREFBRANCH_PREFCHANGE_TOPIC_ID)) {
|
||||
nsCOMPtr<nsIPrefBranch> branch( do_QueryInterface(aSubject) );
|
||||
@ -2548,93 +2687,8 @@ MediaManager::Observe(nsISupports* aSubject, const char* aTopic,
|
||||
mPrefs.mWidth, mPrefs.mHeight, mPrefs.mFPS, mPrefs.mMinFPS));
|
||||
}
|
||||
} else if (!strcmp(aTopic, "xpcom-will-shutdown")) {
|
||||
sInShutdown = true;
|
||||
|
||||
obs->RemoveObserver(this, "xpcom-will-shutdown");
|
||||
obs->RemoveObserver(this, "last-pb-context-exited");
|
||||
obs->RemoveObserver(this, "getUserMedia:privileged:allow");
|
||||
obs->RemoveObserver(this, "getUserMedia:response:allow");
|
||||
obs->RemoveObserver(this, "getUserMedia:response:deny");
|
||||
obs->RemoveObserver(this, "getUserMedia:revoke");
|
||||
|
||||
nsCOMPtr<nsIPrefBranch> prefs = do_GetService(NS_PREFSERVICE_CONTRACTID);
|
||||
if (prefs) {
|
||||
prefs->RemoveObserver("media.navigator.video.default_width", this);
|
||||
prefs->RemoveObserver("media.navigator.video.default_height", this);
|
||||
prefs->RemoveObserver("media.navigator.video.default_fps", this);
|
||||
prefs->RemoveObserver("media.navigator.video.default_minfps", this);
|
||||
prefs->RemoveObserver("media.navigator.audio.fake_frequency", this);
|
||||
}
|
||||
|
||||
// Close off any remaining active windows.
|
||||
GetActiveWindows()->Clear();
|
||||
mActiveCallbacks.Clear();
|
||||
mCallIds.Clear();
|
||||
{
|
||||
MutexAutoLock lock(mMutex);
|
||||
if (mBackend) {
|
||||
mBackend->Shutdown(); // ok to invoke multiple times
|
||||
}
|
||||
}
|
||||
|
||||
// Because mMediaThread is not an nsThread, we must dispatch to it so it can
|
||||
// clean up BackgroundChild. Continue stopping thread once this is done.
|
||||
|
||||
class ShutdownTask : public Task
|
||||
{
|
||||
public:
|
||||
ShutdownTask(already_AddRefed<MediaEngine> aBackend,
|
||||
nsRunnable* aReply)
|
||||
: mReply(aReply)
|
||||
, mBackend(aBackend) {}
|
||||
private:
|
||||
virtual void
|
||||
Run()
|
||||
{
|
||||
LOG(("MediaManager Thread Shutdown"));
|
||||
MOZ_ASSERT(MediaManager::IsInMediaThread());
|
||||
mozilla::ipc::BackgroundChild::CloseForCurrentThread();
|
||||
// must explicitly do this before dispatching the reply, since the reply may kill us with Stop()
|
||||
mBackend = nullptr; // last reference, will invoke Shutdown() again
|
||||
|
||||
if (NS_FAILED(NS_DispatchToMainThread(mReply.forget()))) {
|
||||
LOG(("Will leak thread: DispatchToMainthread of reply runnable failed in MediaManager shutdown"));
|
||||
}
|
||||
}
|
||||
RefPtr<nsRunnable> mReply;
|
||||
RefPtr<MediaEngine> mBackend;
|
||||
};
|
||||
|
||||
// Post ShutdownTask to execute on mMediaThread and pass in a lambda
|
||||
// callback to be executed back on this thread once it is done.
|
||||
//
|
||||
// The lambda callback "captures" the 'this' pointer for member access.
|
||||
// This is safe since this is guaranteed to be here since sSingleton isn't
|
||||
// cleared until the lambda function clears it.
|
||||
|
||||
// note that this == sSingleton
|
||||
RefPtr<MediaManager> that(sSingleton);
|
||||
// Release the backend (and call Shutdown()) from within the MediaManager thread
|
||||
RefPtr<MediaEngine> temp;
|
||||
{
|
||||
MutexAutoLock lock(mMutex);
|
||||
temp = mBackend.forget();
|
||||
}
|
||||
// Don't use MediaManager::PostTask() because we're sInShutdown=true here!
|
||||
mMediaThread->message_loop()->PostTask(FROM_HERE, new ShutdownTask(
|
||||
temp.forget(),
|
||||
media::NewRunnableFrom([this, that]() mutable {
|
||||
LOG(("MediaManager shutdown lambda running, releasing MediaManager singleton and thread"));
|
||||
if (mMediaThread) {
|
||||
mMediaThread->Stop();
|
||||
}
|
||||
// we hold a ref to 'that' which is the same as sSingleton
|
||||
sSingleton = nullptr;
|
||||
|
||||
return NS_OK;
|
||||
})));
|
||||
Shutdown();
|
||||
return NS_OK;
|
||||
|
||||
} else if (!strcmp(aTopic, "last-pb-context-exited")) {
|
||||
// Clear memory of private-browsing-specific deviceIds. Fire and forget.
|
||||
media::SanitizeOriginKeys(0, true);
|
||||
|
@ -515,6 +515,7 @@ private:
|
||||
MediaManager();
|
||||
|
||||
~MediaManager() {}
|
||||
void Shutdown();
|
||||
|
||||
void StopScreensharing(uint64_t aWindowID);
|
||||
void IterateWindowListeners(nsPIDOMWindow *aWindow,
|
||||
@ -530,6 +531,7 @@ private:
|
||||
|
||||
// Always exists
|
||||
nsAutoPtr<base::Thread> mMediaThread;
|
||||
nsCOMPtr<nsIAsyncShutdownBlocker> mShutdownBlocker;
|
||||
|
||||
Mutex mMutex;
|
||||
// protected with mMutex:
|
||||
|
@ -9,5 +9,7 @@
|
||||
namespace mozilla {
|
||||
namespace media {
|
||||
|
||||
NS_IMPL_ISUPPORTS(ShutdownBlocker, nsIAsyncShutdownBlocker)
|
||||
|
||||
} // namespace media
|
||||
} // namespace mozilla
|
||||
|
@ -9,6 +9,7 @@
|
||||
|
||||
#include "nsAutoPtr.h"
|
||||
#include "nsThreadUtils.h"
|
||||
#include "nsIAsyncShutdown.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace media {
|
||||
@ -357,6 +358,35 @@ private:
|
||||
~Refcountable<ScopedDeletePtr<T>>() {}
|
||||
};
|
||||
|
||||
/* media::ShutdownBlocker - Async shutdown helper.
|
||||
*/
|
||||
|
||||
class ShutdownBlocker : public nsIAsyncShutdownBlocker
|
||||
{
|
||||
public:
|
||||
ShutdownBlocker(const nsString& aName) : mName(aName) {}
|
||||
|
||||
NS_IMETHOD
|
||||
BlockShutdown(nsIAsyncShutdownClient* aProfileBeforeChange) override = 0;
|
||||
|
||||
NS_IMETHOD GetName(nsAString& aName) override
|
||||
{
|
||||
aName = mName;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHOD GetState(nsIPropertyBag**) override
|
||||
{
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
protected:
|
||||
virtual ~ShutdownBlocker() {}
|
||||
private:
|
||||
const nsString mName;
|
||||
};
|
||||
|
||||
} // namespace media
|
||||
} // namespace mozilla
|
||||
|
||||
|
@ -1884,27 +1884,6 @@ CompositorParent::Create(Transport* aTransport, ProcessId aOtherPid)
|
||||
return cpcp.get();
|
||||
}
|
||||
|
||||
IToplevelProtocol*
|
||||
CompositorParent::CloneToplevel(const InfallibleTArray<mozilla::ipc::ProtocolFdMapping>& aFds,
|
||||
base::ProcessHandle aPeerProcess,
|
||||
mozilla::ipc::ProtocolCloneContext* aCtx)
|
||||
{
|
||||
for (unsigned int i = 0; i < aFds.Length(); i++) {
|
||||
if (aFds[i].protocolId() == (unsigned)GetProtocolId()) {
|
||||
Transport* transport = OpenDescriptor(aFds[i].fd(),
|
||||
Transport::MODE_SERVER);
|
||||
PCompositorParent* compositor = Create(transport, base::GetProcId(aPeerProcess));
|
||||
compositor->CloneManagees(this, aCtx);
|
||||
compositor->IToplevelProtocol::SetTransport(transport);
|
||||
// The reference to the compositor thread is held in OnChannelConnected().
|
||||
// We need to do this for cloned actors, too.
|
||||
compositor->OnChannelConnected(base::GetProcId(aPeerProcess));
|
||||
return compositor;
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
static void
|
||||
UpdateIndirectTree(uint64_t aId, Layer* aRoot, const TargetConfig& aTargetConfig)
|
||||
{
|
||||
@ -2335,6 +2314,9 @@ CrossProcessCompositorParent::CloneToplevel(const InfallibleTArray<mozilla::ipc:
|
||||
CompositorParent::Create(transport, base::GetProcId(aPeerProcess));
|
||||
compositor->CloneManagees(this, aCtx);
|
||||
compositor->IToplevelProtocol::SetTransport(transport);
|
||||
// The reference to the compositor thread is held in OnChannelConnected().
|
||||
// We need to do this for cloned actors, too.
|
||||
compositor->OnChannelConnected(base::GetProcId(aPeerProcess));
|
||||
return compositor;
|
||||
}
|
||||
}
|
||||
|
@ -193,12 +193,6 @@ public:
|
||||
bool aUseExternalSurfaceSize = false,
|
||||
int aSurfaceWidth = -1, int aSurfaceHeight = -1);
|
||||
|
||||
// IToplevelProtocol::CloneToplevel()
|
||||
virtual IToplevelProtocol*
|
||||
CloneToplevel(const InfallibleTArray<mozilla::ipc::ProtocolFdMapping>& aFds,
|
||||
base::ProcessHandle aPeerProcess,
|
||||
mozilla::ipc::ProtocolCloneContext* aCtx) override;
|
||||
|
||||
virtual bool RecvGetFrameUniformity(FrameUniformityData* aOutData) override;
|
||||
virtual bool RecvRequestOverfill() override;
|
||||
virtual bool RecvWillStop() override;
|
||||
|
@ -177,10 +177,12 @@ class MessageChannel : HasResultCodes
|
||||
|
||||
#ifdef MOZ_NUWA_PROCESS
|
||||
void Block() {
|
||||
MOZ_ASSERT(mLink);
|
||||
mLink->Block();
|
||||
}
|
||||
|
||||
void Unblock() {
|
||||
MOZ_ASSERT(mLink);
|
||||
mLink->Unblock();
|
||||
}
|
||||
#endif
|
||||
|
@ -1289,15 +1289,6 @@ public class BrowserApp extends GeckoApp
|
||||
return true;
|
||||
}
|
||||
|
||||
if (itemId == R.id.site_settings) {
|
||||
// This can be selected from either the browser menu or the contextmenu, depending on the size and version (v11+) of the phone.
|
||||
GeckoAppShell.sendEventToGecko(GeckoEvent.createBroadcastEvent("Permissions:Get", null));
|
||||
if (Versions.preHC) {
|
||||
Telemetry.sendUIEvent(TelemetryContract.Event.ACTION, TelemetryContract.Method.CONTEXT_MENU, "site_settings");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
if (itemId == R.id.paste) {
|
||||
String text = Clipboard.getText();
|
||||
if (!TextUtils.isEmpty(text)) {
|
||||
@ -3174,7 +3165,6 @@ public class BrowserApp extends GeckoApp
|
||||
}
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.subscribe, false);
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.add_search_engine, false);
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.site_settings, false);
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.add_to_launcher, false);
|
||||
|
||||
return true;
|
||||
@ -3260,7 +3250,6 @@ public class BrowserApp extends GeckoApp
|
||||
}
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.subscribe, tab.hasFeeds());
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.add_search_engine, tab.hasOpenSearch());
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.site_settings, !isAboutHome(tab));
|
||||
MenuUtils.safeSetEnabled(aMenu, R.id.add_to_launcher, !isAboutHome(tab));
|
||||
|
||||
// Action providers are available only ICS+.
|
||||
|
@ -6,7 +6,7 @@
|
||||
<merge xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:gecko="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<ImageView
|
||||
<ImageButton
|
||||
android:id="@+id/favicon"
|
||||
android:layout_width="@dimen/browser_toolbar_favicon_size"
|
||||
android:layout_height="match_parent"
|
||||
|
@ -74,9 +74,6 @@
|
||||
<item android:id="@+id/add_search_engine"
|
||||
android:title="@string/contextmenu_add_search_engine"/>
|
||||
|
||||
<item android:id="@+id/site_settings"
|
||||
android:title="@string/contextmenu_site_settings" />
|
||||
|
||||
<item android:id="@+id/add_to_launcher"
|
||||
android:title="@string/contextmenu_add_to_launcher"/>
|
||||
|
||||
|
@ -74,9 +74,6 @@
|
||||
<item android:id="@+id/add_search_engine"
|
||||
android:title="@string/contextmenu_add_search_engine"/>
|
||||
|
||||
<item android:id="@+id/site_settings"
|
||||
android:title="@string/contextmenu_site_settings" />
|
||||
|
||||
<item android:id="@+id/add_to_launcher"
|
||||
android:title="@string/contextmenu_add_to_launcher"/>
|
||||
|
||||
|
@ -75,9 +75,6 @@
|
||||
<item android:id="@+id/add_search_engine"
|
||||
android:title="@string/contextmenu_add_search_engine"/>
|
||||
|
||||
<item android:id="@+id/site_settings"
|
||||
android:title="@string/contextmenu_site_settings" />
|
||||
|
||||
<item android:id="@+id/add_to_launcher"
|
||||
android:title="@string/contextmenu_add_to_launcher"/>
|
||||
|
||||
|
@ -20,9 +20,6 @@
|
||||
<item android:id="@+id/copyurl"
|
||||
android:title="@string/contextmenu_copyurl"/>
|
||||
|
||||
<item android:id="@+id/site_settings"
|
||||
android:title="@string/contextmenu_site_settings" />
|
||||
|
||||
<item android:id="@+id/add_to_launcher"
|
||||
android:title="@string/contextmenu_add_to_launcher"/>
|
||||
|
||||
|
@ -16,6 +16,8 @@ public class StringHelper {
|
||||
public static String STATIC_ABOUT_HOME_URL = "about:home";
|
||||
|
||||
public final String OK;
|
||||
public final String CANCEL;
|
||||
public final String CLEAR;
|
||||
|
||||
// Note: DEFAULT_BOOKMARKS_TITLES.length == DEFAULT_BOOKMARKS_URLS.length
|
||||
public final String[] DEFAULT_BOOKMARKS_TITLES;
|
||||
@ -295,6 +297,8 @@ public class StringHelper {
|
||||
private StringHelper(final Resources res) {
|
||||
|
||||
OK = res.getString(R.string.button_ok);
|
||||
CANCEL = res.getString(R.string.button_cancel);
|
||||
CLEAR = res.getString(R.string.button_clear);
|
||||
|
||||
// Note: DEFAULT_BOOKMARKS_TITLES.length == DEFAULT_BOOKMARKS_URLS.length
|
||||
DEFAULT_BOOKMARKS_TITLES = new String[] {
|
||||
|
@ -10,7 +10,6 @@ import static org.mozilla.gecko.tests.helpers.AssertionHelper.fAssertNotNull;
|
||||
import static org.mozilla.gecko.tests.helpers.AssertionHelper.fAssertTrue;
|
||||
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.tests.StringHelper;
|
||||
import org.mozilla.gecko.tests.UITestContext;
|
||||
import org.mozilla.gecko.tests.helpers.DeviceHelper;
|
||||
import org.mozilla.gecko.tests.helpers.NavigationHelper;
|
||||
|
@ -8,6 +8,7 @@ import org.mozilla.gecko.R;
|
||||
|
||||
import com.jayway.android.robotium.solo.Condition;
|
||||
import android.view.View;
|
||||
import android.widget.ImageButton;
|
||||
|
||||
/**
|
||||
* This patch tests the clear private data options:
|
||||
@ -63,14 +64,12 @@ public class testClearPrivateData extends PixelTest {
|
||||
}
|
||||
|
||||
public void clearSiteSettings() {
|
||||
String shareStrings[] = {"Share your location with", "Share", "Don't share", "There are no settings to clear"};
|
||||
String titleGeolocation = mStringHelper.ROBOCOP_GEOLOCATION_TITLE;
|
||||
String url = getAbsoluteUrl(mStringHelper.ROBOCOP_GEOLOCATION_URL);
|
||||
loadCheckDismiss(shareStrings[1], url, shareStrings[0]);
|
||||
checkOption(shareStrings[1], "Clear");
|
||||
checkOption(shareStrings[3], "Cancel");
|
||||
loadCheckDismiss(shareStrings[2], url, shareStrings[0]);
|
||||
checkOption(shareStrings[2], "Cancel");
|
||||
loadCheckDismiss(mStringHelper.GEO_ALLOW, url, mStringHelper.GEO_MESSAGE);
|
||||
checkOption(mStringHelper.GEO_ALLOW, mStringHelper.CLEAR);
|
||||
loadCheckDismiss(mStringHelper.GEO_DENY, url, mStringHelper.GEO_MESSAGE);
|
||||
checkOption(mStringHelper.GEO_DENY, mStringHelper.CANCEL);
|
||||
checkDevice(titleGeolocation, url);
|
||||
}
|
||||
|
||||
@ -80,7 +79,7 @@ public class testClearPrivateData extends PixelTest {
|
||||
String loginUrl = getAbsoluteUrl(mStringHelper.ROBOCOP_LOGIN_01_URL);
|
||||
|
||||
loadCheckDismiss(passwordStrings[1], loginUrl, passwordStrings[0]);
|
||||
checkOption(mStringHelper.CONTEXT_MENU_SITE_SETTINGS_SAVE_PASSWORD, "Clear");
|
||||
checkOption(mStringHelper.CONTEXT_MENU_SITE_SETTINGS_SAVE_PASSWORD, mStringHelper.CLEAR);
|
||||
loadCheckDismiss(passwordStrings[2], loginUrl, passwordStrings[0]);
|
||||
checkDevice(title, getAbsoluteUrl(mStringHelper.ROBOCOP_BLANK_PAGE_01_URL));
|
||||
}
|
||||
@ -114,12 +113,23 @@ public class testClearPrivateData extends PixelTest {
|
||||
mAsserter.ok(waitForText(mStringHelper.CONTEXT_MENU_ITEMS_IN_URL_BAR[2]), "Waiting for the pop-up to open", "Pop up was opened");
|
||||
} else {
|
||||
// Use the Page menu in 11+
|
||||
selectMenuItem(mStringHelper.PAGE_LABEL);
|
||||
mAsserter.ok(waitForText(mStringHelper.CONTEXT_MENU_ITEMS_IN_URL_BAR[2]), "Waiting for the submenu to open", "Submenu was opened");
|
||||
openSiteSecurityDoorHanger();
|
||||
mAsserter.ok(waitForText(mStringHelper.CONTEXT_MENU_ITEMS_IN_URL_BAR[2]), "Waiting for the submenu to open for " + option + " on " + button, "Submenu was opened");
|
||||
}
|
||||
|
||||
mSolo.clickOnText(mStringHelper.CONTEXT_MENU_ITEMS_IN_URL_BAR[2]);
|
||||
mSolo.clickOnText(mStringHelper.CONTEXT_MENU_ITEMS_IN_URL_BAR[2]);
|
||||
mAsserter.ok(waitForText(option), "Verify that the option: " + option + " is in the list", "The option is in the list. There are settings to clear");
|
||||
mSolo.clickOnButton(button);
|
||||
}
|
||||
|
||||
private void openSiteSecurityDoorHanger() {
|
||||
mSolo.waitForCondition(new Condition() {
|
||||
@Override
|
||||
public boolean isSatisfied() {
|
||||
ImageButton btn = (ImageButton) mSolo.getView(R.id.favicon);
|
||||
mSolo.clickOnView(btn);
|
||||
return true;
|
||||
}
|
||||
}, TEST_WAIT_MS);
|
||||
}
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ using namespace mozilla;
|
||||
|
||||
using mozilla::dom::ContentChild;
|
||||
|
||||
NS_IMPL_ISUPPORTS(nsAlertsService, nsIAlertsService, nsIAlertsProgressListener)
|
||||
NS_IMPL_ISUPPORTS(nsAlertsService, nsIAlertsService, nsIAlertsDoNotDisturb, nsIAlertsProgressListener)
|
||||
|
||||
nsAlertsService::nsAlertsService()
|
||||
{
|
||||
@ -150,6 +150,45 @@ NS_IMETHODIMP nsAlertsService::CloseAlert(const nsAString& aAlertName,
|
||||
}
|
||||
|
||||
|
||||
// nsIAlertsDoNotDisturb
|
||||
NS_IMETHODIMP nsAlertsService::GetManualDoNotDisturb(bool* aRetVal)
|
||||
{
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
#else
|
||||
// Try the system notification service.
|
||||
nsCOMPtr<nsIAlertsService> sysAlerts(do_GetService(NS_SYSTEMALERTSERVICE_CONTRACTID));
|
||||
if (sysAlerts) {
|
||||
nsCOMPtr<nsIAlertsDoNotDisturb> alertsDND(do_GetService(NS_SYSTEMALERTSERVICE_CONTRACTID));
|
||||
if (!alertsDND) {
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
return alertsDND->GetManualDoNotDisturb(aRetVal);
|
||||
}
|
||||
|
||||
return mXULAlerts.GetManualDoNotDisturb(aRetVal);
|
||||
#endif
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAlertsService::SetManualDoNotDisturb(bool aDoNotDisturb)
|
||||
{
|
||||
#ifdef MOZ_WIDGET_ANDROID
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
#else
|
||||
// Try the system notification service.
|
||||
nsCOMPtr<nsIAlertsService> sysAlerts(do_GetService(NS_SYSTEMALERTSERVICE_CONTRACTID));
|
||||
if (sysAlerts) {
|
||||
nsCOMPtr<nsIAlertsDoNotDisturb> alertsDND(do_GetService(NS_SYSTEMALERTSERVICE_CONTRACTID));
|
||||
if (!alertsDND) {
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
return alertsDND->SetManualDoNotDisturb(aDoNotDisturb);
|
||||
}
|
||||
|
||||
return mXULAlerts.SetManualDoNotDisturb(aDoNotDisturb);
|
||||
#endif
|
||||
}
|
||||
|
||||
NS_IMETHODIMP nsAlertsService::OnProgress(const nsAString & aAlertName,
|
||||
int64_t aProgress,
|
||||
int64_t aProgressMax,
|
||||
|
@ -28,10 +28,12 @@ typedef HRESULT (__stdcall *SHQueryUserNotificationStatePtr)(MOZ_QUERY_USER_NOTI
|
||||
#endif // defined(XP_WIN)
|
||||
|
||||
class nsAlertsService : public nsIAlertsService,
|
||||
public nsIAlertsDoNotDisturb,
|
||||
public nsIAlertsProgressListener
|
||||
{
|
||||
public:
|
||||
NS_DECL_NSIALERTSPROGRESSLISTENER
|
||||
NS_DECL_NSIALERTSDONOTDISTURB
|
||||
NS_DECL_NSIALERTSSERVICE
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
|
@ -3,7 +3,6 @@
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
|
||||
#include "nsISupports.idl"
|
||||
#include "nsIObserver.idl"
|
||||
|
||||
@ -12,99 +11,117 @@ interface nsIPrincipal;
|
||||
[scriptable, uuid(9d0284bf-db40-42da-8f0d-c2769dbde7aa)]
|
||||
interface nsIAlertsService : nsISupports
|
||||
{
|
||||
/**
|
||||
* Displays a sliding notification window.
|
||||
*
|
||||
* @param imageUrl A URL identifying the image to put in the alert.
|
||||
* The OS X implemenation limits the amount of time it
|
||||
* will wait for an icon to load to six seconds. After
|
||||
* that time the alert will show with no icon.
|
||||
* @param title The title for the alert.
|
||||
* @param text The contents of the alert.
|
||||
* @param textClickable If true, causes the alert text to look like a link
|
||||
* and notifies the listener when user attempts to
|
||||
* click the alert text.
|
||||
* @param cookie A blind cookie the alert will pass back to the
|
||||
* consumer during the alert listener callbacks.
|
||||
* @param alertListener Used for callbacks. May be null if the caller
|
||||
* doesn't care about callbacks.
|
||||
* @param name The name of the notification. This is currently only
|
||||
* used on Android and OS X. On Android the name is
|
||||
* hashed and used as a notification ID. Notifications
|
||||
* will replace previous notifications with the same name.
|
||||
* @param dir Bidi override for the title. Valid values are
|
||||
* "auto", "ltr" or "rtl". Only available on supported
|
||||
* platforms.
|
||||
* @param lang Language of title and text of the alert. Only available
|
||||
* on supported platforms.
|
||||
* @param inPrivateBrowsing If set to true, imageUrl will be loaded in private
|
||||
* browsing mode.
|
||||
* @throws NS_ERROR_NOT_AVAILABLE If the notification cannot be displayed.
|
||||
*
|
||||
* The following arguments will be passed to the alertListener's observe()
|
||||
* method:
|
||||
* subject - null
|
||||
* topic - "alertfinished" when the alert goes away
|
||||
* "alertclickcallback" when the text is clicked
|
||||
* "alertshow" when the alert is shown
|
||||
* data - the value of the cookie parameter passed to showAlertNotification.
|
||||
*
|
||||
* @note Depending on current circumstances (if the user's in a fullscreen
|
||||
* application, for instance), the alert might not be displayed at all.
|
||||
* In that case, if an alert listener is passed in it will receive the
|
||||
* "alertfinished" notification immediately.
|
||||
*/
|
||||
void showAlertNotification(in AString imageUrl,
|
||||
in AString title,
|
||||
in AString text,
|
||||
[optional] in boolean textClickable,
|
||||
[optional] in AString cookie,
|
||||
[optional] in nsIObserver alertListener,
|
||||
[optional] in AString name,
|
||||
[optional] in AString dir,
|
||||
[optional] in AString lang,
|
||||
[optional] in AString data,
|
||||
[optional] in nsIPrincipal principal,
|
||||
[optional] in boolean inPrivateBrowsing);
|
||||
/**
|
||||
* Displays a sliding notification window.
|
||||
*
|
||||
* @param imageUrl A URL identifying the image to put in the alert.
|
||||
* The OS X implemenation limits the amount of time it
|
||||
* will wait for an icon to load to six seconds. After
|
||||
* that time the alert will show with no icon.
|
||||
* @param title The title for the alert.
|
||||
* @param text The contents of the alert.
|
||||
* @param textClickable If true, causes the alert text to look like a link
|
||||
* and notifies the listener when user attempts to
|
||||
* click the alert text.
|
||||
* @param cookie A blind cookie the alert will pass back to the
|
||||
* consumer during the alert listener callbacks.
|
||||
* @param alertListener Used for callbacks. May be null if the caller
|
||||
* doesn't care about callbacks.
|
||||
* @param name The name of the notification. This is currently only
|
||||
* used on Android and OS X. On Android the name is
|
||||
* hashed and used as a notification ID. Notifications
|
||||
* will replace previous notifications with the same name.
|
||||
* @param dir Bidi override for the title. Valid values are
|
||||
* "auto", "ltr" or "rtl". Only available on supported
|
||||
* platforms.
|
||||
* @param lang Language of title and text of the alert. Only available
|
||||
* on supported platforms.
|
||||
* @param inPrivateBrowsing If set to true, imageUrl will be loaded in private
|
||||
* browsing mode.
|
||||
* @throws NS_ERROR_NOT_AVAILABLE If the notification cannot be displayed.
|
||||
*
|
||||
* The following arguments will be passed to the alertListener's observe()
|
||||
* method:
|
||||
* subject - null
|
||||
* topic - "alertfinished" when the alert goes away
|
||||
* "alertdisablecallback" when alerts should be disabled for the principal
|
||||
* "alertsettingscallback" when alert settings should be opened
|
||||
* "alertclickcallback" when the text is clicked
|
||||
* "alertshow" when the alert is shown
|
||||
* data - the value of the cookie parameter passed to showAlertNotification.
|
||||
*
|
||||
* @note Depending on current circumstances (if the user's in a fullscreen
|
||||
* application, for instance), the alert might not be displayed at all.
|
||||
* In that case, if an alert listener is passed in it will receive the
|
||||
* "alertfinished" notification immediately.
|
||||
*/
|
||||
void showAlertNotification(in AString imageUrl,
|
||||
in AString title,
|
||||
in AString text,
|
||||
[optional] in boolean textClickable,
|
||||
[optional] in AString cookie,
|
||||
[optional] in nsIObserver alertListener,
|
||||
[optional] in AString name,
|
||||
[optional] in AString dir,
|
||||
[optional] in AString lang,
|
||||
[optional] in AString data,
|
||||
[optional] in nsIPrincipal principal,
|
||||
[optional] in boolean inPrivateBrowsing);
|
||||
|
||||
/**
|
||||
* Close alerts created by the service.
|
||||
*
|
||||
* @param name The name of the notification to close. If no name
|
||||
* is provided then only a notification created with
|
||||
* no name (if any) will be closed.
|
||||
*/
|
||||
void closeAlert([optional] in AString name,
|
||||
[optional] in nsIPrincipal principal);
|
||||
/**
|
||||
* Close alerts created by the service.
|
||||
*
|
||||
* @param name The name of the notification to close. If no name
|
||||
* is provided then only a notification created with
|
||||
* no name (if any) will be closed.
|
||||
*/
|
||||
void closeAlert([optional] in AString name,
|
||||
[optional] in nsIPrincipal principal);
|
||||
|
||||
};
|
||||
|
||||
[scriptable, uuid(c5d63e3a-259d-45a8-b964-8377967cb4d2)]
|
||||
interface nsIAlertsDoNotDisturb : nsISupports
|
||||
{
|
||||
/**
|
||||
* Toggles a manual Do Not Disturb mode for the service to reduce the amount
|
||||
* of disruption that alerts cause the user.
|
||||
* This may mean only displaying them in a notification tray/center or not
|
||||
* displaying them at all. If a system backend already supports a similar
|
||||
* feature controlled by the user, enabling this may not have any impact on
|
||||
* code to show an alert. e.g. on OS X, the system will take care not
|
||||
* disrupting a user if we simply create a notification like usual.
|
||||
*/
|
||||
attribute bool manualDoNotDisturb;
|
||||
};
|
||||
|
||||
[scriptable, uuid(df1bd4b0-3a8c-40e6-806a-203f38b0bd9f)]
|
||||
interface nsIAlertsProgressListener : nsISupports
|
||||
{
|
||||
/**
|
||||
* Called to notify the alert service that progress has occurred for the
|
||||
* given notification previously displayed with showAlertNotification().
|
||||
*
|
||||
* @param name The name of the notification displaying the
|
||||
* progress. On Android the name is hashed and used
|
||||
* as a notification ID.
|
||||
* @param progress Numeric value in the range 0 to progressMax
|
||||
* indicating the current progress.
|
||||
* @param progressMax Numeric value indicating the maximum progress.
|
||||
* @param text The contents of the alert. If not provided,
|
||||
* the percentage will be displayed.
|
||||
*/
|
||||
void onProgress(in AString name,
|
||||
in long long progress,
|
||||
in long long progressMax,
|
||||
[optional] in AString text);
|
||||
/**
|
||||
* Called to notify the alert service that progress has occurred for the
|
||||
* given notification previously displayed with showAlertNotification().
|
||||
*
|
||||
* @param name The name of the notification displaying the
|
||||
* progress. On Android the name is hashed and used
|
||||
* as a notification ID.
|
||||
* @param progress Numeric value in the range 0 to progressMax
|
||||
* indicating the current progress.
|
||||
* @param progressMax Numeric value indicating the maximum progress.
|
||||
* @param text The contents of the alert. If not provided,
|
||||
* the percentage will be displayed.
|
||||
*/
|
||||
void onProgress(in AString name,
|
||||
in long long progress,
|
||||
in long long progressMax,
|
||||
[optional] in AString text);
|
||||
|
||||
/**
|
||||
* Called to cancel and hide the given notification previously displayed
|
||||
* with showAlertNotification().
|
||||
*
|
||||
* @param name The name of the notification.
|
||||
*/
|
||||
void onCancel(in AString name);
|
||||
/**
|
||||
* Called to cancel and hide the given notification previously displayed
|
||||
* with showAlertNotification().
|
||||
*
|
||||
* @param name The name of the notification.
|
||||
*/
|
||||
void onCancel(in AString name);
|
||||
};
|
||||
|
||||
|
@ -48,6 +48,10 @@ nsXULAlerts::ShowAlertNotification(const nsAString& aImageUrl, const nsAString&
|
||||
const nsAString& aLang, nsIPrincipal* aPrincipal,
|
||||
bool aInPrivateBrowsing)
|
||||
{
|
||||
if (mDoNotDisturb) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIWindowWatcher> wwatch(do_GetService(NS_WINDOWWATCHER_CONTRACTID));
|
||||
|
||||
nsCOMPtr<nsISupportsArray> argsArray;
|
||||
@ -161,6 +165,20 @@ nsXULAlerts::ShowAlertNotification(const nsAString& aImageUrl, const nsAString&
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsXULAlerts::SetManualDoNotDisturb(bool aDoNotDisturb)
|
||||
{
|
||||
mDoNotDisturb = aDoNotDisturb;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsXULAlerts::GetManualDoNotDisturb(bool* aRetVal)
|
||||
{
|
||||
*aRetVal = mDoNotDisturb;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsXULAlerts::CloseAlert(const nsAString& aAlertName)
|
||||
{
|
||||
|
@ -29,8 +29,13 @@ public:
|
||||
bool aInPrivateBrowsing);
|
||||
|
||||
nsresult CloseAlert(const nsAString& aAlertName);
|
||||
|
||||
nsresult GetManualDoNotDisturb(bool* aRetVal);
|
||||
nsresult SetManualDoNotDisturb(bool aDoNotDisturb);
|
||||
|
||||
protected:
|
||||
nsInterfaceHashtable<nsStringHashKey, nsIDOMWindow> mNamedWindows;
|
||||
bool mDoNotDisturb = false;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -159,6 +159,8 @@ function SignonSelected() {
|
||||
var selections = GetTreeSelections(signonsTree);
|
||||
if (selections.length) {
|
||||
document.getElementById("removeSignon").removeAttribute("disabled");
|
||||
} else {
|
||||
document.getElementById("removeSignon").setAttribute("disabled", true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6,13 +6,6 @@
|
||||
USE_RCS_MK := 1
|
||||
include $(topsrcdir)/config/makefiles/rcs.mk
|
||||
|
||||
ifdef MOZILLA_OFFICIAL
|
||||
MOZ_HISTOGRAMS_VERSION ?= $(call getSourceRepo)/rev/$(firstword $(shell hg -R $(topsrcdir) parent --template='{node|short}\n' 2>/dev/null))
|
||||
ifdef MOZ_HISTOGRAMS_VERSION
|
||||
DEFINES += -DHISTOGRAMS_FILE_VERSION='$(MOZ_HISTOGRAMS_VERSION)'
|
||||
endif
|
||||
endif
|
||||
|
||||
INSTALL_TARGETS += histoenums
|
||||
histoenums_FILES := TelemetryHistogramEnums.h
|
||||
histoenums_DEST = $(DIST)/include/mozilla
|
||||
|
@ -47,10 +47,6 @@ const ENVIRONMENT_CHANGE_LISTENER = "TelemetrySession::onEnvironmentChange";
|
||||
const MS_IN_ONE_HOUR = 60 * 60 * 1000;
|
||||
const MIN_SUBSESSION_LENGTH_MS = Preferences.get("toolkit.telemetry.minSubsessionLength", 10 * 60) * 1000;
|
||||
|
||||
// This is the HG changeset of the Histogram.json file, used to associate
|
||||
// submitted ping data with its histogram definition (bug 832007)
|
||||
#expand const HISTOGRAMS_FILE_VERSION = "__HISTOGRAMS_FILE_VERSION__";
|
||||
|
||||
const LOGGER_NAME = "Toolkit.Telemetry";
|
||||
const LOGGER_PREFIX = "TelemetrySession" + (Utils.isContentProcess ? "#content::" : "::");
|
||||
|
||||
@ -1044,7 +1040,7 @@ var Impl = {
|
||||
|
||||
let ret = {
|
||||
reason: reason,
|
||||
revision: HISTOGRAMS_FILE_VERSION,
|
||||
revision: AppConstants.SOURCE_REVISION_URL,
|
||||
asyncPluginInit: Preferences.get(PREF_ASYNC_PLUGIN_INIT, false),
|
||||
|
||||
// Date.getTimezoneOffset() unintuitively returns negative values if we are ahead of
|
||||
|
@ -36,6 +36,7 @@ EXTRA_JS_MODULES += [
|
||||
'TelemetryLog.jsm',
|
||||
'TelemetryReportingPolicy.jsm',
|
||||
'TelemetrySend.jsm',
|
||||
'TelemetrySession.jsm',
|
||||
'TelemetryStopwatch.jsm',
|
||||
'TelemetryStorage.jsm',
|
||||
'TelemetryUtils.jsm',
|
||||
@ -43,10 +44,6 @@ EXTRA_JS_MODULES += [
|
||||
'UITelemetry.jsm',
|
||||
]
|
||||
|
||||
EXTRA_PP_JS_MODULES += [
|
||||
'TelemetrySession.jsm',
|
||||
]
|
||||
|
||||
TESTING_JS_MODULES += [
|
||||
'tests/unit/TelemetryArchiveTesting.jsm',
|
||||
]
|
||||
|
@ -1604,6 +1604,10 @@ securityReferrerNextURI=When Visiting
|
||||
securityReferrerCalculatedReferrer=Referrer Will Be
|
||||
# LOCALIZATION NOTE: %1$S is the current page URI
|
||||
securityReferrerPolicyReportHeader=Referrer Policy for %1$S
|
||||
securityReferrerPolicyOtherDomain=Other Origin
|
||||
securityReferrerPolicyOtherDomainDowngrade=Other Origin HTTP
|
||||
securityReferrerPolicySameDomain=Same Origin
|
||||
securityReferrerPolicySameDomainDowngrade=Same Host HTTP
|
||||
|
||||
# LOCALIZATION NOTE (rulersDesc) A very short description of the
|
||||
# 'rulers' command. See rulersManual for a fuller description of what
|
||||
|
@ -223,5 +223,10 @@ this.AppConstants = Object.freeze({
|
||||
#else
|
||||
false,
|
||||
#endif
|
||||
DEBUG_JS_MODULES: "@DEBUG_JS_MODULES@"
|
||||
DEBUG_JS_MODULES: "@DEBUG_JS_MODULES@",
|
||||
|
||||
// URL to the hg revision this was built from (e.g.
|
||||
// "https://hg.mozilla.org/mozilla-central/rev/6256ec9113c1")
|
||||
// On unofficial builds, this is an empty string.
|
||||
SOURCE_REVISION_URL: "@SOURCE_REV_URL@"
|
||||
});
|
||||
|
@ -107,7 +107,8 @@ for var in ('ANDROID_PACKAGE_NAME',
|
||||
'MOZ_WIDGET_TOOLKIT',
|
||||
'DLL_PREFIX',
|
||||
'DLL_SUFFIX',
|
||||
'DEBUG_JS_MODULES'):
|
||||
'DEBUG_JS_MODULES',
|
||||
'SOURCE_REV_URL'):
|
||||
DEFINES[var] = CONFIG[var]
|
||||
|
||||
for var in ('MOZ_TOOLKIT_SEARCH',
|
||||
|
@ -1305,6 +1305,15 @@ KEY_MAP_ANDROID (HomeScreen, AKEYCODE_HOME)
|
||||
KEY_MAP_QT (CameraFocusAdjust, Qt::Key_CameraFocus)
|
||||
KEY_MAP_ANDROID (CameraFocusAdjust, AKEYCODE_FOCUS)
|
||||
|
||||
// PhoneCall
|
||||
KEY_MAP_ANDROID (PhoneCall, AKEYCODE_CALL)
|
||||
|
||||
// SoftLeft
|
||||
KEY_MAP_ANDROID (SoftLeft, AKEYCODE_SOFT_LEFT)
|
||||
|
||||
// SoftRight
|
||||
KEY_MAP_ANDROID (SoftRight, AKEYCODE_SOFT_RIGHT)
|
||||
|
||||
#undef KEY_MAP_WIN
|
||||
#undef KEY_MAP_WIN_JPN
|
||||
#undef KEY_MAP_WIN_KOR
|
||||
|
@ -1495,9 +1495,6 @@ ConvertAndroidKeyCodeToKeyNameIndex(AndroidGeckoEvent& aAndroidGeckoEvent)
|
||||
case AKEYCODE_RO: // Japanese Ro key
|
||||
return KEY_NAME_INDEX_USE_STRING;
|
||||
|
||||
case AKEYCODE_SOFT_LEFT:
|
||||
case AKEYCODE_SOFT_RIGHT:
|
||||
case AKEYCODE_CALL:
|
||||
case AKEYCODE_ENDCALL:
|
||||
case AKEYCODE_NUM: // XXX Not sure
|
||||
case AKEYCODE_HEADSETHOOK:
|
||||
|
@ -430,7 +430,11 @@ TimerThread::Run()
|
||||
bool forceRunThisTimer = forceRunNextTimer;
|
||||
forceRunNextTimer = false;
|
||||
|
||||
if (mSleeping) {
|
||||
if (mSleeping
|
||||
#ifdef MOZ_NUWA_PROCESS
|
||||
|| IsNuwaProcess() // Don't fire timers or deadlock will result.
|
||||
#endif
|
||||
) {
|
||||
// Sleep for 0.1 seconds while not firing timers.
|
||||
uint32_t milliseconds = 100;
|
||||
if (ChaosMode::isActive(ChaosFeature::TimerScheduling)) {
|
||||
|