зеркало из https://github.com/mozilla/gecko-dev.git
merge b2g-inbound to mozilla-central a=merge
This commit is contained in:
Коммит
935a218dcb
|
@ -15,15 +15,15 @@
|
|||
<project name="platform_build" path="build" remote="b2g" revision="e0c735ec89df011ea7dd435087a9045ecff9ff9e">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a5c5ac093814a80b0627514c3bd5f9e96c096a4b"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="579e01ad4d6e4177a8f636305ac877835d99f134"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="049c281ad212bf528b2af8fc246b0dd0c9f97415"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="320dad6b787c296ba701bca8377f71ab5fd72ee8"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="c28e606f7656de3a3a8808b68eb048528397d5a7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="e7c3ee43c96a0079d7e4f3fe471149293225917b"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="ebdad82e61c16772f6cd47e9f11936bf6ebe9aa0"/>
|
||||
|
@ -116,7 +116,7 @@
|
|||
<project name="platform_prebuilts_qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="f7d9bf71cf6693474f3f2a81a4ba62c0fc5646aa"/>
|
||||
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="cfcef469537869947abb9aa1d656774cc2678d4c"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5a48c04c4bb5f079bc757e29864a42427378e051"/>
|
||||
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="aa3adea9c18ae00d36e597d5890cf14cb7dfb105"/>
|
||||
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bdc5a9f9602652c3c2626e020da03674a2c2e1b6"/>
|
||||
<project name="platform/system/extras" path="system/extras" revision="10e78a05252b3de785f88c2d0b9ea8a428009c50"/>
|
||||
<project name="platform/system/media" path="system/media" revision="7ff72c2ea2496fa50b5e8a915e56e901c3ccd240"/>
|
||||
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="fe95bc6f83af5c18a73aa86c96e7fa7f79b91477"/>
|
||||
|
|
|
@ -19,13 +19,13 @@
|
|||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="a5c5ac093814a80b0627514c3bd5f9e96c096a4b"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="049c281ad212bf528b2af8fc246b0dd0c9f97415"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="579e01ad4d6e4177a8f636305ac877835d99f134"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="320dad6b787c296ba701bca8377f71ab5fd72ee8"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="d5d3f93914558b6f168447b805cd799c8233e300"/>
|
||||
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="6fa7a4936414ceb4055fd27f7a30e76790f834fb"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="c28e606f7656de3a3a8808b68eb048528397d5a7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="e7c3ee43c96a0079d7e4f3fe471149293225917b"/>
|
||||
<!-- Stock Android things -->
|
||||
<project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
|
||||
<project name="platform_bionic" path="bionic" remote="b2g" revision="e2b3733ba3fa5e3f404e983d2e4142b1f6b1b846"/>
|
||||
|
|
|
@ -17,10 +17,10 @@
|
|||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a5c5ac093814a80b0627514c3bd5f9e96c096a4b"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="049c281ad212bf528b2af8fc246b0dd0c9f97415"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="579e01ad4d6e4177a8f636305ac877835d99f134"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="320dad6b787c296ba701bca8377f71ab5fd72ee8"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="c28e606f7656de3a3a8808b68eb048528397d5a7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="e7c3ee43c96a0079d7e4f3fe471149293225917b"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<!-- Stock Android things -->
|
||||
|
@ -118,7 +118,7 @@
|
|||
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="842e33e43a55ea44833b9e23e4d180fa17c843af"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5db24726f0f42124304195a6bdea129039eeeaeb"/>
|
||||
<project name="platform/system/bluetooth" path="system/bluetooth" revision="930ae098543881f47eac054677726ee4b998b2f8"/>
|
||||
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="aa3adea9c18ae00d36e597d5890cf14cb7dfb105"/>
|
||||
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bdc5a9f9602652c3c2626e020da03674a2c2e1b6"/>
|
||||
<project name="platform_system_core" path="system/core" remote="b2g" revision="542d1f59dc331b472307e5bd043101d14d5a3a3e"/>
|
||||
<project name="platform/system/extras" path="system/extras" revision="18c1180e848e7ab8691940481f5c1c8d22c37b3e"/>
|
||||
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="fe95bc6f83af5c18a73aa86c96e7fa7f79b91477"/>
|
||||
|
|
|
@ -15,15 +15,15 @@
|
|||
<project name="platform_build" path="build" remote="b2g" revision="e0c735ec89df011ea7dd435087a9045ecff9ff9e">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a5c5ac093814a80b0627514c3bd5f9e96c096a4b"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="579e01ad4d6e4177a8f636305ac877835d99f134"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="049c281ad212bf528b2af8fc246b0dd0c9f97415"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="320dad6b787c296ba701bca8377f71ab5fd72ee8"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="c28e606f7656de3a3a8808b68eb048528397d5a7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="e7c3ee43c96a0079d7e4f3fe471149293225917b"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="f92a936f2aa97526d4593386754bdbf02db07a12"/>
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="6e47ff2790f5656b5b074407829ceecf3e6188c4"/>
|
||||
|
@ -116,7 +116,7 @@
|
|||
<project name="platform_prebuilts_qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="f7d9bf71cf6693474f3f2a81a4ba62c0fc5646aa"/>
|
||||
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="b562b01c93de9578d5db537b6a602a38e1aaa0ce"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="387f03e815f57d536dd922706db1622bddba8d81"/>
|
||||
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="aa3adea9c18ae00d36e597d5890cf14cb7dfb105"/>
|
||||
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bdc5a9f9602652c3c2626e020da03674a2c2e1b6"/>
|
||||
<project name="platform/system/extras" path="system/extras" revision="5356165f67f4a81c2ef28671c13697f1657590df"/>
|
||||
<project name="platform/system/media" path="system/media" revision="be0e2fe59a8043fa5200f75697df9220a99abe9d"/>
|
||||
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="fe95bc6f83af5c18a73aa86c96e7fa7f79b91477"/>
|
||||
|
|
|
@ -19,13 +19,13 @@
|
|||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="a5c5ac093814a80b0627514c3bd5f9e96c096a4b"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="049c281ad212bf528b2af8fc246b0dd0c9f97415"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="579e01ad4d6e4177a8f636305ac877835d99f134"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="320dad6b787c296ba701bca8377f71ab5fd72ee8"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="d5d3f93914558b6f168447b805cd799c8233e300"/>
|
||||
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="6fa7a4936414ceb4055fd27f7a30e76790f834fb"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="c28e606f7656de3a3a8808b68eb048528397d5a7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="e7c3ee43c96a0079d7e4f3fe471149293225917b"/>
|
||||
<!-- Stock Android things -->
|
||||
<project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
|
||||
<project name="platform_bionic" path="bionic" remote="b2g" revision="e2b3733ba3fa5e3f404e983d2e4142b1f6b1b846"/>
|
||||
|
|
|
@ -15,15 +15,15 @@
|
|||
<project name="platform_build" path="build" remote="b2g" revision="e0c735ec89df011ea7dd435087a9045ecff9ff9e">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a5c5ac093814a80b0627514c3bd5f9e96c096a4b"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="579e01ad4d6e4177a8f636305ac877835d99f134"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="049c281ad212bf528b2af8fc246b0dd0c9f97415"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="320dad6b787c296ba701bca8377f71ab5fd72ee8"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="c28e606f7656de3a3a8808b68eb048528397d5a7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="e7c3ee43c96a0079d7e4f3fe471149293225917b"/>
|
||||
<!-- Stock Android things -->
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
|
||||
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="ebdad82e61c16772f6cd47e9f11936bf6ebe9aa0"/>
|
||||
|
@ -35,10 +35,8 @@
|
|||
<project name="device/sample" path="device/sample" revision="9c19bbbe0793ebdc427277dc37f9bb4ae20bccb2"/>
|
||||
<project name="platform/abi/cpp" path="abi/cpp" revision="18f1b5e28734183ff8073fe86dc46bc4ebba8a59"/>
|
||||
<project name="platform/bionic" path="bionic" revision="e36fba720d5327bf5532dfcde013239080f38b56"/>
|
||||
<project name="platform/bootable/recovery" path="bootable/recovery" revision="dc8da21282a0c68328d05268433d19b0f2f6a15c"/>
|
||||
<project name="platform/external/aac" path="external/aac" revision="fa3eba16446cc8f2f5e2dfc20d86a49dbd37299e"/>
|
||||
<project name="platform/external/bison" path="external/bison" revision="c2418b886165add7f5a31fc5609f0ce2d004a90e"/>
|
||||
<project name="platform/external/bluetooth/bluedroid" path="external/bluetooth/bluedroid" revision="5cac78cb53f1b08386d64379c4bf61ecfbf5f56b"/>
|
||||
<project name="platform/external/bsdiff" path="external/bsdiff" revision="23e322ab19fb7d74c2c37e40ce364d9f709bdcee"/>
|
||||
<project name="platform/external/bzip2" path="external/bzip2" revision="1cb636bd8e9e5cdfd5d5b2909a122f6e80db62de"/>
|
||||
<project name="platform/external/checkpolicy" path="external/checkpolicy" revision="0d73ef7049feee794f14cf1af88d05dae8139914"/>
|
||||
|
@ -102,11 +100,8 @@
|
|||
<project name="platform/external/webrtc" path="external/webrtc" revision="446452f84e9cc4c75d8e80f6f05e24793397a19d"/>
|
||||
<project name="platform/external/yaffs2" path="external/yaffs2" revision="a2cff2275e1b501ff478b03757d6e4f05fddc2db"/>
|
||||
<project name="platform/external/zlib" path="external/zlib" revision="6eb3570ff8fa71bd83bb375b4bf09804c6089fed"/>
|
||||
<project name="platform/frameworks/base" path="frameworks/base" revision="08d8f3d58fe78840103ea3d39044bc474d686e94"/>
|
||||
<project name="platform/frameworks/native" path="frameworks/native" revision="5be7d8ca7bb5e193e092c39fd4f164189527b895"/>
|
||||
<project name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="dbbe673145107e99883f62bafd70c5f43f11065c"/>
|
||||
<project name="platform/frameworks/wilhelm" path="frameworks/wilhelm" revision="f0c3b4edf597c40aae4ea311575f39c8bcf203df"/>
|
||||
<project name="platform/hardware/libhardware" path="hardware/libhardware" revision="9a60e685a9fb38a716f18a89cd872942f75b4706"/>
|
||||
<project name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="adb52b35ecb523bd332854945c09828ee887e575"/>
|
||||
<project name="platform/libcore" path="libcore" revision="baf7d8068dd501cfa338d3a8b1b87216d6ce0571"/>
|
||||
<project name="platform/libnativehelper" path="libnativehelper" revision="50c4430e32849530ced32680fd6ee98963b3f7ac"/>
|
||||
|
@ -116,20 +111,14 @@
|
|||
<project name="platform_prebuilts_qemu-kernel" path="prebuilts/qemu-kernel" remote="b2g" revision="f7d9bf71cf6693474f3f2a81a4ba62c0fc5646aa"/>
|
||||
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="69d524e80cdf3981006627c65ac85f3a871238a3"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5a48c04c4bb5f079bc757e29864a42427378e051"/>
|
||||
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="aa3adea9c18ae00d36e597d5890cf14cb7dfb105"/>
|
||||
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bdc5a9f9602652c3c2626e020da03674a2c2e1b6"/>
|
||||
<project name="platform/system/extras" path="system/extras" revision="576f57b6510de59c08568b53c0fb60588be8689e"/>
|
||||
<project name="platform/system/media" path="system/media" revision="20c2fb4c896aa59f2e8379d755f439dc59a5cf9b"/>
|
||||
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="fe95bc6f83af5c18a73aa86c96e7fa7f79b91477"/>
|
||||
<project name="platform/system/netd" path="system/netd" revision="a6531f7befb49b1c81bc0de7e51c5482b308e1c5"/>
|
||||
<project name="platform/system/security" path="system/security" revision="ee8068b9e7bfb2770635062fc9c2035be2142bd8"/>
|
||||
<project name="platform/system/vold" path="system/vold" revision="42fa2a0f14f965970a4b629a176bbd2666edf017"/>
|
||||
<project name="platform/external/curl" path="external/curl" revision="e68addd988448959ea8157c5de637346b4180c33"/>
|
||||
<project name="platform/external/icu4c" path="external/icu4c" revision="d3ec7428eb276db43b7ed0544e09344a6014806c"/>
|
||||
<remove-project name="platform/frameworks/base"/>
|
||||
<remove-project name="platform/frameworks/native"/>
|
||||
<remove-project name="platform/hardware/libhardware"/>
|
||||
<remove-project name="platform/external/bluetooth/bluedroid"/>
|
||||
<remove-project name="platform/system/media"/>
|
||||
<project name="platform/system/media" path="system/media" revision="c1332c21c608f4932a6d7e83450411cde53315ef"/>
|
||||
<!--original fetch url was git://github.com/t2m-foxfone/-->
|
||||
<remote fetch="https://git.mozilla.org/external/t2m-foxfone" name="t2m"/>
|
||||
|
@ -137,10 +126,9 @@
|
|||
<!-- Flame specific things -->
|
||||
<project name="device/generic/armv7-a-neon" path="device/generic/armv7-a-neon" revision="1bb28abbc215f45220620af5cd60a8ac1be93722"/>
|
||||
<project name="device/qcom/common" path="device/qcom/common" revision="54c32c2ddef066fbdf611d29e4b7c47e0363599e"/>
|
||||
<project name="device-flame" path="device/t2m/flame" remote="b2g" revision="a814b2e2dfdda7140cb3a357617dc4fbb1435e76"/>
|
||||
<project name="device-flame" path="device/t2m/flame" remote="b2g" revision="e7c90613521145db090dd24147afd5ceb5703190"/>
|
||||
<project name="codeaurora_kernel_msm" path="kernel" remote="b2g" revision="0865bc4134b67220df4058625fba29305d6b10c3"/>
|
||||
<project name="kernel_lk" path="bootable/bootloader/lk" remote="b2g" revision="fda40423ffa573dc6cafd3780515010cb2a086be"/>
|
||||
<remove-project name="platform/bootable/recovery"/>
|
||||
<project name="platform_bootable_recovery" path="bootable/recovery" remote="b2g" revision="26e78a979f3090dc196219e268467620b6c40ec5"/>
|
||||
<project name="platform/external/bluetooth/bluedroid" path="external/bluetooth/bluedroid" revision="30b96dfca99cb384bf520a16b81f3aba56f09907"/>
|
||||
<project name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="5b71e40213f650459e95d35b6f14af7e88d8ab62"/>
|
||||
|
|
|
@ -17,10 +17,10 @@
|
|||
</project>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a5c5ac093814a80b0627514c3bd5f9e96c096a4b"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="049c281ad212bf528b2af8fc246b0dd0c9f97415"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="579e01ad4d6e4177a8f636305ac877835d99f134"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="320dad6b787c296ba701bca8377f71ab5fd72ee8"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="c28e606f7656de3a3a8808b68eb048528397d5a7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="e7c3ee43c96a0079d7e4f3fe471149293225917b"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<!-- Stock Android things -->
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"git": {
|
||||
"git_revision": "",
|
||||
"remote": "",
|
||||
"git_revision": "579e01ad4d6e4177a8f636305ac877835d99f134",
|
||||
"remote": "https://git.mozilla.org/releases/gaia.git",
|
||||
"branch": ""
|
||||
},
|
||||
"revision": "11761056b5ee6533ef11443b95a5aee1398e6dd4",
|
||||
"revision": "91945bbce2f909915fe3edf033215baa4c80e3cd",
|
||||
"repo_path": "integration/gaia-central"
|
||||
}
|
||||
|
|
|
@ -17,11 +17,11 @@
|
|||
<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="a5c5ac093814a80b0627514c3bd5f9e96c096a4b"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="049c281ad212bf528b2af8fc246b0dd0c9f97415"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="579e01ad4d6e4177a8f636305ac877835d99f134"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="320dad6b787c296ba701bca8377f71ab5fd72ee8"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="c28e606f7656de3a3a8808b68eb048528397d5a7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="e7c3ee43c96a0079d7e4f3fe471149293225917b"/>
|
||||
<!-- Stock Android things -->
|
||||
<project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
|
||||
<project name="platform_bionic" path="bionic" remote="b2g" revision="1a2a32eda22ef2cd18f57f423a5e7b22a105a6f8"/>
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="a5c5ac093814a80b0627514c3bd5f9e96c096a4b"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="049c281ad212bf528b2af8fc246b0dd0c9f97415"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="579e01ad4d6e4177a8f636305ac877835d99f134"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="320dad6b787c296ba701bca8377f71ab5fd72ee8"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
|
||||
|
|
|
@ -17,10 +17,10 @@
|
|||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="a5c5ac093814a80b0627514c3bd5f9e96c096a4b"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="049c281ad212bf528b2af8fc246b0dd0c9f97415"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="579e01ad4d6e4177a8f636305ac877835d99f134"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="320dad6b787c296ba701bca8377f71ab5fd72ee8"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="c28e606f7656de3a3a8808b68eb048528397d5a7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="e7c3ee43c96a0079d7e4f3fe471149293225917b"/>
|
||||
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
|
||||
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
|
||||
<!-- Stock Android things -->
|
||||
|
@ -118,7 +118,7 @@
|
|||
<project name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="842e33e43a55ea44833b9e23e4d180fa17c843af"/>
|
||||
<project name="platform/prebuilts/tools" path="prebuilts/tools" revision="5db24726f0f42124304195a6bdea129039eeeaeb"/>
|
||||
<project name="platform/system/bluetooth" path="system/bluetooth" revision="930ae098543881f47eac054677726ee4b998b2f8"/>
|
||||
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="aa3adea9c18ae00d36e597d5890cf14cb7dfb105"/>
|
||||
<project name="platform_system_bluetoothd" path="system/bluetoothd" remote="b2g" revision="bdc5a9f9602652c3c2626e020da03674a2c2e1b6"/>
|
||||
<project name="platform_system_core" path="system/core" remote="b2g" revision="542d1f59dc331b472307e5bd043101d14d5a3a3e"/>
|
||||
<project name="platform/system/extras" path="system/extras" revision="18c1180e848e7ab8691940481f5c1c8d22c37b3e"/>
|
||||
<project name="platform_system_libfdio" path="system/libfdio" remote="b2g" revision="fe95bc6f83af5c18a73aa86c96e7fa7f79b91477"/>
|
||||
|
|
|
@ -17,12 +17,12 @@
|
|||
<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="a5c5ac093814a80b0627514c3bd5f9e96c096a4b"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="049c281ad212bf528b2af8fc246b0dd0c9f97415"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="579e01ad4d6e4177a8f636305ac877835d99f134"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="320dad6b787c296ba701bca8377f71ab5fd72ee8"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="c28e606f7656de3a3a8808b68eb048528397d5a7"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="e7c3ee43c96a0079d7e4f3fe471149293225917b"/>
|
||||
<project name="gonk-patches" path="patches" remote="b2g" revision="223a2421006e8f5da33f516f6891c87cae86b0f6"/>
|
||||
<!-- Stock Android things -->
|
||||
<project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
#include "BluetoothDaemonInterface.h"
|
||||
#include <cutils/properties.h>
|
||||
#include <fcntl.h>
|
||||
#include <stdlib.h>
|
||||
#include "BluetoothDaemonA2dpInterface.h"
|
||||
#include "BluetoothDaemonAvrcpInterface.h"
|
||||
#include "BluetoothDaemonHandsfreeInterface.h"
|
||||
|
@ -12,7 +15,10 @@
|
|||
#include "BluetoothDaemonSetupInterface.h"
|
||||
#include "BluetoothDaemonSocketInterface.h"
|
||||
#include "BluetoothInterfaceHelpers.h"
|
||||
#include "mozilla/ipc/ListenSocket.h"
|
||||
#include "mozilla/ipc/UnixSocketConnector.h"
|
||||
#include "mozilla/unused.h"
|
||||
#include "prrng.h"
|
||||
|
||||
using namespace mozilla::ipc;
|
||||
|
||||
|
@ -1431,7 +1437,9 @@ class BluetoothDaemonProtocol MOZ_FINAL
|
|||
, public BluetoothDaemonAvrcpModule
|
||||
{
|
||||
public:
|
||||
BluetoothDaemonProtocol(BluetoothDaemonConnection* aConnection);
|
||||
BluetoothDaemonProtocol();
|
||||
|
||||
void SetConnection(BluetoothDaemonConnection* aConnection);
|
||||
|
||||
nsresult RegisterModule(uint8_t aId, uint8_t aMode, uint32_t aMaxNumClients,
|
||||
BluetoothSetupResultHandler* aRes) MOZ_OVERRIDE;
|
||||
|
@ -1471,11 +1479,13 @@ private:
|
|||
nsTArray<void*> mUserDataQ;
|
||||
};
|
||||
|
||||
BluetoothDaemonProtocol::BluetoothDaemonProtocol(
|
||||
BluetoothDaemonConnection* aConnection)
|
||||
: mConnection(aConnection)
|
||||
BluetoothDaemonProtocol::BluetoothDaemonProtocol()
|
||||
{ }
|
||||
|
||||
void
|
||||
BluetoothDaemonProtocol::SetConnection(BluetoothDaemonConnection* aConnection)
|
||||
{
|
||||
MOZ_ASSERT(mConnection);
|
||||
mConnection = aConnection;
|
||||
}
|
||||
|
||||
nsresult
|
||||
|
@ -1497,6 +1507,7 @@ BluetoothDaemonProtocol::UnregisterModule(uint8_t aId,
|
|||
nsresult
|
||||
BluetoothDaemonProtocol::Send(BluetoothDaemonPDU* aPDU, void* aUserData)
|
||||
{
|
||||
MOZ_ASSERT(mConnection);
|
||||
MOZ_ASSERT(aPDU);
|
||||
|
||||
aPDU->SetUserData(aUserData);
|
||||
|
@ -1606,16 +1617,13 @@ BluetoothDaemonProtocol::FetchUserData(const BluetoothDaemonPDUHeader& aHeader)
|
|||
}
|
||||
|
||||
//
|
||||
// Channels
|
||||
// Listen socket
|
||||
//
|
||||
|
||||
class BluetoothDaemonChannel MOZ_FINAL : public BluetoothDaemonConnection
|
||||
class BluetoothDaemonListenSocket MOZ_FINAL : public ipc::ListenSocket
|
||||
{
|
||||
public:
|
||||
BluetoothDaemonChannel(BluetoothDaemonInterface::Channel aChannel);
|
||||
|
||||
nsresult ConnectSocket(BluetoothDaemonInterface* aInterface,
|
||||
BluetoothDaemonPDUConsumer* aConsumer);
|
||||
BluetoothDaemonListenSocket(BluetoothDaemonInterface* aInterface);
|
||||
|
||||
// Connection state
|
||||
//
|
||||
|
@ -1624,28 +1632,80 @@ public:
|
|||
void OnConnectError() MOZ_OVERRIDE;
|
||||
void OnDisconnect() MOZ_OVERRIDE;
|
||||
|
||||
private:
|
||||
BluetoothDaemonInterface* mInterface;
|
||||
};
|
||||
|
||||
BluetoothDaemonListenSocket::BluetoothDaemonListenSocket(
|
||||
BluetoothDaemonInterface* aInterface)
|
||||
: mInterface(aInterface)
|
||||
{ }
|
||||
|
||||
void
|
||||
BluetoothDaemonListenSocket::OnConnectSuccess()
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
MOZ_ASSERT(mInterface);
|
||||
|
||||
mInterface->OnConnectSuccess(BluetoothDaemonInterface::LISTEN_SOCKET);
|
||||
}
|
||||
|
||||
void
|
||||
BluetoothDaemonListenSocket::OnConnectError()
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
MOZ_ASSERT(mInterface);
|
||||
|
||||
mInterface->OnConnectError(BluetoothDaemonInterface::LISTEN_SOCKET);
|
||||
}
|
||||
|
||||
void
|
||||
BluetoothDaemonListenSocket::OnDisconnect()
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
MOZ_ASSERT(mInterface);
|
||||
|
||||
mInterface->OnDisconnect(BluetoothDaemonInterface::LISTEN_SOCKET);
|
||||
}
|
||||
|
||||
//
|
||||
// Channels
|
||||
//
|
||||
|
||||
class BluetoothDaemonChannel MOZ_FINAL : public BluetoothDaemonConnection
|
||||
{
|
||||
public:
|
||||
BluetoothDaemonChannel(BluetoothDaemonInterface* aInterface,
|
||||
BluetoothDaemonInterface::Channel aChannel,
|
||||
BluetoothDaemonPDUConsumer* aConsumer);
|
||||
|
||||
// SocketBase
|
||||
//
|
||||
|
||||
void OnConnectSuccess() MOZ_OVERRIDE;
|
||||
void OnConnectError() MOZ_OVERRIDE;
|
||||
void OnDisconnect() MOZ_OVERRIDE;
|
||||
|
||||
// ConnectionOrientedSocket
|
||||
//
|
||||
|
||||
ConnectionOrientedSocketIO* GetIO() MOZ_OVERRIDE;
|
||||
|
||||
private:
|
||||
BluetoothDaemonInterface* mInterface;
|
||||
BluetoothDaemonInterface::Channel mChannel;
|
||||
BluetoothDaemonPDUConsumer* mConsumer;
|
||||
};
|
||||
|
||||
BluetoothDaemonChannel::BluetoothDaemonChannel(
|
||||
BluetoothDaemonInterface::Channel aChannel)
|
||||
: mInterface(nullptr)
|
||||
, mChannel(aChannel)
|
||||
BluetoothDaemonInterface* aInterface,
|
||||
BluetoothDaemonInterface::Channel aChannel,
|
||||
BluetoothDaemonPDUConsumer* aConsumer)
|
||||
: mInterface(aInterface)
|
||||
, mChannel(aChannel)
|
||||
, mConsumer(aConsumer)
|
||||
{ }
|
||||
|
||||
nsresult
|
||||
BluetoothDaemonChannel::ConnectSocket(BluetoothDaemonInterface* aInterface,
|
||||
BluetoothDaemonPDUConsumer* aConsumer)
|
||||
{
|
||||
MOZ_ASSERT(aInterface);
|
||||
|
||||
mInterface = aInterface;
|
||||
|
||||
return BluetoothDaemonConnection::ConnectSocket(aConsumer);
|
||||
}
|
||||
|
||||
void
|
||||
BluetoothDaemonChannel::OnConnectSuccess()
|
||||
{
|
||||
|
@ -1662,7 +1722,6 @@ BluetoothDaemonChannel::OnConnectError()
|
|||
MOZ_ASSERT(mInterface);
|
||||
|
||||
mInterface->OnConnectError(mChannel);
|
||||
mInterface = nullptr;
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1672,7 +1731,12 @@ BluetoothDaemonChannel::OnDisconnect()
|
|||
MOZ_ASSERT(mInterface);
|
||||
|
||||
mInterface->OnDisconnect(mChannel);
|
||||
mInterface = nullptr;
|
||||
}
|
||||
|
||||
ConnectionOrientedSocketIO*
|
||||
BluetoothDaemonChannel::GetIO()
|
||||
{
|
||||
return PrepareAccept(mConsumer);
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -1694,38 +1758,13 @@ BluetoothDaemonInterface::GetInstance()
|
|||
return sBluetoothInterface;
|
||||
}
|
||||
|
||||
// Only create channel objects here. The connection will be
|
||||
// established by |BluetoothDaemonInterface::Init|.
|
||||
|
||||
BluetoothDaemonChannel* cmdChannel =
|
||||
new BluetoothDaemonChannel(BluetoothDaemonInterface::CMD_CHANNEL);
|
||||
|
||||
BluetoothDaemonChannel* ntfChannel =
|
||||
new BluetoothDaemonChannel(BluetoothDaemonInterface::NTF_CHANNEL);
|
||||
|
||||
// Create a new interface object with the channels and a
|
||||
// protocol handler.
|
||||
|
||||
sBluetoothInterface =
|
||||
new BluetoothDaemonInterface(cmdChannel,
|
||||
ntfChannel,
|
||||
new BluetoothDaemonProtocol(cmdChannel));
|
||||
sBluetoothInterface = new BluetoothDaemonInterface();
|
||||
|
||||
return sBluetoothInterface;
|
||||
}
|
||||
|
||||
BluetoothDaemonInterface::BluetoothDaemonInterface(
|
||||
BluetoothDaemonChannel* aCmdChannel,
|
||||
BluetoothDaemonChannel* aNtfChannel,
|
||||
BluetoothDaemonProtocol* aProtocol)
|
||||
: mCmdChannel(aCmdChannel)
|
||||
, mNtfChannel(aNtfChannel)
|
||||
, mProtocol(aProtocol)
|
||||
{
|
||||
MOZ_ASSERT(mCmdChannel);
|
||||
MOZ_ASSERT(mNtfChannel);
|
||||
MOZ_ASSERT(mProtocol);
|
||||
}
|
||||
BluetoothDaemonInterface::BluetoothDaemonInterface()
|
||||
{ }
|
||||
|
||||
BluetoothDaemonInterface::~BluetoothDaemonInterface()
|
||||
{ }
|
||||
|
@ -1763,11 +1802,11 @@ public:
|
|||
|
||||
if (!mRegisteredSocketModule) {
|
||||
mRegisteredSocketModule = true;
|
||||
// Init, step 4: Register Socket module
|
||||
// Init, step 5: Register Socket module
|
||||
mInterface->mProtocol->RegisterModuleCmd(0x02, 0x00,
|
||||
BluetoothDaemonSocketModule::MAX_NUM_CLIENTS, this);
|
||||
} else if (mRes) {
|
||||
// Init, step 5: Signal success to caller
|
||||
// Init, step 6: Signal success to caller
|
||||
mRes->Init();
|
||||
}
|
||||
}
|
||||
|
@ -1785,24 +1824,33 @@ BluetoothDaemonInterface::OnConnectSuccess(enum Channel aChannel)
|
|||
MOZ_ASSERT(!mResultHandlerQ.IsEmpty());
|
||||
|
||||
switch (aChannel) {
|
||||
case CMD_CHANNEL:
|
||||
// Init, step 2: Connect notification channel...
|
||||
if (mNtfChannel->GetConnectionStatus() != SOCKET_CONNECTED) {
|
||||
nsresult rv = mNtfChannel->ConnectSocket(this, mProtocol);
|
||||
if (NS_FAILED(rv)) {
|
||||
case LISTEN_SOCKET: {
|
||||
// Init, step 2: Start Bluetooth daemon */
|
||||
nsCString value("bluetoothd:-a ");
|
||||
value.Append(mListenSocketName);
|
||||
if (NS_WARN_IF(property_set("ctl.start", value.get()) < 0)) {
|
||||
OnConnectError(CMD_CHANNEL);
|
||||
}
|
||||
} else {
|
||||
// ...or go to step 3 if channel is already connected.
|
||||
OnConnectSuccess(NTF_CHANNEL);
|
||||
}
|
||||
break;
|
||||
|
||||
case CMD_CHANNEL:
|
||||
// Init, step 3: Listen for notification channel...
|
||||
if (!mNtfChannel) {
|
||||
mNtfChannel = new BluetoothDaemonChannel(this, NTF_CHANNEL, mProtocol);
|
||||
} else if (
|
||||
NS_WARN_IF(mNtfChannel->GetConnectionStatus() == SOCKET_CONNECTED)) {
|
||||
/* Notification channel should not be open; let's close it. */
|
||||
mNtfChannel->CloseSocket();
|
||||
}
|
||||
if (!mListenSocket->Listen(mNtfChannel)) {
|
||||
OnConnectError(NTF_CHANNEL);
|
||||
}
|
||||
break;
|
||||
case NTF_CHANNEL: {
|
||||
nsRefPtr<BluetoothResultHandler> res = mResultHandlerQ.ElementAt(0);
|
||||
mResultHandlerQ.RemoveElementAt(0);
|
||||
|
||||
// Init, step 3: Register Core module
|
||||
// Init, step 4: Register Core module
|
||||
nsresult rv = mProtocol->RegisterModuleCmd(
|
||||
0x01, 0x00, BluetoothDaemonCoreModule::MAX_NUM_CLIENTS,
|
||||
new InitResultHandler(this, res));
|
||||
|
@ -1824,7 +1872,11 @@ BluetoothDaemonInterface::OnConnectError(enum Channel aChannel)
|
|||
case NTF_CHANNEL:
|
||||
// Close command channel
|
||||
mCmdChannel->CloseSocket();
|
||||
case CMD_CHANNEL: {
|
||||
case CMD_CHANNEL:
|
||||
// Stop daemon and close listen socket
|
||||
unused << NS_WARN_IF(property_set("ctl.stop", "bluetoothd"));
|
||||
mListenSocket->Close();
|
||||
case LISTEN_SOCKET: {
|
||||
// Signal error to caller
|
||||
nsRefPtr<BluetoothResultHandler> res = mResultHandlerQ.ElementAt(0);
|
||||
mResultHandlerQ.RemoveElementAt(0);
|
||||
|
@ -1844,11 +1896,15 @@ BluetoothDaemonInterface::OnDisconnect(enum Channel aChannel)
|
|||
MOZ_ASSERT(!mResultHandlerQ.IsEmpty());
|
||||
|
||||
switch (aChannel) {
|
||||
case NTF_CHANNEL:
|
||||
// Cleanup, step 4: Close command channel
|
||||
mCmdChannel->CloseSocket();
|
||||
case CMD_CHANNEL:
|
||||
// We don't have to do anything here. Step 4 is triggered
|
||||
// by the daemon.
|
||||
break;
|
||||
case CMD_CHANNEL: {
|
||||
case NTF_CHANNEL:
|
||||
// Cleanup, step 4: Close listen socket
|
||||
mListenSocket->Close();
|
||||
break;
|
||||
case LISTEN_SOCKET: {
|
||||
nsRefPtr<BluetoothResultHandler> res = mResultHandlerQ.ElementAt(0);
|
||||
mResultHandlerQ.RemoveElementAt(0);
|
||||
|
||||
|
@ -1861,25 +1917,207 @@ BluetoothDaemonInterface::OnDisconnect(enum Channel aChannel)
|
|||
}
|
||||
}
|
||||
|
||||
class BluetoothDaemonSocketConnector MOZ_FINAL
|
||||
: public mozilla::ipc::UnixSocketConnector
|
||||
{
|
||||
public:
|
||||
BluetoothDaemonSocketConnector(const nsACString& aSocketName)
|
||||
: mSocketName(aSocketName)
|
||||
{ }
|
||||
|
||||
int
|
||||
Create() MOZ_OVERRIDE
|
||||
{
|
||||
MOZ_ASSERT(!NS_IsMainThread());
|
||||
|
||||
int fd = socket(AF_UNIX, SOCK_SEQPACKET, 0);
|
||||
if (fd < 0) {
|
||||
BT_WARNING("Could not open socket!");
|
||||
return -1;
|
||||
}
|
||||
return fd;
|
||||
}
|
||||
|
||||
bool
|
||||
CreateAddr(bool aIsServer,
|
||||
socklen_t& aAddrSize,
|
||||
sockaddr_any& aAddr,
|
||||
const char* aAddress) MOZ_OVERRIDE
|
||||
{
|
||||
static const size_t sNameOffset = 1;
|
||||
|
||||
size_t namesiz = mSocketName.Length() + 1; /* include trailing '\0' */
|
||||
|
||||
if ((sNameOffset + namesiz) > sizeof(aAddr.un.sun_path)) {
|
||||
BT_WARNING("Address too long for socket struct!");
|
||||
return false;
|
||||
}
|
||||
|
||||
memset(aAddr.un.sun_path, '\0', sNameOffset); // abstract socket
|
||||
memcpy(aAddr.un.sun_path + sNameOffset, mSocketName.get(), namesiz);
|
||||
aAddr.un.sun_family = AF_UNIX;
|
||||
|
||||
aAddrSize = offsetof(struct sockaddr_un, sun_path) + sNameOffset + namesiz;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
SetUp(int aFd) MOZ_OVERRIDE
|
||||
{
|
||||
if (TEMP_FAILURE_RETRY(fcntl(aFd, F_SETFL, O_NONBLOCK)) < 0) {
|
||||
BT_WARNING("Failed to set non-blocking I/O.");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
SetUpListenSocket(int aFd) MOZ_OVERRIDE
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void
|
||||
GetSocketAddr(const sockaddr_any& aAddr, nsAString& aAddrStr) MOZ_OVERRIDE
|
||||
{
|
||||
// Unused.
|
||||
MOZ_CRASH("This should never be called!");
|
||||
}
|
||||
|
||||
private:
|
||||
nsCString mSocketName;
|
||||
};
|
||||
|
||||
nsresult
|
||||
BluetoothDaemonInterface::CreateRandomAddressString(
|
||||
const nsACString& aPrefix, unsigned long aPostfixLength,
|
||||
nsACString& aAddress)
|
||||
{
|
||||
static const char sHexChar[16] = {
|
||||
[0x0] = '0', [0x1] = '1', [0x2] = '2', [0x3] = '3',
|
||||
[0x4] = '4', [0x5] = '5', [0x6] = '6', [0x7] = '7',
|
||||
[0x8] = '8', [0x9] = '9', [0xa] = 'a', [0xb] = 'b',
|
||||
[0xc] = 'c', [0xd] = 'd', [0xe] = 'e', [0xf] = 'f'
|
||||
};
|
||||
|
||||
unsigned short seed[3];
|
||||
|
||||
if (NS_WARN_IF(!PR_GetRandomNoise(seed, sizeof(seed)))) {
|
||||
return NS_ERROR_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
aAddress = aPrefix;
|
||||
aAddress.Append('-');
|
||||
|
||||
while (aPostfixLength) {
|
||||
|
||||
// Android doesn't provide rand_r, so we use nrand48 here,
|
||||
// even though it's deprecated.
|
||||
long value = nrand48(seed);
|
||||
|
||||
size_t bits = sizeof(value) * CHAR_BIT;
|
||||
|
||||
while ((bits > 4) && aPostfixLength) {
|
||||
aAddress.Append(sHexChar[value&0xf]);
|
||||
bits -= 4;
|
||||
value >>= 4;
|
||||
--aPostfixLength;
|
||||
}
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* The init procedure consists of several steps.
|
||||
*
|
||||
* (1) Start listening for the command channel's socket connection: We
|
||||
* do this before anything else, so that we don't miss connection
|
||||
* requests from the Bluetooth daemon. This step will create a
|
||||
* listen socket.
|
||||
*
|
||||
* (2) Start the Bluetooth daemon: When the daemon starts up it will
|
||||
* open two socket connections to Gecko and thus create the command
|
||||
* and notification channels. Gecko already opened the listen socket
|
||||
* in step (1). Step (2) ends with the creation of the command channel.
|
||||
*
|
||||
* (3) Start listening for the notification channel's socket connection:
|
||||
* At the end of step (2), the command channel was opened by the
|
||||
* daemon. In step (3), the daemon immediately tries to open the
|
||||
* next socket for the notification channel. Gecko will accept the
|
||||
* incoming connection request for the notification channel. The
|
||||
* listen socket remained open after step (2), so there's no race
|
||||
* condition between Gecko and the Bluetooth daemon.
|
||||
*
|
||||
* (4)(5) Register Core and Socket modules: The Core and Socket modules
|
||||
* are always available and have to be registered after opening the
|
||||
* socket connections during the initialization.
|
||||
*
|
||||
* (6) Signal success to the caller.
|
||||
*
|
||||
* If any step fails, we roll-back the procedure and signal an error to the
|
||||
* caller.
|
||||
*/
|
||||
void
|
||||
BluetoothDaemonInterface::Init(
|
||||
BluetoothNotificationHandler* aNotificationHandler,
|
||||
BluetoothResultHandler* aRes)
|
||||
{
|
||||
static const char BASE_SOCKET_NAME[] = "bluetoothd";
|
||||
static unsigned long POSTFIX_LENGTH = 16;
|
||||
|
||||
// If we could not cleanup properly before and an old
|
||||
// instance of the daemon is still running, we kill it
|
||||
// here.
|
||||
unused << NS_WARN_IF(property_set("ctl.stop", "bluetoothd"));
|
||||
|
||||
sNotificationHandler = aNotificationHandler;
|
||||
|
||||
mResultHandlerQ.AppendElement(aRes);
|
||||
|
||||
// Init, step 1: Connect command channel...
|
||||
if (mCmdChannel->GetConnectionStatus() != SOCKET_CONNECTED) {
|
||||
nsresult rv = mCmdChannel->ConnectSocket(this, mProtocol);
|
||||
if (NS_FAILED(rv)) {
|
||||
OnConnectError(CMD_CHANNEL);
|
||||
}
|
||||
} else {
|
||||
// ...or go to step 2 if channel is already connected.
|
||||
OnConnectSuccess(CMD_CHANNEL);
|
||||
if (!mProtocol) {
|
||||
mProtocol = new BluetoothDaemonProtocol();
|
||||
}
|
||||
|
||||
if (!mListenSocket) {
|
||||
mListenSocket = new BluetoothDaemonListenSocket(this);
|
||||
}
|
||||
|
||||
// Init, step 1: Listen for command channel... */
|
||||
|
||||
if (!mCmdChannel) {
|
||||
mCmdChannel = new BluetoothDaemonChannel(this, CMD_CHANNEL, mProtocol);
|
||||
} else if (
|
||||
NS_WARN_IF(mCmdChannel->GetConnectionStatus() == SOCKET_CONNECTED)) {
|
||||
// Command channel should not be open; let's close it.
|
||||
mCmdChannel->CloseSocket();
|
||||
}
|
||||
|
||||
// The listen socket's name is generated with a random postfix. This
|
||||
// avoids naming collisions if we still have a listen socket from a
|
||||
// previously failed cleanup. It also makes it hard for malicious
|
||||
// external programs to capture the socket name or connect before
|
||||
// the daemon can do so. If no random postfix can be generated, we
|
||||
// simply use the base name as-is.
|
||||
nsresult rv = CreateRandomAddressString(NS_LITERAL_CSTRING(BASE_SOCKET_NAME),
|
||||
POSTFIX_LENGTH,
|
||||
mListenSocketName);
|
||||
if (NS_FAILED(rv)) {
|
||||
mListenSocketName = BASE_SOCKET_NAME;
|
||||
}
|
||||
|
||||
bool success = mListenSocket->Listen(
|
||||
new BluetoothDaemonSocketConnector(mListenSocketName), mCmdChannel);
|
||||
if (!success) {
|
||||
OnConnectError(CMD_CHANNEL);
|
||||
return;
|
||||
}
|
||||
|
||||
// The protocol implementation needs a command channel for
|
||||
// sending commands to the daemon. We set it here, because
|
||||
// this is the earliest time when it's available.
|
||||
mProtocol->SetConnection(mCmdChannel);
|
||||
}
|
||||
|
||||
class BluetoothDaemonInterface::CleanupResultHandler MOZ_FINAL
|
||||
|
@ -1914,8 +2152,8 @@ private:
|
|||
// Cleanup, step 2: Unregister Core module
|
||||
mInterface->mProtocol->UnregisterModuleCmd(0x01, this);
|
||||
} else {
|
||||
// Cleanup, step 3: Close notification channel
|
||||
mInterface->mNtfChannel->CloseSocket();
|
||||
// Cleanup, step 3: Close command channel
|
||||
mInterface->mCmdChannel->CloseSocket();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1923,6 +2161,31 @@ private:
|
|||
bool mUnregisteredCoreModule;
|
||||
};
|
||||
|
||||
/*
|
||||
* Cleaning up is inverse to initialization, except for the shutdown
|
||||
* of the socket connections in step (3)
|
||||
*
|
||||
* (1)(2) Unregister Socket and Core modules: These modules have been
|
||||
* registered during initialization and need to be unregistered
|
||||
* here. We assume that all other modules are already unregistered.
|
||||
*
|
||||
* (3) Close command socket: We only close the command socket. The
|
||||
* daemon will then send any final notifications and close the
|
||||
* notification socket on its side. Once we see the notification
|
||||
* socket's disconnect, we continue with the cleanup.
|
||||
*
|
||||
* (4) Close listen socket: The listen socket is not active any longer
|
||||
* and we simply close it.
|
||||
*
|
||||
* (5) Signal success to the caller.
|
||||
*
|
||||
* We don't have to stop the daemon explicitly. It will cleanup and quit
|
||||
* after it closed the notification socket.
|
||||
*
|
||||
* Rolling-back half-completed cleanups is not possible. In the case of
|
||||
* an error, we simply push forward and try to recover during the next
|
||||
* initialization.
|
||||
*/
|
||||
void
|
||||
BluetoothDaemonInterface::Cleanup(BluetoothResultHandler* aRes)
|
||||
{
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
|
||||
BEGIN_BLUETOOTH_NAMESPACE
|
||||
|
||||
class BluetoothDaemonListenSocket;
|
||||
class BluetoothDaemonChannel;
|
||||
class BluetoothDaemonA2dpInterface;
|
||||
class BluetoothDaemonAvrcpInterface;
|
||||
|
@ -24,6 +25,7 @@ public:
|
|||
class CleanupResultHandler;
|
||||
class InitResultHandler;
|
||||
|
||||
friend class BluetoothDaemonListenSocket;
|
||||
friend class BluetoothDaemonChannel;
|
||||
friend class CleanupResultHandler;
|
||||
friend class InitResultHandler;
|
||||
|
@ -115,24 +117,29 @@ public:
|
|||
|
||||
protected:
|
||||
enum Channel {
|
||||
LISTEN_SOCKET,
|
||||
CMD_CHANNEL,
|
||||
NTF_CHANNEL
|
||||
};
|
||||
|
||||
BluetoothDaemonInterface(BluetoothDaemonChannel* aCmdChannel,
|
||||
BluetoothDaemonChannel* aNtfChannel,
|
||||
BluetoothDaemonProtocol* aProtocol);
|
||||
BluetoothDaemonInterface();
|
||||
~BluetoothDaemonInterface();
|
||||
|
||||
void OnConnectSuccess(enum Channel aChannel);
|
||||
void OnConnectError(enum Channel aChannel);
|
||||
void OnDisconnect(enum Channel aChannel);
|
||||
|
||||
nsresult CreateRandomAddressString(const nsACString& aPrefix,
|
||||
unsigned long aPostfixLength,
|
||||
nsACString& aAddress);
|
||||
|
||||
private:
|
||||
void DispatchError(BluetoothResultHandler* aRes, BluetoothStatus aStatus);
|
||||
|
||||
nsAutoPtr<BluetoothDaemonChannel> mCmdChannel;
|
||||
nsAutoPtr<BluetoothDaemonChannel> mNtfChannel;
|
||||
nsCString mListenSocketName;
|
||||
nsRefPtr<BluetoothDaemonListenSocket> mListenSocket;
|
||||
nsRefPtr<BluetoothDaemonChannel> mCmdChannel;
|
||||
nsRefPtr<BluetoothDaemonChannel> mNtfChannel;
|
||||
nsAutoPtr<BluetoothDaemonProtocol> mProtocol;
|
||||
|
||||
nsTArray<nsRefPtr<BluetoothResultHandler> > mResultHandlerQ;
|
||||
|
|
|
@ -21,13 +21,11 @@ NS_IMPL_RELEASE_INHERITED(BluetoothPairingListener, DOMEventTargetHelper)
|
|||
|
||||
BluetoothPairingListener::BluetoothPairingListener(nsPIDOMWindow* aWindow)
|
||||
: DOMEventTargetHelper(aWindow)
|
||||
, mHasListenedToSignal(false)
|
||||
{
|
||||
MOZ_ASSERT(aWindow);
|
||||
|
||||
BluetoothService* bs = BluetoothService::Get();
|
||||
NS_ENSURE_TRUE_VOID(bs);
|
||||
bs->RegisterBluetoothSignalHandler(NS_LITERAL_STRING(KEY_PAIRING_LISTENER),
|
||||
this);
|
||||
TryListeningToBluetoothSignal();
|
||||
}
|
||||
|
||||
already_AddRefed<BluetoothPairingListener>
|
||||
|
@ -134,3 +132,39 @@ BluetoothPairingListener::DisconnectFromOwner()
|
|||
bs->UnregisterBluetoothSignalHandler(NS_LITERAL_STRING(KEY_PAIRING_LISTENER),
|
||||
this);
|
||||
}
|
||||
|
||||
void
|
||||
BluetoothPairingListener::EventListenerAdded(nsIAtom* aType)
|
||||
{
|
||||
DOMEventTargetHelper::EventListenerAdded(aType);
|
||||
|
||||
TryListeningToBluetoothSignal();
|
||||
}
|
||||
|
||||
void
|
||||
BluetoothPairingListener::TryListeningToBluetoothSignal()
|
||||
{
|
||||
if (mHasListenedToSignal) {
|
||||
// We've handled prior pending pairing requests
|
||||
return;
|
||||
}
|
||||
|
||||
// Listen to bluetooth signal only if all pairing event handlers have been
|
||||
// attached. All pending pairing requests queued in BluetoothService would
|
||||
// be fired when pairing listener starts listening to bluetooth signal.
|
||||
if (!HasListenersFor(nsGkAtoms::ondisplaypasskeyreq) ||
|
||||
!HasListenersFor(nsGkAtoms::onenterpincodereq) ||
|
||||
!HasListenersFor(nsGkAtoms::onpairingconfirmationreq) ||
|
||||
!HasListenersFor(nsGkAtoms::onpairingconsentreq)) {
|
||||
BT_LOGR("Pairing listener is not ready to handle pairing requests!");
|
||||
return;
|
||||
}
|
||||
|
||||
// Start listening to bluetooth signal to handle pairing requests
|
||||
BluetoothService* bs = BluetoothService::Get();
|
||||
NS_ENSURE_TRUE_VOID(bs);
|
||||
bs->RegisterBluetoothSignalHandler(NS_LITERAL_STRING(KEY_PAIRING_LISTENER),
|
||||
this);
|
||||
|
||||
mHasListenedToSignal = true;
|
||||
}
|
||||
|
|
|
@ -38,6 +38,7 @@ public:
|
|||
|
||||
virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
|
||||
virtual void DisconnectFromOwner() MOZ_OVERRIDE;
|
||||
virtual void EventListenerAdded(nsIAtom* aType) MOZ_OVERRIDE;
|
||||
|
||||
IMPL_EVENT_HANDLER(displaypasskeyreq);
|
||||
IMPL_EVENT_HANDLER(enterpincodereq);
|
||||
|
@ -47,6 +48,21 @@ public:
|
|||
private:
|
||||
BluetoothPairingListener(nsPIDOMWindow* aWindow);
|
||||
~BluetoothPairingListener();
|
||||
|
||||
/**
|
||||
* Listen to bluetooth signal if all pairing event handlers are ready.
|
||||
*
|
||||
* Listen to bluetooth signal only if all pairing event handlers have been
|
||||
* attached. All pending pairing requests queued in BluetoothService would be
|
||||
* fired when pairing listener starts listening to bluetooth signal.
|
||||
*/
|
||||
void TryListeningToBluetoothSignal();
|
||||
|
||||
/**
|
||||
* Indicate whether or not this pairing listener has started listening to
|
||||
* Bluetooth signal.
|
||||
*/
|
||||
bool mHasListenedToSignal;
|
||||
};
|
||||
|
||||
END_BLUETOOTH_NAMESPACE
|
||||
|
|
|
@ -191,14 +191,22 @@ BluetoothDaemonPDUConsumer::~BluetoothDaemonPDUConsumer()
|
|||
//
|
||||
|
||||
class BluetoothDaemonConnectionIO MOZ_FINAL : public UnixSocketWatcher
|
||||
, public ConnectionOrientedSocketIO
|
||||
{
|
||||
public:
|
||||
BluetoothDaemonConnectionIO(MessageLoop* aIOLoop,
|
||||
BluetoothDaemonConnectionIO(MessageLoop* aIOLoop, int aFd,
|
||||
ConnectionStatus aConnectionStatus,
|
||||
BluetoothDaemonConnection* aConnection,
|
||||
BluetoothDaemonPDUConsumer* aConsumer);
|
||||
|
||||
SocketBase* GetSocketBase();
|
||||
|
||||
// StreamSocketIOBase
|
||||
//
|
||||
|
||||
nsresult Accept(int aFd,
|
||||
const union sockaddr_any* aAddr, socklen_t aAddrLen);
|
||||
|
||||
// Shutdown state
|
||||
//
|
||||
|
||||
|
@ -237,10 +245,11 @@ private:
|
|||
};
|
||||
|
||||
BluetoothDaemonConnectionIO::BluetoothDaemonConnectionIO(
|
||||
MessageLoop* aIOLoop,
|
||||
MessageLoop* aIOLoop, int aFd,
|
||||
ConnectionStatus aConnectionStatus,
|
||||
BluetoothDaemonConnection* aConnection,
|
||||
BluetoothDaemonPDUConsumer* aConsumer)
|
||||
: UnixSocketWatcher(aIOLoop)
|
||||
: UnixSocketWatcher(aIOLoop, aFd, aConnectionStatus)
|
||||
, mConnection(aConnection)
|
||||
, mConsumer(aConsumer)
|
||||
, mShuttingDownOnIOThread(false)
|
||||
|
@ -291,6 +300,30 @@ BluetoothDaemonConnectionIO::ShutdownOnIOThread()
|
|||
mShuttingDownOnIOThread = true;
|
||||
}
|
||||
|
||||
nsresult
|
||||
BluetoothDaemonConnectionIO::Accept(int aFd,
|
||||
const union sockaddr_any* aAddr,
|
||||
socklen_t aAddrLen)
|
||||
{
|
||||
MOZ_ASSERT(MessageLoopForIO::current() == GetIOLoop());
|
||||
MOZ_ASSERT(GetConnectionStatus() == SOCKET_IS_CONNECTING);
|
||||
|
||||
// File-descriptor setup
|
||||
|
||||
if (TEMP_FAILURE_RETRY(fcntl(aFd, F_SETFL, O_NONBLOCK)) < 0) {
|
||||
OnError("fcntl", errno);
|
||||
ScopedClose cleanupFd(aFd);
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
SetSocket(aFd, SOCKET_IS_CONNECTED);
|
||||
|
||||
// Signal success
|
||||
OnConnected();
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
void
|
||||
BluetoothDaemonConnectionIO::Connect(const char* aSocketName)
|
||||
{
|
||||
|
@ -519,7 +552,8 @@ BluetoothDaemonConnection::ConnectSocket(BluetoothDaemonPDUConsumer* aConsumer)
|
|||
SetConnectionStatus(SOCKET_CONNECTING);
|
||||
|
||||
MessageLoop* ioLoop = XRE_GetIOMessageLoop();
|
||||
mIO = new BluetoothDaemonConnectionIO(ioLoop, this, aConsumer);
|
||||
mIO = new BluetoothDaemonConnectionIO(
|
||||
ioLoop, -1, UnixSocketWatcher::SOCKET_IS_CONNECTING, this, aConsumer);
|
||||
ioLoop->PostTask(FROM_HERE, new BluetoothDaemonConnectTask(mIO));
|
||||
|
||||
return NS_OK;
|
||||
|
@ -560,5 +594,30 @@ BluetoothDaemonConnection::Send(BluetoothDaemonPDU* aPDU)
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
ConnectionOrientedSocketIO*
|
||||
BluetoothDaemonConnection::GetIO()
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
MOZ_ASSERT(mIO); // Call |PrepareAccept| before listening for connections
|
||||
|
||||
return mIO;
|
||||
}
|
||||
|
||||
ConnectionOrientedSocketIO*
|
||||
BluetoothDaemonConnection::PrepareAccept(BluetoothDaemonPDUConsumer* aConsumer)
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
MOZ_ASSERT(!mIO);
|
||||
MOZ_ASSERT(aConsumer);
|
||||
|
||||
SetConnectionStatus(SOCKET_CONNECTING);
|
||||
|
||||
mIO = new BluetoothDaemonConnectionIO(
|
||||
XRE_GetIOMessageLoop(), -1, UnixSocketWatcher::SOCKET_IS_CONNECTING,
|
||||
this, aConsumer);
|
||||
|
||||
return mIO;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/FileUtils.h"
|
||||
#include "mozilla/ipc/ConnectionOrientedSocket.h"
|
||||
#include "mozilla/ipc/SocketBase.h"
|
||||
#include "nsError.h"
|
||||
#include "nsAutoPtr.h"
|
||||
|
@ -105,16 +106,33 @@ protected:
|
|||
* PDUs. PDU receiving is performed by |BluetoothDaemonPDUConsumer|.
|
||||
*/
|
||||
class BluetoothDaemonConnection : public SocketBase
|
||||
, public ConnectionOrientedSocket
|
||||
{
|
||||
public:
|
||||
BluetoothDaemonConnection();
|
||||
virtual ~BluetoothDaemonConnection();
|
||||
|
||||
// SocketBase
|
||||
//
|
||||
|
||||
nsresult ConnectSocket(BluetoothDaemonPDUConsumer* aConsumer);
|
||||
void CloseSocket();
|
||||
|
||||
nsresult Send(BluetoothDaemonPDU* aPDU);
|
||||
|
||||
// ConnectionOrientedSocket
|
||||
//
|
||||
|
||||
virtual ConnectionOrientedSocketIO* GetIO() MOZ_OVERRIDE;
|
||||
|
||||
protected:
|
||||
|
||||
// Prepares an instance of |BluetoothDaemonConnection| in DISCONNECTED
|
||||
// state for accepting a connection. Subclasses implementing |GetIO|
|
||||
// need to call this method.
|
||||
ConnectionOrientedSocketIO*
|
||||
PrepareAccept(BluetoothDaemonPDUConsumer* aConsumer);
|
||||
|
||||
private:
|
||||
BluetoothDaemonConnectionIO* mIO;
|
||||
};
|
||||
|
|
|
@ -225,20 +225,7 @@ ListenSocketIO::OnAccepted(int aFd,
|
|||
|
||||
RemoveWatchers(READ_WATCHER|WRITE_WATCHER);
|
||||
|
||||
nsRefPtr<nsRunnable> runnable;
|
||||
|
||||
if (NS_SUCCEEDED(mCOSocketIO->Accept(aFd, aAddr, aAddrLen))) {
|
||||
runnable =
|
||||
new SocketIOEventRunnable<ListenSocketIO>(
|
||||
this, SocketIOEventRunnable<ListenSocketIO>::CONNECT_SUCCESS);
|
||||
return;
|
||||
} else {
|
||||
runnable =
|
||||
new SocketIOEventRunnable<ListenSocketIO>(
|
||||
this, SocketIOEventRunnable<ListenSocketIO>::CONNECT_ERROR);
|
||||
}
|
||||
|
||||
NS_DispatchToMainThread(runnable);
|
||||
mCOSocketIO->Accept(aFd, aAddr, aAddrLen);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -262,6 +249,12 @@ ListenSocketIO::OnListening()
|
|||
}
|
||||
|
||||
AddWatchers(READ_WATCHER, true);
|
||||
|
||||
/* We signal a successful 'connection' to a local address for listening. */
|
||||
nsRefPtr<nsRunnable> runnable =
|
||||
new SocketIOEventRunnable<ListenSocketIO>(
|
||||
this, SocketIOEventRunnable<ListenSocketIO>::CONNECT_SUCCESS);
|
||||
NS_DispatchToMainThread(runnable);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Загрузка…
Ссылка в новой задаче