Merge b2ginbound to central, a=merge
authorWes Kocher <wkocher@mozilla.com>
Tue, 17 Nov 2015 13:21:48 -0800
changeset 272980 8c3a0b58fd51
parent 272974 eed903a7e4e7 (current diff)
parent 272979 4b5bd6832c52 (diff)
child 272981 bae1769b5394
child 272986 93d367134706
child 272995 90941c814c3a
child 273042 233f67378440
push id29689
push userkwierso@gmail.com
push dateTue, 17 Nov 2015 21:21:51 +0000
treeherdermozilla-central@8c3a0b58fd51 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone45.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge b2ginbound to central, a=merge
--- a/b2g/config/aries/sources.xml
+++ b/b2g/config/aries/sources.xml
@@ -10,17 +10,17 @@
   <!--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/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <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="9473dbcbebf4e758a3b73200968efc69071b4312"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="28d63cf3bdc4417f7ad8cab2230f096bf9f6d3b5"/>
   <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"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ac7e9ae8a24ab4a3f3da801ca53f95f39a32b89f"/>
   <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"/>
--- a/b2g/config/dolphin/sources.xml
+++ b/b2g/config/dolphin/sources.xml
@@ -10,17 +10,17 @@
   <!--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/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <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="9473dbcbebf4e758a3b73200968efc69071b4312"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="28d63cf3bdc4417f7ad8cab2230f096bf9f6d3b5"/>
   <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"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ac7e9ae8a24ab4a3f3da801ca53f95f39a32b89f"/>
   <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"/>
--- a/b2g/config/emulator-ics/sources.xml
+++ b/b2g/config/emulator-ics/sources.xml
@@ -14,17 +14,17 @@
   <!--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 -->
   <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="9473dbcbebf4e758a3b73200968efc69071b4312"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="28d63cf3bdc4417f7ad8cab2230f096bf9f6d3b5"/>
   <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="moztt" path="external/moztt" remote="b2g" revision="ac7e9ae8a24ab4a3f3da801ca53f95f39a32b89f"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="34ea6163f9f0e0122fb0bb03607eccdca31ced7a"/>
   <project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
   <!-- Stock Android things -->
--- a/b2g/config/emulator-jb/sources.xml
+++ b/b2g/config/emulator-jb/sources.xml
@@ -12,17 +12,17 @@
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="660169a3d7e034a892359e39135e8c2785a6ad6f">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </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="9473dbcbebf4e758a3b73200968efc69071b4312"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="28d63cf3bdc4417f7ad8cab2230f096bf9f6d3b5"/>
   <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="94bbf7890326d37f03fd2a6822b6618b08bec8e2"/>
   <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"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.1" path="prebuilts/clang/linux-x86/3.1" revision="5c45f43419d5582949284eee9cef0c43d866e03b"/>
--- a/b2g/config/emulator-kk/sources.xml
+++ b/b2g/config/emulator-kk/sources.xml
@@ -10,17 +10,17 @@
   <!--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/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <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="9473dbcbebf4e758a3b73200968efc69071b4312"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="28d63cf3bdc4417f7ad8cab2230f096bf9f6d3b5"/>
   <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"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ac7e9ae8a24ab4a3f3da801ca53f95f39a32b89f"/>
   <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="94bbf7890326d37f03fd2a6822b6618b08bec8e2"/>
--- a/b2g/config/emulator-l/sources.xml
+++ b/b2g/config/emulator-l/sources.xml
@@ -10,17 +10,17 @@
   <!--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/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <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="9473dbcbebf4e758a3b73200968efc69071b4312"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="28d63cf3bdc4417f7ad8cab2230f096bf9f6d3b5"/>
   <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"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ac7e9ae8a24ab4a3f3da801ca53f95f39a32b89f"/>
   <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="94bbf7890326d37f03fd2a6822b6618b08bec8e2"/>
--- a/b2g/config/emulator/sources.xml
+++ b/b2g/config/emulator/sources.xml
@@ -14,17 +14,17 @@
   <!--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 -->
   <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="9473dbcbebf4e758a3b73200968efc69071b4312"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="28d63cf3bdc4417f7ad8cab2230f096bf9f6d3b5"/>
   <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="moztt" path="external/moztt" remote="b2g" revision="ac7e9ae8a24ab4a3f3da801ca53f95f39a32b89f"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="34ea6163f9f0e0122fb0bb03607eccdca31ced7a"/>
   <project name="platform_hardware_libhardware_moz" path="hardware/libhardware_moz" remote="b2g" revision="fdf3a143dc777e5f9d33a88373af7ea161d3b440"/>
   <!-- Stock Android things -->
--- a/b2g/config/flame-kk/sources.xml
+++ b/b2g/config/flame-kk/sources.xml
@@ -10,17 +10,17 @@
   <!--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/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <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="9473dbcbebf4e758a3b73200968efc69071b4312"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="28d63cf3bdc4417f7ad8cab2230f096bf9f6d3b5"/>
   <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"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ac7e9ae8a24ab4a3f3da801ca53f95f39a32b89f"/>
   <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"/>
--- a/b2g/config/gaia.json
+++ b/b2g/config/gaia.json
@@ -1,9 +1,9 @@
 {
     "git": {
-        "git_revision": "9473dbcbebf4e758a3b73200968efc69071b4312", 
+        "git_revision": "28d63cf3bdc4417f7ad8cab2230f096bf9f6d3b5", 
         "remote": "https://git.mozilla.org/releases/gaia.git", 
         "branch": ""
     }, 
-    "revision": "0513f90869b616c88cfaa5fe52ff8ba22a472062", 
+    "revision": "f1fbe09c3fd9e47b2ca2709b471b2c9cfd7a733f", 
     "repo_path": "integration/gaia-central"
 }
--- a/b2g/config/nexus-4-kk/sources.xml
+++ b/b2g/config/nexus-4-kk/sources.xml
@@ -10,17 +10,17 @@
   <!--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/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <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="9473dbcbebf4e758a3b73200968efc69071b4312"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="28d63cf3bdc4417f7ad8cab2230f096bf9f6d3b5"/>
   <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"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ac7e9ae8a24ab4a3f3da801ca53f95f39a32b89f"/>
   <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"/>
