Merge m-c to inbound, a=merge CLOSED TREE

--HG--
extra : commitid : HQ2HZ9hq60S
This commit is contained in:
Wes Kocher 2015-11-24 16:59:18 -08:00
Родитель 259b73a779 fcb2a5060a
Коммит 3f9d73cccc
191 изменённых файлов: 3191 добавлений и 1060 удалений

Просмотреть файл

@ -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
Просмотреть файл

@ -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 = {
/**

Просмотреть файл

@ -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>

После

Ширина:  |  Высота:  |  Размер: 805 B

Просмотреть файл

@ -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>

После

Ширина:  |  Высота:  |  Размер: 1.7 KiB

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

После

Ширина:  |  Высота:  |  Размер: 61 KiB

Просмотреть файл

@ -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>

После

Ширина:  |  Высота:  |  Размер: 1.1 KiB

Просмотреть файл

@ -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>

После

Ширина:  |  Высота:  |  Размер: 1.6 KiB

Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше