Merge b-i to m-c, a=merge
authorPhil Ringnalda <philringnalda@gmail.com>
Sat, 31 Jan 2015 09:09:40 -0800
changeset 226923 c2359a6a6958ba56b319e30f4e34d3f838bb0dee
parent 226901 426bc5ee47d9ba4b95718085485b2481b55e4a37 (current diff)
parent 226922 e35751d1789598fbd90db80c207061a170e01221 (diff)
child 226924 9c465a62f8a9ed4deb6ce9ee565b9564123e1f88
child 226927 b87805b303859e81e0213c9bbf7b1472bf9d450b
child 226935 37cbadfe1bc172eb91ffc237baea56f37107aac7
child 226953 bc0f298ad3abd5a422c509f65789d30a6f6909b1
push id28209
push userphilringnalda@gmail.com
push dateSat, 31 Jan 2015 17:09:57 +0000
treeherdermozilla-central@c2359a6a6958 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone38.0a1
first release with
nightly linux32
c2359a6a6958 / 38.0a1 / 20150201030209 / files
nightly linux64
c2359a6a6958 / 38.0a1 / 20150201030209 / files
nightly mac
c2359a6a6958 / 38.0a1 / 20150201030209 / files
nightly win32
c2359a6a6958 / 38.0a1 / 20150201030209 / files
nightly win64
c2359a6a6958 / 38.0a1 / 20150201030209 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge b-i to m-c, a=merge
--- 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="e06971db7acf7a35c32eb74d675a4e12e288e6be">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="45475198737a504d81932a9c90002902054fce23"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2262d4a77d4f46ab230fd747bb91e9b77bad36cb"/>
   <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="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <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="5d482e320548e7ef0a44f62fd7ad51778cca4b3a"/>
--- 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="df362ace56338da8173d30d3e09e08c42c1accfa">
     <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="45475198737a504d81932a9c90002902054fce23"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2262d4a77d4f46ab230fd747bb91e9b77bad36cb"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="eb1795a9002eb142ac58c8d68f8f4ba094af07ca"/>
   <project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="2c31ac3a31a340b40ecd9c291df9b9613d3afa72"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="5d482e320548e7ef0a44f62fd7ad51778cca4b3a"/>
   <!-- Stock Android things -->
   <project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
--- 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="0e94c080bee081a50aa2097527b0b40852f9143f">
     <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="45475198737a504d81932a9c90002902054fce23"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2262d4a77d4f46ab230fd747bb91e9b77bad36cb"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="5d482e320548e7ef0a44f62fd7ad51778cca4b3a"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.1" path="prebuilts/clang/linux-x86/3.1" revision="5c45f43419d5582949284eee9cef0c43d866e03b"/>
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.2" path="prebuilts/clang/linux-x86/3.2" revision="3748b4168e7bd8d46457d4b6786003bc6a5223ce"/>
--- 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="e06971db7acf7a35c32eb74d675a4e12e288e6be">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="45475198737a504d81932a9c90002902054fce23"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2262d4a77d4f46ab230fd747bb91e9b77bad36cb"/>
   <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="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <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="5d482e320548e7ef0a44f62fd7ad51778cca4b3a"/>
--- 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="df362ace56338da8173d30d3e09e08c42c1accfa">
     <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="45475198737a504d81932a9c90002902054fce23"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2262d4a77d4f46ab230fd747bb91e9b77bad36cb"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="eb1795a9002eb142ac58c8d68f8f4ba094af07ca"/>
   <project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="2c31ac3a31a340b40ecd9c291df9b9613d3afa72"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="5d482e320548e7ef0a44f62fd7ad51778cca4b3a"/>
   <!-- Stock Android things -->
   <project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
--- 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="e06971db7acf7a35c32eb74d675a4e12e288e6be">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="45475198737a504d81932a9c90002902054fce23"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2262d4a77d4f46ab230fd747bb91e9b77bad36cb"/>
   <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="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <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="5d482e320548e7ef0a44f62fd7ad51778cca4b3a"/>
--- a/b2g/config/flame/sources.xml
+++ b/b2g/config/flame/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="0e94c080bee081a50aa2097527b0b40852f9143f">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </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="45475198737a504d81932a9c90002902054fce23"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2262d4a77d4f46ab230fd747bb91e9b77bad36cb"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="5d482e320548e7ef0a44f62fd7ad51778cca4b3a"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.1" path="prebuilts/clang/linux-x86/3.1" revision="e95b4ce22c825da44d14299e1190ea39a5260bde"/>
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.2" path="prebuilts/clang/linux-x86/3.2" revision="471afab478649078ad7c75ec6b252481a59e19b8"/>
--- a/b2g/config/gaia.json
+++ b/b2g/config/gaia.json
@@ -1,9 +1,9 @@
 {
     "git": {
-        "git_revision": "45475198737a504d81932a9c90002902054fce23", 
+        "git_revision": "ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94", 
         "remote": "https://git.mozilla.org/releases/gaia.git", 
         "branch": ""
     }, 
-    "revision": "419454c1e3ab5e54dec3745e21e7352eeb24accf", 
+    "revision": "3dc35073ce80056af02c7869ad97079e6f612714", 
     "repo_path": "integration/gaia-central"
 }
--- a/b2g/config/hamachi/sources.xml
+++ b/b2g/config/hamachi/sources.xml
@@ -12,17 +12,17 @@
   <!--original fetch url was git://github.com/apitrace/-->
   <remote fetch="https://git.mozilla.org/external/apitrace" name="apitrace"/>
   <default remote="caf" revision="b2g/ics_strawberry" sync-j="4"/>
   <!-- Gonk specific things and forks -->
   <project name="platform_build" path="build" remote="b2g" revision="df362ace56338da8173d30d3e09e08c42c1accfa">
     <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="45475198737a504d81932a9c90002902054fce23"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2262d4a77d4f46ab230fd747bb91e9b77bad36cb"/>
   <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="5d482e320548e7ef0a44f62fd7ad51778cca4b3a"/>
   <!-- Stock Android things -->
   <project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
   <project name="platform_bionic" path="bionic" remote="b2g" revision="1a2a32eda22ef2cd18f57f423a5e7b22a105a6f8"/>
   <project name="platform/bootable/recovery" path="bootable/recovery" revision="746bc48f34f5060f90801925dcdd964030c1ab6d"/>
--- a/b2g/config/helix/sources.xml
+++ b/b2g/config/helix/sources.xml
@@ -10,17 +10,17 @@
   <!--original fetch url was https://git.mozilla.org/releases-->
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <default remote="caf" revision="b2g/ics_strawberry" sync-j="4"/>
   <!-- Gonk specific things and forks -->
   <project name="platform_build" path="build" remote="b2g" revision="df362ace56338da8173d30d3e09e08c42c1accfa">
     <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="45475198737a504d81932a9c90002902054fce23"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="b33a1afb538e8c7e12f6fb792c454da34f9f5b76"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2262d4a77d4f46ab230fd747bb91e9b77bad36cb"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="1b3591a50ed352fc6ddb77462b7b35d0bfa555a3"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
   <project name="gonk-patches" path="patches" remote="b2g" revision="223a2421006e8f5da33f516f6891c87cae86b0f6"/>
   <!-- Stock Android things -->
   <project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
   <project name="platform_bionic" path="bionic" remote="b2g" revision="1a2a32eda22ef2cd18f57f423a5e7b22a105a6f8"/>
--- a/b2g/config/nexus-4/sources.xml
+++ b/b2g/config/nexus-4/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="0e94c080bee081a50aa2097527b0b40852f9143f">
     <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="45475198737a504d81932a9c90002902054fce23"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="ab69ae06a7f2b54e60ab63b1b44c8d19d5d20d94"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2262d4a77d4f46ab230fd747bb91e9b77bad36cb"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="fe893bb760a3bb64375f62fdf4762a58c59df9ef"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="5d482e320548e7ef0a44f62fd7ad51778cca4b3a"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
   <!-- Stock Android things -->
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.1" path="prebuilts/clang/linux-x86/3.1" revision="5c45f43419d5582949284eee9cef0c43d866e03b"/>
   <project groups="linux" name="platform/prebuilts/clang/linux-x86/3.2" path="prebuilts/clang/linux-x86/3.2" revision="3748b4168e7bd8d46457d4b6786003bc6a5223ce"/>
--- a/b2g/config/wasabi/sources.xml
+++ b/b2g/config/wasabi/sources.xml
@@ -12,17 +12,17 @@
   <!--original fetch url was git://github.com/apitrace/-->
   <remote fetch="https://git.mozilla.org/external/apitrace" name="apitrace"/>
   <default remote="caf" revision="ics_chocolate_rb4.2" sync-j="4"/>
   <!-- Gonk specific things and forks -->
   <project name="platform_build" path="build" remote="b2g" revision="df362ace56338da8173d30d3e09e08c42c1accfa">
     <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="45475198737a504d81932a9c90002902054fce23"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="b33a1afb538e8c7e12f6fb792c454da34f9f5b76"/>
   <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="2262d4a77d4f46ab230fd747bb91e9b77bad36cb"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="5ef30994f4778b4052e58a4383dbe7890048c87e"/>
   <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="5d482e320548e7ef0a44f62fd7ad51778cca4b3a"/>
   <project name="gonk-patches" path="patches" remote="b2g" revision="223a2421006e8f5da33f516f6891c87cae86b0f6"/>
   <!-- Stock Android things -->
   <project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
--- a/dom/apps/PermissionsTable.jsm
+++ b/dom/apps/PermissionsTable.jsm
@@ -519,16 +519,22 @@ this.PermissionsTable =  { geolocation: 
                              privileged: DENY_ACTION,
                              certified: ALLOW_ACTION
                            },
                            "presentation-device-manage": {
                              app: DENY_ACTION,
                              trusted: DENY_ACTION,
                              privileged: DENY_ACTION,
                              certified: ALLOW_ACTION
+                           },
+                           "requestsync-manager": {
+                             app: DENY_ACTION,
+                             trusted: DENY_ACTION,
+                             privileged: DENY_ACTION,
+                             certified: ALLOW_ACTION
                            }
                          };
 
 /**
  * Append access modes to the permission name as suffixes.
  *   e.g. permission name 'contacts' with ['read', 'write'] =
  *   ['contacts-read', contacts-write']
  * @param string aPermName
--- a/dom/icc/gonk/StkProactiveCmdFactory.jsm
+++ b/dom/icc/gonk/StkProactiveCmdFactory.jsm
@@ -307,17 +307,17 @@ function StkSetupEventListMessage(aStkSe
   let eventList = aStkSetupEventListCmd.getEventList();
 
   if (eventList && eventList.length > 0) {
     this.options.eventList = eventList;
   }
 }
 StkSetupEventListMessage.prototype = Object.create(StkCommandMessage.prototype);
 
-function StkMenuCmd(aCommandDetails) {
+function StkSetUpMenuCmd(aCommandDetails) {
   // Call |StkProactiveCommand| constructor.
   StkProactiveCommand.call(this, aCommandDetails);
 
   let options = aCommandDetails.options;
 
   if (options.title) {
     this.title = options.title;
   }
@@ -335,29 +335,29 @@ function StkMenuCmd(aCommandDetails) {
   if (options.nextActionList) {
     this.nextActionList = options.nextActionList.slice();
   }
 
   this.iconInfo = mapIconInfoToStkIconInfo(options);
 
   this.isHelpAvailable = !!(options.isHelpAvailable);
 }
-StkMenuCmd.prototype = Object.create(StkProactiveCommand.prototype, {
+StkSetUpMenuCmd.prototype = Object.create(StkProactiveCommand.prototype, {
   QueryInterface: {
     value: XPCOMUtils.generateQI([Ci.nsIStkProactiveCmd,
-                                  Ci.nsIStkMenuCmd])
+                                  Ci.nsIStkSetUpMenuCmd])
   },
 
   // Cache items for getItems()
   items: { value: null, writable: true },
 
   // Cache items for getNextActionList()
   nextActionList: { value: null, writable: true },
 
-  // nsIStkMenuCmd
+  // nsIStkSetUpMenuCmd
   title: { value: null, writable: true },
 
   getItems: {
     value: function(aCount) {
       if (!this.items) {
         if (aCount) {
           aCount.value = 0;
         }
@@ -388,116 +388,98 @@ StkMenuCmd.prototype = Object.create(Stk
       return this.nextActionList.slice();
     }
   },
 
   iconInfo: { value: null, writable: true },
   isHelpAvailable: { value: false, writable: true }
 });
 
-function StkMenuMessage(aStkMenuCmd) {
+function StkSetUpMenuMessage(aStkSetUpMenuCmd) {
   // Call |StkCommandMessage| constructor.
-  StkCommandMessage.call(this, aStkMenuCmd);
+  StkCommandMessage.call(this, aStkSetUpMenuCmd);
 
   this.options = {
-    items: aStkMenuCmd.getItems().map(function(aStkItem) {
+    items: aStkSetUpMenuCmd.getItems().map(function(aStkItem) {
       if (!aStkItem) {
         return null;
       }
 
       let item = {
         identifier: aStkItem.identifier,
         text: aStkItem.text
       };
 
       if (aStkItem.iconInfo) {
         appendIconInfo(item, aStkItem.iconInfo);
       }
 
       return item;
     }),
-    isHelpAvailable: aStkMenuCmd.isHelpAvailable
+    isHelpAvailable: aStkSetUpMenuCmd.isHelpAvailable
   };
 
-  if (aStkMenuCmd.title) {
-    this.options.title = aStkMenuCmd.title;
+  if (aStkSetUpMenuCmd.title) {
+    this.options.title = aStkSetUpMenuCmd.title;
   }
 
-  let nextActionList = aStkMenuCmd.getNextActionList();
+  let nextActionList = aStkSetUpMenuCmd.getNextActionList();
   if (nextActionList && nextActionList.length > 0) {
     this.options.nextActionList = nextActionList;
   }
 
-  if (aStkMenuCmd.iconInfo) {
-    appendIconInfo(this.options, aStkMenuCmd.iconInfo);
+  if (aStkSetUpMenuCmd.iconInfo) {
+    appendIconInfo(this.options, aStkSetUpMenuCmd.iconInfo);
   }
 }
-StkMenuMessage.prototype = Object.create(StkCommandMessage.prototype);
+StkSetUpMenuMessage.prototype = Object.create(StkCommandMessage.prototype);
 
-function StkSetUpMenuCmd(aCommandDetails) {
-  // Call |StkMenuCmd| constructor.
-  StkMenuCmd.call(this, aCommandDetails);
+function StkSelectItemCmd(aCommandDetails) {
+  // Call |StkSetUpMenuCmd| constructor.
+  StkSetUpMenuCmd.call(this, aCommandDetails);
 
   let options = aCommandDetails.options;
 
   this.presentationType = options.presentationType;
-}
-StkSetUpMenuCmd.prototype = Object.create(StkMenuCmd.prototype, {
-  QueryInterface: {
-    value: XPCOMUtils.generateQI([Ci.nsIStkProactiveCmd,
-                                  Ci.nsIStkMenuCmd,
-                                  Ci.nsIStkSetUpMenuCmd])
-  },
-
-  // nsIStkSetUpMenuCmd
-  presentationType: { value: 0, writable: true }
-});
-
-function StkSetUpMenuMessage(aStkSetUpMenuCmd) {
-  // Call |StkMenuMessage| constructor.
-  StkMenuMessage.call(this, aStkSetUpMenuCmd);
-
-  this.options.presentationType = aStkSetUpMenuCmd.presentationType;
-}
-StkSetUpMenuMessage.prototype = Object.create(StkMenuMessage.prototype);
-
-function StkSelectItemCmd(aCommandDetails) {
-  // Call |StkMenuCmd| constructor.
-  StkMenuCmd.call(this, aCommandDetails);
-
-  let options = aCommandDetails.options;
 
   if (options.defaultItem !== undefined &&
       options.defaultItem !== null) {
     this.defaultItem = options.defaultItem;
   }
 }
-StkSelectItemCmd.prototype = Object.create(StkMenuCmd.prototype, {
+StkSelectItemCmd.prototype = Object.create(StkSetUpMenuCmd.prototype, {
   QueryInterface: {
     value: XPCOMUtils.generateQI([Ci.nsIStkProactiveCmd,
-                                  Ci.nsIStkMenuCmd,
+                                  Ci.nsIStkSetUpMenuCmd,
                                   Ci.nsIStkSelectItemCmd])
   },
 
   // nsIStkSelectItemCmd
+  presentationType: {
+    value: 0,
+    writable: true
+  },
+
   defaultItem: {
     value: Ci.nsIStkSelectItemCmd.DEFAULT_ITEM_INVALID,
     writable: true
   }
 });
 
 function StkSelectItemMessage(aStkSelectItemCmd) {
-  // Call |StkMenuMessage| constructor.
-  StkMenuMessage.call(this, aStkSelectItemCmd);
+  // Call |StkSetUpMenuMessage| constructor.
+  StkSetUpMenuMessage.call(this, aStkSelectItemCmd);
+
+  this.options.presentationType = aStkSelectItemCmd.presentationType;
 
   if (aStkSelectItemCmd.defaultItem !== Ci.nsIStkSelectItemCmd.DEFAULT_ITEM_INVALID) {
     this.options.defaultItem = aStkSelectItemCmd.defaultItem;
   }
 }
-StkSelectItemMessage.prototype = Object.create(StkMenuMessage.prototype);
+StkSelectItemMessage.prototype = Object.create(StkSetUpMenuMessage.prototype);
 
 function StkTextMessageCmd(aCommandDetails) {
   // Call |StkProactiveCommand| constructor.
   StkProactiveCommand.call(this, aCommandDetails);
 
   let options = aCommandDetails.options;
 
   if (options.text) {
--- a/dom/icc/interfaces/nsIIccMessenger.idl
+++ b/dom/icc/interfaces/nsIIccMessenger.idl
@@ -235,20 +235,20 @@ interface nsIStkSetupEventListCmd : nsIS
    *
    * @returns a copy of the list of events.
    */
   void getEventList([optional] out unsigned long aCount,
                     [array, size_is(aCount), retval] out unsigned short aEventList);
 };
 
 /**
- * The base interface of nsIStkSetUpMenuCmd and nsIStkSelectItemCmd.
+ * This interface is to be applied by STK_CMD_SET_UP_MENU.
  */
-[scriptable, uuid(298bf414-6a1f-11e4-9045-3b3fd28e7f6a)]
-interface nsIStkMenuCmd : nsIStkProactiveCmd
+[scriptable, uuid(d7a66664-a602-11e4-9cc7-c7ce5fdade7d)]
+interface nsIStkSetUpMenuCmd : nsIStkProactiveCmd
 {
   /**
    * (Optional for STK_CMD_SELECT_ITEM)
    * Title of the menu.
    */
   readonly attribute DOMString title;
 
   /**
@@ -299,39 +299,32 @@ interface nsIStkMenuCmd : nsIStkProactiv
    * true: help information available.
    * false: no help information available.
    *
    */
   readonly attribute boolean isHelpAvailable;
 };
 
 /**
- * This interface is to be applied by STK_CMD_SET_UP_MENU.
+ * This interface is to be applied by STK_CMD_SELECT_ITEM.
  */
-[scriptable, uuid(d3ddb1f0-631c-11e4-aac3-4beb03196b7b)]
-interface nsIStkSetUpMenuCmd : nsIStkMenuCmd
+[scriptable, uuid(eb71f0fa-a602-11e4-926f-a3814461d218)]
+interface nsIStkSelectItemCmd : nsIStkSetUpMenuCmd
 {
   /**
    * Presentation type, one of PRESENTATION_TYPE_*.
    *
    * @See TS 11.14, clause 12.6, Command Qualifier: Select Item
    */
-  const short PRESENTATION_TYPE_NOT_SPECIFIED = 0x00;
-  const short PRESENTATION_TYPE_DATA_VALUES = 0x01;
-  const short PRESENTATION_TYPE_NAVIGATION_OPTIONS = 0x03;
+  const unsigned short PRESENTATION_TYPE_NOT_SPECIFIED = 0x00;
+  const unsigned short PRESENTATION_TYPE_DATA_VALUES = 0x01;
+  const unsigned short PRESENTATION_TYPE_NAVIGATION_OPTIONS = 0x03;
 
   readonly attribute unsigned short presentationType;
-};
 
-/**
- * This interface is to be applied by STK_CMD_SELECT_ITEM.
- */
-[scriptable, uuid(816dc186-631b-11e4-864f-b37f7b54a1b8)]
-interface nsIStkSelectItemCmd : nsIStkMenuCmd
-{
   const unsigned short DEFAULT_ITEM_INVALID = 0xFFFF;
 
   /**
    * (Optional)
    * Default item identifier of the menu.
    *
    * Set to DEFAULT_ITEM_INVALID if null.
    */
--- a/dom/icc/tests/marionette/test_stk_select_item.js
+++ b/dom/icc/tests/marionette/test_stk_select_item.js
@@ -212,16 +212,17 @@ const TEST_DATA = [
             items: [{identifier: 1, text: "Item 1"}, {identifier: 2, text: "Item 2"}, {identifier: 3, text: "Item 3"}],
             nextActionList: [MozIccManager.STK_NEXT_ACTION_NULL, MozIccManager.STK_NEXT_ACTION_NULL, MozIccManager.STK_NEXT_ACTION_END_PROACTIVE_SESSION]}},
 ];
 
 function testSelectItem(aCommand, aExpect) {
   is(aCommand.typeOfCommand, MozIccManager.STK_CMD_SELECT_ITEM, "typeOfCommand");
   is(aCommand.commandQualifier, aExpect.commandQualifier, "commandQualifier");
   is(aCommand.options.title, aExpect.title, "options.title");
+  is(aCommand.options.presentationType, aCommand.commandQualifier & 0x03, "presentationType");
 
   for (let index in aExpect.items) {
     let item = aCommand.options.items[index];
     let itemExpect = aExpect.items[index];
     is(item.identifier, itemExpect.identifier,
        "options.items[" + index + "].identifier");
     is(item.text, itemExpect.text,
        "options.items[" + index + "].text");
--- a/dom/icc/tests/marionette/test_stk_setup_menu.js
+++ b/dom/icc/tests/marionette/test_stk_setup_menu.js
@@ -153,16 +153,18 @@ const TEST_DATA = [
             title: "",
             items: [null]}},
 ];
 
 function testSetupMenu(aCommand, aExpect) {
   is(aCommand.typeOfCommand, MozIccManager.STK_CMD_SET_UP_MENU, "typeOfCommand");
   is(aCommand.commandQualifier, aExpect.commandQualifier, "commandQualifier");
   is(aCommand.options.title, aExpect.title, "options.title");
+  // To ensure that 'presentationType' will only be available in SELECT_ITEM.
+  is(aCommand.options.presentationType, undefined, "presentationType");
 
   for (let index in aExpect.items) {
     let item = aCommand.options.items[index];
     let itemExpect = aExpect.items[index];
 
     if (!itemExpect) {
       is(item, itemExpect, "options.items[" + index + "]");
     } else {
--- a/dom/media/webrtc/MediaEngineGonkVideoSource.cpp
+++ b/dom/media/webrtc/MediaEngineGonkVideoSource.cpp
@@ -195,16 +195,26 @@ MediaEngineGonkVideoSource::Start(Source
   NS_DispatchToMainThread(WrapRunnable(nsRefPtr<MediaEngineGonkVideoSource>(this),
                                        &MediaEngineGonkVideoSource::StartImpl,
                                        mCapability));
   mCallbackMonitor.Wait();
   if (mState != kStarted) {
     return NS_ERROR_FAILURE;
   }
 
+  nsTArray<nsString> focusModes;
+  mCameraControl->Get(CAMERA_PARAM_SUPPORTED_FOCUSMODES, focusModes);
+  for (nsTArray<nsString>::index_type i = 0; i < focusModes.Length(); ++i) {
+    if (focusModes[i].EqualsASCII("continuous-video")) {
+      mCameraControl->Set(CAMERA_PARAM_FOCUSMODE, focusModes[i]);
+      mCameraControl->ResumeContinuousFocus();
+      break;
+    }
+  }
+
   if (NS_FAILED(InitDirectMediaBuffer())) {
     return NS_ERROR_FAILURE;
   }
 
   return NS_OK;
 }
 
 nsresult
@@ -419,25 +429,16 @@ MediaEngineGonkVideoSource::StartImpl(we
 
   ICameraControl::Configuration config;
   config.mMode = ICameraControl::kPictureMode;
   config.mPreviewSize.width = aCapability.width;
   config.mPreviewSize.height = aCapability.height;
   mCameraControl->Start(&config);
   mCameraControl->Set(CAMERA_PARAM_PICTURE_SIZE, config.mPreviewSize);
 
-  nsTArray<nsString> focusModes;
-  mCameraControl->Get(CAMERA_PARAM_SUPPORTED_FOCUSMODES, focusModes);
-  for (nsTArray<nsString>::index_type i = 0; i < focusModes.Length(); ++i) {
-    if (focusModes[i].EqualsASCII("continuous-video")) {
-      mCameraControl->Set(CAMERA_PARAM_FOCUSMODE, focusModes[i]);
-      break;
-    }
-  }
-
   hal::RegisterScreenConfigurationObserver(this);
 }
 
 void
 MediaEngineGonkVideoSource::StopImpl() {
   MOZ_ASSERT(NS_IsMainThread());
 
   mCameraSource->stop();
--- a/dom/system/gonk/ril_worker.js
+++ b/dom/system/gonk/ril_worker.js
@@ -10958,18 +10958,20 @@ StkCommandParamsFactoryObject.prototype 
     }
     menu.items = menuCtlvs.map(aCtlv => aCtlv.value);
 
     ctlv = selectedCtlvs.retrieve(COMPREHENSIONTLV_TAG_ITEM_ID);
     if (ctlv) {
       menu.defaultItem = ctlv.value.identifier - 1;
     }
 
-    // The 1st bit and 2nd bit determines the presentation type.
-    menu.presentationType = cmdDetails.commandQualifier & 0x03;
+    if (cmdDetails.typeOfCommand == STK_CMD_SELECT_ITEM) {
+      // The 1st bit and 2nd bit determines the presentation type.
+      menu.presentationType = cmdDetails.commandQualifier & 0x03;
+    }
 
     // Help information available.
     if (cmdDetails.commandQualifier & 0x80) {
       menu.isHelpAvailable = true;
     }
 
     ctlv = selectedCtlvs.retrieve(COMPREHENSIONTLV_TAG_NEXT_ACTION_IND);
     if (ctlv) {
--- a/dom/system/gonk/tests/test_ril_system_messenger.js
+++ b/dom/system/gonk/tests/test_ril_system_messenger.js
@@ -720,17 +720,16 @@ add_test(function test_icc_notify_stk_pr
       commandQualifier: 0x80, // bit 8: 1 = help information available
       options: {
         title: "Toolkit Menu 1",
         items: [
           { identifier: 0x01, text: "Menu Item 1" },
           { identifier: 0x02, text: "Menu Item 2" },
           { identifier: 0x03, text: "Menu Item 3" }
         ],
-        presentationType: RIL.STK_PRESENTATION_TYPE_NOT_SPECIFIED,
         isHelpAvailable: true
       }
     },
     // STK_CMD_SET_UP_MENU with optional properties including:
     // iconInfo for this menu, iconInfo for each item and nextActionList.
     {
       commandNumber: ++cmdCount,
       typeOfCommand: RIL.STK_CMD_SET_UP_MENU,
@@ -757,31 +756,31 @@ add_test(function test_icc_notify_stk_pr
         nextActionList: [
           RIL.STK_NEXT_ACTION_END_PROACTIVE_SESSION,
           RIL.STK_NEXT_ACTION_NULL,
           RIL.STK_NEXT_ACTION_NULL,
           RIL.STK_NEXT_ACTION_NULL
         ],
         iconSelfExplanatory: false,
         icons: [basicIcon, colorIcon, colorTransparencyIcon],
-        presentationType: RIL.STK_PRESENTATION_TYPE_NOT_SPECIFIED,
         isHelpAvailable: false
       }
     },
     // STK_CMD_SELECT_ITEM with mandatory properties.
     {
       commandNumber: ++cmdCount,
       typeOfCommand: RIL.STK_CMD_SELECT_ITEM,
       commandQualifier: RIL.STK_PRESENTATION_TYPE_NOT_SPECIFIED,
       options: {
         items: [
           { identifier: 0x01, text: "Menu Item 1" },
           { identifier: 0x02, text: "Menu Item 2" },
           { identifier: 0x03, text: "Menu Item 3" }
         ],
+        presentationType: RIL.STK_PRESENTATION_TYPE_NOT_SPECIFIED,
         isHelpAvailable: false
       }
     },
     // STK_CMD_SELECT_ITEM with optional properties including:
     // title, iconInfo for this menu, iconInfo for each item and nextActionList.
     {
       commandNumber: ++cmdCount,
       typeOfCommand: RIL.STK_CMD_SELECT_ITEM,
@@ -809,16 +808,17 @@ add_test(function test_icc_notify_stk_pr
           RIL.STK_NEXT_ACTION_END_PROACTIVE_SESSION,
           RIL.STK_NEXT_ACTION_NULL,
           RIL.STK_NEXT_ACTION_NULL,
           RIL.STK_NEXT_ACTION_NULL
         ],
         defaultItem: 0x02,
         iconSelfExplanatory: false,
         icons: [basicIcon, colorIcon, colorTransparencyIcon],
+        presentationType: RIL.STK_PRESENTATION_TYPE_NAVIGATION_OPTIONS,
         isHelpAvailable: false
       }
     },
     // STK_CMD_DISPLAY_TEXT with mandatory properties.
     {
       commandNumber: ++cmdCount,
       typeOfCommand: RIL.STK_CMD_DISPLAY_TEXT,
       commandQualifier: 0x01, // bit 1: High Priority
--- a/dom/wifi/DOMWifiP2pManager.js
+++ b/dom/wifi/DOMWifiP2pManager.js
@@ -111,16 +111,21 @@ MozWifiP2pManager.prototype = {
 
     this.initDOMRequestHelper(aWindow, messages);
     this._mm = Cc["@mozilla.org/childprocessmessagemanager;1"].getService(Ci.nsISyncMessageSender);
 
     // Notify the internal a new DOM mananger is created.
     let state = this._mm.sendSyncMessage("WifiP2pManager:getState")[0];
     if (state) {
       debug('State: ' + JSON.stringify(state));
+      this.enabled = state.enabled;
+      this.currentPeer = state.currentPeer;
+      if (state.groupOwner) {
+        this.groupOwner = new MozWifiP2pGroupOwner(state.groupOwner);
+      }
     } else {
       debug('Failed to get state');
     }
   },
 
   uninit: function() {
   },
 
--- a/dom/wifi/WifiP2pManager.jsm
+++ b/dom/wifi/WifiP2pManager.jsm
@@ -592,22 +592,24 @@ function P2pStateMachine(aP2pCommand, aN
 
   // The state where we are trying to enable wifi p2p.
   var stateEnabling = _sm.makeState("ENABLING", {
     enter: function() {
 
       function onFailure()
       {
         _onEnabled(false);
+        _observer.onDisabled();
         _sm.gotoState(stateDisabled);
       }
 
       function onSuccess()
       {
         _onEnabled(true);
+        _observer.onEnabled();
         _sm.gotoState(stateInactive);
       }
 
       _sm.pause();
 
       // This function will only call back on success.
       function connectToSupplicantIfNeeded(callback) {
         if (aP2pCommand.getSdkVersion() >= 19) {
@@ -1330,16 +1332,17 @@ function P2pStateMachine(aP2pCommand, aN
         debug('Stop DHCP server result: ' + success);
         aP2pCommand.p2pDisable(function(success) {
           debug('P2P function disabled');
           closeSupplicantConnectionIfNeeded(function() {
             debug('Supplicant connection closed');
             gNetworkService.disableInterface(P2P_INTERFACE_NAME, function (success){
               debug('Disabled interface: ' + P2P_INTERFACE_NAME);
               _onDisabled(true);
+              _observer.onDisabled();
               _sm.gotoState(stateDisabled);
             });
           });
         });
       });
 
       function closeSupplicantConnectionIfNeeded(callback) {
         // No need to connect to supplicant on KK. Call back directly.
--- a/dom/wifi/WifiP2pWorkerObserver.jsm
+++ b/dom/wifi/WifiP2pWorkerObserver.jsm
@@ -34,16 +34,19 @@ this.WifiP2pWorkerObserver = function(aD
       dump('-------------- WifiP2pWorkerObserver: ' + aMsg);
     }
   }
 
   // Private member variables.
   let _localDevice;
   let _peerList = {}; // List of P2pDevice.
   let _domManagers = [];
+  let _enabled = false;
+  let _groupOwner = null;
+  let _currentPeer = null;
 
   // Constructor of P2pDevice. It will be exposed to DOM.
   //
   // @param aPeer object representing a P2P device:
   //   .name: string for the device name.
   //   .address: Mac address.
   //   .isGroupOwner: boolean to indicate if this device is the group owner.
   //   .wpsCapabilities: array of string of {"pbc", "display", "keypad"}.
@@ -125,20 +128,22 @@ this.WifiP2pWorkerObserver = function(aD
   return {
     onLocalDeviceChanged: function(aDevice) {
       _localDevice = aDevice;
       debug('Local device updated to: ' + JSON.stringify(_localDevice));
     },
 
     onEnabled: function() {
       _peerList = [];
+      _enabled = true;
       fireEvent("p2pUp", {});
     },
 
     onDisbaled: function() {
+      _enabled = false;
       fireEvent("p2pDown", {});
     },
 
     onPeerFound: function(aPeer) {
       let newFoundPeer = new P2pDevice(aPeer);
       let origianlPeer = _peerList[aPeer.address];
       _peerList[aPeer.address] = newFoundPeer;
       if (origianlPeer) {
@@ -177,27 +182,34 @@ this.WifiP2pWorkerObserver = function(aD
         debug('Unknown peer connected: ' + aPeer.address);
         peer = new P2pDevice(aPeer);
         _peerList[aPeer.address] = peer;
         handlePeerListUpdated();
       }
       peer.connectionStatus = CONNECTION_STATUS_CONNECTED;
       peer.isGroupOwner = (aPeer.address === aGroupOwner.address);
 
+      _groupOwner = go;
+      _currentPeer = peer;
+
       fireEvent('onconnected', { groupOwner: go, peer: peer });
     },
 
     onDisconnected: function(aPeer) {
       let peer = _peerList[aPeer.address];
       if (!peer) {
         debug('Unknown peer disconnected: ' + aPeer.address);
         return;
       }
 
       peer.connectionStatus = CONNECTION_STATUS_DISCONNECTED;
+
+      _groupOwner = null;
+      _currentPeer = null;
+
       fireEvent('ondisconnected', { peer: peer });
     },
 
     getObservedDOMMessages: function() {
       return [
         "WifiP2pManager:getState",
         "WifiP2pManager:getPeerList",
         "WifiP2pManager:setScanEnabled",
@@ -222,17 +234,21 @@ this.WifiP2pWorkerObserver = function(aD
 
       if (!aMessage.target.assertPermission("wifi-manage")) {
         return;
       }
 
       switch (aMessage.name) {
         case "WifiP2pManager:getState": // A new DOM manager is created.
           addDomManager(msg);
-          return { peerList: _peerList, }; // Synchronous call. Simply return it.
+          return { // Synchronous call. Simply return it.
+            enabled: _enabled,
+            groupOwner: _groupOwner,
+            currentPeer: _currentPeer
+          };
 
         case "WifiP2pManager:setScanEnabled":
           {
             let enabled = msg.data;
 
             aDomMsgResponder.setScanEnabled(enabled, function(success) {
               returnMessage(aMessage.name, success, (success ? true : "ERROR"), msg);
             });
--- a/gfx/layers/apz/src/AsyncPanZoomController.cpp
+++ b/gfx/layers/apz/src/AsyncPanZoomController.cpp
@@ -2795,27 +2795,36 @@ void AsyncPanZoomController::NotifyLayer
 
     if (scrollOffsetUpdated) {
       APZC_LOG("%p updating scroll offset from %s to %s\n", this,
         ToString(mFrameMetrics.GetScrollOffset()).c_str(),
         ToString(aLayerMetrics.GetScrollOffset()).c_str());
 
       mFrameMetrics.CopyScrollInfoFrom(aLayerMetrics);
 
-      // Cancel the animation (which will also trigger a repaint request)
+      // Cancel the animation (which might also trigger a repaint request)
       // after we update the scroll offset above. Otherwise we can be left
       // in a state where things are out of sync.
       CancelAnimation();
 
       // Because of the scroll offset update, any inflight paint requests are
       // going to be ignored by layout, and so mLastDispatchedPaintMetrics
       // becomes incorrect for the purposes of calculating the LD transform. To
       // correct this we need to update mLastDispatchedPaintMetrics to be the
       // last thing we know was painted by Gecko.
       mLastDispatchedPaintMetrics = aLayerMetrics;
+
+      // Since the scroll offset has changed, we need to recompute the
+      // displayport margins and send them to layout. Otherwise there might be
+      // scenarios where for example we scroll from the top of a page (where the
+      // top displayport margin is zero) to the bottom of a page, which will
+      // result in a displayport that doesn't extend upwards at all.
+      // Note that even if the CancelAnimation call above requested a repaint
+      // this is fine because we already have repaint request deduplication.
+      needContentRepaint = true;
     }
   }
 
   if (smoothScrollRequested) {
     // A smooth scroll has been requested for animation on the compositor
     // thread.  This flag will be reset by the main thread when it receives
     // the scroll update acknowledgement.