@@ -123,17 +123,17 @@
   <project name="platform/system/netd" path="system/netd" revision="36704b0da24debcab8090156568ac236315036bb"/>
   <project name="platform/system/security" path="system/security" revision="583374f69f531ba68fc3dcbff1f74893d2a96406"/>
   <project name="platform/system/vold" path="system/vold" revision="d4455b8cf361f8353e8aebac15ffd64b4aedd2b9"/>
   <project name="platform/external/icu4c" path="external/icu4c" remote="aosp" revision="b4c6379528887dc25ca9991a535a8d92a61ad6b6"/>
   <project name="platform_frameworks_av" path="frameworks/av" remote="b2g" revision="2da3a2d5100f8afa1229bb50aa2a29ea0aaf8417"/>
   <project name="platform_system_core" path="system/core" remote="b2g" revision="8586f55fe4b015911b48e731b69c592ad82a0807"/>
   <default remote="caf" revision="refs/tags/android-4.4.2_r1" sync-j="4"/>
   <!-- Nexus 4 specific things -->
-  <project name="device-mako" path="device/lge/mako" remote="b2g" revision="aea6908cd694b4ef9e7ad64a930d52eab6ab1e17"/>
+  <project name="device-mako" path="device/lge/mako" remote="b2g" revision="d7b8c7b6be661270437704760a8cfc27ddbf9a9d"/>
   <project name="device/generic/armv7-a-neon" path="device/generic/armv7-a-neon" revision="72ffdf71c68a96309212eb13d63560d66db14c9e"/>
   <project name="device_lge_mako-kernel" path="device/lge/mako-kernel" remote="b2g" revision="a49f2c34bc50a07b02f010a53d80477542209a81"/>
   <project name="platform/external/libnfc-nci" path="external/libnfc-nci" revision="f37bd545063039e30a92f2550ae78c0e6e4e2d08"/>
   <project name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="694cecf256122d0cb3b6a1a4efb4b5c7401db223"/>
   <project name="platform/hardware/broadcom/wlan" path="hardware/broadcom/wlan" revision="5eb5fb95dbc095c554686bdded852c46f1299e37"/>
   <project name="platform/hardware/qcom/audio" path="hardware/qcom/audio" revision="e168f3dc6c821239497e7358a968b99da6d9df5b"/>
   <project name="platform/hardware/qcom/bt" path="hardware/qcom/bt" revision="9c274df08174e762523ca0c84249c875c76f0cc2"/>
   <project name="platform/hardware/qcom/camera" path="hardware/qcom/camera" revision="b951a32c1afaec2547b082c2c1c56d79f6797426"/>
--- a/b2g/config/nexus-4/sources.xml
+++ b/b2g/config/nexus-4/sources.xml
@@ -13,17 +13,17 @@
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="660169a3d7e034a892359e39135e8c2785a6ad6f">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
   <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="9473dbcbebf4e758a3b73200968efc69071b4312"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="28d63cf3bdc4417f7ad8cab2230f096bf9f6d3b5"/>
   <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="94bbf7890326d37f03fd2a6822b6618b08bec8e2"/>
   <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"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.1" path="prebuilts/clang/linux-x86/3.1" revision="5c45f43419d5582949284eee9cef0c43d866e03b"/>
--- a/b2g/config/nexus-5-l/sources.xml
+++ b/b2g/config/nexus-5-l/sources.xml
@@ -10,17 +10,17 @@
   <!--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/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <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="9473dbcbebf4e758a3b73200968efc69071b4312"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="28d63cf3bdc4417f7ad8cab2230f096bf9f6d3b5"/>
   <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"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="ac7e9ae8a24ab4a3f3da801ca53f95f39a32b89f"/>
   <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"/>
@@ -137,17 +137,17 @@
   <project name="platform_frameworks_av" path="frameworks/av" remote="b2g" revision="e372b6a77f71c8f9fbbf6f8adbfa7bf8ef45dc60"/>
   <project name="platform_frameworks_base" path="frameworks/base" remote="b2g" revision="04e26ebdc36ca83f4ee3e9e2082b3fcf04c5b971"/>
   <project name="platform_frameworks_wilhelm" path="frameworks/wilhelm" remote="b2g" revision="0dbf5baafadf6d233c0a29e392fa3293f0121673"/>
   <project name="platform_system_core" path="system/core" remote="b2g" revision="f594bc64eacac490857748b1139ffcb34c856bbd"/>
   <project name="platform_external_sepolicy" path="external/sepolicy" remote="b2g" revision="3f6be48a46c54dd8cacaf216ab5b145de5ffefd2"/>
   <default remote="caf" revision="refs/tags/android-5.1.0_r1" sync-j="4"/>
   <!-- Nexus 5 specific things -->
   <project name="device/generic/armv7-a-neon" path="device/generic/armv7-a-neon" revision="fe7df1bc8dd0fd71571505d7be1c31a4ad1e40fb"/>
-  <project name="device-hammerhead" path="device/lge/hammerhead" remote="b2g" revision="22ab4b0b7fa7ed7b10c1b0576462008c53127f10"/>
+  <project name="device-hammerhead" path="device/lge/hammerhead" remote="b2g" revision="1401762a4eea0b92141e8ff3100f93e9d6556fc8"/>
   <project name="device_lge_hammerhead-kernel" path="device/lge/hammerhead-kernel" remote="b2g" revision="8b3ffcfdd3d3852eca5488628f8bb2a08acbffa7"/>
   <project name="platform/external/libnfc-nci" path="external/libnfc-nci" revision="5d0ae53d9588c3d70c005aec9be94af9a534de16"/>
   <project name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="c15b6e266136cd0cdd9b94d0bbed1962d9dd6672"/>
   <project name="platform/hardware/broadcom/libbt" path="hardware/broadcom/libbt" revision="399fe3d3c8f38c599a56becddc456133e62a5d70"/>
   <project name="platform/hardware/broadcom/wlan" path="hardware/broadcom/wlan" revision="3f3134d5cb19d5ace48d36d0100467a545d430eb"/>
   <project name="platform/hardware/qcom/audio" path="hardware/qcom/audio" revision="810c3dd29d009822a71eba9910e429a9ad114533"/>
   <project name="hardware_qcom_display" path="hardware/qcom/display" remote="b2g" revision="d8a56d7215bd26a61e43dcde20e64826a5fec265"/>
   <project name="platform/hardware/qcom/keymaster" path="hardware/qcom/keymaster" revision="eaede9f8bc206736a889bc57817047c31e205589"/>
