mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Merge m-c to inbound, a=merge CLOSED TREE
This commit is contained in:
commit
bd034c1373
@ -117,6 +117,8 @@ exports['test load script with data: URL and complex char'] = function(assert) {
|
||||
};
|
||||
|
||||
exports['test metadata'] = function(assert) {
|
||||
let self = require('sdk/self');
|
||||
|
||||
let dbg = new Debugger();
|
||||
dbg.onNewGlobalObject = function(global) {
|
||||
let metadata = Cu.getSandboxMetadata(global.unsafeDereference());
|
||||
@ -127,7 +129,7 @@ exports['test metadata'] = function(assert) {
|
||||
}
|
||||
|
||||
let fixture = sandbox();
|
||||
let self = require('sdk/self');
|
||||
assert.equal(dbg.onNewGlobalObject, undefined, 'Should have reset the handler');
|
||||
}
|
||||
|
||||
exports['test nuke sandbox'] = function(assert) {
|
||||
|
@ -15,7 +15,7 @@
|
||||
<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="ea673b5c4cc19c3daca072691a659c68e4c6937f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="37250b125e0db6966875d3b37b117f6d9b76cbc0"/>
|
||||
<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="9a58f2e395da17c252f61f28900b5b09aeb813bd"/>
|
||||
@ -24,7 +24,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0e781b61e61b065ca9f3b05ed01b0ef1d9855010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="ce651a7711042301cbc9c6866be0eeb9e1ceab66"/>
|
||||
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
|
||||
<!-- 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"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<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="ea673b5c4cc19c3daca072691a659c68e4c6937f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="37250b125e0db6966875d3b37b117f6d9b76cbc0"/>
|
||||
<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="9a58f2e395da17c252f61f28900b5b09aeb813bd"/>
|
||||
@ -24,7 +24,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0e781b61e61b065ca9f3b05ed01b0ef1d9855010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="ce651a7711042301cbc9c6866be0eeb9e1ceab66"/>
|
||||
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
|
||||
<!-- 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"/>
|
||||
|
@ -1,39 +1,48 @@
|
||||
<?xml version="1.0" ?><manifest>
|
||||
<!--original fetch url was https://android.googlesource.com/-->
|
||||
<remote fetch="https://git.mozilla.org/external/aosp" name="aosp"/>
|
||||
<!--original fetch url was git://codeaurora.org/-->
|
||||
<remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
|
||||
<!--original fetch url was https://git.mozilla.org/b2g-->
|
||||
<remote fetch="https://git.mozilla.org/b2g" name="b2gmozilla"/>
|
||||
<!--original fetch url was git://github.com/apitrace/-->
|
||||
<remote fetch="https://git.mozilla.org/external/apitrace" name="apitrace"/>
|
||||
<!--original fetch url was git://github.com/mozilla-b2g/-->
|
||||
<remote fetch="https://git.mozilla.org/b2g" name="b2g"/>
|
||||
<!--original fetch url was https://git.mozilla.org/b2g-->
|
||||
<remote fetch="https://git.mozilla.org/b2g" name="b2gmozilla"/>
|
||||
<!--original fetch url was git://codeaurora.org/-->
|
||||
<remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
|
||||
<!--original fetch url was git://github.com/mozilla/-->
|
||||
<remote fetch="https://git.mozilla.org/b2g" name="mozilla"/>
|
||||
<!--original fetch url was https://git.mozilla.org/releases-->
|
||||
<remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
|
||||
<!--original fetch url was git://github.com/apitrace/-->
|
||||
<remote fetch="https://git.mozilla.org/external/apitrace" name="apitrace"/>
|
||||
<default remote="caf" revision="refs/tags/android-4.0.4_r2.1" sync-j="4"/>
|
||||
<!-- Gonk specific things and forks -->
|
||||
<!-- Gecko and Gaia -->
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="37250b125e0db6966875d3b37b117f6d9b76cbc0"/>
|
||||
<!-- Gonk-specific things and forks -->
|
||||
<project name="platform_bionic" path="bionic" remote="b2g" revision="e2b3733ba3fa5e3f404e983d2e4142b1f6b1b846"/>
|
||||
<project name="platform_build" path="build" remote="b2g" revision="1b0db93fb6b870b03467aff50d6419771ba0d88c">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="ea673b5c4cc19c3daca072691a659c68e4c6937f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9a58f2e395da17c252f61f28900b5b09aeb813bd"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="cb4604d5a578efd027277059ce3e0f6e3af59bd1"/>
|
||||
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="c72c9278ddc2f442d193474993d36e7f2cfb08c4"/>
|
||||
<project name="android-development" path="development" remote="b2g" revision="2bdf22305b523af644e1891b4ddfd9229336d0ce"/>
|
||||
<project name="platform_external_apriori" path="external/apriori" remote="b2g" revision="11816ad0406744f963537b23d68ed9c2afb412bd"/>
|
||||
<project name="platform_external_elfcopy" path="external/elfcopy" remote="b2g" revision="62c1bed1c4505369cac2e72fbe30452a598fb690"/>
|
||||
<project name="platform_external_elfutils" path="external/elfutils" remote="b2g" revision="72940dec691fa3255e13df01f8c53b620e446066"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ac7e9ae8a24ab4a3f3da801ca53f95f39a32b89f"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="34ea6163f9f0e0122fb0bb03607eccdca31ced7a"/>
|
||||
<project name="platform_external_opensans" path="external/opensans" remote="b2g" revision="b5b4c226ca1d71e936153cf679dda6d3d60e2354"/>
|
||||
<project name="screencap-gonk" path="external/screencap-gonk" remote="b2g" revision="e6403c71e9eca8cb943739d5a0a192deac60fc51"/>
|
||||
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="c72c9278ddc2f442d193474993d36e7f2cfb08c4"/>
|
||||
<project name="platform_frameworks_base" path="frameworks/base" remote="b2g" revision="6afc63abe52776ae6a1d32a2d927e630a743a86a"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9a58f2e395da17c252f61f28900b5b09aeb813bd"/>
|
||||
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="cb4604d5a578efd027277059ce3e0f6e3af59bd1"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="android-sdk" path="sdk" remote="b2g" revision="4f46930827957afbce500a4a920755a218bf3155"/>
|
||||
<project name="darwinstreamingserver" path="system/darwinstreamingserver" remote="b2g" revision="cf85968c7f85e0ec36e72c87ceb4837a943b8af6"/>
|
||||
<!-- Stock Android things -->
|
||||
<project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
|
||||
<project name="platform_bionic" path="bionic" remote="b2g" revision="e2b3733ba3fa5e3f404e983d2e4142b1f6b1b846"/>
|
||||
<project name="platform/bootable/recovery" path="bootable/recovery" revision="425f8b5fadf5889834c5acd27d23c9e0b2129c28"/>
|
||||
<project name="device/common" path="device/common" revision="42b808b7e93d0619286ae8e59110b176b7732389"/>
|
||||
<project name="device/sample" path="device/sample" revision="237bd668d0f114d801a8d6455ef5e02cc3577587"/>
|
||||
<project name="platform_external_apriori" path="external/apriori" remote="b2g" revision="11816ad0406744f963537b23d68ed9c2afb412bd"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="34ea6163f9f0e0122fb0bb03607eccdca31ced7a"/>
|
||||
<project name="platform/external/bluetooth/bluez" path="external/bluetooth/bluez" revision="52a1a862a8bac319652b8f82d9541ba40bfa45ce"/>
|
||||
<project name="platform/external/bluetooth/glib" path="external/bluetooth/glib" revision="0febbc94a1c40c0227958b7f27764145ec6297bc"/>
|
||||
<project name="platform/external/bluetooth/hcidump" path="external/bluetooth/hcidump" revision="03c410e4f80e73d2650b2d6973a11984d096100e"/>
|
||||
@ -42,8 +51,6 @@
|
||||
<project name="platform/external/dbus" path="external/dbus" revision="07274c4eed41f20d79265f049710b5bf08a3ef20"/>
|
||||
<project name="platform/external/dhcpcd" path="external/dhcpcd" revision="c543c0f363dee48a80ef17cff1d5b98fd426b01a"/>
|
||||
<project name="platform/external/dnsmasq" path="external/dnsmasq" revision="4e6e5ea3872facb3ad2d84784c108865cc8d536d"/>
|
||||
<project name="platform_external_elfcopy" path="external/elfcopy" remote="b2g" revision="62c1bed1c4505369cac2e72fbe30452a598fb690"/>
|
||||
<project name="platform_external_elfutils" path="external/elfutils" remote="b2g" revision="72940dec691fa3255e13df01f8c53b620e446066"/>
|
||||
<project name="platform/external/expat" path="external/expat" revision="728203a4d1c40de1a5fa5dcfa68057faaf3aac50"/>
|
||||
<project name="platform/external/fdlibm" path="external/fdlibm" revision="6d128260b94c366d4066c8452e6a8d23533db244"/>
|
||||
<project name="platform/external/flac" path="external/flac" revision="e3b0a1fcadcfd1cfd2ebe217ada8ae12ceb3e292"/>
|
||||
@ -53,6 +60,7 @@
|
||||
<project name="platform/external/harfbuzz" path="external/harfbuzz" revision="6b66309486b04d2107ab745a48d37c659da468fd"/>
|
||||
<!-- icu4c is missing the default tag in caf, that's the *only* reason for the hardcode -->
|
||||
<project name="platform/external/icu4c" path="external/icu4c" revision="0fa67b93b831c6636ca18b152a1b1b14cc99b034"/>
|
||||
<project name="platform/external/iproute2" path="external/iproute2" revision="c66c5716d5335e450f7a7b71ccc6a604fb2f41d2"/>
|
||||
<project name="platform/external/iptables" path="external/iptables" revision="32e954f4bcb000ce8f3d8be13bce435eef0cb725"/>
|
||||
<project name="platform/external/jpeg" path="external/jpeg" revision="3d70825f75a11a0e625c7be4f5889571e7509456"/>
|
||||
<project name="platform/external/libgsm" path="external/libgsm" revision="45b9af864cff193c98605d3fb8fb88d01e209e4a"/>
|
||||
@ -62,11 +70,9 @@
|
||||
<project name="platform/external/libpng" path="external/libpng" revision="b994ba2e3e54734c34f624926e5fbfbca5735cde"/>
|
||||
<project name="platform/external/libvpx" path="external/libvpx" revision="7513a8f86d594184f9ac6250289d22817fe5d740"/>
|
||||
<project name="platform/external/mksh" path="external/mksh" revision="2aa9dc166c783c3afbaa90dd8b5b334031c4ad4d"/>
|
||||
<project name="platform_external_opensans" path="external/opensans" remote="b2g" revision="b5b4c226ca1d71e936153cf679dda6d3d60e2354"/>
|
||||
<project name="platform/external/openssl" path="external/openssl" revision="95c40b11e6d98ad944d64c38e30693ac025e2c88"/>
|
||||
<project name="platform/external/protobuf" path="external/protobuf" revision="046e97ace354aa350845465635e4816fb27c9994"/>
|
||||
<project name="platform/external/safe-iop" path="external/safe-iop" revision="6282e9cd4c1eb3dc16bfb3592eff58fb6bd13022"/>
|
||||
<project name="screencap-gonk" path="external/screencap-gonk" remote="b2g" revision="e6403c71e9eca8cb943739d5a0a192deac60fc51"/>
|
||||
<project name="platform/external/skia" path="external/skia" revision="8c1c7cfacd82a174c65fcbf839d7037e3692aee8"/>
|
||||
<project name="platform/external/sonivox" path="external/sonivox" revision="7839a53c7c252fc5f8b1ab685a00cfcf0c7d0c39"/>
|
||||
<project name="platform/external/speex" path="external/speex" revision="863479d6859d3cae16e76db5f97ea3e35b7f2bd8"/>
|
||||
@ -81,9 +87,8 @@
|
||||
<project name="platform/external/webrtc" path="external/webrtc" revision="117f1940fa0f4529783bdefe5bf3ac255e707ace"/>
|
||||
<project name="platform/external/wpa_supplicant" path="external/wpa_supplicant" revision="550e9f4ace79b684e246f6a17d3b8d30999afc4e"/>
|
||||
<project name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="7a182ff25e44f2bc66448a9b9738a97ab43aaaaf"/>
|
||||
<project name="platform/external/zlib" path="external/zlib" revision="d381d56e7dd4572a47935b353c8893727f5f50cb"/>
|
||||
<project name="platform/external/yaffs2" path="external/yaffs2" revision="ccb649c33105a3f537dd4e71111d7afe0dd5e95c"/>
|
||||
<project name="platform_frameworks_base" path="frameworks/base" remote="b2g" revision="6afc63abe52776ae6a1d32a2d927e630a743a86a"/>
|
||||
<project name="platform/external/zlib" path="external/zlib" revision="d381d56e7dd4572a47935b353c8893727f5f50cb"/>
|
||||
<project name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="7f2253709fc8ec200997a684b44ad946ba813f16"/>
|
||||
<project name="platform/frameworks/support" path="frameworks/support" revision="b0d785331d7dc80ac06daa12434830ddcea7cc52"/>
|
||||
<project name="platform/hardware/libhardware" path="hardware/libhardware" revision="8d951a39a693d00e90e3d8c4d64fe619d0a1e72f"/>
|
||||
@ -91,21 +96,17 @@
|
||||
<project name="platform/libcore" path="libcore" revision="027162a7afeec9f68a8e0b25bbf3c574ee4ed66d"/>
|
||||
<project name="platform/ndk" path="ndk" revision="ffbb37a4985ca4aa9ae11f5593e79efcabce5515"/>
|
||||
<project name="platform/prebuilt" path="prebuilt" revision="a4062cc40fcaa0776dc880ce591b4c515d36f420"/>
|
||||
<project 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="d2685281e2e54ca14d1df304867aa82c37b27162"/>
|
||||
<project 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="627f9b20fc518937b93747a7ff1ed4f5ed46e06f"/>
|
||||
<project name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" revision="d9735fc81434f2af2c44d86ca57740c673c8d9bc"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="acba00cdb4596c6dcb61ed06f14cf4ec89623539"/>
|
||||
<project name="platform/system/bluetooth" path="system/bluetooth" revision="507e46e553586bec971551322f20d066c80a0788"/>
|
||||
<project name="platform/system/core" path="system/core" revision="91e5551f88aea5aa64e1b4f8b4b52d7be2b28b64"/>
|
||||
<project name="platform/system/extras" path="system/extras" revision="0205c49fedf29620165c6b4e6db3d13739c93396"/>
|
||||
<project name="platform/system/media" path="system/media" revision="7f17e3995d1588cfcc309b56525652794b6513ef"/>
|
||||
<project name="platform/system/netd" path="system/netd" revision="3d298fde142bee3fc4f07f63f16f2d8ce42339c0"/>
|
||||
<project name="platform/system/vold" path="system/vold" revision="919829940468066a32f403980b43f6ebfee5d314"/>
|
||||
<!-- Emulator specific things -->
|
||||
<project name="android-development" path="development" remote="b2g" revision="2bdf22305b523af644e1891b4ddfd9229336d0ce"/>
|
||||
<!-- Emulator-specific things -->
|
||||
<project name="device_generic_goldfish" path="device/generic/goldfish" remote="b2g" revision="fc5f390fa314385e2a84629ea88284a60b40f7c4"/>
|
||||
<project name="platform/external/iproute2" path="external/iproute2" revision="c66c5716d5335e450f7a7b71ccc6a604fb2f41d2"/>
|
||||
<project 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="d2685281e2e54ca14d1df304867aa82c37b27162"/>
|
||||
<project 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="627f9b20fc518937b93747a7ff1ed4f5ed46e06f"/>
|
||||
<project name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" revision="d9735fc81434f2af2c44d86ca57740c673c8d9bc"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="acba00cdb4596c6dcb61ed06f14cf4ec89623539"/>
|
||||
<project name="platform_prebuilts_qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="02c32feb2fe97037be0ac4dace3a6a5025ac895d"/>
|
||||
<project name="android-sdk" path="sdk" remote="b2g" revision="4f46930827957afbce500a4a920755a218bf3155"/>
|
||||
<project name="darwinstreamingserver" path="system/darwinstreamingserver" remote="b2g" revision="cf85968c7f85e0ec36e72c87ceb4837a943b8af6"/>
|
||||
</manifest>
|
||||
|
@ -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="ea673b5c4cc19c3daca072691a659c68e4c6937f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="37250b125e0db6966875d3b37b117f6d9b76cbc0"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9a58f2e395da17c252f61f28900b5b09aeb813bd"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ac7e9ae8a24ab4a3f3da801ca53f95f39a32b89f"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0e781b61e61b065ca9f3b05ed01b0ef1d9855010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="ce651a7711042301cbc9c6866be0eeb9e1ceab66"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
|
||||
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<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="ea673b5c4cc19c3daca072691a659c68e4c6937f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="37250b125e0db6966875d3b37b117f6d9b76cbc0"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9a58f2e395da17c252f61f28900b5b09aeb813bd"/>
|
||||
<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="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0e781b61e61b065ca9f3b05ed01b0ef1d9855010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="ce651a7711042301cbc9c6866be0eeb9e1ceab66"/>
|
||||
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
|
||||
<!-- 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"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<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="ea673b5c4cc19c3daca072691a659c68e4c6937f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="37250b125e0db6966875d3b37b117f6d9b76cbc0"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9a58f2e395da17c252f61f28900b5b09aeb813bd"/>
|
||||
<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="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0e781b61e61b065ca9f3b05ed01b0ef1d9855010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="ce651a7711042301cbc9c6866be0eeb9e1ceab66"/>
|
||||
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="pdk,linux" name="platform/prebuilts/clang/linux-x86/host/3.5" path="prebuilts/clang/linux-x86/host/3.5" revision="ffc05a232799fe8fcb3e47b7440b52b1fb4244c0"/>
|
||||
|
@ -1,39 +1,48 @@
|
||||
<?xml version="1.0" ?><manifest>
|
||||
<!--original fetch url was https://android.googlesource.com/-->
|
||||
<remote fetch="https://git.mozilla.org/external/aosp" name="aosp"/>
|
||||
<!--original fetch url was git://codeaurora.org/-->
|
||||
<remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
|
||||
<!--original fetch url was https://git.mozilla.org/b2g-->
|
||||
<remote fetch="https://git.mozilla.org/b2g" name="b2gmozilla"/>
|
||||
<!--original fetch url was git://github.com/apitrace/-->
|
||||
<remote fetch="https://git.mozilla.org/external/apitrace" name="apitrace"/>
|
||||
<!--original fetch url was git://github.com/mozilla-b2g/-->
|
||||
<remote fetch="https://git.mozilla.org/b2g" name="b2g"/>
|
||||
<!--original fetch url was https://git.mozilla.org/b2g-->
|
||||
<remote fetch="https://git.mozilla.org/b2g" name="b2gmozilla"/>
|
||||
<!--original fetch url was git://codeaurora.org/-->
|
||||
<remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
|
||||
<!--original fetch url was git://github.com/mozilla/-->
|
||||
<remote fetch="https://git.mozilla.org/b2g" name="mozilla"/>
|
||||
<!--original fetch url was https://git.mozilla.org/releases-->
|
||||
<remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
|
||||
<!--original fetch url was git://github.com/apitrace/-->
|
||||
<remote fetch="https://git.mozilla.org/external/apitrace" name="apitrace"/>
|
||||
<default remote="caf" revision="refs/tags/android-4.0.4_r2.1" sync-j="4"/>
|
||||
<!-- Gonk specific things and forks -->
|
||||
<!-- Gecko and Gaia -->
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="37250b125e0db6966875d3b37b117f6d9b76cbc0"/>
|
||||
<!-- Gonk-specific things and forks -->
|
||||
<project name="platform_bionic" path="bionic" remote="b2g" revision="e2b3733ba3fa5e3f404e983d2e4142b1f6b1b846"/>
|
||||
<project name="platform_build" path="build" remote="b2g" revision="1b0db93fb6b870b03467aff50d6419771ba0d88c">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="ea673b5c4cc19c3daca072691a659c68e4c6937f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9a58f2e395da17c252f61f28900b5b09aeb813bd"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="cb4604d5a578efd027277059ce3e0f6e3af59bd1"/>
|
||||
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="c72c9278ddc2f442d193474993d36e7f2cfb08c4"/>
|
||||
<project name="android-development" path="development" remote="b2g" revision="2bdf22305b523af644e1891b4ddfd9229336d0ce"/>
|
||||
<project name="platform_external_apriori" path="external/apriori" remote="b2g" revision="11816ad0406744f963537b23d68ed9c2afb412bd"/>
|
||||
<project name="platform_external_elfcopy" path="external/elfcopy" remote="b2g" revision="62c1bed1c4505369cac2e72fbe30452a598fb690"/>
|
||||
<project name="platform_external_elfutils" path="external/elfutils" remote="b2g" revision="72940dec691fa3255e13df01f8c53b620e446066"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ac7e9ae8a24ab4a3f3da801ca53f95f39a32b89f"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="34ea6163f9f0e0122fb0bb03607eccdca31ced7a"/>
|
||||
<project name="platform_external_opensans" path="external/opensans" remote="b2g" revision="b5b4c226ca1d71e936153cf679dda6d3d60e2354"/>
|
||||
<project name="screencap-gonk" path="external/screencap-gonk" remote="b2g" revision="e6403c71e9eca8cb943739d5a0a192deac60fc51"/>
|
||||
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="c72c9278ddc2f442d193474993d36e7f2cfb08c4"/>
|
||||
<project name="platform_frameworks_base" path="frameworks/base" remote="b2g" revision="6afc63abe52776ae6a1d32a2d927e630a743a86a"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9a58f2e395da17c252f61f28900b5b09aeb813bd"/>
|
||||
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="cb4604d5a578efd027277059ce3e0f6e3af59bd1"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="android-sdk" path="sdk" remote="b2g" revision="4f46930827957afbce500a4a920755a218bf3155"/>
|
||||
<project name="darwinstreamingserver" path="system/darwinstreamingserver" remote="b2g" revision="cf85968c7f85e0ec36e72c87ceb4837a943b8af6"/>
|
||||
<!-- Stock Android things -->
|
||||
<project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
|
||||
<project name="platform_bionic" path="bionic" remote="b2g" revision="e2b3733ba3fa5e3f404e983d2e4142b1f6b1b846"/>
|
||||
<project name="platform/bootable/recovery" path="bootable/recovery" revision="425f8b5fadf5889834c5acd27d23c9e0b2129c28"/>
|
||||
<project name="device/common" path="device/common" revision="42b808b7e93d0619286ae8e59110b176b7732389"/>
|
||||
<project name="device/sample" path="device/sample" revision="237bd668d0f114d801a8d6455ef5e02cc3577587"/>
|
||||
<project name="platform_external_apriori" path="external/apriori" remote="b2g" revision="11816ad0406744f963537b23d68ed9c2afb412bd"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="34ea6163f9f0e0122fb0bb03607eccdca31ced7a"/>
|
||||
<project name="platform/external/bluetooth/bluez" path="external/bluetooth/bluez" revision="52a1a862a8bac319652b8f82d9541ba40bfa45ce"/>
|
||||
<project name="platform/external/bluetooth/glib" path="external/bluetooth/glib" revision="0febbc94a1c40c0227958b7f27764145ec6297bc"/>
|
||||
<project name="platform/external/bluetooth/hcidump" path="external/bluetooth/hcidump" revision="03c410e4f80e73d2650b2d6973a11984d096100e"/>
|
||||
@ -42,8 +51,6 @@
|
||||
<project name="platform/external/dbus" path="external/dbus" revision="07274c4eed41f20d79265f049710b5bf08a3ef20"/>
|
||||
<project name="platform/external/dhcpcd" path="external/dhcpcd" revision="c543c0f363dee48a80ef17cff1d5b98fd426b01a"/>
|
||||
<project name="platform/external/dnsmasq" path="external/dnsmasq" revision="4e6e5ea3872facb3ad2d84784c108865cc8d536d"/>
|
||||
<project name="platform_external_elfcopy" path="external/elfcopy" remote="b2g" revision="62c1bed1c4505369cac2e72fbe30452a598fb690"/>
|
||||
<project name="platform_external_elfutils" path="external/elfutils" remote="b2g" revision="72940dec691fa3255e13df01f8c53b620e446066"/>
|
||||
<project name="platform/external/expat" path="external/expat" revision="728203a4d1c40de1a5fa5dcfa68057faaf3aac50"/>
|
||||
<project name="platform/external/fdlibm" path="external/fdlibm" revision="6d128260b94c366d4066c8452e6a8d23533db244"/>
|
||||
<project name="platform/external/flac" path="external/flac" revision="e3b0a1fcadcfd1cfd2ebe217ada8ae12ceb3e292"/>
|
||||
@ -53,6 +60,7 @@
|
||||
<project name="platform/external/harfbuzz" path="external/harfbuzz" revision="6b66309486b04d2107ab745a48d37c659da468fd"/>
|
||||
<!-- icu4c is missing the default tag in caf, that's the *only* reason for the hardcode -->
|
||||
<project name="platform/external/icu4c" path="external/icu4c" revision="0fa67b93b831c6636ca18b152a1b1b14cc99b034"/>
|
||||
<project name="platform/external/iproute2" path="external/iproute2" revision="c66c5716d5335e450f7a7b71ccc6a604fb2f41d2"/>
|
||||
<project name="platform/external/iptables" path="external/iptables" revision="32e954f4bcb000ce8f3d8be13bce435eef0cb725"/>
|
||||
<project name="platform/external/jpeg" path="external/jpeg" revision="3d70825f75a11a0e625c7be4f5889571e7509456"/>
|
||||
<project name="platform/external/libgsm" path="external/libgsm" revision="45b9af864cff193c98605d3fb8fb88d01e209e4a"/>
|
||||
@ -62,11 +70,9 @@
|
||||
<project name="platform/external/libpng" path="external/libpng" revision="b994ba2e3e54734c34f624926e5fbfbca5735cde"/>
|
||||
<project name="platform/external/libvpx" path="external/libvpx" revision="7513a8f86d594184f9ac6250289d22817fe5d740"/>
|
||||
<project name="platform/external/mksh" path="external/mksh" revision="2aa9dc166c783c3afbaa90dd8b5b334031c4ad4d"/>
|
||||
<project name="platform_external_opensans" path="external/opensans" remote="b2g" revision="b5b4c226ca1d71e936153cf679dda6d3d60e2354"/>
|
||||
<project name="platform/external/openssl" path="external/openssl" revision="95c40b11e6d98ad944d64c38e30693ac025e2c88"/>
|
||||
<project name="platform/external/protobuf" path="external/protobuf" revision="046e97ace354aa350845465635e4816fb27c9994"/>
|
||||
<project name="platform/external/safe-iop" path="external/safe-iop" revision="6282e9cd4c1eb3dc16bfb3592eff58fb6bd13022"/>
|
||||
<project name="screencap-gonk" path="external/screencap-gonk" remote="b2g" revision="e6403c71e9eca8cb943739d5a0a192deac60fc51"/>
|
||||
<project name="platform/external/skia" path="external/skia" revision="8c1c7cfacd82a174c65fcbf839d7037e3692aee8"/>
|
||||
<project name="platform/external/sonivox" path="external/sonivox" revision="7839a53c7c252fc5f8b1ab685a00cfcf0c7d0c39"/>
|
||||
<project name="platform/external/speex" path="external/speex" revision="863479d6859d3cae16e76db5f97ea3e35b7f2bd8"/>
|
||||
@ -81,9 +87,8 @@
|
||||
<project name="platform/external/webrtc" path="external/webrtc" revision="117f1940fa0f4529783bdefe5bf3ac255e707ace"/>
|
||||
<project name="platform/external/wpa_supplicant" path="external/wpa_supplicant" revision="550e9f4ace79b684e246f6a17d3b8d30999afc4e"/>
|
||||
<project name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="7a182ff25e44f2bc66448a9b9738a97ab43aaaaf"/>
|
||||
<project name="platform/external/zlib" path="external/zlib" revision="d381d56e7dd4572a47935b353c8893727f5f50cb"/>
|
||||
<project name="platform/external/yaffs2" path="external/yaffs2" revision="ccb649c33105a3f537dd4e71111d7afe0dd5e95c"/>
|
||||
<project name="platform_frameworks_base" path="frameworks/base" remote="b2g" revision="6afc63abe52776ae6a1d32a2d927e630a743a86a"/>
|
||||
<project name="platform/external/zlib" path="external/zlib" revision="d381d56e7dd4572a47935b353c8893727f5f50cb"/>
|
||||
<project name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="7f2253709fc8ec200997a684b44ad946ba813f16"/>
|
||||
<project name="platform/frameworks/support" path="frameworks/support" revision="b0d785331d7dc80ac06daa12434830ddcea7cc52"/>
|
||||
<project name="platform/hardware/libhardware" path="hardware/libhardware" revision="8d951a39a693d00e90e3d8c4d64fe619d0a1e72f"/>
|
||||
@ -91,21 +96,17 @@
|
||||
<project name="platform/libcore" path="libcore" revision="027162a7afeec9f68a8e0b25bbf3c574ee4ed66d"/>
|
||||
<project name="platform/ndk" path="ndk" revision="ffbb37a4985ca4aa9ae11f5593e79efcabce5515"/>
|
||||
<project name="platform/prebuilt" path="prebuilt" revision="a4062cc40fcaa0776dc880ce591b4c515d36f420"/>
|
||||
<project 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="d2685281e2e54ca14d1df304867aa82c37b27162"/>
|
||||
<project 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="627f9b20fc518937b93747a7ff1ed4f5ed46e06f"/>
|
||||
<project name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" revision="d9735fc81434f2af2c44d86ca57740c673c8d9bc"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="acba00cdb4596c6dcb61ed06f14cf4ec89623539"/>
|
||||
<project name="platform/system/bluetooth" path="system/bluetooth" revision="507e46e553586bec971551322f20d066c80a0788"/>
|
||||
<project name="platform/system/core" path="system/core" revision="91e5551f88aea5aa64e1b4f8b4b52d7be2b28b64"/>
|
||||
<project name="platform/system/extras" path="system/extras" revision="0205c49fedf29620165c6b4e6db3d13739c93396"/>
|
||||
<project name="platform/system/media" path="system/media" revision="7f17e3995d1588cfcc309b56525652794b6513ef"/>
|
||||
<project name="platform/system/netd" path="system/netd" revision="3d298fde142bee3fc4f07f63f16f2d8ce42339c0"/>
|
||||
<project name="platform/system/vold" path="system/vold" revision="919829940468066a32f403980b43f6ebfee5d314"/>
|
||||
<!-- Emulator specific things -->
|
||||
<project name="android-development" path="development" remote="b2g" revision="2bdf22305b523af644e1891b4ddfd9229336d0ce"/>
|
||||
<!-- Emulator-specific things -->
|
||||
<project name="device_generic_goldfish" path="device/generic/goldfish" remote="b2g" revision="fc5f390fa314385e2a84629ea88284a60b40f7c4"/>
|
||||
<project name="platform/external/iproute2" path="external/iproute2" revision="c66c5716d5335e450f7a7b71ccc6a604fb2f41d2"/>
|
||||
<project 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="d2685281e2e54ca14d1df304867aa82c37b27162"/>
|
||||
<project 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="627f9b20fc518937b93747a7ff1ed4f5ed46e06f"/>
|
||||
<project name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.8" revision="d9735fc81434f2af2c44d86ca57740c673c8d9bc"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="acba00cdb4596c6dcb61ed06f14cf4ec89623539"/>
|
||||
<project name="platform_prebuilts_qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="02c32feb2fe97037be0ac4dace3a6a5025ac895d"/>
|
||||
<project name="android-sdk" path="sdk" remote="b2g" revision="4f46930827957afbce500a4a920755a218bf3155"/>
|
||||
<project name="darwinstreamingserver" path="system/darwinstreamingserver" remote="b2g" revision="cf85968c7f85e0ec36e72c87ceb4837a943b8af6"/>
|
||||
</manifest>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<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="ea673b5c4cc19c3daca072691a659c68e4c6937f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="37250b125e0db6966875d3b37b117f6d9b76cbc0"/>
|
||||
<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="9a58f2e395da17c252f61f28900b5b09aeb813bd"/>
|
||||
@ -24,7 +24,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0e781b61e61b065ca9f3b05ed01b0ef1d9855010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="ce651a7711042301cbc9c6866be0eeb9e1ceab66"/>
|
||||
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
|
||||
<!-- 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"/>
|
||||
|
@ -1,9 +1,9 @@
|
||||
{
|
||||
"git": {
|
||||
"git_revision": "ea673b5c4cc19c3daca072691a659c68e4c6937f",
|
||||
"git_revision": "37250b125e0db6966875d3b37b117f6d9b76cbc0",
|
||||
"remote": "https://git.mozilla.org/releases/gaia.git",
|
||||
"branch": ""
|
||||
},
|
||||
"revision": "f5fc1ed93387c0ff18811fb306e061b8ca77bd40",
|
||||
"revision": "e094d698a05cd04c90815dd11579326f43f02a6b",
|
||||
"repo_path": "integration/gaia-central"
|
||||
}
|
||||
|
@ -15,7 +15,7 @@
|
||||
<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="ea673b5c4cc19c3daca072691a659c68e4c6937f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="37250b125e0db6966875d3b37b117f6d9b76cbc0"/>
|
||||
<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="9a58f2e395da17c252f61f28900b5b09aeb813bd"/>
|
||||
@ -24,7 +24,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0e781b61e61b065ca9f3b05ed01b0ef1d9855010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="ce651a7711042301cbc9c6866be0eeb9e1ceab66"/>
|
||||
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
|
||||
<!-- 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"/>
|
||||
|
@ -18,10 +18,10 @@
|
||||
<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="ea673b5c4cc19c3daca072691a659c68e4c6937f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="37250b125e0db6966875d3b37b117f6d9b76cbc0"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="9a58f2e395da17c252f61f28900b5b09aeb813bd"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="ac7e9ae8a24ab4a3f3da801ca53f95f39a32b89f"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0e781b61e61b065ca9f3b05ed01b0ef1d9855010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="ce651a7711042301cbc9c6866be0eeb9e1ceab66"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
|
||||
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<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="ea673b5c4cc19c3daca072691a659c68e4c6937f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="37250b125e0db6966875d3b37b117f6d9b76cbc0"/>
|
||||
<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="9a58f2e395da17c252f61f28900b5b09aeb813bd"/>
|
||||
@ -24,7 +24,7 @@
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="5f931350fbc87c3df9db8b0ceb37734b8b471593"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="48d8c7c950745f1b166b42125e6f0d3293d71636"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="0e781b61e61b065ca9f3b05ed01b0ef1d9855010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="ce651a7711042301cbc9c6866be0eeb9e1ceab66"/>
|
||||
<project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="pdk,linux" name="platform/prebuilts/clang/linux-x86/host/3.5" path="prebuilts/clang/linux-x86/host/3.5" revision="ffc05a232799fe8fcb3e47b7440b52b1fb4244c0"/>
|
||||
|
@ -63,3 +63,6 @@ MOZ_JSDOWNLOADS=1
|
||||
MOZ_BUNDLED_FONTS=1
|
||||
|
||||
export JS_GC_SMALL_CHUNK_SIZE=1
|
||||
|
||||
# Include the DevTools client, not just the server (which is the default)
|
||||
MOZ_DEVTOOLS=all
|
||||
|
@ -53,3 +53,10 @@ pref("media.useAudioChannelService", false);
|
||||
#ifdef ENABLE_MARIONETTE
|
||||
pref("b2g.is_mulet", true);
|
||||
#endif
|
||||
|
||||
// Most DevTools prefs are set from the shared file
|
||||
// devtools/client/preferences/devtools.js, but this one is currently set
|
||||
// per-app or per-channel.
|
||||
// Number of usages of the web console or scratchpad. If this is less than 5,
|
||||
// then pasting code into the web console or scratchpad is disabled
|
||||
pref("devtools.selfxss.count", 5);
|
||||
|
73
b2g/installer/flash.bat
Executable file
73
b2g/installer/flash.bat
Executable file
@ -0,0 +1,73 @@
|
||||
@ECHO OFF
|
||||
|
||||
REM read config file
|
||||
setlocal ENABLEDELAYEDEXPANSION
|
||||
set loop=0
|
||||
for /F "tokens=*" %%A in (.config) do (
|
||||
SET /A loop=!loop! + 1
|
||||
set %%A
|
||||
)
|
||||
|
||||
set DEVICE_FOUND=0
|
||||
|
||||
REM nexus has device instead of product name
|
||||
IF [%PRODUCT_NAME%]==[] (
|
||||
set PRODUCT_NAME=%DEVICE%
|
||||
)
|
||||
|
||||
REM if nexus 4 assume you are in fastboot mode, can't seem to find drivers
|
||||
IF [%DEVICE%]==[mako] (
|
||||
call :flash
|
||||
)
|
||||
|
||||
REM push device from adb to fastboot mode
|
||||
win_adb kill-server
|
||||
win_adb devices
|
||||
win_adb get-state > devicestate.txt
|
||||
set /p DEVICE_STATE= < devicestate.txt
|
||||
|
||||
IF NOT "%DEVICE_STATE%"=="device" (
|
||||
ECHO Please check :
|
||||
ECHO 1. to make sure that only one device is connected to the computer
|
||||
ECHO 2. the device is turned on with the screen showing
|
||||
ECHO 3. the device is set to debugging via USB : ADB Only or ADB and Devtools
|
||||
ECHO 4. the device drivers are installed on the computer.
|
||||
Del devicestate.txt
|
||||
PAUSE
|
||||
EXIT /b
|
||||
)
|
||||
|
||||
Del devicestate.txt
|
||||
win_adb reboot bootloader
|
||||
|
||||
TIMEOUT 5
|
||||
|
||||
:flash
|
||||
win_fastboot devices 2> fastboot_state.txt
|
||||
set /p FASTBOOT_STATE= < fastboot_state.txt
|
||||
|
||||
IF NOT [%FASTBOOT_STATE%]==[] (
|
||||
ECHO Please check :
|
||||
ECHO 1. to make sure that only one device is connected to the computer
|
||||
ECHO 2. the device is turned on with an indication that the device is in fastboot mode
|
||||
ECHO 3. the fastboot drivers are installed on the computer.
|
||||
Del fastboot_state.txt
|
||||
PAUSE
|
||||
EXIT /b
|
||||
)
|
||||
|
||||
Del fastboot_state.txt
|
||||
|
||||
ECHO "Flashing build. If nothing mentions that it flashed anything and it looks stuck, make sure you have the drivers installed."
|
||||
win_fastboot flash boot out/target/product/%PRODUCT_NAME%/boot.img
|
||||
win_fastboot flash system out/target/product/%PRODUCT_NAME%/system.img
|
||||
win_fastboot flash persist out/target/product/%PRODUCT_NAME%/persist.img
|
||||
win_fastboot flash recovery out/target/product/%PRODUCT_NAME%/recovery.img
|
||||
win_fastboot flash cache out/target/product/%PRODUCT_NAME%/cache.img
|
||||
win_fastboot flash userdata out/target/product/%PRODUCT_NAME%/userdata.img
|
||||
|
||||
ECHO "Done..."
|
||||
|
||||
win_fastboot reboot
|
||||
echo "Just close the windows as you wish."
|
||||
TIMEOUT 5
|
@ -748,6 +748,9 @@
|
||||
; DevTools
|
||||
@RESPATH@/chrome/devtools@JAREXT@
|
||||
@RESPATH@/chrome/devtools.manifest
|
||||
#ifdef MOZ_GRAPHENE
|
||||
@RESPATH@/@PREF_DIR@/devtools.js
|
||||
#endif
|
||||
|
||||
; shell icons
|
||||
#ifdef XP_UNIX
|
||||
|
@ -171,11 +171,14 @@ var LoopUI;
|
||||
this.LoopAPI.initialize();
|
||||
|
||||
let anchor = event ? event.target : this.toolbarButton.anchor;
|
||||
|
||||
let setHeight = 410;
|
||||
if (gBrowser.selectedBrowser.getAttribute("remote") === "true") {
|
||||
setHeight = 262;
|
||||
}
|
||||
this.PanelFrame.showPopup(window, anchor,
|
||||
"loop", null, "about:looppanel",
|
||||
// Loop wants a fixed size for the panel. This also stops it dynamically resizing.
|
||||
{ width: 330, height: 410 },
|
||||
{ width: 330, height: setHeight },
|
||||
callback);
|
||||
});
|
||||
});
|
||||
@ -290,6 +293,7 @@ var LoopUI;
|
||||
} else if (aReason == "login" && this.MozLoopService.userProfile) {
|
||||
state = "active";
|
||||
mozL10nId += "-active";
|
||||
suffix += "2";
|
||||
} else if (this.MozLoopService.doNotDisturb) {
|
||||
state = "disabled";
|
||||
mozL10nId += "-donotdisturb";
|
||||
@ -302,11 +306,15 @@ var LoopUI;
|
||||
mozL10nId += "-active";
|
||||
}
|
||||
|
||||
suffix += "2";
|
||||
this.updateTooltiptext(mozL10nId + suffix);
|
||||
this.toolbarButton.node.setAttribute("state", state);
|
||||
});
|
||||
return;
|
||||
} else {
|
||||
suffix += "2";
|
||||
}
|
||||
|
||||
this.toolbarButton.node.setAttribute("state", state);
|
||||
this.updateTooltiptext(mozL10nId + suffix);
|
||||
},
|
||||
|
@ -667,6 +667,7 @@ html|*#fullscreen-warning {
|
||||
}
|
||||
html|*#fullscreen-warning:not([hidden]) {
|
||||
display: flex;
|
||||
will-change: transform;
|
||||
}
|
||||
html|*#fullscreen-warning[onscreen] {
|
||||
transform: translate(-50%, 50px);
|
||||
|
@ -518,9 +518,10 @@ var ClickEventHandler = {
|
||||
while (node && !href) {
|
||||
if (node.nodeType == content.Node.ELEMENT_NODE) {
|
||||
href = node.getAttributeNS("http://www.w3.org/1999/xlink", "href");
|
||||
if (href)
|
||||
if (href) {
|
||||
baseURI = node.ownerDocument.baseURIObject;
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
node = node.parentNode;
|
||||
}
|
||||
|
@ -8,6 +8,5 @@ support-files =
|
||||
[browser_notification_open_settings.js]
|
||||
[browser_notification_remove_permission.js]
|
||||
[browser_notification_permission_migration.js]
|
||||
|
||||
[browser_notification_tab_switching.js]
|
||||
skip-if = buildapp == 'mulet' || e10s # Bug 1100662 - content access causing uncaught exception - Error: cannot ipc non-cpow object at chrome://mochitests/content/browser/browser/base/content/test/general/browser_notification_tab_switching.js:32 (or in RemoteAddonsChild.jsm)
|
||||
skip-if = buildapp == 'mulet'
|
||||
|
@ -25,6 +25,11 @@ add_task(function* test_notificationClose() {
|
||||
return;
|
||||
}
|
||||
|
||||
let alertTitleLabel = alertWindow.document.getElementById("alertTitleLabel");
|
||||
is(alertTitleLabel.value, "Test title", "Title text of notification should be present");
|
||||
let alertTextLabel = alertWindow.document.getElementById("alertTextLabel");
|
||||
is(alertTextLabel.textContent, "Test body", "Body text of notification should be present");
|
||||
|
||||
let alertCloseButton = alertWindow.document.querySelector(".alertCloseButton");
|
||||
is(alertCloseButton.localName, "toolbarbutton", "close button found");
|
||||
let promiseBeforeUnloadEvent =
|
||||
|
@ -9,87 +9,57 @@ var notification;
|
||||
var notificationURL = "http://example.org/browser/browser/base/content/test/alerts/file_dom_notifications.html";
|
||||
var newWindowOpenedFromTab;
|
||||
|
||||
function test () {
|
||||
waitForExplicitFinish();
|
||||
|
||||
add_task(function* test_notificationPreventDefaultAndSwitchTabs() {
|
||||
let pm = Services.perms;
|
||||
registerCleanupFunction(function() {
|
||||
pm.remove(makeURI(notificationURL), "desktop-notification");
|
||||
gBrowser.removeTab(tab);
|
||||
window.restore();
|
||||
});
|
||||
|
||||
pm.add(makeURI(notificationURL), "desktop-notification", pm.ALLOW_ACTION);
|
||||
|
||||
tab = gBrowser.addTab(notificationURL);
|
||||
tab.linkedBrowser.addEventListener("load", onLoad, true);
|
||||
}
|
||||
let originalTab = gBrowser.selectedTab;
|
||||
yield BrowserTestUtils.withNewTab({
|
||||
gBrowser,
|
||||
url: notificationURL
|
||||
}, function* dummyTabTask(aBrowser) {
|
||||
// Put new tab in background so it is obvious when it is re-focused.
|
||||
yield BrowserTestUtils.switchTab(gBrowser, originalTab);
|
||||
isnot(gBrowser.selectedBrowser, aBrowser, "Notification page loaded as a background tab");
|
||||
|
||||
function onLoad() {
|
||||
isnot(gBrowser.selectedTab, tab, "Notification page loaded as a background tab");
|
||||
tab.linkedBrowser.removeEventListener("load", onLoad, true);
|
||||
let win = tab.linkedBrowser.contentWindow.wrappedJSObject;
|
||||
win.newWindow = win.open("about:blank", "", "height=100,width=100");
|
||||
newWindowOpenedFromTab = win.newWindow;
|
||||
win.newWindow.addEventListener("load", function() {
|
||||
info("new window loaded");
|
||||
win.newWindow.addEventListener("blur", function b() {
|
||||
info("new window got blur");
|
||||
win.newWindow.removeEventListener("blur", b);
|
||||
notification = win.showNotification1();
|
||||
win.newWindow.addEventListener("focus", onNewWindowFocused);
|
||||
notification.addEventListener("show", onAlertShowing);
|
||||
});
|
||||
|
||||
function waitUntilNewWindowHasFocus() {
|
||||
if (!win.newWindow.document.hasFocus()) {
|
||||
setTimeout(waitUntilNewWindowHasFocus, 50);
|
||||
} else {
|
||||
// Focus another window so that new window gets blur event.
|
||||
gBrowser.selectedBrowser.contentWindow.focus();
|
||||
}
|
||||
// First, show a notification that will be have the tab-switching prevented.
|
||||
let win = aBrowser.contentWindow.wrappedJSObject;
|
||||
let notification = win.showNotification1();
|
||||
yield BrowserTestUtils.waitForEvent(notification, "show");
|
||||
info("Notification alert showing");
|
||||
let alertWindow = Services.wm.getMostRecentWindow("alert:alert");
|
||||
if (!alertWindow) {
|
||||
ok(true, "Notifications don't use XUL windows on all platforms.");
|
||||
notification.close();
|
||||
return;
|
||||
}
|
||||
win.newWindow.focus();
|
||||
waitUntilNewWindowHasFocus();
|
||||
});
|
||||
}
|
||||
|
||||
function onAlertShowing() {
|
||||
info("Notification alert showing");
|
||||
notification.removeEventListener("show", onAlertShowing);
|
||||
|
||||
let alertWindow = Services.wm.getMostRecentWindow("alert:alert");
|
||||
if (!alertWindow) {
|
||||
ok(true, "Notifications don't use XUL windows on all platforms.");
|
||||
info("Clicking on notification");
|
||||
let promiseClickEvent = BrowserTestUtils.waitForEvent(notification, "click");
|
||||
EventUtils.synthesizeMouseAtCenter(alertWindow.document.getElementById("alertTitleLabel"),
|
||||
{},
|
||||
alertWindow);
|
||||
let clickEvent = yield promiseClickEvent;
|
||||
ok(clickEvent.defaultPrevented, "The event handler for the first notification cancels the event");
|
||||
isnot(gBrowser.selectedBrowser, aBrowser, "Notification page still a background tab");
|
||||
notification.close();
|
||||
newWindowOpenedFromTab.close();
|
||||
finish();
|
||||
return;
|
||||
}
|
||||
gBrowser.tabContainer.addEventListener("TabSelect", onTabSelect);
|
||||
EventUtils.synthesizeMouseAtCenter(alertWindow.document.getElementById("alertTitleLabel"), {}, alertWindow);
|
||||
info("Clicked on notification");
|
||||
alertWindow.close();
|
||||
}
|
||||
yield BrowserTestUtils.waitForEvent(notification, "close");
|
||||
|
||||
function onNewWindowFocused(event) {
|
||||
event.target.close();
|
||||
isnot(gBrowser.selectedTab, tab, "Notification page loaded as a background tab");
|
||||
// Using timeout to test that something do *not* happen!
|
||||
setTimeout(openSecondNotification, 50);
|
||||
}
|
||||
// Second, show a notification that will cause the tab to get switched.
|
||||
let notification2 = win.showNotification2();
|
||||
yield BrowserTestUtils.waitForEvent(notification2, "show");
|
||||
alertWindow = Services.wm.getMostRecentWindow("alert:alert");
|
||||
let promiseTabSelect = BrowserTestUtils.waitForEvent(gBrowser.tabContainer, "TabSelect");
|
||||
EventUtils.synthesizeMouseAtCenter(alertWindow.document.getElementById("alertTitleLabel"),
|
||||
{},
|
||||
alertWindow);
|
||||
yield promiseTabSelect;
|
||||
is(gBrowser.selectedBrowser.currentURI.spec, notificationURL,
|
||||
"Clicking on the second notification should select its originating tab");
|
||||
notification2.close();
|
||||
yield BrowserTestUtils.waitForEvent(notification2, "close");
|
||||
});
|
||||
});
|
||||
|
||||
function openSecondNotification() {
|
||||
isnot(gBrowser.selectedTab, tab, "Notification page loaded as a background tab");
|
||||
let win = tab.linkedBrowser.contentWindow.wrappedJSObject;
|
||||
notification = win.showNotification2();
|
||||
notification.addEventListener("show", onAlertShowing);
|
||||
}
|
||||
|
||||
function onTabSelect() {
|
||||
gBrowser.tabContainer.removeEventListener("TabSelect", onTabSelect);
|
||||
is(gBrowser.selectedBrowser.contentWindow.location.href, notificationURL,
|
||||
"Notification tab should be selected.");
|
||||
|
||||
finish();
|
||||
}
|
||||
add_task(function* cleanup() {
|
||||
Services.perms.remove(makeURI(notificationURL), "desktop-notification");
|
||||
});
|
||||
|
@ -15,8 +15,6 @@ function showNotification1() {
|
||||
var n = new Notification("Test title", options);
|
||||
n.addEventListener("click", function(event) {
|
||||
event.preventDefault();
|
||||
dump("Should focus new window.");
|
||||
newWindow.focus();
|
||||
});
|
||||
return n;
|
||||
}
|
||||
|
@ -956,7 +956,7 @@ const CustomizableWidgets = [
|
||||
id: "loop-button",
|
||||
type: "custom",
|
||||
label: "loop-call-button3.label",
|
||||
tooltiptext: "loop-call-button3.tooltiptext",
|
||||
tooltiptext: "loop-call-button3.tooltiptext2",
|
||||
privateBrowsingTooltiptext: "loop-call-button3-pb.tooltiptext",
|
||||
defaultArea: CustomizableUI.AREA_NAVBAR,
|
||||
introducedInVersion: 4,
|
||||
|
@ -5,6 +5,8 @@ support-files =
|
||||
ctxmenu-image.png
|
||||
context_tabs_onUpdated_page.html
|
||||
context_tabs_onUpdated_iframe.html
|
||||
file_popup_api_injection_a.html
|
||||
file_popup_api_injection_b.html
|
||||
|
||||
[browser_ext_simple.js]
|
||||
[browser_ext_currentWindow.js]
|
||||
@ -15,6 +17,7 @@ support-files =
|
||||
[browser_ext_pageAction_context.js]
|
||||
[browser_ext_pageAction_popup.js]
|
||||
[browser_ext_browserAction_popup.js]
|
||||
[browser_ext_popup_api_injection.js]
|
||||
[browser_ext_contextMenus.js]
|
||||
[browser_ext_getViews.js]
|
||||
[browser_ext_tabs_executeScript.js]
|
||||
|
@ -0,0 +1,106 @@
|
||||
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
||||
/* vim: set sts=2 sw=2 et tw=80: */
|
||||
"use strict";
|
||||
|
||||
add_task(function* testPageActionPopup() {
|
||||
const BASE = "http://example.com/browser/browser/components/extensions/test/browser";
|
||||
|
||||
let extension = ExtensionTestUtils.loadExtension({
|
||||
manifest: {
|
||||
"browser_action": {
|
||||
"default_popup": `${BASE}/file_popup_api_injection_a.html`,
|
||||
},
|
||||
"page_action": {
|
||||
"default_popup": `${BASE}/file_popup_api_injection_b.html`,
|
||||
},
|
||||
},
|
||||
|
||||
files: {
|
||||
"popup-a.html": String.raw`<html><head><meta charset="utf-8"><script type="application/javascript">
|
||||
browser.test.sendMessage("from-popup-a");
|
||||
</script></head></html>`,
|
||||
|
||||
"popup-b.html": String.raw`<html><head><meta charset="utf-8"><script type="application/javascript">
|
||||
browser.test.sendMessage("from-popup-b");
|
||||
</script></head></html>`,
|
||||
},
|
||||
|
||||
background: function() {
|
||||
let tabId
|
||||
browser.tabs.query({ active: true, currentWindow: true }, tabs => {
|
||||
tabId = tabs[0].id;
|
||||
browser.pageAction.show(tabId);
|
||||
browser.test.sendMessage("ready");
|
||||
});
|
||||
|
||||
browser.test.onMessage.addListener(() => {
|
||||
browser.browserAction.setPopup({ popup: "/popup-a.html" });
|
||||
browser.pageAction.setPopup({ tabId, popup: "popup-b.html" });
|
||||
|
||||
browser.test.sendMessage("ok");
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
let browserActionId = makeWidgetId(extension.id) + "-browser-action";
|
||||
let pageActionId = makeWidgetId(extension.id) + "-page-action";
|
||||
|
||||
function openPopup(buttonId) {
|
||||
let button = document.getElementById(buttonId);
|
||||
if (buttonId == pageActionId) {
|
||||
// TODO: I don't know why a proper synthesized event doesn't work here.
|
||||
button.dispatchEvent(new MouseEvent("click", {}));
|
||||
} else {
|
||||
EventUtils.synthesizeMouseAtCenter(button, {}, window);
|
||||
}
|
||||
};
|
||||
|
||||
let promiseConsoleMessage = pattern => new Promise(resolve => {
|
||||
Services.console.registerListener(function listener(msg) {
|
||||
if (pattern.test(msg.message)) {
|
||||
resolve(msg.message);
|
||||
Services.console.unregisterListener(listener);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
yield extension.startup();
|
||||
yield extension.awaitMessage("ready");
|
||||
|
||||
|
||||
// Check that unprivileged documents don't get the API.
|
||||
// BrowserAction:
|
||||
let awaitMessage = promiseConsoleMessage(/WebExt Privilege Escalation: BrowserAction/);
|
||||
SimpleTest.expectUncaughtException();
|
||||
openPopup(browserActionId);
|
||||
|
||||
let message = yield awaitMessage;
|
||||
ok(message.includes("WebExt Privilege Escalation: BrowserAction: typeof(browser) = undefined"),
|
||||
`No BrowserAction API injection`);
|
||||
|
||||
// PageAction
|
||||
awaitMessage = promiseConsoleMessage(/WebExt Privilege Escalation: PageAction/);
|
||||
SimpleTest.expectUncaughtException();
|
||||
openPopup(pageActionId);
|
||||
|
||||
message = yield awaitMessage;
|
||||
ok(message.includes("WebExt Privilege Escalation: PageAction: typeof(browser) = undefined"),
|
||||
`No PageAction API injection: ${message}`);
|
||||
|
||||
SimpleTest.expectUncaughtException(false);
|
||||
|
||||
|
||||
// Check that privileged documents *do* get the API.
|
||||
extension.sendMessage("next");
|
||||
yield extension.awaitMessage("ok");
|
||||
|
||||
|
||||
// Check that unprivileged documents don't get the API.
|
||||
openPopup(browserActionId);
|
||||
yield extension.awaitMessage("from-popup-a");
|
||||
|
||||
openPopup(pageActionId);
|
||||
yield extension.awaitMessage("from-popup-b");
|
||||
|
||||
yield extension.unload();
|
||||
});
|
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script type="application/javascript">
|
||||
throw new Error(`WebExt Privilege Escalation: BrowserAction: typeof(browser) = ${typeof(browser)}`);
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<script type="application/javascript">
|
||||
throw new Error(`WebExt Privilege Escalation: PageAction: typeof(browser) = ${typeof(browser)}`);
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
@ -716,3 +716,49 @@ html[dir="rtl"] .settings-menu .dropdown-menu {
|
||||
background-color: #5cccee;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
/* E10s not supported */
|
||||
|
||||
.error-content {
|
||||
/* Manual vertical centering */
|
||||
flex: 1;
|
||||
padding: 3.5rem 0 1.5rem 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.error-title {
|
||||
margin: 0 15px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.error-title > img {
|
||||
width: 72px;
|
||||
}
|
||||
|
||||
.error-subheader {
|
||||
text-align: center;
|
||||
font-size: 1.6rem;
|
||||
margin: 2.5rem 0;
|
||||
color: #4a4a4a;
|
||||
line-height: 2.2rem;
|
||||
}
|
||||
|
||||
.e10s-not-supported-button {
|
||||
border: none;
|
||||
color: #fff;
|
||||
background-color: #00a9dc;
|
||||
line-height: 43px;
|
||||
margin: 0 15px;
|
||||
padding: 0;
|
||||
border-radius: 4px;
|
||||
font-size: 1.4rem;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.e10s-not-supported-button:hover,
|
||||
.e10s-not-supported-button:focus,
|
||||
.e10s-not-supported-button:active {
|
||||
background-color: #5cccee;
|
||||
color: #fff;
|
||||
}
|
||||
|
@ -863,6 +863,33 @@ loop.panel = (function(_, mozL10n) {
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* E10s not supported view
|
||||
*/
|
||||
var E10sNotSupported = React.createClass({displayName: "E10sNotSupported",
|
||||
propTypes: {
|
||||
onClick: React.PropTypes.func.isRequired
|
||||
},
|
||||
|
||||
render: function() {
|
||||
return (
|
||||
React.createElement("div", {className: "error-content"},
|
||||
React.createElement("header", {className: "error-title"},
|
||||
React.createElement("img", {src: "loop/shared/img/sad_hello_icon_64x64.svg"}),
|
||||
React.createElement("p", {className: "error-subheader"},
|
||||
mozL10n.get("e10s_not_supported_subheading", {
|
||||
brandShortname: mozL10n.get("clientShortname2")
|
||||
})
|
||||
)
|
||||
),
|
||||
React.createElement(Button, {additionalClass: "e10s-not-supported-button",
|
||||
caption: mozL10n.get("e10s_not_supported_button_label"),
|
||||
onClick: this.props.onClick})
|
||||
)
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Panel view.
|
||||
*/
|
||||
@ -889,7 +916,8 @@ loop.panel = (function(_, mozL10n) {
|
||||
fxAEnabled: true,
|
||||
hasEncryptionKey: false,
|
||||
userProfile: null,
|
||||
gettingStartedSeen: true
|
||||
gettingStartedSeen: true,
|
||||
multiProcessEnabled: false
|
||||
};
|
||||
},
|
||||
|
||||
@ -961,13 +989,15 @@ loop.panel = (function(_, mozL10n) {
|
||||
["GetFxAEnabled"],
|
||||
["GetHasEncryptionKey"],
|
||||
["GetUserProfile"],
|
||||
["GetLoopPref", "gettingStarted.seen"]
|
||||
["GetLoopPref", "gettingStarted.seen"],
|
||||
["IsMultiProcessEnabled"]
|
||||
).then(function(results) {
|
||||
this.setState({
|
||||
fxAEnabled: results[0],
|
||||
hasEncryptionKey: results[1],
|
||||
userProfile: results[2],
|
||||
gettingStartedSeen: results[3]
|
||||
gettingStartedSeen: results[3],
|
||||
multiProcessEnabled: results[4]
|
||||
});
|
||||
}.bind(this));
|
||||
},
|
||||
@ -986,9 +1016,21 @@ loop.panel = (function(_, mozL10n) {
|
||||
e.preventDefault();
|
||||
},
|
||||
|
||||
launchNonE10sWindow: function(e) {
|
||||
loop.request("GetSelectedTabMetadata").then(function(metadata) {
|
||||
loop.request("OpenNonE10sWindow", metadata.url);
|
||||
});
|
||||
},
|
||||
|
||||
render: function() {
|
||||
var NotificationListView = sharedViews.NotificationListView;
|
||||
|
||||
if (this.state.multiProcessEnabled) {
|
||||
return (
|
||||
React.createElement(E10sNotSupported, {onClick: this.launchNonE10sWindow})
|
||||
);
|
||||
}
|
||||
|
||||
if (!this.props.gettingStartedSeen || !this.state.gettingStartedSeen) {
|
||||
return (
|
||||
React.createElement("div", {className: "fte-get-started-container",
|
||||
@ -1084,6 +1126,7 @@ loop.panel = (function(_, mozL10n) {
|
||||
return {
|
||||
AccountLink: AccountLink,
|
||||
ConversationDropdown: ConversationDropdown,
|
||||
E10sNotSupported: E10sNotSupported,
|
||||
GettingStartedView: GettingStartedView,
|
||||
init: init,
|
||||
NewRoomView: NewRoomView,
|
||||
|
@ -863,6 +863,33 @@ loop.panel = (function(_, mozL10n) {
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* E10s not supported view
|
||||
*/
|
||||
var E10sNotSupported = React.createClass({
|
||||
propTypes: {
|
||||
onClick: React.PropTypes.func.isRequired
|
||||
},
|
||||
|
||||
render: function() {
|
||||
return (
|
||||
<div className="error-content">
|
||||
<header className="error-title">
|
||||
<img src="loop/shared/img/sad_hello_icon_64x64.svg" />
|
||||
<p className="error-subheader">
|
||||
{mozL10n.get("e10s_not_supported_subheading", {
|
||||
brandShortname: mozL10n.get("clientShortname2")
|
||||
})}
|
||||
</p>
|
||||
</header>
|
||||
<Button additionalClass="e10s-not-supported-button"
|
||||
caption={mozL10n.get("e10s_not_supported_button_label")}
|
||||
onClick={this.props.onClick} />
|
||||
</div>
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Panel view.
|
||||
*/
|
||||
@ -889,7 +916,8 @@ loop.panel = (function(_, mozL10n) {
|
||||
fxAEnabled: true,
|
||||
hasEncryptionKey: false,
|
||||
userProfile: null,
|
||||
gettingStartedSeen: true
|
||||
gettingStartedSeen: true,
|
||||
multiProcessEnabled: false
|
||||
};
|
||||
},
|
||||
|
||||
@ -961,13 +989,15 @@ loop.panel = (function(_, mozL10n) {
|
||||
["GetFxAEnabled"],
|
||||
["GetHasEncryptionKey"],
|
||||
["GetUserProfile"],
|
||||
["GetLoopPref", "gettingStarted.seen"]
|
||||
["GetLoopPref", "gettingStarted.seen"],
|
||||
["IsMultiProcessEnabled"]
|
||||
).then(function(results) {
|
||||
this.setState({
|
||||
fxAEnabled: results[0],
|
||||
hasEncryptionKey: results[1],
|
||||
userProfile: results[2],
|
||||
gettingStartedSeen: results[3]
|
||||
gettingStartedSeen: results[3],
|
||||
multiProcessEnabled: results[4]
|
||||
});
|
||||
}.bind(this));
|
||||
},
|
||||
@ -986,9 +1016,21 @@ loop.panel = (function(_, mozL10n) {
|
||||
e.preventDefault();
|
||||
},
|
||||
|
||||
launchNonE10sWindow: function(e) {
|
||||
loop.request("GetSelectedTabMetadata").then(function(metadata) {
|
||||
loop.request("OpenNonE10sWindow", metadata.url);
|
||||
});
|
||||
},
|
||||
|
||||
render: function() {
|
||||
var NotificationListView = sharedViews.NotificationListView;
|
||||
|
||||
if (this.state.multiProcessEnabled) {
|
||||
return (
|
||||
<E10sNotSupported onClick={this.launchNonE10sWindow} />
|
||||
);
|
||||
}
|
||||
|
||||
if (!this.props.gettingStartedSeen || !this.state.gettingStartedSeen) {
|
||||
return (
|
||||
<div className="fte-get-started-container"
|
||||
@ -1084,6 +1126,7 @@ loop.panel = (function(_, mozL10n) {
|
||||
return {
|
||||
AccountLink: AccountLink,
|
||||
ConversationDropdown: ConversationDropdown,
|
||||
E10sNotSupported: E10sNotSupported,
|
||||
GettingStartedView: GettingStartedView,
|
||||
init: init,
|
||||
NewRoomView: NewRoomView,
|
||||
|
@ -702,22 +702,6 @@ body[platform="win"] .share-service-dropdown.overflow > .dropdown-menu-item {
|
||||
height: calc(100% - 300px);
|
||||
}
|
||||
|
||||
.desktop-room-wrapper > .media-layout > .media-wrapper > .text-chat-view {
|
||||
height: calc(100% - 150px);
|
||||
}
|
||||
|
||||
/* Temporarily slaved from .media-wrapper until we use it in more places
|
||||
to avoid affecting the conversation window on desktop. */
|
||||
.media-wrapper > .text-chat-view > .text-chat-entries {
|
||||
/* 40px is the height of .text-chat-box. */
|
||||
height: calc(100% - 40px);
|
||||
}
|
||||
|
||||
.media-wrapper > .text-chat-disabled > .text-chat-entries {
|
||||
/* When text chat is disabled, the entries box should be 100% height. */
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.media-wrapper.receiving-screen-share > .screen {
|
||||
order: 1;
|
||||
}
|
||||
@ -754,19 +738,6 @@ body[platform="win"] .share-service-dropdown.overflow > .dropdown-menu-item {
|
||||
height: 50%;
|
||||
}
|
||||
|
||||
/* Temporarily slaved from .media-wrapper until we use it in more places
|
||||
to avoid affecting the conversation window on desktop. */
|
||||
.text-chat-view > .text-chat-entries {
|
||||
/* 40px is the height of .text-chat-box. */
|
||||
height: calc(100% - 40px);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.media-wrapper > .text-chat-disabled > .text-chat-entries {
|
||||
/* When text chat is disabled, the entries box should be 100% height. */
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.media-wrapper > .focus-stream > .local ~ .conversation-toolbar {
|
||||
/* 120px is for the local video area. */
|
||||
max-width: calc(100% - 120px);
|
||||
@ -790,13 +761,6 @@ body[platform="win"] .share-service-dropdown.overflow > .dropdown-menu-item {
|
||||
left: 0;
|
||||
}
|
||||
|
||||
|
||||
.standalone-room-wrapper > .media-layout > .media-wrapper > .local {
|
||||
/* Add 10px for the margin on standalone */
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
|
||||
html[dir="rtl"] .media-wrapper > .local {
|
||||
right: auto;
|
||||
left: 0;
|
||||
@ -812,7 +776,7 @@ body[platform="win"] .share-service-dropdown.overflow > .dropdown-menu-item {
|
||||
.media-wrapper.showing-local-streams > .text-chat-view,
|
||||
.media-wrapper.showing-local-streams.receiving-screen-share > .text-chat-view {
|
||||
/* The remaining 30% that the .focus-stream doesn't use. */
|
||||
height: 30%;
|
||||
height: 45%;
|
||||
}
|
||||
|
||||
.media-wrapper.receiving-screen-share > .remote > .conversation-toolbar,
|
||||
@ -821,11 +785,6 @@ body[platform="win"] .share-service-dropdown.overflow > .dropdown-menu-item {
|
||||
}
|
||||
|
||||
|
||||
.desktop-room-wrapper > .media-layout > .media-wrapper > .text-chat-view {
|
||||
/* This is temp, to echo the .media-wrapper > .text-chat-view above */
|
||||
height: 45%;
|
||||
}
|
||||
|
||||
.media-wrapper.receiving-screen-share > .screen {
|
||||
order: 1;
|
||||
}
|
||||
@ -925,7 +884,7 @@ body[platform="win"] .share-service-dropdown.overflow > .dropdown-menu-item {
|
||||
height: 263px;
|
||||
}
|
||||
|
||||
.desktop-room-wrapper > .media-layout > .media-wrapper > .text-chat-view {
|
||||
.media-wrapper > .text-chat-view {
|
||||
height: calc(100% - 263px);
|
||||
}
|
||||
}
|
||||
@ -936,9 +895,17 @@ body[platform="win"] .share-service-dropdown.overflow > .dropdown-menu-item {
|
||||
background: white;
|
||||
}
|
||||
|
||||
.text-chat-entries {
|
||||
.text-chat-view > .text-chat-entries {
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
padding-top: .6rem;
|
||||
/* 40px is the height of .text-chat-box. */
|
||||
height: calc(100% - 40px);
|
||||
}
|
||||
|
||||
.text-chat-disabled > .text-chat-entries {
|
||||
/* When text chat is disabled, the entries box should be 100% height. */
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.text-chat-entry,
|
||||
@ -1177,25 +1144,6 @@ html[dir="rtl"] .text-chat-entry.received .text-chat-arrow {
|
||||
border-top: 1px solid #66c9f2;
|
||||
}
|
||||
|
||||
@media screen and (max-width:640px) {
|
||||
/* Rooms specific responsive styling */
|
||||
.standalone .room-conversation-wrapper .room-inner-info-area {
|
||||
right: 0;
|
||||
margin: auto;
|
||||
width: 100%;
|
||||
left: 0;
|
||||
}
|
||||
.standalone .room-conversation-wrapper .video-layout-wrapper {
|
||||
height: 100%;
|
||||
}
|
||||
.standalone .room-conversation .video_wrapper.remote_wrapper {
|
||||
width: 100%;
|
||||
}
|
||||
.standalone .room-conversation .video_wrapper.remote_wrapper.not-joined {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
/* e.g. very narrow widths similar to conversation window */
|
||||
@media screen and (max-width:350px) {
|
||||
.text-chat-view {
|
||||
|
@ -129,6 +129,7 @@ var gPageListeners = null;
|
||||
var gOriginalPageListeners = null;
|
||||
var gSocialProviders = null;
|
||||
var gStringBundle = null;
|
||||
var gStubbedMessageHandlers = null;
|
||||
const kBatchMessage = "Batch";
|
||||
const kMaxLoopCount = 10;
|
||||
const kMessageName = "Loop:Message";
|
||||
@ -689,6 +690,22 @@ const kMessageHandlers = {
|
||||
MozLoopService.hangupAllChatWindows();
|
||||
},
|
||||
|
||||
/**
|
||||
* Check if the current browser has e10s enabled or not
|
||||
*
|
||||
* @param {Object} message Message meant for the handler function, containing
|
||||
* the following parameters in its `data` property:
|
||||
* []
|
||||
* @param {Function} reply Callback function, invoked with the result of this
|
||||
* message handler. The result will be sent back to
|
||||
* the senders' channel.
|
||||
*/
|
||||
IsMultiProcessEnabled: function(message, reply) {
|
||||
let win = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
let browser = win && win.gBrowser.selectedBrowser;
|
||||
reply(!!(browser && browser.getAttribute("remote") == "true"));
|
||||
},
|
||||
|
||||
/**
|
||||
* Start the FxA login flow using the OAuth client and params from the Loop
|
||||
* server.
|
||||
@ -783,6 +800,22 @@ const kMessageHandlers = {
|
||||
reply();
|
||||
},
|
||||
|
||||
/**
|
||||
* Opens a non e10s window
|
||||
*
|
||||
* @param {Object} message Message meant for the handler function, containing
|
||||
* the following parameters in its `data` property:
|
||||
* [url]
|
||||
* @param {Function} reply Callback function, invoked with the result of this
|
||||
* message handler. The result will be sent back to
|
||||
* the senders' channel.
|
||||
*/
|
||||
OpenNonE10sWindow: function(message, reply) {
|
||||
let win = Services.wm.getMostRecentWindow("navigator:browser");
|
||||
let url = message.data[0] ? message.data[0] : "about:home";
|
||||
win.openDialog("chrome://browser/content/", "_blank", "chrome,all,dialog=no,non-remote", url);
|
||||
},
|
||||
|
||||
/**
|
||||
* Opens a URL in a new tab in the browser.
|
||||
*
|
||||
@ -1059,12 +1092,23 @@ const LoopAPIInternal = {
|
||||
// `kMessageHandlers` dictionary.
|
||||
let wildcardName = handlerName + ":*";
|
||||
if (kMessageHandlers[wildcardName]) {
|
||||
// Alright, pass the message forward.
|
||||
kMessageHandlers[wildcardName](action, message, reply);
|
||||
// A unit test might've stubbed the handler.
|
||||
if (gStubbedMessageHandlers && gStubbedMessageHandlers[wildcardName]) {
|
||||
gStubbedMessageHandlers[wildcardName](action, message, reply);
|
||||
} else {
|
||||
// Alright, pass the message forward.
|
||||
kMessageHandlers[wildcardName](action, message, reply);
|
||||
}
|
||||
// Aaaaand we're done.
|
||||
return;
|
||||
}
|
||||
|
||||
// A unit test might've stubbed the handler.
|
||||
if (gStubbedMessageHandlers && gStubbedMessageHandlers[handlerName]) {
|
||||
gStubbedMessageHandlers[handlerName](message, reply);
|
||||
return;
|
||||
}
|
||||
|
||||
if (!kMessageHandlers[handlerName]) {
|
||||
let msg = "Ouch, no message handler available for '" + handlerName + "'";
|
||||
MozLoopService.log.error(msg);
|
||||
@ -1252,9 +1296,13 @@ this.LoopAPI = Object.freeze({
|
||||
}
|
||||
gPageListeners = pageListeners;
|
||||
},
|
||||
stubMessageHandlers: function(handlers) {
|
||||
gStubbedMessageHandlers = handlers;
|
||||
},
|
||||
restore: function() {
|
||||
if (gOriginalPageListeners) {
|
||||
gPageListeners = gOriginalPageListeners;
|
||||
}
|
||||
gStubbedMessageHandlers = null;
|
||||
}
|
||||
});
|
||||
|
@ -239,6 +239,7 @@ html[dir="rtl"] .standalone-overlay-wrapper > .standalone-moz-logo {
|
||||
color: #4a4a4a;
|
||||
margin: auto;
|
||||
padding: 0 5px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.room-inner-info-area > button {
|
||||
|
@ -14,32 +14,22 @@
|
||||
</div>
|
||||
<div id="messages"></div>
|
||||
<div id="fixtures"></div>
|
||||
<script src="../../content/shared/libs/lodash-3.9.3.js"></script>
|
||||
<script src="../shared/loop_mocha_utils.js"></script>
|
||||
<script>
|
||||
var uncaughtError;
|
||||
window.addEventListener("error", function(error) {
|
||||
uncaughtError = error;
|
||||
});
|
||||
var consoleWarn = console.warn;
|
||||
var caughtWarnings = [];
|
||||
console.warn = function() {
|
||||
var args = Array.slice(arguments);
|
||||
caughtWarnings.push(args);
|
||||
consoleWarn.apply(console, args);
|
||||
};
|
||||
LoopMochaUtils.trapErrors();
|
||||
</script>
|
||||
|
||||
<!-- libs -->
|
||||
<script src="../../content/libs/l10n.js"></script>
|
||||
<script src="../../content/shared/libs/react-0.13.3.js"></script>
|
||||
<script src="../../content/shared/libs/classnames-2.2.0.js"></script>
|
||||
<script src="../../content/shared/libs/lodash-3.9.3.js"></script>
|
||||
<script src="../../content/shared/libs/backbone-1.2.1.js"></script>
|
||||
|
||||
<!-- test dependencies -->
|
||||
<script src="../shared/vendor/mocha-2.2.5.js"></script>
|
||||
<script src="../shared/vendor/chai-3.0.0.js"></script>
|
||||
<script src="../shared/vendor/sinon-1.16.1.js"></script>
|
||||
<script src="../shared/loop_mocha_utils.js"></script>
|
||||
<script>
|
||||
/*global chai,mocha */
|
||||
chai.config.includeStack = true;
|
||||
@ -80,24 +70,8 @@
|
||||
document.removeEventListener('DOMContentLoaded', loop.panel.init);
|
||||
document.removeEventListener('DOMContentLoaded', loop.conversation.init);
|
||||
|
||||
describe("Uncaught Error Check", function() {
|
||||
it("should load the tests without errors", function() {
|
||||
chai.expect(uncaughtError && uncaughtError.message).to.be.undefined;
|
||||
});
|
||||
});
|
||||
|
||||
describe("Unexpected Warnings Check", function() {
|
||||
it("should long only the warnings we expect", function() {
|
||||
chai.expect(caughtWarnings.length).to.eql(0);
|
||||
});
|
||||
});
|
||||
|
||||
mocha.run(function () {
|
||||
var completeNode = document.createElement("p");
|
||||
completeNode.setAttribute("id", "complete");
|
||||
completeNode.appendChild(document.createTextNode("Complete"));
|
||||
document.getElementById("mocha").appendChild(completeNode);
|
||||
});
|
||||
LoopMochaUtils.addErrorCheckingTests();
|
||||
LoopMochaUtils.runTests();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -68,6 +68,7 @@ describe("loop.panel", function() {
|
||||
Confirm: sinon.stub(),
|
||||
GetHasEncryptionKey: function() { return true; },
|
||||
HangupAllChatWindows: function() {},
|
||||
IsMultiProcessEnabled: sinon.stub(),
|
||||
LoginToFxA: sinon.stub(),
|
||||
LogoutFromFxA: sinon.stub(),
|
||||
NotifyUITour: sinon.stub(),
|
||||
@ -591,6 +592,17 @@ describe("loop.panel", function() {
|
||||
// Do nothing
|
||||
}
|
||||
});
|
||||
|
||||
it("should render a E10sNotSupported when multiprocess is enabled", function() {
|
||||
LoopMochaUtils.stubLoopRequest({
|
||||
IsMultiProcessEnabled: function() { return true; }
|
||||
});
|
||||
|
||||
var view = createTestPanelView();
|
||||
|
||||
TestUtils.findRenderedComponentWithType(view, loop.panel.E10sNotSupported);
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -8,6 +8,7 @@
|
||||
"use strict";
|
||||
|
||||
const BASE_URL = Services.prefs.getCharPref("loop.server");
|
||||
const { LoopAPI } = Cu.import("resource:///modules/loop/MozLoopAPI.jsm", {});
|
||||
|
||||
function* checkFxA401() {
|
||||
let err = MozLoopService.errors.get("login");
|
||||
@ -46,6 +47,11 @@ add_task(function* setup() {
|
||||
// Normally the same pushUrl would be registered but we change it in the test
|
||||
// to be able to check for success on the second registration.
|
||||
|
||||
LoopAPI.stubMessageHandlers({
|
||||
IsMultiProcessEnabled: function(message, reply) {
|
||||
reply(false);
|
||||
}
|
||||
});
|
||||
registerCleanupFunction(function* () {
|
||||
info("cleanup time");
|
||||
yield promiseDeletedOAuthParams(BASE_URL);
|
||||
|
@ -43,18 +43,18 @@ add_task(function* test_LoopUI_getters() {
|
||||
|
||||
add_task(function* test_doNotDisturb() {
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
yield MozLoopService.doNotDisturb = true;
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "disabled", "Check button is in disabled state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Do not disturb", "Check button has disabled tooltiptext");
|
||||
yield MozLoopService.doNotDisturb = false;
|
||||
Assert.notStrictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "disabled", "Check button is not in disabled state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
});
|
||||
|
||||
add_task(function* test_doNotDisturb_with_login() {
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
yield MozLoopService.doNotDisturb = true;
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "disabled", "Check button is in disabled state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Do not disturb", "Check button has disabled tooltiptext");
|
||||
@ -62,34 +62,34 @@ add_task(function* test_doNotDisturb_with_login() {
|
||||
MozLoopServiceInternal.fxAOAuthProfile = fxASampleProfile;
|
||||
yield MozLoopServiceInternal.notifyStatusChanged("login");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "active", "Check button is in active state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Active conversation", "Check button has active tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "You are sharing your tabs", "Check button has active tooltiptext");
|
||||
yield loadLoopPanel();
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "disabled", "Check button is in disabled state after opening panel");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Do not disturb", "Check button has disabled tooltiptext");
|
||||
LoopUI.panel.hidePopup();
|
||||
yield MozLoopService.doNotDisturb = false;
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
MozLoopServiceInternal.fxAOAuthTokenData = null;
|
||||
yield MozLoopServiceInternal.notifyStatusChanged();
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
});
|
||||
|
||||
add_task(function* test_error() {
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
yield MozLoopServiceInternal.setError("testing", {});
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "error", "Check button is in error state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Error!", "Check button has error tooltiptext");
|
||||
yield MozLoopServiceInternal.clearError("testing");
|
||||
Assert.notStrictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "error", "Check button is not in error state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
});
|
||||
|
||||
add_task(function* test_error_with_login() {
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
yield MozLoopServiceInternal.setError("testing", {});
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "error", "Check button is in error state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Error!", "Check button has error tooltiptext");
|
||||
@ -99,34 +99,34 @@ add_task(function* test_error_with_login() {
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Error!", "Check button has error tooltiptext");
|
||||
yield MozLoopServiceInternal.clearError("testing");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
MozLoopServiceInternal.fxAOAuthProfile = null;
|
||||
MozLoopServiceInternal.notifyStatusChanged();
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
});
|
||||
|
||||
add_task(function* test_active() {
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
MozLoopServiceInternal.fxAOAuthTokenData = fxASampleToken;
|
||||
MozLoopServiceInternal.fxAOAuthProfile = fxASampleProfile;
|
||||
yield MozLoopServiceInternal.notifyStatusChanged("login");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "active", "Check button is in active state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Active conversation", "Check button has active tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "You are sharing your tabs", "Check button has active tooltiptext");
|
||||
yield loadLoopPanel();
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state after opening panel");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
LoopUI.panel.hidePopup();
|
||||
MozLoopServiceInternal.fxAOAuthTokenData = null;
|
||||
MozLoopServiceInternal.notifyStatusChanged();
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
});
|
||||
|
||||
add_task(function* test_room_participants() {
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
let roomsCache = new Map([["test_room", { participants: [{ displayName: "hugh", id: "008", owner: true }] }]]);
|
||||
LoopRooms._setRoomsCache(roomsCache);
|
||||
MozLoopServiceInternal.notifyStatusChanged();
|
||||
@ -136,18 +136,18 @@ add_task(function* test_room_participants() {
|
||||
// And that's what the line below does, waits until the next tick
|
||||
yield new Promise(resolve => executeSoon(resolve));
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "active", "Check button is in active state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Active conversation", "Check button has active tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "You are sharing your tabs", "Check button has active tooltiptext");
|
||||
roomsCache.set("test_room", { participants: [{ displayName: "hugh", id: "008", owner: false }] });
|
||||
LoopRooms._setRoomsCache(roomsCache);
|
||||
MozLoopServiceInternal.notifyStatusChanged();
|
||||
yield new Promise(resolve => executeSoon(resolve));
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "active", "Check button is in active state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Someone is waiting for you in a conversation", "Check button has participantswaiting tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Someone is waiting for you", "Check button has participantswaiting tooltiptext");
|
||||
roomsCache.set("test_room", { participants: [] });
|
||||
LoopRooms._setRoomsCache(roomsCache);
|
||||
MozLoopServiceInternal.notifyStatusChanged();
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
LoopRooms._setRoomsCache();
|
||||
});
|
||||
|
||||
@ -167,13 +167,13 @@ add_task(function* test_panelToggle_on_click() {
|
||||
|
||||
add_task(function* test_screen_share() {
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
MozLoopService.setScreenShareState("1", true);
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "action", "Check button is in action state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "You are sharing your screen", "Check button has sharingscreen tooltiptext");
|
||||
MozLoopService.setScreenShareState("1", false);
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("state"), "", "Check button is in default state");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Start a conversation", "Check button has default tooltiptext");
|
||||
Assert.strictEqual(LoopUI.toolbarButton.node.getAttribute("tooltiptext"), "Browse this page with a friend", "Check button has default tooltiptext");
|
||||
});
|
||||
|
||||
add_task(function* test_private_browsing_window() {
|
||||
|
@ -14,24 +14,15 @@
|
||||
</div>
|
||||
<div id="messages"></div>
|
||||
<div id="fixtures"></div>
|
||||
<script src="../../content/shared/libs/lodash-3.9.3.js"></script>
|
||||
<script src="../shared/loop_mocha_utils.js"></script>
|
||||
<script>
|
||||
var uncaughtError;
|
||||
window.addEventListener("error", function(error) {
|
||||
uncaughtError = error;
|
||||
});
|
||||
var consoleWarn = console.warn;
|
||||
var caughtWarnings = [];
|
||||
console.warn = function() {
|
||||
var args = Array.slice(arguments);
|
||||
caughtWarnings.push(args);
|
||||
consoleWarn.apply(console, args);
|
||||
};
|
||||
LoopMochaUtils.trapErrors();
|
||||
</script>
|
||||
|
||||
<!-- libs -->
|
||||
<script src="../../content/shared/libs/react-0.13.3.js"></script>
|
||||
<script src="../../content/shared/libs/classnames-2.2.0.js"></script>
|
||||
<script src="../../content/shared/libs/lodash-3.9.3.js"></script>
|
||||
<script src="../../content/shared/libs/backbone-1.2.1.js"></script>
|
||||
<script src="../../standalone/content/libs/l10n-gaia-02ca67948fe8.js"></script>
|
||||
|
||||
@ -40,7 +31,6 @@
|
||||
<script src="vendor/chai-3.0.0.js"></script>
|
||||
<script src="vendor/chai-as-promised-5.1.0.js"></script>
|
||||
<script src="vendor/sinon-1.16.1.js"></script>
|
||||
<script src="../shared/loop_mocha_utils.js"></script>
|
||||
<script>
|
||||
/*global chai, mocha */
|
||||
chai.config.includeStack = true;
|
||||
@ -82,24 +72,8 @@
|
||||
<script src="loopapi-client_test.js"></script>
|
||||
|
||||
<script>
|
||||
describe("Uncaught Error Check", function() {
|
||||
it("should load the tests without errors", function() {
|
||||
chai.expect(uncaughtError && uncaughtError.message).to.be.undefined;
|
||||
});
|
||||
});
|
||||
|
||||
describe("Unexpected Warnings Check", function() {
|
||||
it("should long only the warnings we expect", function() {
|
||||
chai.expect(caughtWarnings.length).to.eql(0);
|
||||
});
|
||||
});
|
||||
|
||||
mocha.run(function () {
|
||||
var completeNode = document.createElement("p");
|
||||
completeNode.setAttribute("id", "complete");
|
||||
completeNode.appendChild(document.createTextNode("Complete"));
|
||||
document.getElementById("mocha").appendChild(completeNode);
|
||||
});
|
||||
LoopMochaUtils.addErrorCheckingTests();
|
||||
LoopMochaUtils.runTests();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -8,6 +8,9 @@ var LoopMochaUtils = (function(global, _) {
|
||||
var gListenerCallbacks = [];
|
||||
var gPushListenerCallbacks = [];
|
||||
var gOldAddMessageListener, gOldSendAsyncMessage;
|
||||
var gUncaughtError;
|
||||
var gCaughtIssues = [];
|
||||
|
||||
|
||||
/**
|
||||
* The messaging between chrome and content (pubsub.js) is using Promises which
|
||||
@ -231,10 +234,75 @@ var LoopMochaUtils = (function(global, _) {
|
||||
loop.subscribe.reset();
|
||||
}
|
||||
|
||||
/**
|
||||
* Used to initiate trapping of errors and warnings when running tests.
|
||||
* addErrorCheckingTests() should be called to add the actual processing of
|
||||
* results.
|
||||
*/
|
||||
function trapErrors() {
|
||||
window.addEventListener("error", function(error) {
|
||||
gUncaughtError = error;
|
||||
});
|
||||
var consoleWarn = console.warn;
|
||||
var consoleError = console.error;
|
||||
console.warn = function() {
|
||||
var args = Array.slice(arguments);
|
||||
try {
|
||||
throw new Error();
|
||||
} catch (e) {
|
||||
gCaughtIssues.push([args, e.stack]);
|
||||
}
|
||||
consoleWarn.apply(console, args);
|
||||
};
|
||||
console.error = function() {
|
||||
var args = Array.slice(arguments);
|
||||
gCaughtIssues.push(args);
|
||||
consoleError.apply(console, args);
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds tests to check no warnings nor errors have occurred since trapErrors
|
||||
* was called.
|
||||
*/
|
||||
function addErrorCheckingTests() {
|
||||
describe("Uncaught Error Check", function() {
|
||||
it("should load the tests without errors", function() {
|
||||
chai.expect(gUncaughtError && gUncaughtError.message).to.be.undefined;
|
||||
});
|
||||
});
|
||||
|
||||
describe("Unexpected Logged Warnings and Errors Check", function() {
|
||||
it("should not log any warnings nor errors", function() {
|
||||
if (gCaughtIssues.length) {
|
||||
throw new Error(gCaughtIssues);
|
||||
} else {
|
||||
chai.expect(gCaughtIssues.length).to.eql(0);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Utility function for starting the mocha test run. Adds a marker for when
|
||||
* the tests have completed.
|
||||
*/
|
||||
function runTests() {
|
||||
mocha.run(function() {
|
||||
var completeNode = document.createElement("p");
|
||||
completeNode.setAttribute("id", "complete");
|
||||
completeNode.appendChild(document.createTextNode("Complete"));
|
||||
document.getElementById("mocha").appendChild(completeNode);
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
addErrorCheckingTests: addErrorCheckingTests,
|
||||
createSandbox: createSandbox,
|
||||
stubLoopRequest: stubLoopRequest,
|
||||
publish: publish,
|
||||
restore: restore,
|
||||
publish: publish
|
||||
runTests: runTests,
|
||||
stubLoopRequest: stubLoopRequest,
|
||||
trapErrors: trapErrors
|
||||
};
|
||||
})(this, _);
|
||||
|
@ -6,6 +6,7 @@ describe("loop.shared.views.TextChatView", function() {
|
||||
|
||||
var expect = chai.expect;
|
||||
var sharedActions = loop.shared.actions;
|
||||
var sharedUtils = loop.shared.utils;
|
||||
var sharedViews = loop.shared.views;
|
||||
var TestUtils = React.addons.TestUtils;
|
||||
var CHAT_MESSAGE_TYPES = loop.store.CHAT_MESSAGE_TYPES;
|
||||
@ -15,7 +16,7 @@ describe("loop.shared.views.TextChatView", function() {
|
||||
var dispatcher, fakeSdkDriver, sandbox, store, fakeClock;
|
||||
|
||||
beforeEach(function() {
|
||||
sandbox = sinon.sandbox.create();
|
||||
sandbox = LoopMochaUtils.createSandbox();
|
||||
fakeClock = sandbox.useFakeTimers();
|
||||
|
||||
dispatcher = new loop.Dispatcher();
|
||||
|
@ -306,6 +306,8 @@ describe("loop.shared.views", function() {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
sandbox.stub(console, "error");
|
||||
});
|
||||
|
||||
function mountTestComponent(props) {
|
||||
@ -326,7 +328,7 @@ describe("loop.shared.views", function() {
|
||||
expect(comp.getDOMNode()).to.eql(null);
|
||||
});
|
||||
|
||||
it("should not show an indefined menu option", function() {
|
||||
it("should not show an undefined menu option", function() {
|
||||
var settingsMenuItems = [
|
||||
{ id: "not Defined" },
|
||||
{ id: "help" }
|
||||
@ -336,7 +338,19 @@ describe("loop.shared.views", function() {
|
||||
expect(menuItems).to.have.length.of(1);
|
||||
});
|
||||
|
||||
it("should not render anythin if not exists any valid item to show", function() {
|
||||
it("should log an error for an undefined menu option", function() {
|
||||
var settingsMenuItems = [
|
||||
{ id: "not Defined" },
|
||||
{ id: "help" }
|
||||
];
|
||||
|
||||
mountTestComponent({ menuItems: settingsMenuItems });
|
||||
|
||||
sinon.assert.calledOnce(console.error);
|
||||
sinon.assert.calledWithMatch(console.error, "Invalid");
|
||||
});
|
||||
|
||||
it("should not render anything if not exists any valid item to show", function() {
|
||||
var settingsMenuItems = [
|
||||
{ id: "not Defined" },
|
||||
{ id: "another wrong menu item" }
|
||||
|
@ -14,24 +14,15 @@
|
||||
</div>
|
||||
<div id="messages"></div>
|
||||
<div id="fixtures"></div>
|
||||
<script src="../../content/shared/libs/lodash-3.9.3.js"></script>
|
||||
<script src="../shared/loop_mocha_utils.js"></script>
|
||||
<script>
|
||||
var uncaughtError;
|
||||
window.addEventListener("error", function(error) {
|
||||
uncaughtError = error;
|
||||
});
|
||||
var consoleWarn = console.warn;
|
||||
var caughtWarnings = [];
|
||||
console.warn = function() {
|
||||
var args = Array.slice(arguments);
|
||||
caughtWarnings.push(args);
|
||||
consoleWarn.apply(console, args);
|
||||
};
|
||||
LoopMochaUtils.trapErrors();
|
||||
</script>
|
||||
|
||||
<!-- libs -->
|
||||
<script src="../../content/shared/libs/react-0.13.3.js"></script>
|
||||
<script src="../../content/shared/libs/classnames-2.2.0.js"></script>
|
||||
<script src="../../content/shared/libs/lodash-3.9.3.js"></script>
|
||||
<script src="../../content/shared/libs/backbone-1.2.1.js"></script>
|
||||
<script src="../../standalone/content/libs/l10n-gaia-02ca67948fe8.js"></script>
|
||||
<!-- test dependencies -->
|
||||
@ -68,24 +59,8 @@
|
||||
<script src="standaloneMetricsStore_test.js"></script>
|
||||
<script src="webapp_test.js"></script>
|
||||
<script>
|
||||
describe("Uncaught Error Check", function() {
|
||||
it("should load the tests without errors", function() {
|
||||
chai.expect(uncaughtError && uncaughtError.message).to.be.undefined;
|
||||
});
|
||||
});
|
||||
|
||||
describe("Unexpected Warnings Check", function() {
|
||||
it("should log only the warnings we expect", function() {
|
||||
chai.expect(caughtWarnings.length).to.eql(0);
|
||||
});
|
||||
});
|
||||
|
||||
mocha.run(function () {
|
||||
var completeNode = document.createElement("p");
|
||||
completeNode.setAttribute("id", "complete");
|
||||
completeNode.appendChild(document.createTextNode("Complete"));
|
||||
document.getElementById("mocha").appendChild(completeNode);
|
||||
});
|
||||
</script>
|
||||
LoopMochaUtils.addErrorCheckingTests();
|
||||
LoopMochaUtils.runTests();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1375,6 +1375,8 @@ BrowserGlue.prototype = {
|
||||
|
||||
#ifdef E10S_TESTING_ONLY
|
||||
E10SUINotification.checkStatus();
|
||||
#else
|
||||
E10SAccessibilityCheck.init();
|
||||
#endif
|
||||
},
|
||||
|
||||
@ -3379,7 +3381,91 @@ var E10SUINotification = {
|
||||
win.PopupNotifications.show(browser, "a11y_enabled_with_e10s", promptMessage, null, mainAction, secondaryActions, options);
|
||||
},
|
||||
};
|
||||
#endif
|
||||
|
||||
#else // E10S_TESTING_ONLY
|
||||
|
||||
var E10SAccessibilityCheck = {
|
||||
init: function() {
|
||||
Services.obs.addObserver(this, "a11y-init-or-shutdown", true);
|
||||
if (Services.appinfo.accessibilityIsBlacklistedForE10S) {
|
||||
this._showE10sAccessibilityWarning();
|
||||
}
|
||||
},
|
||||
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver, Ci.nsISupportsWeakReference]),
|
||||
|
||||
observe: function(subject, topic, data) {
|
||||
if (topic == "a11y-init-or-shutdown"
|
||||
&& data == "1" &&
|
||||
Services.appinfo.accessibilityIsBlacklistedForE10S) {
|
||||
this._showE10sAccessibilityWarning();
|
||||
}
|
||||
},
|
||||
|
||||
_warnedAboutAccessibility: false,
|
||||
|
||||
_showE10sAccessibilityWarning: function() {
|
||||
try {
|
||||
if (!Services.prefs.getBoolPref("browser.tabs.remote.disabled-for-a11y")) {
|
||||
// Only return if the pref exists and was set to false, but not
|
||||
// if the pref didn't exist (which will throw).
|
||||
return;
|
||||
}
|
||||
} catch (e) { }
|
||||
|
||||
Services.prefs.setBoolPref("browser.tabs.remote.disabled-for-a11y", true);
|
||||
|
||||
if (this._warnedAboutAccessibility ||
|
||||
!Services.appinfo.browserTabsRemoteAutostart) {
|
||||
return;
|
||||
}
|
||||
this._warnedAboutAccessibility = true;
|
||||
|
||||
let win = RecentWindow.getMostRecentBrowserWindow();
|
||||
if (!win) {
|
||||
// Just restart immediately.
|
||||
Services.startup.quit(Services.startup.eAttemptQuit | Services.startup.eRestart);
|
||||
return;
|
||||
}
|
||||
|
||||
let browser = win.gBrowser.selectedBrowser;
|
||||
|
||||
let promptMessage = win.gNavigatorBundle.getFormattedString(
|
||||
"e10s.accessibilityNotice.mainMessage",
|
||||
[gBrandBundle.GetStringFromName("brandShortName")]
|
||||
);
|
||||
let mainAction = {
|
||||
label: win.gNavigatorBundle.getString("e10s.accessibilityNotice.disableAndRestart.label"),
|
||||
accessKey: win.gNavigatorBundle.getString("e10s.accessibilityNotice.disableAndRestart.accesskey"),
|
||||
callback: function () {
|
||||
// Restart the app
|
||||
let cancelQuit = Cc["@mozilla.org/supports-PRBool;1"].createInstance(Ci.nsISupportsPRBool);
|
||||
Services.obs.notifyObservers(cancelQuit, "quit-application-requested", "restart");
|
||||
if (cancelQuit.data)
|
||||
return; // somebody canceled our quit request
|
||||
Services.startup.quit(Services.startup.eAttemptQuit | Services.startup.eRestart);
|
||||
}
|
||||
};
|
||||
let secondaryActions = [
|
||||
{
|
||||
label: win.gNavigatorBundle.getString("e10s.accessibilityNotice.dontDisable.label"),
|
||||
accessKey: win.gNavigatorBundle.getString("e10s.accessibilityNotice.dontDisable.accesskey"),
|
||||
callback: function () {
|
||||
Services.prefs.setBoolPref("browser.tabs.remote.disabled-for-a11y", false);
|
||||
}
|
||||
}
|
||||
];
|
||||
let options = {
|
||||
popupIconURL: "chrome://browser/skin/e10s-64@2x.png",
|
||||
learnMoreURL: "https://wiki.mozilla.org/Electrolysis",
|
||||
persistWhileVisible: true
|
||||
};
|
||||
|
||||
win.PopupNotifications.show(browser, "a11y_enabled_with_e10s", promptMessage, null, mainAction, secondaryActions, options);
|
||||
},
|
||||
};
|
||||
|
||||
#endif // E10S_TESTING_ONLY
|
||||
|
||||
var components = [BrowserGlue, ContentPermissionPrompt, AboutNewTabService];
|
||||
this.NSGetFactory = XPCOMUtils.generateNSGetFactory(components);
|
||||
|
@ -117,7 +117,9 @@
|
||||
class="header"
|
||||
hidden="true"
|
||||
data-category="paneAdvanced">
|
||||
<label class="header-name">&paneAdvanced.title;</label>
|
||||
<label class="header-name" flex="1">&paneAdvanced.title;</label>
|
||||
<button class="help-button"
|
||||
aria-label="&helpButton.label;"/>
|
||||
</hbox>
|
||||
|
||||
<tabbox id="advancedPrefs"
|
||||
|
@ -62,7 +62,9 @@
|
||||
class="header"
|
||||
hidden="true"
|
||||
data-category="paneApplications">
|
||||
<label class="header-name">&paneApplications.title;</label>
|
||||
<label class="header-name" flex="1">&paneApplications.title;</label>
|
||||
<button class="help-button"
|
||||
aria-label="&helpButton.label;"/>
|
||||
</hbox>
|
||||
|
||||
<vbox id="applicationsContent"
|
||||
|
@ -36,7 +36,9 @@
|
||||
class="header"
|
||||
hidden="true"
|
||||
data-category="paneContent">
|
||||
<label class="header-name">&paneContent.title;</label>
|
||||
<label class="header-name" flex="1">&paneContent.title;</label>
|
||||
<button class="help-button"
|
||||
aria-label="&helpButton.label;"/>
|
||||
</hbox>
|
||||
|
||||
<groupbox id="drmGroup" data-category="paneContent" hidden="true">
|
||||
|
@ -108,7 +108,9 @@
|
||||
class="header"
|
||||
hidden="true"
|
||||
data-category="paneGeneral">
|
||||
<label class="header-name">&paneGeneral.title;</label>
|
||||
<label class="header-name" flex="1">&paneGeneral.title;</label>
|
||||
<button class="help-button"
|
||||
aria-label="&helpButton.label;"/>
|
||||
</hbox>
|
||||
|
||||
<!-- Startup -->
|
||||
|
@ -77,8 +77,9 @@ function init_all() {
|
||||
});
|
||||
document.dispatchEvent(initFinished);
|
||||
|
||||
let helpCmd = document.getElementById("help-button");
|
||||
helpCmd.addEventListener("command", helpButtonCommand);
|
||||
let helpCmds = document.querySelectorAll(".help-button");
|
||||
for (let helpCmd of helpCmds)
|
||||
helpCmd.addEventListener("command", helpButtonCommand);
|
||||
|
||||
// Wait until initialization of all preferences are complete before
|
||||
// notifying observers that the UI is now ready.
|
||||
|
@ -185,11 +185,6 @@
|
||||
#include sync.xul
|
||||
#endif
|
||||
</prefpane>
|
||||
<hbox pack="end">
|
||||
<button id="help-button"
|
||||
class="help-button"
|
||||
aria-label="&helpButton.label;"/>
|
||||
</hbox>
|
||||
</vbox>
|
||||
|
||||
</hbox>
|
||||
|
@ -80,7 +80,9 @@
|
||||
class="header"
|
||||
hidden="true"
|
||||
data-category="panePrivacy">
|
||||
<label class="header-name">&panePrivacy.title;</label>
|
||||
<label class="header-name" flex="1">&panePrivacy.title;</label>
|
||||
<button class="help-button"
|
||||
aria-label="&helpButton.label;"/>
|
||||
</hbox>
|
||||
|
||||
<!-- Tracking -->
|
||||
|
@ -27,7 +27,9 @@
|
||||
class="header"
|
||||
hidden="true"
|
||||
data-category="paneSearch">
|
||||
<label class="header-name">&paneSearch.title;</label>
|
||||
<label class="header-name" flex="1">&paneSearch.title;</label>
|
||||
<button class="help-button"
|
||||
aria-label="&helpButton.label;"/>
|
||||
</hbox>
|
||||
|
||||
<!-- Default Search Engine -->
|
||||
|
@ -36,7 +36,9 @@
|
||||
class="header"
|
||||
hidden="true"
|
||||
data-category="paneSecurity">
|
||||
<label class="header-name">&paneSecurity.title;</label>
|
||||
<label class="header-name" flex="1">&paneSecurity.title;</label>
|
||||
<button class="help-button"
|
||||
aria-label="&helpButton.label;"/>
|
||||
</hbox>
|
||||
|
||||
<!-- addons, forgery (phishing) UI -->
|
||||
|
@ -35,7 +35,9 @@
|
||||
class="header"
|
||||
hidden="true"
|
||||
data-category="paneSync">
|
||||
<label class="header-name">&paneSync.title;</label>
|
||||
<label class="header-name" flex="1">&paneSync.title;</label>
|
||||
<button class="help-button"
|
||||
aria-label="&helpButton.label;"/>
|
||||
</hbox>
|
||||
|
||||
<vbox id="syncStatusMessage-container" data-category="paneSync" hidden="true">
|
||||
|
@ -96,12 +96,12 @@ quit-button.tooltiptext.mac = Quit %1$S (%2$S)
|
||||
# LOCALIZATION NOTE(loop-call-button3.label): This is a brand name, request
|
||||
# approval before you change it.
|
||||
loop-call-button3.label = Hello
|
||||
loop-call-button3.tooltiptext = Start a conversation
|
||||
loop-call-button3.tooltiptext2 = Browse this page with a friend
|
||||
loop-call-button3-error.tooltiptext = Error!
|
||||
loop-call-button3-donotdisturb.tooltiptext = Do not disturb
|
||||
loop-call-button3-screensharing.tooltiptext = You are sharing your screen
|
||||
loop-call-button3-active.tooltiptext = Active conversation
|
||||
loop-call-button3-participantswaiting.tooltiptext = Someone is waiting for you in a conversation
|
||||
loop-call-button3-active.tooltiptext2 = You are sharing your tabs
|
||||
loop-call-button3-participantswaiting.tooltiptext2 = Someone is waiting for you
|
||||
# LOCALIZATION NOTE(loop-call-button3-pb.tooltiptext): Shown when the button is
|
||||
# placed inside a Private Browsing window. %S is the value of loop-call-button3.label.
|
||||
loop-call-button3-pb.tooltiptext = %S is not available in Private Browsing
|
||||
|
@ -233,3 +233,8 @@ conversation_settings_menu_hide_context=Hide Context
|
||||
# Text chat strings
|
||||
|
||||
chat_textbox_placeholder=Type here…
|
||||
|
||||
# E10s not supported strings
|
||||
|
||||
e10s_not_supported_button_label=Launch New Window
|
||||
e10s_not_supported_subheading={{brandShortname}} doesn't work in a multi-process window.
|
||||
|
@ -370,7 +370,6 @@ toolbarbutton.bookmark-item:not(.subviewbutton)[open="true"] {
|
||||
}
|
||||
|
||||
toolbarbutton.bookmark-item > menupopup {
|
||||
margin-top: 2px;
|
||||
-moz-margin-start: 3px;
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,6 @@
|
||||
|
||||
/* Url and search bars */
|
||||
--url-and-searchbar-background-color: #171B1F;
|
||||
--url-and-searchbar-color: #fff;
|
||||
--urlbar-separator-color: #5F6670;
|
||||
--urlbar-dropmarker-url: url("chrome://browser/skin/devedition/urlbar-history-dropmarker.svg");
|
||||
--urlbar-dropmarker-region: rect(0px, 11px, 14px, 0px);
|
||||
@ -169,11 +168,6 @@
|
||||
color: var(--chrome-color);
|
||||
}
|
||||
|
||||
.browserContainer > .findbar-textbox {
|
||||
background-color: var(--url-and-searchbar-background-color) !important;
|
||||
color: var(--url-and-searchbar-color);
|
||||
}
|
||||
|
||||
/* Default findbar text color doesn't look good - Bug 1125677 */
|
||||
.browserContainer > findbar .findbar-find-status,
|
||||
.browserContainer > findbar .found-matches {
|
||||
@ -203,7 +197,7 @@ toolbar[brighttext] #downloads-indicator-counter {
|
||||
#navigator-toolbox .searchbar-textbox {
|
||||
background-color: var(--url-and-searchbar-background-color) !important;
|
||||
background-image: none !important;
|
||||
color: var(--url-and-searchbar-color) !important;
|
||||
color: inherit;
|
||||
border: 1px solid var(--chrome-nav-bar-controls-border-color) !important;
|
||||
box-shadow: none !important;
|
||||
}
|
||||
|
@ -2667,22 +2667,6 @@ notification[value="loop-sharing-notification"] .messageImage {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
@media (-moz-os-version: windows-xp),
|
||||
(-moz-os-version: windows-vista),
|
||||
(-moz-os-version: windows-win7) {
|
||||
#TabsToolbar > .private-browsing-indicator {
|
||||
background-image: url("chrome://browser/skin/privatebrowsing-mask-tabstrip-XPVista7.png");
|
||||
}
|
||||
|
||||
/* We're intentionally using the titlebar asset here for fullscreen mode.
|
||||
* See bug 1008183.
|
||||
*/
|
||||
#private-browsing-indicator-titlebar > .private-browsing-indicator,
|
||||
#main-window[inFullscreen] #TabsToolbar > .private-browsing-indicator {
|
||||
background-image: url("chrome://browser/skin/privatebrowsing-mask-titlebar-XPVista7.png");
|
||||
}
|
||||
}
|
||||
|
||||
@media (-moz-os-version: windows-xp) {
|
||||
@media not all and (-moz-windows-classic) {
|
||||
#private-browsing-indicator-titlebar > .private-browsing-indicator {
|
||||
|
@ -300,6 +300,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/privatebrowsing-mask-tabstrip.png chrome://browser/skin/privatebrowsing-mask-tabstrip-XPVista7.png os=WINNT osversion<=6.1
|
||||
% override chrome://browser/skin/privatebrowsing-mask-titlebar.png chrome://browser/skin/privatebrowsing-mask-titlebar-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
|
||||
|
@ -2,7 +2,6 @@
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
|
||||
|
@ -973,12 +973,15 @@ StackFrames.prototype = {
|
||||
_insertScopeFrameReferences: function(aScope, aFrame) {
|
||||
// Add any thrown exception.
|
||||
if (this._currentException) {
|
||||
let excRef = aScope.addItem("<exception>", { value: this._currentException });
|
||||
let excRef = aScope.addItem("<exception>", { value: this._currentException },
|
||||
{ internalItem: true });
|
||||
DebuggerView.Variables.controller.addExpander(excRef, this._currentException);
|
||||
}
|
||||
// Add any returned value.
|
||||
if (this._currentReturnedValue) {
|
||||
let retRef = aScope.addItem("<return>", { value: this._currentReturnedValue });
|
||||
let retRef = aScope.addItem("<return>",
|
||||
{ value: this._currentReturnedValue },
|
||||
{ internalItem: true });
|
||||
DebuggerView.Variables.controller.addExpander(retRef, this._currentReturnedValue);
|
||||
}
|
||||
// Add "this".
|
||||
|
@ -2,7 +2,6 @@
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
|
||||
<?xml-stylesheet href="debugger.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
|
||||
|
@ -31,6 +31,9 @@ function testNormalReturn() {
|
||||
"Should have the right property name for the returned value.");
|
||||
is(returnVar.value, 10,
|
||||
"Should have the right property value for the returned value.");
|
||||
ok(returnVar._internalItem, "Should be an internal item");
|
||||
ok(returnVar._target.hasAttribute("pseudo-item"),
|
||||
"Element should be marked as a pseudo-item")
|
||||
|
||||
resumeDebuggee().then(() => testReturnWithException());
|
||||
});
|
||||
@ -53,6 +56,9 @@ function testReturnWithException() {
|
||||
"Should have the right property name for the returned value.");
|
||||
is(exceptionVar.value, "boom",
|
||||
"Should have the right property value for the returned value.");
|
||||
ok(exceptionVar._internalItem, "Should be an internal item");
|
||||
ok(exceptionVar._target.hasAttribute("pseudo-item"),
|
||||
"Element should be marked as a pseudo-item")
|
||||
|
||||
resumeDebuggee().then(() => closeDebuggerAndFinish(gPanel));
|
||||
});
|
||||
|
@ -45,7 +45,7 @@
|
||||
<ul class="actors" id="globalActors"></ul>
|
||||
</section>
|
||||
<section id="connecting">
|
||||
<p><img src="chrome://browser/skin/tabbrowser/loading.png"></img> &connecting;</p>
|
||||
<p class="devtools-throbber">&connecting;</p>
|
||||
</section>
|
||||
<footer>&remoteHelp;<a target='_' href='https://developer.mozilla.org/docs/Tools/Remote_Debugging'>&remoteDocumentation;</a>&remoteHelpSuffix;</footer>
|
||||
</body>
|
||||
|
@ -6,7 +6,6 @@
|
||||
<!ENTITY % toolboxDTD SYSTEM "chrome://devtools/locale/toolbox.dtd" >
|
||||
%toolboxDTD;
|
||||
]>
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
<?xml-stylesheet rel="stylesheet" href="chrome://devtools/content/framework/dev-edition-promo/dev-edition-promo.css" type="text/css"?>
|
||||
|
||||
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="dev-edition-promo">
|
||||
|
@ -2,7 +2,6 @@
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<!ENTITY % toolboxDTD SYSTEM "chrome://devtools/locale/toolbox.dtd" >
|
||||
%toolboxDTD;
|
||||
]>
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
<?xml-stylesheet rel="stylesheet" href="chrome://global/skin/" type="text/css"?>
|
||||
<?xml-stylesheet rel="stylesheet" href="chrome://devtools/content/framework/options-panel.css" type="text/css"?>
|
||||
|
||||
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
|
@ -7,8 +7,6 @@
|
||||
%toolboxDTD;
|
||||
]>
|
||||
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
|
||||
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
id="devtools-toolbox-window"
|
||||
macanimationtype="document"
|
||||
|
@ -7,8 +7,6 @@
|
||||
%toolboxDTD;
|
||||
]>
|
||||
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
|
||||
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
id="devtools-toolbox-window"
|
||||
macanimationtype="document"
|
||||
|
@ -2,7 +2,7 @@
|
||||
<!-- 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/. -->
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
|
||||
|
||||
<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
|
||||
|
@ -2,7 +2,6 @@
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/content/inspector/inspector.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
|
||||
|
@ -333,3 +333,8 @@ devtools.jar:
|
||||
skin/tooltip/arrow-vertical-light.png (themes/tooltip/arrow-vertical-light.png)
|
||||
skin/tooltip/arrow-vertical-light@2x.png (themes/tooltip/arrow-vertical-light@2x.png)
|
||||
skin/images/reload.svg (themes/images/reload.svg)
|
||||
skin/images/security-state-broken.svg (themes/images/security-state-broken.svg)
|
||||
skin/images/security-state-insecure.svg (themes/images/security-state-insecure.svg)
|
||||
skin/images/security-state-local.svg (themes/images/security-state-local.svg)
|
||||
skin/images/security-state-secure.svg (themes/images/security-state-secure.svg)
|
||||
skin/images/security-state-weak.svg (themes/images/security-state-weak.svg)
|
||||
|
@ -10,7 +10,6 @@ const {Cc, Cu, Ci} = require("chrome");
|
||||
// Page size for pageup/pagedown
|
||||
const PAGE_SIZE = 10;
|
||||
const DEFAULT_MAX_CHILDREN = 100;
|
||||
const COLLAPSE_ATTRIBUTE_LENGTH = 120;
|
||||
const COLLAPSE_DATA_URL_REGEX = /^data.+base64/;
|
||||
const COLLAPSE_DATA_URL_LENGTH = 60;
|
||||
const NEW_SELECTION_HIGHLIGHTER_TIMER = 1000;
|
||||
@ -80,6 +79,9 @@ function MarkupView(aInspector, aFrame, aControllerWindow) {
|
||||
this.maxChildren = DEFAULT_MAX_CHILDREN;
|
||||
}
|
||||
|
||||
this.collapseAttributeLength =
|
||||
Services.prefs.getIntPref("devtools.markup.collapseAttributeLength");
|
||||
|
||||
// Creating the popup to be used to show CSS suggestions.
|
||||
let options = {
|
||||
autoSelect: true,
|
||||
@ -2806,7 +2808,9 @@ ElementEditor.prototype = {
|
||||
if (value && value.match(COLLAPSE_DATA_URL_REGEX)) {
|
||||
return truncateString(value, COLLAPSE_DATA_URL_LENGTH);
|
||||
}
|
||||
return truncateString(value, COLLAPSE_ATTRIBUTE_LENGTH);
|
||||
return this.markup.collapseAttributeLength < 0
|
||||
? value :
|
||||
truncateString(value, this.markup.collapseAttributeLength);
|
||||
};
|
||||
|
||||
val.innerHTML = "";
|
||||
|
@ -72,9 +72,31 @@ var TEST_DATA = [{
|
||||
let visibleAttrText = editor.attrElements.get("src").querySelector(".attr-value").textContent;
|
||||
is (visibleAttrText, DATA_URL_ATTRIBUTE_COLLAPSED);
|
||||
}
|
||||
}, {
|
||||
desc: "Try to add long attribute with collapseAttributeLength == -1" +
|
||||
"to make sure it isn't collapsed in attribute editor.",
|
||||
text: 'data-long="' + LONG_ATTRIBUTE + '"',
|
||||
expectedAttributes: {
|
||||
"data-long": LONG_ATTRIBUTE
|
||||
},
|
||||
setUp: function(inspector) {
|
||||
inspector.markup.collapseAttributeLength = -1;
|
||||
},
|
||||
validate: (element, container, inspector) => {
|
||||
let editor = container.editor;
|
||||
let visibleAttrText = editor.attrElements
|
||||
.get("data-long")
|
||||
.querySelector(".attr-value")
|
||||
.textContent;
|
||||
is(visibleAttrText, LONG_ATTRIBUTE);
|
||||
},
|
||||
tearDown: function(inspector) {
|
||||
inspector.markup.collapseAttributeLength = 120;
|
||||
}
|
||||
}];
|
||||
|
||||
add_task(function*() {
|
||||
let {inspector} = yield addTab(TEST_URL).then(openInspector);
|
||||
yield runAddAttributesTests(TEST_DATA, "div", inspector)
|
||||
});
|
||||
|
||||
|
@ -50,6 +50,9 @@ function runAddAttributesTests(tests, nodeOrSelector, inspector) {
|
||||
* opened
|
||||
*/
|
||||
function* runAddAttributesTest(test, selector, inspector) {
|
||||
if (test.setUp) {
|
||||
test.setUp(inspector);
|
||||
}
|
||||
let element = getNode(selector);
|
||||
|
||||
info("Starting add-attribute test: " + test.desc);
|
||||
@ -68,6 +71,9 @@ function* runAddAttributesTest(test, selector, inspector) {
|
||||
|
||||
info("Assert that the attribute(s) has/have been removed correctly");
|
||||
yield assertAttributes(selector, {});
|
||||
if (test.tearDown) {
|
||||
test.tearDown(inspector);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2752,7 +2752,7 @@ NetworkDetailsView.prototype = {
|
||||
headersScope.expanded = true;
|
||||
|
||||
for (let header of aResponse.headers) {
|
||||
let headerVar = headersScope.addItem(header.name, {}, true);
|
||||
let headerVar = headersScope.addItem(header.name, {}, {relaxed: true});
|
||||
let headerValue = yield gNetwork.getString(header.value);
|
||||
headerVar.setGrip(headerValue);
|
||||
}
|
||||
@ -2802,7 +2802,7 @@ NetworkDetailsView.prototype = {
|
||||
cookiesScope.expanded = true;
|
||||
|
||||
for (let cookie of aResponse.cookies) {
|
||||
let cookieVar = cookiesScope.addItem(cookie.name, {}, true);
|
||||
let cookieVar = cookiesScope.addItem(cookie.name, {}, {relaxed: true});
|
||||
let cookieValue = yield gNetwork.getString(cookie.value);
|
||||
cookieVar.setGrip(cookieValue);
|
||||
|
||||
@ -2916,7 +2916,7 @@ NetworkDetailsView.prototype = {
|
||||
paramsScope.expanded = true;
|
||||
|
||||
for (let param of paramsArray) {
|
||||
let paramVar = paramsScope.addItem(param.name, {}, true);
|
||||
let paramVar = paramsScope.addItem(param.name, {}, {relaxed: true});
|
||||
paramVar.setGrip(param.value);
|
||||
}
|
||||
},
|
||||
|
@ -2,7 +2,6 @@
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/content/netmonitor/netmonitor.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
|
||||
|
@ -2,7 +2,6 @@
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
|
||||
|
@ -66,6 +66,10 @@ pref("devtools.inspector.showAllAnonymousContent", false);
|
||||
// Enable the MDN docs tooltip
|
||||
pref("devtools.inspector.mdnDocsTooltip.enabled", true);
|
||||
|
||||
// Collapse attributes that are too long.
|
||||
// Use -1 to not collapse attributes at all.
|
||||
pref("devtools.markup.collapseAttributeLength", 120);
|
||||
|
||||
// DevTools default color unit
|
||||
pref("devtools.defaultColorUnit", "authored");
|
||||
|
||||
|
@ -2,7 +2,6 @@
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/shadereditor.css" type="text/css"?>
|
||||
|
@ -61,4 +61,6 @@ function BrowserLoader(baseURI, window) {
|
||||
};
|
||||
}
|
||||
|
||||
EXPORTED_SYMBOLS = ["BrowserLoader"];
|
||||
this.BrowserLoader = BrowserLoader;
|
||||
|
||||
this.EXPORTED_SYMBOLS = ["BrowserLoader"];
|
||||
|
@ -8,7 +8,7 @@ Test that arrows get the open attribute when their item's children are expanded.
|
||||
<title>Tree component test</title>
|
||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
|
||||
<link rel="stylesheet" href="chrome://browser/skin/devtools/light-theme.css" type="text/css">
|
||||
<link rel="stylesheet" href="chrome://devtools/skin/light-theme.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<pre id="test">
|
||||
|
@ -9,7 +9,7 @@ other inputs.
|
||||
<title>Tree component test</title>
|
||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
|
||||
<link rel="stylesheet" href="chrome://browser/skin/devtools/light-theme.css" type="text/css">
|
||||
<link rel="stylesheet" href="chrome://devtools/skin/light-theme.css" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
<pre id="test">
|
||||
|
@ -172,7 +172,7 @@ function editableItem(options, callback) {
|
||||
};
|
||||
}
|
||||
|
||||
exports.editableItem = this.editableItem;
|
||||
exports.editableItem = editableItem;
|
||||
|
||||
/*
|
||||
* Various API consumers (especially tests) sometimes want to grab the
|
||||
|
@ -2,7 +2,6 @@
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
|
||||
|
@ -128,6 +128,7 @@ function AbstractTreeItem({ parent, level }) {
|
||||
EventEmitter.decorate(this);
|
||||
}
|
||||
}
|
||||
this.AbstractTreeItem = AbstractTreeItem;
|
||||
|
||||
AbstractTreeItem.prototype = {
|
||||
_containerNode: null,
|
||||
|
@ -38,6 +38,7 @@ function SimpleListWidget(aNode) {
|
||||
ViewHelpers.delegateWidgetAttributeMethods(this, aNode);
|
||||
ViewHelpers.delegateWidgetEventMethods(this, aNode);
|
||||
}
|
||||
this.SimpleListWidget = SimpleListWidget;
|
||||
|
||||
SimpleListWidget.prototype = {
|
||||
/**
|
||||
|
@ -1278,11 +1278,13 @@ Scope.prototype = {
|
||||
* The name of the new Property.
|
||||
* @param object aDescriptor
|
||||
* The variable's descriptor.
|
||||
* @param object aOptions
|
||||
* Options of the form accepted by addItem.
|
||||
* @return Variable
|
||||
* The newly created child Variable.
|
||||
*/
|
||||
_createChild: function(aName, aDescriptor) {
|
||||
return new Variable(this, aName, aDescriptor);
|
||||
_createChild: function(aName, aDescriptor, aOptions) {
|
||||
return new Variable(this, aName, aDescriptor, aOptions);
|
||||
},
|
||||
|
||||
/**
|
||||
@ -1303,18 +1305,27 @@ Scope.prototype = {
|
||||
* - { value: { type: "object", class: "Object" } }
|
||||
* - { get: { type: "object", class: "Function" },
|
||||
* set: { type: "undefined" } }
|
||||
* @param boolean aRelaxed [optional]
|
||||
* Pass true if name duplicates should be allowed.
|
||||
* You probably shouldn't do it. Use this with caution.
|
||||
* @param object aOptions
|
||||
* Specifies some options affecting the new variable.
|
||||
* Recognized properties are
|
||||
* * boolean relaxed true if name duplicates should be allowed.
|
||||
* You probably shouldn't do it. Use this
|
||||
* with caution.
|
||||
* * boolean internalItem true if the item is internally generated.
|
||||
* This is used for special variables
|
||||
* like <return> or <exception> and distinguishes
|
||||
* them from ordinary properties that happen
|
||||
* to have the same name
|
||||
* @return Variable
|
||||
* The newly created Variable instance, null if it already exists.
|
||||
*/
|
||||
addItem: function(aName = "", aDescriptor = {}, aRelaxed = false) {
|
||||
if (this._store.has(aName) && !aRelaxed) {
|
||||
addItem: function(aName = "", aDescriptor = {}, aOptions = {}) {
|
||||
let {relaxed} = aOptions;
|
||||
if (this._store.has(aName) && !relaxed) {
|
||||
return this._store.get(aName);
|
||||
}
|
||||
|
||||
let child = this._createChild(aName, aDescriptor);
|
||||
let child = this._createChild(aName, aDescriptor, aOptions);
|
||||
this._store.set(aName, child);
|
||||
this._variablesView._itemsByElement.set(child._target, child);
|
||||
this._variablesView._currHierarchy.set(child.absoluteName, child);
|
||||
@ -2146,14 +2157,17 @@ XPCOMUtils.defineLazyGetter(Scope, "ellipsis", () =>
|
||||
* The variable's name.
|
||||
* @param object aDescriptor
|
||||
* The variable's descriptor.
|
||||
* @param object aOptions
|
||||
* Options of the form accepted by Scope.addItem
|
||||
*/
|
||||
function Variable(aScope, aName, aDescriptor) {
|
||||
function Variable(aScope, aName, aDescriptor, aOptions) {
|
||||
this._setTooltips = this._setTooltips.bind(this);
|
||||
this._activateNameInput = this._activateNameInput.bind(this);
|
||||
this._activateValueInput = this._activateValueInput.bind(this);
|
||||
this.openNodeInInspector = this.openNodeInInspector.bind(this);
|
||||
this.highlightDomNode = this.highlightDomNode.bind(this);
|
||||
this.unhighlightDomNode = this.unhighlightDomNode.bind(this);
|
||||
this._internalItem = aOptions.internalItem;
|
||||
|
||||
// Treat safe getter descriptors as descriptors with a value.
|
||||
if ("getterValue" in aDescriptor) {
|
||||
@ -2193,11 +2207,13 @@ Variable.prototype = Heritage.extend(Scope.prototype, {
|
||||
* The name of the new Property.
|
||||
* @param object aDescriptor
|
||||
* The property's descriptor.
|
||||
* @param object aOptions
|
||||
* Options of the form accepted by Scope.addItem
|
||||
* @return Property
|
||||
* The newly created child Property.
|
||||
*/
|
||||
_createChild: function(aName, aDescriptor) {
|
||||
return new Property(this, aName, aDescriptor);
|
||||
_createChild: function(aName, aDescriptor, aOptions) {
|
||||
return new Property(this, aName, aDescriptor, aOptions);
|
||||
},
|
||||
|
||||
/**
|
||||
@ -2521,8 +2537,9 @@ Variable.prototype = Heritage.extend(Scope.prototype, {
|
||||
|
||||
if (this._initialDescriptor.enumerable ||
|
||||
this._nameString == "this" ||
|
||||
this._nameString == "<return>" ||
|
||||
this._nameString == "<exception>") {
|
||||
(this._internalItem &&
|
||||
(this._nameString == "<return>" ||
|
||||
this._nameString == "<exception>"))) {
|
||||
this.ownerView._enum.appendChild(this._target);
|
||||
this.ownerView._enumItems.push(this);
|
||||
} else {
|
||||
@ -2869,11 +2886,11 @@ Variable.prototype = Heritage.extend(Scope.prototype, {
|
||||
if (name == "this") {
|
||||
target.setAttribute("self", "");
|
||||
}
|
||||
else if (name == "<exception>") {
|
||||
else if (this._internalItem && name == "<exception>") {
|
||||
target.setAttribute("exception", "");
|
||||
target.setAttribute("pseudo-item", "");
|
||||
}
|
||||
else if (name == "<return>") {
|
||||
else if (this._internalItem && name == "<return>") {
|
||||
target.setAttribute("return", "");
|
||||
target.setAttribute("pseudo-item", "");
|
||||
}
|
||||
@ -3008,7 +3025,7 @@ Variable.prototype = Heritage.extend(Scope.prototype, {
|
||||
configurable: true,
|
||||
enumerable: true,
|
||||
writable: true
|
||||
}, true);
|
||||
}, {relaxed: true});
|
||||
|
||||
// Force showing the separator.
|
||||
item._separatorLabel.hidden = false;
|
||||
@ -3051,9 +3068,11 @@ Variable.prototype = Heritage.extend(Scope.prototype, {
|
||||
* The property's name.
|
||||
* @param object aDescriptor
|
||||
* The property's descriptor.
|
||||
* @param object aOptions
|
||||
* Options of the form accepted by Scope.addItem
|
||||
*/
|
||||
function Property(aVar, aName, aDescriptor) {
|
||||
Variable.call(this, aVar, aName, aDescriptor);
|
||||
function Property(aVar, aName, aDescriptor, aOptions) {
|
||||
Variable.call(this, aVar, aName, aDescriptor, aOptions);
|
||||
}
|
||||
|
||||
Property.prototype = Heritage.extend(Variable.prototype, {
|
||||
|
@ -65,6 +65,7 @@ function VariablesViewController(aView, aOptions = {}) {
|
||||
this.view = aView;
|
||||
this.view.controller = this;
|
||||
}
|
||||
this.VariablesViewController = VariablesViewController;
|
||||
|
||||
VariablesViewController.prototype = {
|
||||
/**
|
||||
@ -430,7 +431,7 @@ VariablesViewController.prototype = {
|
||||
let label = StackFrameUtils.getScopeLabel(environment);
|
||||
|
||||
// Block scopes may have the same label, so make addItem allow duplicates.
|
||||
let closure = funcScope.addItem(label, undefined, true);
|
||||
let closure = funcScope.addItem(label, undefined, {relaxed: true});
|
||||
closure.target.setAttribute("scope", "");
|
||||
closure.showArrow();
|
||||
|
||||
@ -734,7 +735,7 @@ VariablesViewController.attach = function(aView, aOptions) {
|
||||
/**
|
||||
* Utility functions for handling stackframes.
|
||||
*/
|
||||
var StackFrameUtils = {
|
||||
var StackFrameUtils = this.StackFrameUtils = {
|
||||
/**
|
||||
* Create a textual representation for the specified stack frame
|
||||
* to display in the stackframes container.
|
||||
|
@ -2,7 +2,6 @@
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/content/shared/widgets/widgets.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/common.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://devtools/skin/widgets.css" type="text/css"?>
|
||||
|
@ -379,7 +379,7 @@ StorageUI.prototype = {
|
||||
mainScope.expanded = true;
|
||||
|
||||
if (item.name && item.valueActor) {
|
||||
let itemVar = mainScope.addItem(item.name + "", {}, true);
|
||||
let itemVar = mainScope.addItem(item.name + "", {}, {relaxed: true});
|
||||
|
||||
item.valueActor.string().then(value => {
|
||||
// The main area where the value will be displayed
|
||||
@ -461,7 +461,7 @@ StorageUI.prototype = {
|
||||
let valueScope = view.getScopeAtIndex(1) ||
|
||||
view.addScope(L10N.getStr("storage.parsedValue.label"));
|
||||
valueScope.expanded = true;
|
||||
let jsonVar = valueScope.addItem("", Object.create(null), true);
|
||||
let jsonVar = valueScope.addItem("", Object.create(null), {relaxed: true});
|
||||
jsonVar.expanded = true;
|
||||
jsonVar.twisty = true;
|
||||
jsonVar.populate(jsonObject, {expanded: true});
|
||||
|
@ -82,6 +82,7 @@ function StyleEditorUI(debuggee, target, panelDoc) {
|
||||
this._prefObserver.on(PREF_ORIG_SOURCES, this._onNewDocument);
|
||||
this._prefObserver.on(PREF_MEDIA_SIDEBAR, this._onMediaPrefChanged);
|
||||
}
|
||||
this.StyleEditorUI = StyleEditorUI;
|
||||
|
||||
StyleEditorUI.prototype = {
|
||||
/**
|
||||
|
@ -5,7 +5,7 @@
|
||||
|
||||
"use strict";
|
||||
|
||||
this.EXPORTED_SYMBOLS = ["StyleSheetEditor", "prettifyCSS"];
|
||||
this.EXPORTED_SYMBOLS = ["StyleSheetEditor"];
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
@ -130,6 +130,7 @@ function StyleSheetEditor(styleSheet, win, file, isNew, walker, highlighter) {
|
||||
this.savedFile = file;
|
||||
this.linkCSSFile();
|
||||
}
|
||||
this.StyleSheetEditor = StyleSheetEditor;
|
||||
|
||||
StyleSheetEditor.prototype = {
|
||||
/**
|
||||
|
9
devtools/client/themes/images/security-state-broken.svg
Normal file
9
devtools/client/themes/images/security-state-broken.svg
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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/. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
width="16" height="16" viewBox="0 0 16 16">
|
||||
<path fill="#808080" d="M14.8,12.5L9.3,1.9C9,1.3,8.5,1,8,1C7.5,1,7,1.3,6.7,1.9L1.2,12.5c-0.3,0.6-0.3,1.2,0,1.7C1.5,14.7,2,15,2.6,15h10.8 c0.6,0,1.1-0.3,1.4-0.8C15.1,13.7,15.1,13.1,14.8,12.5z"/>
|
||||
<path fill="#fff" d="M8,11c-0.8,0-1.5,0.7-1.5,1.5C6.5,13.3,7.2,14,8,14 c0.8,0,1.5-0.7,1.5-1.5C9.5,11.7,8.8,11,8,11z M8,10L8,10C8.6,10,9,9.6,9,9l0.2-4.2c0-0.7-0.5-1.2-1.2-1.2S6.8,4.1,6.8,4.8L7,9 C7,9.6,7.4,10,8,10z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 805 B |
38
devtools/client/themes/images/security-state-insecure.svg
Normal file
38
devtools/client/themes/images/security-state-insecure.svg
Normal file
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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/. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
width="16" height="16" viewBox="0 0 16 16">
|
||||
<style>
|
||||
.icon-default {
|
||||
fill: #999;
|
||||
}
|
||||
</style>
|
||||
|
||||
<defs>
|
||||
<rect id="shape-lock-clasp-outer" x="4" y="2" width="8" height="10" rx="4" ry="4" />
|
||||
<rect id="shape-lock-clasp-inner" x="6" y="4" width="4" height="6" rx="2" ry="2" />
|
||||
<rect id="shape-lock-base" x="3" y="7" width="10" height="7" rx="1" ry="1" />
|
||||
|
||||
<mask id="mask-clasp-cutout">
|
||||
<rect width="16" height="16" fill="#000" />
|
||||
<use xlink:href="#shape-lock-clasp-outer" fill="#fff" />
|
||||
<use xlink:href="#shape-lock-clasp-inner" fill="#000" />
|
||||
<line x1="2" y1="13" x2="14" y2="1.5" stroke="#000" stroke-width="2" />
|
||||
<line x1="2" y1="15" x2="14" y2="3.5" stroke="#000" stroke-width="2" />
|
||||
<rect x="3" y="7" width="10" height="7" rx="1" ry="1" fill="#000" />
|
||||
</mask>
|
||||
|
||||
<mask id="mask-base-cutout">
|
||||
<rect width="16" height="16" fill="#000" />
|
||||
<use xlink:href="#shape-lock-base" fill="#fff" />
|
||||
<line x1="2" y1="14.8" x2="14" y2="3.2" stroke="#000" stroke-width="1.8" />
|
||||
</mask>
|
||||
</defs>
|
||||
|
||||
<use xlink:href="#shape-lock-clasp-outer" mask="url(#mask-clasp-cutout)" class="icon-default" />
|
||||
<use xlink:href="#shape-lock-base" mask="url(#mask-base-cutout)" class="icon-default" />
|
||||
|
||||
<line x1="2" y1="14.1" x2="14" y2="2.5" stroke="#d92d21" stroke-width="1.8" />
|
||||
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
8
devtools/client/themes/images/security-state-local.svg
Normal file
8
devtools/client/themes/images/security-state-local.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 61 KiB |
27
devtools/client/themes/images/security-state-secure.svg
Normal file
27
devtools/client/themes/images/security-state-secure.svg
Normal file
@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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/. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
width="16" height="16" viewBox="0 0 16 16">
|
||||
<style>
|
||||
.icon-default {
|
||||
fill: #4d9a26;
|
||||
}
|
||||
</style>
|
||||
|
||||
<defs>
|
||||
<rect id="shape-lock-clasp-outer" x="4" y="2" width="8" height="10" rx="4" ry="4" />
|
||||
<rect id="shape-lock-clasp-inner" x="6" y="4" width="4" height="6" rx="2" ry="2" />
|
||||
<rect id="shape-lock-base" x="3" y="7" width="10" height="7" rx="1" ry="1" />
|
||||
|
||||
<mask id="mask-clasp-cutout">
|
||||
<rect width="16" height="16" fill="#000" />
|
||||
<use xlink:href="#shape-lock-clasp-outer" fill="#fff" />
|
||||
<use xlink:href="#shape-lock-clasp-inner" fill="#000" />
|
||||
</mask>
|
||||
</defs>
|
||||
|
||||
<use xlink:href="#shape-lock-clasp-outer" mask="url(#mask-clasp-cutout)" class="icon-default" />
|
||||
<use xlink:href="#shape-lock-base" class="icon-default" />
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
31
devtools/client/themes/images/security-state-weak.svg
Normal file
31
devtools/client/themes/images/security-state-weak.svg
Normal file
@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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/. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
width="16" height="16" viewBox="0 0 16 16">
|
||||
<style>
|
||||
.icon-default {
|
||||
fill: #808080;
|
||||
}
|
||||
</style>
|
||||
|
||||
<defs>
|
||||
<rect id="shape-lock-clasp-outer" x="2" y="1" width="8" height="10" rx="4" ry="4" />
|
||||
<rect id="shape-lock-clasp-inner" x="4" y="3" width="4" height="6" rx="2" ry="2" />
|
||||
<rect id="shape-lock-base" x="1" y="6" width="10" height="7" rx="1" ry="1" />
|
||||
|
||||
<mask id="mask-clasp-cutout">
|
||||
<rect width="16" height="16" fill="#000" />
|
||||
<use xlink:href="#shape-lock-clasp-outer" fill="#fff" />
|
||||
<use xlink:href="#shape-lock-clasp-inner" fill="#000" />
|
||||
</mask>
|
||||
</defs>
|
||||
|
||||
<use xlink:href="#shape-lock-clasp-outer" mask="url(#mask-clasp-cutout)" class="icon-default" />
|
||||
<use xlink:href="#shape-lock-base" class="icon-default" />
|
||||
<path fill="#fff" d="M10.5,5C9.8,5,9.1,5.4,8.8,6.2l-3.5,6.8c-0.4,0.7-0.4,1.4,0,2c0.4,0.6,1,1,1.8,1H14c0.8,0,1.4-0.4,1.8-1 c0.3-0.6,0.3-1.4,0-2l-3.5-6.8C11.9,5.4,11.2,5,10.5,5L10.5,5z"/>
|
||||
<path fill="#ffbf00" d="M14.8,13.4l-3.5-6.8C11.2,6.2,10.9,6,10.5,6c-0.3,0-0.7,0.2-0.9,0.6l-3.5,6.8c-0.2,0.4-0.2,0.8,0,1.1C6.3,14.8,6.6,15,7,15 H14c0.4,0,0.7-0.2,0.9-0.5C15.1,14.2,15,13.8,14.8,13.4z"/>
|
||||
<path fill="#fff" d="M10,8.5C10,8.2,10.2,8,10.5,8S11,8.2,11,8.5L10.8,11h-0.6L10,8.5z" />
|
||||
<circle fill="#fff" cx="10.5" cy="12.5" r=".75" />
|
||||
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user