--- a/dom/bluetooth/bluedroid/BluetoothGattManager.cpp
+++ b/dom/bluetooth/bluedroid/BluetoothGattManager.cpp
@@ -149,23 +149,20 @@ public:
   void NotifyDiscoverCompleted(bool aSuccess)
   {
     MOZ_ASSERT(!mAppUuid.IsCleared());
     MOZ_ASSERT(mDiscoverRunnable);
 
     BluetoothService* bs = BluetoothService::Get();
     NS_ENSURE_TRUE_VOID(bs);
 
-    nsAutoString appUuidStr;
-    UuidToString(mAppUuid, appUuidStr);
-
     // Notify application to clear the cache values of
     // service/characteristic/descriptor.
     bs->DistributeSignal(NS_LITERAL_STRING("DiscoverCompleted"),
-                         appUuidStr,
+                         mAppUuid,
                          BluetoothValue(aSuccess));
 
     // Resolve/Reject the Promise.
     if (aSuccess) {
       DispatchReplySuccess(mDiscoverRunnable);
     } else {
       DispatchReplyError(mDiscoverRunnable,
                          NS_LITERAL_STRING("Discover failed"));
@@ -654,23 +651,20 @@ public:
   void OnError(BluetoothStatus aStatus) override
   {
     BT_WARNING("BluetoothGattInterface::RegisterClient failed: %d",
                (int)aStatus);
 
     BluetoothService* bs = BluetoothService::Get();
     NS_ENSURE_TRUE_VOID(bs);
 
-    nsAutoString appUuidStr;
-    UuidToString(mClient->mAppUuid, appUuidStr);
-
     // Notify BluetoothGatt for client disconnected
     bs->DistributeSignal(
       NS_LITERAL_STRING(GATT_CONNECTION_STATE_CHANGED_ID),
-      appUuidStr,
+      mClient->mAppUuid,
       BluetoothValue(false)); // Disconnected
 
     // Reject the connect request
     if (mClient->mConnectRunnable) {
       DispatchReplyError(mClient->mConnectRunnable,
                          NS_LITERAL_STRING("Register GATT client failed"));
       mClient->mConnectRunnable = nullptr;
     }
@@ -693,22 +687,19 @@ public:
   }
 
   void UnregisterClient() override
   {
     MOZ_ASSERT(mClient->mUnregisterClientRunnable);
     BluetoothService* bs = BluetoothService::Get();
     NS_ENSURE_TRUE_VOID(bs);
 
-    nsAutoString appUuidStr;
-    UuidToString(mClient->mAppUuid, appUuidStr);
-
     // Notify BluetoothGatt to clear the clientIf
     bs->DistributeSignal(NS_LITERAL_STRING("ClientUnregistered"),
-                         appUuidStr);
+                         mClient->mAppUuid);
 
     // Resolve the unregister request
     DispatchReplySuccess(mClient->mUnregisterClientRunnable);
     mClient->mUnregisterClientRunnable = nullptr;
 
     sClients->RemoveElement(mClient);
   }
 
@@ -901,23 +892,20 @@ public:
   {
     BT_WARNING("BluetoothGattInterface::Connect failed: %d",
                (int)aStatus);
     MOZ_ASSERT(mClient->mConnectRunnable);
 
     BluetoothService* bs = BluetoothService::Get();
     NS_ENSURE_TRUE_VOID(bs);
 
-    nsAutoString appUuidStr;
-    UuidToString(mClient->mAppUuid, appUuidStr);
-
     // Notify BluetoothGatt for client disconnected
     bs->DistributeSignal(
       NS_LITERAL_STRING(GATT_CONNECTION_STATE_CHANGED_ID),
-      appUuidStr,
+      mClient->mAppUuid,
       BluetoothValue(false)); // Disconnected
 
     // Reject the connect request
     DispatchReplyError(mClient->mConnectRunnable,
                        NS_LITERAL_STRING("Connect failed"));
     mClient->mConnectRunnable = nullptr;
   }
 
@@ -971,23 +959,20 @@ public:
   {
     BT_WARNING("BluetoothGattInterface::Disconnect failed: %d",
                (int)aStatus);
     MOZ_ASSERT(mClient->mDisconnectRunnable);
 
     BluetoothService* bs = BluetoothService::Get();
     NS_ENSURE_TRUE_VOID(bs);
 
-    nsAutoString appUuidStr;
-    UuidToString(mClient->mAppUuid, appUuidStr);
-
     // Notify BluetoothGatt that the client remains connected
     bs->DistributeSignal(
       NS_LITERAL_STRING(GATT_CONNECTION_STATE_CHANGED_ID),
-      appUuidStr,
+      mClient->mAppUuid,
       BluetoothValue(true)); // Connected
 
     // Reject the disconnect request
     DispatchReplyError(mClient->mDisconnectRunnable,
                        NS_LITERAL_STRING("Disconnect failed"));
     mClient->mDisconnectRunnable = nullptr;
   }
 
@@ -1831,22 +1816,19 @@ public:
     MOZ_ASSERT(mServer);
   }
 
   void UnregisterServer() override
   {
     BluetoothService* bs = BluetoothService::Get();
     NS_ENSURE_TRUE_VOID(bs);
 
-    nsAutoString appUuidStr;
-    UuidToString(mServer->mAppUuid, appUuidStr);
-
     // Notify BluetoothGattServer to clear the serverIf
     bs->DistributeSignal(NS_LITERAL_STRING("ServerUnregistered"),
-                         appUuidStr);
+                         mServer->mAppUuid);
 
     // Resolve the unregister request
     if (mServer->mUnregisterServerRunnable) {
       DispatchReplySuccess(mServer->mUnregisterServerRunnable);
       mServer->mUnregisterServerRunnable = nullptr;
     }
 
     sServers->RemoveElement(mServer);
@@ -2538,27 +2520,27 @@ BluetoothGattManager::RegisterClientNoti
   size_t index = sClients->IndexOf(aAppUuid, 0 /* Start */, UuidComparator());
   NS_ENSURE_TRUE_VOID(index != sClients->NoIndex);
 
   RefPtr<BluetoothGattClient> client = sClients->ElementAt(index);
 
   BluetoothService* bs = BluetoothService::Get();
   NS_ENSURE_TRUE_VOID(bs);
 
-  nsAutoString appUuidStr;
-  UuidToString(aAppUuid, appUuidStr);
-
   if (aStatus != GATT_STATUS_SUCCESS) {
+    nsAutoString appUuidStr;
+    UuidToString(aAppUuid, appUuidStr);
+
     BT_LOGD("RegisterClient failed: clientIf = %d, status = %d, appUuid = %s",
             aClientIf, aStatus, NS_ConvertUTF16toUTF8(appUuidStr).get());
 
     // Notify BluetoothGatt for client disconnected
     bs->DistributeSignal(
       NS_LITERAL_STRING(GATT_CONNECTION_STATE_CHANGED_ID),
-      appUuidStr, BluetoothValue(false)); // Disconnected
+      aAppUuid, BluetoothValue(false)); // Disconnected
 
     if (client->mStartLeScanRunnable) {
       // Reject the LE scan request
       DispatchReplyError(client->mStartLeScanRunnable,
                          NS_LITERAL_STRING(
                            "StartLeScan failed due to registration failed"));
       client->mStartLeScanRunnable = nullptr;
     } else if (client->mConnectRunnable) {
@@ -2573,17 +2555,17 @@ BluetoothGattManager::RegisterClientNoti
     return;
   }
 
   client->mClientIf = aClientIf;
 
   // Notify BluetoothGatt to update the clientIf
   bs->DistributeSignal(
     NS_LITERAL_STRING("ClientRegistered"),
-    appUuidStr, BluetoothValue(uint32_t(aClientIf)));
+    aAppUuid, BluetoothValue(uint32_t(aClientIf)));
 
   if (client->mStartLeScanRunnable) {
     // Client just registered, proceed remaining startLeScan request.
     sBluetoothGattInterface->Scan(
       aClientIf, true /* start */,
       new StartLeScanResultHandler(client));
   } else if (client->mConnectRunnable) {
     // Client just registered, proceed remaining connect request.
@@ -2672,27 +2654,24 @@ BluetoothGattManager::ConnectNotificatio
   NS_ENSURE_TRUE_VOID(bs);
 
   size_t index = sClients->IndexOf(aClientIf, 0 /* Start */,
                                    InterfaceIdComparator());
   NS_ENSURE_TRUE_VOID(index != sClients->NoIndex);
 
   RefPtr<BluetoothGattClient> client = sClients->ElementAt(index);
 
-  nsAutoString appUuidStr;
-  UuidToString(client->mAppUuid, appUuidStr);
-
   if (aStatus != GATT_STATUS_SUCCESS) {
     BT_LOGD("Connect failed: clientIf = %d, connId = %d, status = %d",
             aClientIf, aConnId, aStatus);
 
     // Notify BluetoothGatt that the client remains disconnected
     bs->DistributeSignal(
       NS_LITERAL_STRING(GATT_CONNECTION_STATE_CHANGED_ID),
-      appUuidStr,
+      client->mAppUuid,
       BluetoothValue(false)); // Disconnected
 
     // Reject the connect request
     if (client->mConnectRunnable) {
       DispatchReplyError(client->mConnectRunnable,
                          NS_LITERAL_STRING("Connect failed"));
       client->mConnectRunnable = nullptr;
     }
@@ -2700,17 +2679,17 @@ BluetoothGattManager::ConnectNotificatio
     return;
   }
 
   client->mConnId = aConnId;
 
   // Notify BluetoothGatt for client connected
   bs->DistributeSignal(
     NS_LITERAL_STRING(GATT_CONNECTION_STATE_CHANGED_ID),
-    appUuidStr,
+    client->mAppUuid,
     BluetoothValue(true)); // Connected
 
   // Resolve the connect request
   if (client->mConnectRunnable) {
     DispatchReplySuccess(client->mConnectRunnable);
     client->mConnectRunnable = nullptr;
   }
 }
@@ -2728,24 +2707,21 @@ BluetoothGattManager::DisconnectNotifica
   NS_ENSURE_TRUE_VOID(bs);
 
   size_t index = sClients->IndexOf(aClientIf, 0 /* Start */,
                                    InterfaceIdComparator());
   NS_ENSURE_TRUE_VOID(index != sClients->NoIndex);
 
   RefPtr<BluetoothGattClient> client = sClients->ElementAt(index);
 
-  nsAutoString appUuidStr;
-  UuidToString(client->mAppUuid, appUuidStr);
-
   if (aStatus != GATT_STATUS_SUCCESS) {
     // Notify BluetoothGatt that the client remains connected
     bs->DistributeSignal(
       NS_LITERAL_STRING(GATT_CONNECTION_STATE_CHANGED_ID),
-      appUuidStr,
+      client->mAppUuid,
       BluetoothValue(true)); // Connected
 
     // Reject the disconnect request
     if (client->mDisconnectRunnable) {
       DispatchReplyError(client->mDisconnectRunnable,
                          NS_LITERAL_STRING("Disconnect failed"));
       client->mDisconnectRunnable = nullptr;
     }
@@ -2753,17 +2729,17 @@ BluetoothGattManager::DisconnectNotifica
     return;
   }
 
   client->mConnId = 0;
 
   // Notify BluetoothGatt for client disconnected
   bs->DistributeSignal(
     NS_LITERAL_STRING(GATT_CONNECTION_STATE_CHANGED_ID),
-    appUuidStr,
+    client->mAppUuid,
     BluetoothValue(false)); // Disconnected
 
   // Resolve the disconnect request
   if (client->mDisconnectRunnable) {
     DispatchReplySuccess(client->mDisconnectRunnable);
     client->mDisconnectRunnable = nullptr;
   }
 }
@@ -2784,22 +2760,19 @@ BluetoothGattManager::SearchCompleteNoti
   RefPtr<BluetoothGattClient> client = sClients->ElementAt(index);
   MOZ_ASSERT(client->mDiscoverRunnable);
 
   if (aStatus != GATT_STATUS_SUCCESS) {
     client->NotifyDiscoverCompleted(false);
     return;
   }
 
-  nsAutoString appUuidStr;
-  UuidToString(client->mAppUuid, appUuidStr);
-
   // Notify BluetoothGatt to create all services
   bs->DistributeSignal(NS_LITERAL_STRING("ServicesDiscovered"),
-                       appUuidStr,
+                       client->mAppUuid,
                        BluetoothValue(client->mServices));
 
   // All services are discovered, continue to search included services of each
   // service if existed, otherwise, notify application that discover completed
   if (!client->mServices.IsEmpty()) {
     sBluetoothGattInterface->GetIncludedService(
       aConnId,
       client->mServices[0], // start from first service
@@ -2867,21 +2840,18 @@ BluetoothGattManager::GetCharacteristicN
       new DiscoverResultHandler(client));
   } else { // all characteristics of this service are discovered
     // Notify BluetoothGatt to make BluetoothGattService create characteristics
     // then proceed
     nsTArray<BluetoothNamedValue> values;
     AppendNamedValue(values, "serviceId", aServiceId);
     AppendNamedValue(values, "characteristics", client->mCharacteristics);
 
-    nsAutoString appUuidStr;
-    UuidToString(client->mAppUuid, appUuidStr);
-
     bs->DistributeSignal(NS_LITERAL_STRING("CharacteristicsDiscovered"),
-                         appUuidStr,
+                         client->mAppUuid,
                          BluetoothValue(values));
 
     ProceedDiscoverProcess(client, aServiceId);
   }
 }
 
 void
 BluetoothGattManager::GetDescriptorNotification(
@@ -2917,21 +2887,18 @@ BluetoothGattManager::GetDescriptorNotif
   } else { // all descriptors of this characteristic are discovered
     // Notify BluetoothGatt to make BluetoothGattCharacteristic create
     // descriptors then proceed
     nsTArray<BluetoothNamedValue> values;
     AppendNamedValue(values, "serviceId", aServiceId);
     AppendNamedValue(values, "characteristicId", aCharId);
     AppendNamedValue(values, "descriptors", client->mDescriptors);
 
-    nsAutoString appUuidStr;
-    UuidToString(client->mAppUuid, appUuidStr);
-
     bs->DistributeSignal(NS_LITERAL_STRING("DescriptorsDiscovered"),
-                         appUuidStr,
+                         client->mAppUuid,
                          BluetoothValue(values));
     client->mDescriptors.Clear();
 
     ProceedDiscoverProcess(client, aServiceId);
   }
 }
 
 void
@@ -2965,21 +2932,18 @@ BluetoothGattManager::GetIncludedService
       new DiscoverResultHandler(client));
   } else { // all included services of this service are discovered
     // Notify BluetoothGatt to make BluetoothGattService create included
     // services
     nsTArray<BluetoothNamedValue> values;
     AppendNamedValue(values, "serviceId", aServiceId);
     AppendNamedValue(values, "includedServices", client->mIncludedServices);
 
-    nsAutoString appUuidStr;
-    UuidToString(client->mAppUuid, appUuidStr);
-
     bs->DistributeSignal(NS_LITERAL_STRING("IncludedServicesDiscovered"),
-                         appUuidStr,
+                         client->mAppUuid,
                          BluetoothValue(values));
     client->mIncludedServices.Clear();
 
     // Start to discover characteristics of this service
     sBluetoothGattInterface->GetCharacteristic(
       aConnId,
       aServiceId,
       true, // first characteristic
@@ -3040,21 +3004,18 @@ BluetoothGattManager::NotifyNotification
 
   // Notify BluetoothGatt for characteristic changed
   nsTArray<BluetoothNamedValue> ids;
   ids.AppendElement(BluetoothNamedValue(NS_LITERAL_STRING("serviceId"),
                                         aNotifyParam.mServiceId));
   ids.AppendElement(BluetoothNamedValue(NS_LITERAL_STRING("charId"),
                                         aNotifyParam.mCharId));
 
-  nsAutoString appUuidStr;
-  UuidToString(client->mAppUuid, appUuidStr);
-
   bs->DistributeSignal(NS_LITERAL_STRING(GATT_CHARACTERISTIC_CHANGED_ID),
-                       appUuidStr,
+                       client->mAppUuid,
                        BluetoothValue(ids));
 }
 
 void
 BluetoothGattManager::ReadCharacteristicNotification(
   int aConnId, BluetoothGattStatus aStatus,
   const BluetoothGattReadParam& aReadParam)
 {
@@ -3087,21 +3048,18 @@ BluetoothGattManager::ReadCharacteristic
 
     // Notify BluetoothGatt for characteristic changed
     nsTArray<BluetoothNamedValue> ids;
     ids.AppendElement(BluetoothNamedValue(NS_LITERAL_STRING("serviceId"),
                                           aReadParam.mServiceId));
     ids.AppendElement(BluetoothNamedValue(NS_LITERAL_STRING("charId"),
                                           aReadParam.mCharId));
 
-    nsAutoString appUuidStr;
-    UuidToString(client->mAppUuid, appUuidStr);
-
     bs->DistributeSignal(NS_LITERAL_STRING(GATT_CHARACTERISTIC_CHANGED_ID),
-                         appUuidStr,
+                         client->mAppUuid,
                          BluetoothValue(ids));
 
     // Resolve the promise
     DispatchReplySuccess(runnable, BluetoothValue(value));
   } else if (!client->mReadCharacteristicState.mAuthRetry &&
              (aStatus == GATT_STATUS_INSUFFICIENT_AUTHENTICATION ||
               aStatus == GATT_STATUS_INSUFFICIENT_ENCRYPTION)) {
     client->mReadCharacteristicState.mAuthRetry = true;
@@ -3315,28 +3273,28 @@ BluetoothGattManager::ListenNotification
  */
 void
 BluetoothGattManager::RegisterServerNotification(BluetoothGattStatus aStatus,
                                                  int aServerIf,
                                                  const BluetoothUuid& aAppUuid)
 {
   MOZ_ASSERT(NS_IsMainThread());
 
-  nsAutoString appUuidStr;
-  UuidToString(aAppUuid, appUuidStr);
-
   size_t index = sServers->IndexOf(aAppUuid, 0 /* Start */, UuidComparator());
   NS_ENSURE_TRUE_VOID(index != sServers->NoIndex);
 
   RefPtr<BluetoothGattServer> server = (*sServers)[index];
 
   server->mIsRegistering = false;
 
   BluetoothService* bs = BluetoothService::Get();
   if (!bs || aStatus != GATT_STATUS_SUCCESS) {
+    nsAutoString appUuidStr;
+    UuidToString(aAppUuid, appUuidStr);
+
     BT_LOGD("RegisterServer failed: serverIf = %d, status = %d, appUuid = %s",
              aServerIf, aStatus, NS_ConvertUTF16toUTF8(appUuidStr).get());
 
     if (server->mConnectPeripheralRunnable) {
       // Reject the connect peripheral request
       DispatchReplyError(
         server->mConnectPeripheralRunnable,
         NS_LITERAL_STRING(
@@ -3357,17 +3315,17 @@ BluetoothGattManager::RegisterServerNoti
     return;
   }
 
   server->mServerIf = aServerIf;
 
   // Notify BluetoothGattServer to update the serverIf
   bs->DistributeSignal(
     NS_LITERAL_STRING("ServerRegistered"),
-    appUuidStr, BluetoothValue(uint32_t(aServerIf)));
+    aAppUuid, BluetoothValue(uint32_t(aServerIf)));
 
   if (server->mConnectPeripheralRunnable) {
     // Only one entry exists in the map during first connect peripheral request
     const BluetoothAddress& deviceAddr = server->mConnectionMap.Iter().Key();
 
     sBluetoothGattInterface->ConnectPeripheral(
       aServerIf, deviceAddr, true /* direct connect */, TRANSPORT_AUTO,
       new ConnectPeripheralResultHandler(server, deviceAddr));
@@ -3404,26 +3362,23 @@ BluetoothGattManager::ConnectionNotifica
     server->mConnectionMap.Put(aBdAddr, aConnId);
   } else {
     server->mConnectionMap.Remove(aBdAddr);
   }
 
   nsAutoString bdAddrStr;
   AddressToString(aBdAddr, bdAddrStr);
 
-  nsAutoString appUuidStr;
-  UuidToString(server->mAppUuid, appUuidStr);
-
   // Notify BluetoothGattServer that connection status changed
   InfallibleTArray<BluetoothNamedValue> props;
   AppendNamedValue(props, "Connected", aConnected);
   AppendNamedValue(props, "Address", bdAddrStr);
   bs->DistributeSignal(
     NS_LITERAL_STRING(GATT_CONNECTION_STATE_CHANGED_ID),
-    appUuidStr,
+    server->mAppUuid,
     BluetoothValue(props));
 
   // Resolve or reject connect/disconnect peripheral requests
   if (server->mConnectPeripheralRunnable) {
     if (aConnected) {
       DispatchReplySuccess(server->mConnectPeripheralRunnable);
     } else {
       DispatchReplyError(server->mConnectPeripheralRunnable,
@@ -3461,25 +3416,22 @@ BluetoothGattManager::ServiceAddedNotifi
     if (server->mAddServiceState.mRunnable) {
       DispatchReplyError(server->mAddServiceState.mRunnable,
                          NS_LITERAL_STRING("ServiceAddedNotification failed"));
       server->mAddServiceState.Reset();
     }
     return;
   }
 
-  nsAutoString appUuidStr;
-  UuidToString(server->mAppUuid, appUuidStr);
-
   // Notify BluetoothGattServer to update service handle
   InfallibleTArray<BluetoothNamedValue> props;
   AppendNamedValue(props, "ServiceId", aServiceId);
   AppendNamedValue(props, "ServiceHandle", aServiceHandle);
   bs->DistributeSignal(NS_LITERAL_STRING("ServiceHandleUpdated"),
-                       appUuidStr,
+                       server->mAppUuid,
                        BluetoothValue(props));
 
   if (server->mAddServiceState.mRunnable) {
     DispatchReplySuccess(server->mAddServiceState.mRunnable);
     server->mAddServiceState.Reset();
   }
 }
 
@@ -3536,26 +3488,23 @@ BluetoothGattManager::CharacteristicAdde
       DispatchReplyError(
         server->mAddCharacteristicRunnable,
         NS_LITERAL_STRING("CharacteristicAddedNotification failed"));
       server->mAddCharacteristicRunnable = nullptr;
     }
     return;
   }
 
-  nsAutoString appUuidStr;
-  UuidToString(server->mAppUuid, appUuidStr);
-
   // Notify BluetoothGattServer to update characteristic handle
   InfallibleTArray<BluetoothNamedValue> props;
   AppendNamedValue(props, "CharacteristicUuid", aCharId);
   AppendNamedValue(props, "ServiceHandle", aServiceHandle);
   AppendNamedValue(props, "CharacteristicHandle", aCharacteristicHandle);
   bs->DistributeSignal(NS_LITERAL_STRING("CharacteristicHandleUpdated"),
-                       appUuidStr,
+                       server->mAppUuid,
                        BluetoothValue(props));
 
   if (server->mAddCharacteristicRunnable) {
     DispatchReplySuccess(server->mAddCharacteristicRunnable);
     server->mAddCharacteristicRunnable = nullptr;
   }
 }
 
@@ -3582,28 +3531,25 @@ BluetoothGattManager::DescriptorAddedNot
       DispatchReplyError(
         server->mAddDescriptorState.mRunnable,
         NS_LITERAL_STRING("DescriptorAddedNotification failed"));
       server->mAddDescriptorState.Reset();
     }
     return;
   }
 
-  nsAutoString appUuidStr;
-  UuidToString(server->mAppUuid, appUuidStr);
-
   // Notify BluetoothGattServer to update descriptor handle
   InfallibleTArray<BluetoothNamedValue> props;
   AppendNamedValue(props, "CharacteristicUuid", aCharId);
   AppendNamedValue(props, "ServiceHandle", aServiceHandle);
   AppendNamedValue(props, "CharacteristicHandle",
     server->mAddDescriptorState.mCharacteristicHandle);
   AppendNamedValue(props, "DescriptorHandle", aDescriptorHandle);
   bs->DistributeSignal(NS_LITERAL_STRING("DescriptorHandleUpdated"),
-                       appUuidStr,
+                       server->mAppUuid,
                        BluetoothValue(props));
 
   if (server->mAddDescriptorState.mRunnable) {
     DispatchReplySuccess(server->mAddDescriptorState.mRunnable);
     server->mAddDescriptorState.Reset();
   }
 }
 
@@ -3729,30 +3675,27 @@ BluetoothGattManager::RequestReadNotific
       response,
       new ServerSendResponseResultHandler(server));
     return;
   }
 
   nsAutoString bdAddrStr;
   AddressToString(aBdAddr, bdAddrStr);
 
-  nsAutoString appUuidStr;
-  UuidToString(server->mAppUuid, appUuidStr);
-
   // Distribute a signal to gattServer
   InfallibleTArray<BluetoothNamedValue> properties;
 
   AppendNamedValue(properties, "TransId", aTransId);
   AppendNamedValue(properties, "AttrHandle", aAttributeHandle);
   AppendNamedValue(properties, "Address", bdAddrStr);
   AppendNamedValue(properties, "NeedResponse", true);
   AppendNamedValue(properties, "Value", new nsTArray<uint8_t>());
 
   bs->DistributeSignal(NS_LITERAL_STRING("ReadRequested"),
-                       appUuidStr,
+                       server->mAppUuid,
                        properties);
 }
 
 void
 BluetoothGattManager::RequestWriteNotification(
   int aConnId,
   int aTransId,
   const BluetoothAddress& aBdAddr,
@@ -3788,33 +3731,30 @@ BluetoothGattManager::RequestWriteNotifi
         new ServerSendResponseResultHandler(server));
     }
     return;
   }
 
   nsAutoString bdAddrStr;
   AddressToString(aBdAddr, bdAddrStr);
 
-  nsAutoString appUuidStr;
-  UuidToString(server->mAppUuid, appUuidStr);
-
   // Distribute a signal to gattServer
   InfallibleTArray<BluetoothNamedValue> properties;
 
   AppendNamedValue(properties, "TransId", aTransId);
   AppendNamedValue(properties, "AttrHandle", aAttributeHandle);
   AppendNamedValue(properties, "Address", bdAddrStr);
   AppendNamedValue(properties, "NeedResponse", aNeedResponse);
 
   nsTArray<uint8_t> value;
   value.AppendElements(aValue, aLength);
   AppendNamedValue(properties, "Value", value);
 
   bs->DistributeSignal(NS_LITERAL_STRING("WrtieRequested"),
-                       appUuidStr,
+                       server->mAppUuid,
                        properties);
 }
 
 BluetoothGattManager::BluetoothGattManager()
 { }
 
 BluetoothGattManager::~BluetoothGattManager()
 {
--- a/dom/bluetooth/common/BluetoothService.cpp
+++ b/dom/bluetooth/common/BluetoothService.cpp
@@ -235,18 +235,17 @@ BluetoothService::Cleanup()
       (NS_FAILED(obs->RemoveObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID)) ||
        NS_FAILED(obs->RemoveObserver(this, MOZSETTINGS_CHANGED_ID)))) {
     BT_WARNING("Can't unregister observers!");
   }
 }
 
 void
 BluetoothService::RegisterBluetoothSignalHandler(
-                                              const nsAString& aNodeName,
-                                              BluetoothSignalObserver* aHandler)
+  const nsAString& aNodeName, BluetoothSignalObserver* aHandler)
 {
   MOZ_ASSERT(NS_IsMainThread());
   MOZ_ASSERT(aHandler);
 
   BT_LOGD("[S] %s: %s", __FUNCTION__, NS_ConvertUTF16toUTF8(aNodeName).get());
 
   BluetoothSignalObserverList* ol;
   if (!mBluetoothSignalObserverTable.Get(aNodeName, &ol)) {
@@ -330,16 +329,58 @@ BluetoothService::DistributeSignal(const
                                    const nsAString& aPath,
                                    const BluetoothValue& aValue)
 {
   BluetoothSignal signal(nsString(aName), nsString(aPath), aValue);
   DistributeSignal(signal);
 }
 
 void
+BluetoothService::DistributeSignal(const nsAString& aName,
+                                   const BluetoothAddress& aAddress)
+{
+  nsAutoString path;
+  AddressToString(aAddress, path);
+
+  DistributeSignal(aName, path);
+}
+
+void
+BluetoothService::DistributeSignal(const nsAString& aName,
+                                   const BluetoothAddress& aAddress,
+                                   const BluetoothValue& aValue)
+{
+  nsAutoString path;
+  AddressToString(aAddress, path);
+
+  DistributeSignal(aName, path, aValue);
+}
+
+void
+BluetoothService::DistributeSignal(const nsAString& aName,
+                                   const BluetoothUuid& aUuid)
+{
+  nsAutoString path;
+  UuidToString(aUuid, path);
+
+  DistributeSignal(aName, path);
+}
+
+void
+BluetoothService::DistributeSignal(const nsAString& aName,
+                                   const BluetoothUuid& aUuid,
+                                   const BluetoothValue& aValue)
+{
+  nsAutoString path;
+  UuidToString(aUuid, path);
+
+  DistributeSignal(aName, path, aValue);
+}
+
+void
 BluetoothService::DistributeSignal(const BluetoothSignal& aSignal)
 {
   MOZ_ASSERT(NS_IsMainThread());
 
   BluetoothSignalObserverList* ol;
   if (!mBluetoothSignalObserverTable.Get(aSignal.path(), &ol)) {
     // If there is no BluetoohPairingListener in observer table, put the signal
     // into a pending queue of pairing requests and send a system message to
--- a/dom/bluetooth/common/BluetoothService.h
+++ b/dom/bluetooth/common/BluetoothService.h
@@ -103,16 +103,56 @@ public:
    * @param aPath Path of the signal to distribute to
    * @param aValue Value of the signal to carry
    */
   void
   DistributeSignal(const nsAString& aName, const nsAString& aPath,
                    const BluetoothValue& aValue);
 
   /**
+   * Create a signal without value and distribute it to the observer list
+   *
+   * @param aName Name of the signal
+   * @param aAddress Path of the signal to distribute to
+   */
+  void
+  DistributeSignal(const nsAString& aName, const BluetoothAddress& aAddress);
+
+  /**
+   * Create a signal and distribute it to the observer list
+   *
+   * @param aName Name of the signal
+   * @param aAddress Path of the signal to distribute to
+   * @param aValue Value of the signal to carry
+   */
+  void
+  DistributeSignal(const nsAString& aName, const BluetoothAddress& aAddress,
+                   const BluetoothValue& aValue);
+
+  /**
+   * Create a signal without value and distribute it to the observer list
+   *
+   * @param aName Name of the signal
+   * @param aUuid Path of the signal to distribute to
+   */
+  void
+  DistributeSignal(const nsAString& aName, const BluetoothUuid& aUuid);
+
+  /**
+   * Create a signal and distribute it to the observer list
+   *
+   * @param aName Name of the signal
+   * @param aUuid Path of the signal to distribute to
+   * @param aValue Value of the signal to carry
+   */
+  void
+  DistributeSignal(const nsAString& aName, const BluetoothUuid& aUuid,
+                   const BluetoothValue& aValue);
+
+  /**
    * Distribute a signal to the observer list
    *
    * @param aSignal Signal object to distribute
    */
   void
   DistributeSignal(const BluetoothSignal& aSignal);
 
   /**
--- a/dom/bluetooth/common/BluetoothUtils.cpp
+++ b/dom/bluetooth/common/BluetoothUtils.cpp
@@ -436,29 +436,69 @@ RegisterBluetoothSignalHandler(const nsA
   BluetoothService* bs = BluetoothService::Get();
   NS_ENSURE_TRUE_VOID(bs);
 
   bs->RegisterBluetoothSignalHandler(aPath, aHandler);
   aHandler->SetSignalRegistered(true);
 }
 
 void
+RegisterBluetoothSignalHandler(const BluetoothAddress& aAddress,
+                               BluetoothSignalObserver* aHandler)
+{
+  nsAutoString path;
+  AddressToString(aAddress, path);
+
+  RegisterBluetoothSignalHandler(path, aHandler);
+}
+
+void
+RegisterBluetoothSignalHandler(const BluetoothUuid& aUuid,
+                               BluetoothSignalObserver* aHandler)
+{
+  nsAutoString path;
+  UuidToString(aUuid, path);
+
+  RegisterBluetoothSignalHandler(path, aHandler);
+}
+
+void
 UnregisterBluetoothSignalHandler(const nsAString& aPath,
                                  BluetoothSignalObserver* aHandler)
 {
   MOZ_ASSERT(!aPath.IsEmpty());
   MOZ_ASSERT(aHandler);
 
   BluetoothService* bs = BluetoothService::Get();
   NS_ENSURE_TRUE_VOID(bs);
 
   bs->UnregisterBluetoothSignalHandler(aPath, aHandler);
   aHandler->SetSignalRegistered(false);
 }
 
+void
+UnregisterBluetoothSignalHandler(const BluetoothAddress& aAddress,
+                                 BluetoothSignalObserver* aHandler)
+{
+  nsAutoString path;
+  AddressToString(aAddress, path);
+
+  UnregisterBluetoothSignalHandler(path, aHandler);
+}
+
+void
+UnregisterBluetoothSignalHandler(const BluetoothUuid& aUuid,
+                                 BluetoothSignalObserver* aHandler)
+{
+  nsAutoString path;
+  UuidToString(aUuid, path);
+
+  UnregisterBluetoothSignalHandler(path, aHandler);
+}
+
 /**
  * |SetJsObject| is an internal function used by |BroadcastSystemMessage| only
  */
 static bool
 SetJsObject(JSContext* aContext,
             const BluetoothValue& aValue,
             JS::Handle<JSObject*> aObj)
 {
--- a/dom/bluetooth/common/BluetoothUtils.h
+++ b/dom/bluetooth/common/BluetoothUtils.h
@@ -175,37 +175,81 @@ void
 GeneratePathFromGattId(const BluetoothGattId& aId,
                        nsAString& aPath);
 
 //
 // Register/Unregister bluetooth signal handlers
 //
 
 /**
- * Register the bluetooth signal handler.
+ * Register the Bluetooth signal handler.
  *
  * @param aPath Path of the signal to be registered.
  * @param aHandler The message handler object to be added into the observer
  *                 list. Note that this function doesn't take references to it.
  */
 void
 RegisterBluetoothSignalHandler(const nsAString& aPath,
                                BluetoothSignalObserver* aHandler);
 
 /**
- * Unregister the bluetooth signal handler.
+ * Register the Bluetooth signal handler.
+ *
+ * @param aAddress Address of the signal to be unregistered.
+ * @param aHandler The message handler object to be added into the observer
+ *                 list. Note that this function doesn't take references to it.
+ */
+void
+RegisterBluetoothSignalHandler(const BluetoothAddress& aAddress,
+                               BluetoothSignalObserver* aHandler);
+
+/**
+ * Register the Bluetooth signal handler.
+ *
+ * @param aUuid UUID of the signal to be unregistered.
+ * @param aHandler The message handler object to be added into the observer
+ *                 list. Note that this function doesn't take references to it.
+ */
+void
+RegisterBluetoothSignalHandler(const BluetoothUuid& aUuid,
+                               BluetoothSignalObserver* aHandler);
+
+/**
+ * Unregister the Bluetooth signal handler.
  *
  * @param aPath Path of the signal to be unregistered.
  * @param aHandler The message handler object to be removed from the observer
  *                 list. Note that this function doesn't take references to it.
  */
 void
 UnregisterBluetoothSignalHandler(const nsAString& aPath,
                                  BluetoothSignalObserver* aHandler);
 
+/**
+ * Unregister the Bluetooth signal handler.
+ *
+ * @param aAddress Address of the signal to be unregistered.
+ * @param aHandler The message handler object to be removed from the observer
+ *                 list. Note that this function doesn't take references to it.
+ */
+void
+UnregisterBluetoothSignalHandler(const BluetoothAddress& aAddress,
+                                 BluetoothSignalObserver* aHandler);
+
+/**
+ * Unregister the Bluetooth signal handler.
+ *
+ * @param aUuid UUID of the signal to be unregistered.
+ * @param aHandler The message handler object to be removed from the observer
+ *                 list. Note that this function doesn't take references to it.
+ */
+void
+UnregisterBluetoothSignalHandler(const BluetoothUuid& aUuid,
+                                 BluetoothSignalObserver* aHandler);
+
 //
 // Broadcast system message
 //
 
 bool
 BroadcastSystemMessage(const nsAString& aType,
                        const BluetoothValue& aData);