Merge b2g-inbound to m-c.
authorRyan VanderMeulen <ryanvm@gmail.com>
Wed, 05 Feb 2014 15:47:36 -0500
changeset 167092 1e9f169c97155f464e7c623c5e504d55248c23a0
parent 167052 bb4aa981b683c64419dba11b9b5aebd32ba0eb1a (current diff)
parent 167091 67c9d01668dfbf6aba9fb99d324c482041bd499d (diff)
child 167093 1409304e89e43950c182ea376aba0ee1c700fa57
child 167183 97de0a97a1f5dfe67e3ac5e366d915ed1faa9a0d
child 167210 482f74d165b716c1b03e4b50490c7f1fe3979709
push id39368
push userryanvm@gmail.com
push dateWed, 05 Feb 2014 20:54:42 +0000
treeherdermozilla-inbound@1409304e89e4 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
milestone30.0a1
first release with
nightly linux32
1e9f169c9715 / 30.0a1 / 20140206030201 / files
nightly linux64
1e9f169c9715 / 30.0a1 / 20140206030201 / files
nightly mac
1e9f169c9715 / 30.0a1 / 20140206030201 / files
nightly win32
1e9f169c9715 / 30.0a1 / 20140206030201 / files
nightly win64
1e9f169c9715 / 30.0a1 / 20140206030201 / 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 b2g-inbound to m-c.
dom/payment/PaymentRequestInfo.js
dom/payment/interfaces/nsIDOMPaymentRequestInfo.idl
gfx/layers/ipc/AsyncPanZoomController.cpp
--- a/b2g/config/emulator-ics/sources.xml
+++ b/b2g/config/emulator-ics/sources.xml
@@ -7,18 +7,18 @@
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <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="59605a7c026ff06cc1613af3938579b1dddc6cfe">
     <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="ce212ba54f36284db84068f82af0c790ceb2c3ff"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="e9b6626eddbc85873eaa2a9174a9bd5101e5c05f"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="ac8a273809b5b160554e616bc5ef2d6fa026ce0e"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="49c722fa1a5e1873fa0010829fd97d0b74009ca5"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
   <project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="eda08beb3ba9a159843c70ffde0f9660ec351eb9"/>
   <project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="87aa8679560ce09f6445621d6f370d9de722cdba"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="e33ea242b4328fb0d1824c951f379332b5021512"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="788d9ce293a9b44f64536130cf4ad577e8101dbe"/>
   <!-- Stock Android things -->
   <project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
   <project name="platform/bionic" path="bionic" revision="c72b8f6359de7ed17c11ddc9dfdde3f615d188a9"/>
--- a/b2g/config/emulator-jb/sources.xml
+++ b/b2g/config/emulator-jb/sources.xml
@@ -6,18 +6,18 @@
   <remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="317f25e0a4cb3e8e86e2b76c37a14081372f0307">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="ce212ba54f36284db84068f82af0c790ceb2c3ff"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="e9b6626eddbc85873eaa2a9174a9bd5101e5c05f"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="ac8a273809b5b160554e616bc5ef2d6fa026ce0e"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="49c722fa1a5e1873fa0010829fd97d0b74009ca5"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="e33ea242b4328fb0d1824c951f379332b5021512"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="788d9ce293a9b44f64536130cf4ad577e8101dbe"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="905bfa3548eb75cf1792d0d8412b92113bbd4318"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="c3d7efc45414f1b44cd9c479bb2758c91c4707c0"/>
   <!-- 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"/>
   <project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="9025e50b9d29b3cabbbb21e1dd94d0d13121a17e"/>
--- a/b2g/config/emulator/sources.xml
+++ b/b2g/config/emulator/sources.xml
@@ -7,18 +7,18 @@
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <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="59605a7c026ff06cc1613af3938579b1dddc6cfe">
     <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="ce212ba54f36284db84068f82af0c790ceb2c3ff"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="e9b6626eddbc85873eaa2a9174a9bd5101e5c05f"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="ac8a273809b5b160554e616bc5ef2d6fa026ce0e"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="49c722fa1a5e1873fa0010829fd97d0b74009ca5"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
   <project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="eda08beb3ba9a159843c70ffde0f9660ec351eb9"/>
   <project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="87aa8679560ce09f6445621d6f370d9de722cdba"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="e33ea242b4328fb0d1824c951f379332b5021512"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="788d9ce293a9b44f64536130cf4ad577e8101dbe"/>
   <!-- Stock Android things -->
   <project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
   <project name="platform/bionic" path="bionic" revision="c72b8f6359de7ed17c11ddc9dfdde3f615d188a9"/>
--- a/b2g/config/gaia.json
+++ b/b2g/config/gaia.json
@@ -1,4 +1,4 @@
 {
-    "revision": "cea79abbb7a97c0bd67051087bcdf40d25611930", 
+    "revision": "0fd4065b6621e3b7409cf90ac30d4e174e7317a6", 
     "repo_path": "/integration/gaia-central"
 }
--- a/b2g/config/hamachi/sources.xml
+++ b/b2g/config/hamachi/sources.xml
@@ -6,18 +6,18 @@
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <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="59605a7c026ff06cc1613af3938579b1dddc6cfe">
     <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="ce212ba54f36284db84068f82af0c790ceb2c3ff"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="e9b6626eddbc85873eaa2a9174a9bd5101e5c05f"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="ac8a273809b5b160554e616bc5ef2d6fa026ce0e"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="49c722fa1a5e1873fa0010829fd97d0b74009ca5"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="e33ea242b4328fb0d1824c951f379332b5021512"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="788d9ce293a9b44f64536130cf4ad577e8101dbe"/>
   <!-- Stock Android things -->
   <project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
   <project name="platform/bionic" path="bionic" revision="d2eb6c7b6e1bc7643c17df2d9d9bcb1704d0b9ab"/>
   <project name="platform/bootable/recovery" path="bootable/recovery" revision="746bc48f34f5060f90801925dcdd964030c1ab6d"/>
--- a/b2g/config/helix/sources.xml
+++ b/b2g/config/helix/sources.xml
@@ -5,18 +5,18 @@
   <remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
   <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="59605a7c026ff06cc1613af3938579b1dddc6cfe">
     <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="ce212ba54f36284db84068f82af0c790ceb2c3ff"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="e9b6626eddbc85873eaa2a9174a9bd5101e5c05f"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="ac8a273809b5b160554e616bc5ef2d6fa026ce0e"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="49c722fa1a5e1873fa0010829fd97d0b74009ca5"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="e33ea242b4328fb0d1824c951f379332b5021512"/>
   <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" revision="d2eb6c7b6e1bc7643c17df2d9d9bcb1704d0b9ab"/>
   <project name="platform/bootable/recovery" path="bootable/recovery" revision="575fdbf046e966a5915b1f1e800e5d6ad0ea14c0"/>
--- a/b2g/config/inari/sources.xml
+++ b/b2g/config/inari/sources.xml
@@ -7,18 +7,18 @@
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <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="59605a7c026ff06cc1613af3938579b1dddc6cfe">
     <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="ce212ba54f36284db84068f82af0c790ceb2c3ff"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="e9b6626eddbc85873eaa2a9174a9bd5101e5c05f"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="ac8a273809b5b160554e616bc5ef2d6fa026ce0e"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="49c722fa1a5e1873fa0010829fd97d0b74009ca5"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="e33ea242b4328fb0d1824c951f379332b5021512"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="788d9ce293a9b44f64536130cf4ad577e8101dbe"/>
   <!-- Stock Android things -->
   <project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
   <project name="platform/bionic" path="bionic" revision="cd5dfce80bc3f0139a56b58aca633202ccaee7f8"/>
   <project name="platform/bootable/recovery" path="bootable/recovery" revision="e0a9ac010df3afaa47ba107192c05ac8b5516435"/>
--- a/b2g/config/leo/sources.xml
+++ b/b2g/config/leo/sources.xml
@@ -6,18 +6,18 @@
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <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="59605a7c026ff06cc1613af3938579b1dddc6cfe">
     <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="ce212ba54f36284db84068f82af0c790ceb2c3ff"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="e9b6626eddbc85873eaa2a9174a9bd5101e5c05f"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="ac8a273809b5b160554e616bc5ef2d6fa026ce0e"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="49c722fa1a5e1873fa0010829fd97d0b74009ca5"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="e33ea242b4328fb0d1824c951f379332b5021512"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="788d9ce293a9b44f64536130cf4ad577e8101dbe"/>
   <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" revision="d2eb6c7b6e1bc7643c17df2d9d9bcb1704d0b9ab"/>
--- a/b2g/config/mako/sources.xml
+++ b/b2g/config/mako/sources.xml
@@ -6,18 +6,18 @@
   <remote fetch="https://git.mozilla.org/external/caf" name="caf"/>
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <!-- B2G specific things. -->
   <project name="platform_build" path="build" remote="b2g" revision="317f25e0a4cb3e8e86e2b76c37a14081372f0307">
     <copyfile dest="Makefile" src="core/root.mk"/>
   </project>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
   <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
-  <project name="gaia" path="gaia" remote="mozillaorg" revision="ce212ba54f36284db84068f82af0c790ceb2c3ff"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="e9b6626eddbc85873eaa2a9174a9bd5101e5c05f"/>
+  <project name="gaia" path="gaia" remote="mozillaorg" revision="ac8a273809b5b160554e616bc5ef2d6fa026ce0e"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="49c722fa1a5e1873fa0010829fd97d0b74009ca5"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="e33ea242b4328fb0d1824c951f379332b5021512"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="788d9ce293a9b44f64536130cf4ad577e8101dbe"/>
   <project name="valgrind" path="external/valgrind" remote="b2g" revision="905bfa3548eb75cf1792d0d8412b92113bbd4318"/>
   <project name="vex" path="external/VEX" remote="b2g" revision="c3d7efc45414f1b44cd9c479bb2758c91c4707c0"/>
   <!-- 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"/>
   <project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="9025e50b9d29b3cabbbb21e1dd94d0d13121a17e"/>
--- a/b2g/config/wasabi/sources.xml
+++ b/b2g/config/wasabi/sources.xml
@@ -6,18 +6,18 @@
   <remote fetch="https://git.mozilla.org/releases" name="mozillaorg"/>
   <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="59605a7c026ff06cc1613af3938579b1dddc6cfe">
     <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="ce212ba54f36284db84068f82af0c790ceb2c3ff"/>
-  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="e9b6626eddbc85873eaa2a9174a9bd5101e5c05f"/>
+  <project name="gaia.git" path="gaia" remote="mozillaorg" revision="ac8a273809b5b160554e616bc5ef2d6fa026ce0e"/>
+  <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="49c722fa1a5e1873fa0010829fd97d0b74009ca5"/>
   <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
   <project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>
   <project name="moztt" path="external/moztt" remote="b2g" revision="e33ea242b4328fb0d1824c951f379332b5021512"/>
   <project name="apitrace" path="external/apitrace" remote="apitrace" revision="788d9ce293a9b44f64536130cf4ad577e8101dbe"/>
   <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" revision="cd5dfce80bc3f0139a56b58aca633202ccaee7f8"/>
--- a/b2g/installer/package-manifest.in
+++ b/b2g/installer/package-manifest.in
@@ -559,17 +559,16 @@
 
 @BINPATH@/components/TCPSocket.js
 @BINPATH@/components/TCPServerSocket.js
 @BINPATH@/components/TCPSocketParentIntermediary.js
 @BINPATH@/components/TCPSocket.manifest
 
 @BINPATH@/components/Payment.js
 @BINPATH@/components/PaymentFlowInfo.js
-@BINPATH@/components/PaymentRequestInfo.js
 @BINPATH@/components/Payment.manifest
 
 @BINPATH@/components/DownloadsAPI.js
 @BINPATH@/components/DownloadsAPI.manifest
 
 ; InputMethod API
 @BINPATH@/components/MozKeyboard.js
 @BINPATH@/components/InputMethod.manifest
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -564,17 +564,16 @@
 @BINPATH@/components/ActivityProxy.js
 @BINPATH@/components/ActivityRequestHandler.js
 @BINPATH@/components/ActivityWrapper.js
 @BINPATH@/components/ActivityMessageConfigurator.js
 #endif
 
 @BINPATH@/components/Payment.js
 @BINPATH@/components/PaymentFlowInfo.js
-@BINPATH@/components/PaymentRequestInfo.js
 @BINPATH@/components/Payment.manifest
 
 #ifdef MOZ_WEBRTC
 @BINPATH@/components/PeerConnection.js
 @BINPATH@/components/PeerConnection.manifest
 #endif
 
 @BINPATH@/components/HttpDataUsage.manifest
--- a/content/media/RtspMediaResource.h
+++ b/content/media/RtspMediaResource.h
@@ -199,17 +199,17 @@ public:
 
     NS_DECL_ISUPPORTS
     NS_DECL_NSIINTERFACEREQUESTOR
     NS_DECL_NSISTREAMINGPROTOCOLLISTENER
 
     void Revoke() { mResource = nullptr; }
 
   private:
-    nsRefPtr<RtspMediaResource> mResource;
+    RtspMediaResource* mResource;
   };
   friend class Listener;
 
 protected:
   // Main thread access only.
   // These are called on the main thread by Listener.
   NS_DECL_NSISTREAMINGPROTOCOLLISTENER
 
--- a/dom/bluetooth/bluez/BluetoothOppManager.cpp
+++ b/dom/bluetooth/bluez/BluetoothOppManager.cpp
@@ -1462,17 +1462,17 @@ BluetoothOppManager::OnSocketConnectErro
   mSocket = nullptr;
 
   if (!mIsServer) {
     // Inform gaia of remaining blobs' sending failure
     DiscardBlobsToSend();
   }
 
   // Listen as a server if there's no more batch to process
-  if (!ProcessNextBatch()) {
+  if (!ProcessNextBatch() && !mIsServer) {
     Listen();
   }
 }
 
 void
 BluetoothOppManager::OnSocketDisconnect(BluetoothSocket* aSocket)
 {
   BT_LOGR("[%s]", (mIsServer)? "server" : "client");
--- a/dom/inputmethod/mochitest/test_bug944397.html
+++ b/dom/inputmethod/mochitest/test_bug944397.html
@@ -6,47 +6,58 @@ https://bugzilla.mozilla.org/show_bug.cg
 <head>
   <title>Basic test for InputMethod API.</title>
   <script type="application/javascript;version=1.7" src="/tests/SimpleTest/SimpleTest.js"></script>
   <script type="application/javascript;version=1.7" src="inputmethod_common.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
 </head>
 <body>
 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=944397">Mozilla Bug 944397</a>
-<input type="text" />
 <p id="display"></p>
 <pre id="test">
 <script class="testbody" type="application/javascript;version=1.7">
 
 inputmethod_setup(function() {
   runTest();
 });
 
 // The frame script running in file_test_app.html.
 function appFrameScript() {
   let input = content.document.getElementById('test-input');
   input.oninput = function() {
     sendAsyncMessage('test:InputMethod:oninput', {});
   };
+
+  /*
+   * Bug 957213. Sometimes we need to refocus the input field to avoid
+   * intermittent test failure.
+   */
+  content.setInterval(function() {
+    input.focus();
+  }, 500);
 }
 
 function runTest() {
   var timeoutId = null;
 
   // Create an app frame to recieve keyboard inputs.
   let app = document.createElement('iframe');
   app.src = 'file_test_app.html';
   app.setAttribute('mozbrowser', true);
   document.body.appendChild(app);
   app.addEventListener('mozbrowserloadend', function() {
     let mm = SpecialPowers.getBrowserFrameMessageManager(app);
     mm.loadFrameScript('data:,(' + appFrameScript.toString() + ')();', false);
     mm.addMessageListener("test:InputMethod:oninput", function() {
+      if (!timeoutId) {
+        return;
+      }
       ok(true, 'Keyboard input was received.');
       clearTimeout(timeoutId);
+      timeoutId = null;
       inputmethod_cleanup();
     });
   });
 
   // Create a browser frame to load the input method app.
   let keyboard = document.createElement('iframe');
   keyboard.setAttribute('mozbrowser', true);
   document.body.appendChild(keyboard);
@@ -75,25 +86,26 @@ function runTest() {
   }], function() {
      let req = keyboard.setInputMethodActive(true);
 
      req.onsuccess = function() {
        ok(true, 'setInputMethodActive succeeded.');
        timeoutId = setTimeout(function() {
         inputmethod_cleanup();
         ok(false, 'Failed to generate keyboard input.');
-       }, 60000);
+       }, 20000);
      };
 
      req.onerror = function() {
        ok(false, 'setInputMethodActive failed: ' + this.error.name);
        inputmethod_cleanup();
      };
 
      // Loads the input method app to the browser frame after a delay.
+     SpecialPowers.DOMWindowUtils.focus(app);
      setTimeout(function() {
        keyboard.src = imeUrl;
      }, 100);
   });
 }
 
 </script>
 </pre>
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -605,17 +605,17 @@ TabChild::HandlePossibleViewportChange()
 
     metrics.mScrollId = viewId;
   }
 
   metrics.mDisplayPort = AsyncPanZoomController::CalculatePendingDisplayPort(
     // The page must have been refreshed in some way such as a new document or
     // new CSS viewport, so we know that there's no velocity, acceleration, and
     // we have no idea how long painting will take.
-    metrics, ScreenPoint(0.0f, 0.0f), gfx::Point(0.0f, 0.0f), 0.0);
+    metrics, ScreenPoint(0.0f, 0.0f), 0.0);
   metrics.mCumulativeResolution = metrics.mZoom / metrics.mDevPixelsPerCSSPixel * ScreenToLayerScale(1);
   // This is the root layer, so the cumulative resolution is the same
   // as the resolution.
   metrics.mResolution = metrics.mCumulativeResolution / LayoutDeviceToParentLayerScale(1);
   utils->SetResolution(metrics.mResolution.scale, metrics.mResolution.scale);
 
   CSSSize scrollPort = metrics.CalculateCompositedRectInCssPixels().Size();
   utils->SetScrollPositionClampingScrollPortSize(scrollPort.width, scrollPort.height);
--- a/dom/network/src/NetworkStatsService.jsm
+++ b/dom/network/src/NetworkStatsService.jsm
@@ -24,16 +24,25 @@ const NET_NETWORKSTATSSERVICE_CID = Comp
 
 const TOPIC_BANDWIDTH_CONTROL = "netd-bandwidth-control"
 
 const TOPIC_INTERFACE_REGISTERED   = "network-interface-registered";
 const TOPIC_INTERFACE_UNREGISTERED = "network-interface-unregistered";
 const NET_TYPE_WIFI = Ci.nsINetworkInterface.NETWORK_TYPE_WIFI;
 const NET_TYPE_MOBILE = Ci.nsINetworkInterface.NETWORK_TYPE_MOBILE;
 
+// Networks have different status that NetworkStats API needs to be aware of.
+// Network is present and ready, so NetworkManager provides the whole info.
+const NETWORK_STATUS_READY   = 0;
+// Network is present but hasn't established a connection yet (e.g. SIM that has not
+// enabled 3G since boot).
+const NETWORK_STATUS_STANDBY = 1;
+// Network is not present, but stored in database by the previous connections.
+const NETWORK_STATUS_AWAY    = 2;
+
 // The maximum traffic amount can be saved in the |cachedStats|.
 const MAX_CACHED_TRAFFIC = 500 * 1000 * 1000; // 500 MB
 
 XPCOMUtils.defineLazyServiceGetter(this, "ppmm",
                                    "@mozilla.org/parentprocessmessagemanager;1",
                                    "nsIMessageListenerManager");
 
 XPCOMUtils.defineLazyServiceGetter(this, "gRil",
@@ -84,17 +93,18 @@ this.NetworkStatsService = {
     this._networks = Object.create(null);
 
     // There is no way to know a priori if wifi connection is available,
     // just when the wifi driver is loaded, but it is unloaded when
     // wifi is switched off. So wifi connection is hardcoded
     let netId = this.getNetworkId('0', NET_TYPE_WIFI);
     this._networks[netId] = { network:       { id: '0',
                                                type: NET_TYPE_WIFI },
-                              interfaceName: null };
+                              interfaceName: null,
+                              status:        NETWORK_STATUS_STANDBY };
 
     this.messages = ["NetworkStats:Get",
                      "NetworkStats:Clear",
                      "NetworkStats:ClearAll",
                      "NetworkStats:SetAlarm",
                      "NetworkStats:GetAlarms",
                      "NetworkStats:RemoveAlarms",
                      "NetworkStats:GetAvailableNetworks",
@@ -273,24 +283,65 @@ this.NetworkStatsService = {
     let netId = this.getNetworkId(id, aNetwork.type);
 
     if (!this._networks[netId]) {
       this._networks[netId] = Object.create(null);
       this._networks[netId].network = { id: id,
                                         type: aNetwork.type };
     }
 
+    this._networks[netId].status = NETWORK_STATUS_READY;
     this._networks[netId].interfaceName = aNetwork.name;
     return netId;
   },
 
   getNetworkId: function getNetworkId(aIccId, aNetworkType) {
     return aIccId + '' + aNetworkType;
   },
 
+  /* Function to ensure that one network is valid. The network is valid if its status is
+   * NETWORK_STATUS_READY, NETWORK_STATUS_STANDBY or NETWORK_STATUS_AWAY.
+   *
+   * The result is |netId| or null in case of a non-valid network
+   * aCallback is signatured as |function(netId)|.
+   */
+  validateNetwork: function validateNetwork(aNetwork, aCallback) {
+    let netId = this.getNetworkId(aNetwork.id, aNetwork.type);
+
+    if (this._networks[netId]) {
+      aCallback(netId);
+      return;
+    }
+
+    // Check if network is valid (RIL entry) but has not established a connection yet.
+    // If so add to networks list with empty interfaceName.
+    let rilNetworks = this.getRilNetworks();
+    if (rilNetworks[netId]) {
+      this._networks[netId] = Object.create(null);
+      this._networks[netId].network = rilNetworks[netId];
+      this._networks[netId].status = NETWORK_STATUS_STANDBY;
+      this._currentAlarms[netId] = Object.create(null);
+      aCallback(netId);
+      return;
+    }
+
+    // Check if network is available in the DB.
+    this._db.isNetworkAvailable(aNetwork, function(aError, aResult) {
+      if (aResult) {
+        this._networks[netId] = Object.create(null);
+        this._networks[netId].network = aNetwork;
+        this._networks[netId].status = NETWORK_STATUS_AWAY;
+        this._currentAlarms[netId] = Object.create(null);
+        aCallback(netId);
+      }
+
+      aCallback(null);
+    });
+  },
+
   getAvailableNetworks: function getAvailableNetworks(mm, msg) {
     let self = this;
     let rilNetworks = this.getRilNetworks();
     this._db.getAvailableNetworks(function onGetNetworks(aError, aResult) {
 
       // Also return the networks that are valid but have not
       // established connections yet.
       for (let netId in rilNetworks) {
@@ -363,101 +414,65 @@ this.NetworkStatsService = {
       }
     }
 
     let serviceType = msg.serviceType || "";
 
     let start = new Date(msg.start);
     let end = new Date(msg.end);
 
-    // Check if the network is currently active. If yes, we need to update
-    // the cached stats first before retrieving stats from the DB.
-    if (this._networks[netId]) {
-      this.updateStats(netId, function onStatsUpdated(aResult, aMessage) {
-        debug("getstats for network " + network.id + " of type " + network.type);
-        debug("appId: " + appId + " from appManifestURL: " + appManifestURL);
-
-        self.updateCachedStats(function onStatsUpdated(aResult, aMessage) {
-          self._db.find(function onStatsFound(aError, aResult) {
-            mm.sendAsyncMessage("NetworkStats:Get:Return",
-                                { id: msg.id, error: aError, result: aResult });
-          }, appId, serviceType, network, start, end, appManifestURL);
-        });
-      });
-      return;
-    }
-
-    // Check if the network is available in the DB. If yes, we also
-    // retrieve the stats for it from the DB.
-    this._db.isNetworkAvailable(network, function(aError, aResult) {
-      let toFind = false;
-      if (aResult) {
-        toFind = true;
-      } else if (!aError) {
-        // Network is not found in the database without any errors.
-        // Check if network is valid but has not established a connection yet.
-        let rilNetworks = self.getRilNetworks();
-        if (rilNetworks[netId]) {
-          // find will not get data for network from the database but will format the
-          // result object in order to make NetworkStatsManager be able to construct a
-          // nsIDOMMozNetworkStats object.
-          toFind = true;
-        }
-      }
-
-      if (toFind) {
-        // If network is not active, there is no need to update stats before finding.
-        self._db.find(function onStatsFound(aError, aResult) {
-          mm.sendAsyncMessage("NetworkStats:Get:Return",
-                              { id: msg.id, error: aError, result: aResult });
-        }, appId, serviceType, network, start, end, appManifestURL);
+    this.validateNetwork(network, function onValidateNetwork(aNetId) {
+      if (!aNetId) {
+        mm.sendAsyncMessage("NetworkStats:Get:Return",
+                            { id: msg.id, error: "Invalid connectionType", result: null });
         return;
       }
 
-      if (!aError) {
-        aError = "Invalid connectionType";
+      // If network is currently active we need to update the cached stats first before
+      // retrieving stats from the DB.
+      if (self._networks[aNetId].status == NETWORK_STATUS_READY) {
+        self.updateStats(aNetId, function onStatsUpdated(aResult, aMessage) {
+          debug("getstats for network " + network.id + " of type " + network.type);
+          debug("appId: " + appId + " from appManifestURL: " + appManifestURL);
+
+          self.updateCachedStats(function onStatsUpdated(aResult, aMessage) {
+            self._db.find(function onStatsFound(aError, aResult) {
+              mm.sendAsyncMessage("NetworkStats:Get:Return",
+                                  { id: msg.id, error: aError, result: aResult });
+            }, appId, serviceType, network, start, end, appManifestURL);
+          });
+        });
+        return;
       }
 
-      mm.sendAsyncMessage("NetworkStats:Get:Return",
-                          { id: msg.id, error: aError, result: null });
+      // Network not active, so no need to update
+      self._db.find(function onStatsFound(aError, aResult) {
+        mm.sendAsyncMessage("NetworkStats:Get:Return",
+                            { id: msg.id, error: aError, result: aResult });
+      }, appId, serviceType, network, start, end, appManifestURL);
     });
   },
 
   clearInterfaceStats: function clearInterfaceStats(mm, msg) {
+    let self = this;
     let network = msg.network;
-    let netId = this.getNetworkId(network.id, network.type);
 
     debug("clear stats for network " + network.id + " of type " + network.type);
 
-    if (!this._networks[netId]) {
-      // Check if network is valid but has not established a connection yet. If it is not
-      // found in RIL networks, it can be a SIM network used in the past having sample
-      // in the database.
-      let rilNetworks = this.getRilNetworks();
-      if (!rilNetworks[netId]) {
-        // Check if it is available in the DB.
-        this._db.isNetworkAvailable(network, function(aError, aResult) {
-          if (aResult) {
-            this._db.clearInterfaceStats(network, function onDBCleared(aError, aResult) {
-              mm.sendAsyncMessage("NetworkStats:Clear:Return",
-                                  { id: msg.id, error: aError, result: aResult });
-            });
-            return;
-          }
-
-          mm.sendAsyncMessage("NetworkStats:Clear:Return",
-                              { id: msg.id, error: "Invalid networkType", result: null });
-        });
+    this.validateNetwork(network, function onValidateNetwork(aNetId) {
+      if (!aNetId) {
+        mm.sendAsyncMessage("NetworkStats:Clear:Return",
+                            { id: msg.id, error: "Invalid connectionType", result: null });
         return;
       }
-    }
 
-    this._db.clearInterfaceStats(network, function onDBCleared(aError, aResult) {
-        mm.sendAsyncMessage("NetworkStats:Clear:Return",
-                            { id: msg.id, error: aError, result: aResult });
+      self._db.clearInterfaceStats(network, function onDBCleared(aError, aResult) {
+          mm.sendAsyncMessage("NetworkStats:Clear:Return",
+                              { id: msg.id, error: aError, result: aResult });
+      });
     });
   },
 
   clearDB: function clearDB(mm, msg) {
     let self = this;
     this._db.getAvailableNetworks(function onGetNetworks(aError, aResult) {
       if (aError) {
         mm.sendAsyncMessage("NetworkStats:ClearAll:Return",
@@ -473,33 +488,46 @@ this.NetworkStatsService = {
     });
   },
 
   updateAllStats: function updateAllStats(aCallback) {
     // Update |cachedStats|.
     this.updateCachedStats();
 
     let elements = [];
-    let lastElement;
+    let lastElement = null;
 
     // For each connectionType create an object containning the type
     // and the 'queueIndex', the 'queueIndex' is an integer representing
     // the index of a connection type in the global queue array. So, if
     // the connection type is already in the queue it is not appended again,
     // else it is pushed in 'elements' array, which later will be pushed to
     // the queue array.
     for (let netId in this._networks) {
+      if (this._networks[netId].status != NETWORK_STATUS_READY) {
+        continue;
+      }
+
       lastElement = { netId: netId,
                       queueIndex: this.updateQueueIndex(netId)};
 
       if (lastElement.queueIndex == -1) {
-        elements.push({netId: lastElement.netId, callbacks: []});
+        elements.push({ netId: lastElement.netId, callbacks: [] });
       }
     }
 
+    if (!lastElement) {
+      // No elements need to be updated, probably because status is different than
+      // NETWORK_STATUS_READY.
+      if (aCallback) {
+        aCallback(true, "OK");
+      }
+      return;
+    }
+
     if (elements.length > 0) {
       // If length of elements is greater than 0, callback is set to
       // the last element.
       elements[elements.length - 1].callbacks.push(aCallback);
       this.updateQueue = this.updateQueue.concat(elements);
     } else {
       // Else, it means that all connection types are already in the queue to
       // be updated, so callback for this request is added to
@@ -795,31 +823,39 @@ this.NetworkStatsService = {
 
       debug("===== LOG =====");
       debug("There are " + aResult.length + " items");
       debug(JSON.stringify(aResult));
     });
   },
 
   getAlarms: function getAlarms(mm, msg) {
+    let self = this;
     let network = msg.data.network;
     let manifestURL = msg.data.manifestURL;
 
-    let netId = null;
     if (network) {
-      netId = this.getNetworkId(network.id, network.type);
-      if (!this._networks[netId]) {
-        mm.sendAsyncMessage("NetworkStats:GetAlarms:Return",
-                            { id: msg.id, error: "InvalidInterface", result: null });
-        return;
-      }
+      this.validateNetwork(network, function onValidateNetwork(aNetId) {
+        if (!aNetId) {
+          mm.sendAsyncMessage("NetworkStats:GetAlarms:Return",
+                              { id: msg.id, error: "InvalidInterface", result: null });
+          return;
+        }
+
+        self._getAlarms(mm, msg, aNetId, manifestURL);
+      });
+      return;
     }
 
+    this._getAlarms(mm, msg, null, manifestURL);
+  },
+
+  _getAlarms: function _getAlarms(mm, msg, aNetId, aManifestURL) {
     let self = this;
-    this._db.getAlarms(netId, manifestURL, function onCompleted(error, result) {
+    this._db.getAlarms(aNetId, aManifestURL, function onCompleted(error, result) {
       if (error) {
         mm.sendAsyncMessage("NetworkStats:GetAlarms:Return",
                             { id: msg.id, error: error, result: result });
         return;
       }
 
       let alarms = []
       // NetworkStatsManager must return the network instead of the networkId.
@@ -879,67 +915,69 @@ this.NetworkStatsService = {
     debug("Set alarm at " + threshold + " for " + JSON.stringify(network));
 
     if (threshold < 0) {
       mm.sendAsyncMessage("NetworkStats:SetAlarm:Return",
                           { id: msg.id, error: "InvalidThresholdValue", result: null });
       return;
     }
 
-    let netId = this.getNetworkId(network.id, network.type);
-    if (!this._networks[netId]) {
-      mm.sendAsyncMessage("NetworkStats:SetAlarm:Return",
-                          { id: msg.id, error: "InvalidiConnectionType", result: null });
-      return;
-    }
-
-    let newAlarm = {
-      id: null,
-      networkId: netId,
-      threshold: threshold,
-      absoluteThreshold: null,
-      startTime: options.startTime,
-      data: options.data,
-      pageURL: options.pageURL,
-      manifestURL: options.manifestURL
-    };
-
     let self = this;
-    this._updateThreshold(newAlarm, function onUpdate(error, _threshold) {
-      if (error) {
+    this.validateNetwork(network, function onValidateNetwork(aNetId) {
+      if (!aNetId) {
         mm.sendAsyncMessage("NetworkStats:SetAlarm:Return",
-                            { id: msg.id, error: error, result: null });
+                            { id: msg.id, error: "InvalidiConnectionType", result: null });
         return;
       }
 
-      newAlarm.absoluteThreshold = _threshold.absoluteThreshold;
-      self._db.addAlarm(newAlarm, function addSuccessCb(error, newId) {
+      let newAlarm = {
+        id: null,
+        networkId: aNetId,
+        threshold: threshold,
+        absoluteThreshold: null,
+        startTime: options.startTime,
+        data: options.data,
+        pageURL: options.pageURL,
+        manifestURL: options.manifestURL
+      };
+
+      self._updateThreshold(newAlarm, function onUpdate(error, _threshold) {
         if (error) {
           mm.sendAsyncMessage("NetworkStats:SetAlarm:Return",
                               { id: msg.id, error: error, result: null });
           return;
         }
 
-        newAlarm.id = newId;
-        self._setAlarm(newAlarm, function onSet(error, success) {
-          mm.sendAsyncMessage("NetworkStats:SetAlarm:Return",
-                              { id: msg.id, error: error, result: newId });
+        newAlarm.absoluteThreshold = _threshold.absoluteThreshold;
+        self._db.addAlarm(newAlarm, function addSuccessCb(error, newId) {
+          if (error) {
+            mm.sendAsyncMessage("NetworkStats:SetAlarm:Return",
+                                { id: msg.id, error: error, result: null });
+            return;
+          }
 
-          if (error == "InvalidStateError") {
-            self._fireAlarm(newAlarm);
-          }
+          newAlarm.id = newId;
+          self._setAlarm(newAlarm, function onSet(error, success) {
+            mm.sendAsyncMessage("NetworkStats:SetAlarm:Return",
+                                { id: msg.id, error: error, result: newId });
+
+            if (error == "InvalidStateError") {
+              self._fireAlarm(newAlarm);
+            }
+          });
         });
       });
     });
   },
 
   _setAlarm: function _setAlarm(aAlarm, aCallback) {
     let currentAlarm = this._currentAlarms[aAlarm.networkId];
-    if (Object.getOwnPropertyNames(currentAlarm).length !== 0 &&
-        aAlarm.absoluteThreshold > currentAlarm.alarm.absoluteThreshold) {
+    if ((Object.getOwnPropertyNames(currentAlarm).length !== 0 &&
+         aAlarm.absoluteThreshold > currentAlarm.alarm.absoluteThreshold) ||
+        this._networks[aAlarm.networkId].status != NETWORK_STATUS_READY) {
       aCallback(null, true);
       return;
     }
 
     let self = this;
 
     this._updateThreshold(aAlarm, function onUpdate(aError, aThreshold) {
       if (aError) {
@@ -980,16 +1018,24 @@ this.NetworkStatsService = {
                                function onStatsFound(error, result) {
         if (error) {
           debug("Error getting stats for " +
                 JSON.stringify(self._networks[aAlarm.networkId]) + ": " + error);
           aCallback(error, result);
           return;
         }
 
+        if (!result) {
+          // There are no stats for the network of the alarm, set them to default 0 in
+          // order to be able to calculate the offset, systemThreshold and
+          // absoluteThreshold.
+          result = { rxTotalBytes:  0, txTotalBytes:  0,
+                     rxSystemBytes: 0, txSystemBytes: 0 };
+        }
+
         let offset = aAlarm.threshold - result.rxTotalBytes - result.txTotalBytes;
 
         // Alarm set to a threshold lower than current rx/tx bytes.
         if (offset <= 0) {
           aCallback("InvalidStateError", null);
           return;
         }
 
--- a/dom/network/tests/unit_stats/test_networkstats_service.js
+++ b/dom/network/tests/unit_stats/test_networkstats_service.js
@@ -1,13 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
 
+const NETWORK_STATUS_READY   = 0;
+const NETWORK_STATUS_STANDBY = 1;
+const NETWORK_STATUS_AWAY    = 2;
+
 function getNetworks(callback) {
   NetworkStatsService._db.getAvailableNetworks(function onGetNetworks(aError, aResult) {
     callback(aError, aResult);
   });
 }
 
 add_test(function test_clearDB() {
   getNetworks(function onGetNetworks(error, result) {
@@ -80,19 +84,28 @@ add_test(function test_updateQueueIndex(
   index = NetworkStatsService.updateQueueIndex(10);
   do_check_eq(index, -1);
 
   NetworkStatsService.updateQueue = [];
   run_next_test();
 });
 
 add_test(function test_updateAllStats() {
+  NetworkStatsService._networks[wifiId].status = NETWORK_STATUS_READY;
   NetworkStatsService.updateAllStats(function(success, msg) {
     do_check_eq(success, true);
-    run_next_test();
+    NetworkStatsService._networks[wifiId].status = NETWORK_STATUS_STANDBY;
+    NetworkStatsService.updateAllStats(function(success, msg) {
+      do_check_eq(success, true);
+      NetworkStatsService._networks[wifiId].status = NETWORK_STATUS_AWAY;
+      NetworkStatsService.updateAllStats(function(success, msg) {
+        do_check_eq(success, true);
+        run_next_test();
+      });
+    });
   });
 });
 
 add_test(function test_updateStats_ok() {
   getNetworkId(function onGetId(error, result) {
     do_check_eq(error, null);
     var netId = result;
     NetworkStatsService.updateStats(netId, function(success, msg){
@@ -184,16 +197,18 @@ add_test(function test_setAlarm_invalid_
                 threshold: -10000,
                 absoluteThreshold: null,
                 alarmStart: null,
                 alarmEnd: null,
                 data: null,
                 pageURL: testPageURL,
                 manifestURL: testManifestURL };
 
+  NetworkStatsService._networks[wifiId].status = NETWORK_STATUS_READY;
+
   NetworkStatsService._setAlarm(alarm, function onSet(error, result) {
     do_check_eq(error, "InvalidStateError");
     run_next_test();
   });
 });
 
 add_test(function test_fireAlarm() {
   // Add a fake alarm into database.
--- a/dom/payment/Payment.jsm
+++ b/dom/payment/Payment.jsm
@@ -88,19 +88,16 @@ let PaymentManager =  {
         // information.
         let paymentRequests = [];
         let jwtTypes = [];
         for (let i in msg.jwts) {
           let pr = this.getPaymentRequestInfo(requestId, msg.jwts[i]);
           if (!pr) {
             continue;
           }
-          if (!(pr instanceof Ci.nsIDOMPaymentRequestInfo)) {
-            return;
-          }
           // We consider jwt type repetition an error.
           if (jwtTypes[pr.type]) {
             this.paymentFailed(requestId,
                                "PAY_REQUEST_ERROR_DUPLICATED_JWT_TYPE");
             return;
           }
           jwtTypes[pr.type] = true;
           paymentRequests.push(pr);
@@ -337,27 +334,17 @@ let PaymentManager =  {
         this.LOG("Payment provider uris must be https: " + provider.uri);
       }
       this.paymentFailed(aRequestId,
                          "INTERNAL_ERROR_NON_HTTPS_PROVIDER_URI");
       return true;
     }
 
     let pldRequest = payloadObject.request;
-    let request = Cc["@mozilla.org/payment/request-info;1"]
-                  .createInstance(Ci.nsIDOMPaymentRequestInfo);
-    if (!request) {
-      this.paymentFailed(aRequestId,
-                         "INTERNAL_ERROR_ERROR_CREATING_PAY_REQUEST");
-      return true;
-    }
-    request.wrappedJSObject.init(aJwt,
-                                 payloadObject.typ,
-                                 provider.name);
-    return request;
+    return { jwt: aJwt, type: payloadObject.typ, providerName: provider.name };
   },
 
   showPaymentFlow: function showPaymentFlow(aRequestId,
                                             aPaymentProvider,
                                             aJwt) {
     let paymentFlowInfo = Cc["@mozilla.org/payment/flow-info;1"]
                           .createInstance(Ci.nsIPaymentFlowInfo);
     paymentFlowInfo.uri = aPaymentProvider.uri;
--- a/dom/payment/Payment.manifest
+++ b/dom/payment/Payment.manifest
@@ -1,9 +1,6 @@
 component {a920adc0-c36e-4fd0-8de0-aac1ac6ebbd0} Payment.js
 contract @mozilla.org/payment/content-helper;1 {a920adc0-c36e-4fd0-8de0-aac1ac6ebbd0}
 category JavaScript-navigator-property mozPay @mozilla.org/payment/content-helper;1
 
 component {b8bce4e7-fbf0-4719-a634-b1bf9018657c} PaymentFlowInfo.js
 contract @mozilla.org/payment/flow-info;1 {b8bce4e7-fbf0-4719-a634-b1bf9018657c}
-
-component {0a58c67d-f003-48da-81d1-bd8f605f4b1c} PaymentRequestInfo.js
-contract @mozilla.org/payment/request-info;1 {0a58c67d-f003-48da-81d1-bd8f605f4b1c}
deleted file mode 100644
--- a/dom/payment/PaymentRequestInfo.js
+++ /dev/null
@@ -1,41 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-"use strict";
-
-const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-
-const PAYMENTREQUESTINFO_CID =
-  Components.ID("{0a58c67d-f003-48da-81d1-bd8f605f4b1c}");
-
-// nsIDOMPaymentRequestInfo
-
-function PaymentRequestInfo() {
-  this.wrappedJSObject = this;
-};
-
-PaymentRequestInfo.prototype = {
-  QueryInterface: XPCOMUtils.generateQI([Ci.nsIDOMPaymentRequestInfo]),
-  classID: PAYMENTREQUESTINFO_CID,
-  classInfo: XPCOMUtils.generateCI({
-    classID: PAYMENTREQUESTINFO_CID,
-    contractID: "@mozilla.org/payment/request-info;1",
-    classDescription: "Payment request information",
-    flags: Ci.nsIClassInfo.DOM_OBJECT,
-    interfaces: [Ci.nsIDOMPaymentRequestInfo]
-  }),
-  jwt: null,
-  type: null,
-  providerName: null,
-
-  init: function init(aJwt, aType, aProviderName) {
-    this.jwt = aJwt;
-    this.type = aType;
-    this.providerName = aProviderName;
-  }
-};
-
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([PaymentRequestInfo]);
--- a/dom/payment/interfaces/moz.build
+++ b/dom/payment/interfaces/moz.build
@@ -1,15 +1,14 @@
 # -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 XPIDL_SOURCES += [
-    'nsIDOMPaymentRequestInfo.idl',
     'nsINavigatorPayment.idl',
     'nsIPaymentFlowInfo.idl',
     'nsIPaymentUIGlue.idl',
 ]
 
 XPIDL_MODULE = 'dom_payment'
 
deleted file mode 100644
--- a/dom/payment/interfaces/nsIDOMPaymentRequestInfo.idl
+++ /dev/null
@@ -1,19 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsISupports.idl"
-
-[scriptable, uuid(93462984-0e9a-4016-bdb4-a24a88c08a29)]
-interface nsIDOMPaymentRequestInfo : nsISupports
-{
-  // Base64 encoded and digitally signed payment request.
-  readonly attribute DOMString jwt;
-
-  // JWT type that identifies the payment provider owner of the payment request
-  // format.
-  readonly attribute DOMString type;
-
-  // Payment provider name.
-  readonly attribute DOMString providerName;
-};
--- a/dom/payment/moz.build
+++ b/dom/payment/moz.build
@@ -11,11 +11,10 @@ TEST_DIRS += ['tests']
 EXTRA_JS_MODULES += [
     'Payment.jsm',
 ]
 
 EXTRA_COMPONENTS += [
     'Payment.js',
     'Payment.manifest',
     'PaymentFlowInfo.js',
-    'PaymentRequestInfo.js',
 ]
 
--- a/gfx/layers/ipc/AsyncPanZoomController.cpp
+++ b/gfx/layers/ipc/AsyncPanZoomController.cpp
@@ -995,20 +995,16 @@ float AsyncPanZoomController::PanDistanc
   ReentrantMonitorAutoEnter lock(mMonitor);
   return NS_hypot(mX.PanDistance(), mY.PanDistance());
 }
 
 const ScreenPoint AsyncPanZoomController::GetVelocityVector() {
   return ScreenPoint(mX.GetVelocity(), mY.GetVelocity());
 }
 
-const gfx::Point AsyncPanZoomController::GetAccelerationVector() {
-  return gfx::Point(mX.GetAccelerationFactor(), mY.GetAccelerationFactor());
-}
-
 void AsyncPanZoomController::HandlePanningWithTouchAction(double aAngle, TouchBehaviorFlags aBehavior) {
   // Handling of cross sliding will need to be added in this method after touch-action released
   // enabled by default.
   if ((aBehavior & AllowedTouchBehavior::VERTICAL_PAN) && (aBehavior & AllowedTouchBehavior::HORIZONTAL_PAN)) {
     if (mX.Scrollable() && mY.Scrollable()) {
       if (IsCloseToHorizontal(aAngle, AXIS_LOCK_ANGLE)) {
         mY.SetAxisLocked(true);
         SetState(PANNING_LOCKED_X);
@@ -1310,17 +1306,16 @@ EnlargeDisplayPortAlongAxis(float* aOutO
   double paintFactor = (gUsePaintDuration ? aEstimatedPaintDurationMillis : 50.0);
   *aOutOffset += (aVelocity * paintFactor * gVelocityBias);
 }
 
 /* static */
 const CSSRect AsyncPanZoomController::CalculatePendingDisplayPort(
   const FrameMetrics& aFrameMetrics,
   const ScreenPoint& aVelocity,
-  const gfx::Point& aAcceleration,
   double aEstimatedPaintDuration)
 {
   // convert to milliseconds
   double estimatedPaintDurationMillis = aEstimatedPaintDuration * 1000;
 
   CSSRect compositionBounds = aFrameMetrics.CalculateCompositedRectInCssPixels();
   CSSPoint scrollOffset = aFrameMetrics.mScrollOffset;
   CSSRect displayPort(scrollOffset, compositionBounds.Size());
@@ -1344,20 +1339,19 @@ const CSSRect AsyncPanZoomController::Ca
   EnlargeDisplayPortAlongAxis(&(displayPort.y), &(displayPort.height),
     estimatedPaintDurationMillis, velocity.y,
     gYStationarySizeMultiplier, gYSkateSizeMultiplier);
 
   CSSRect scrollableRect = aFrameMetrics.GetExpandedScrollableRect();
   displayPort = displayPort.ForceInside(scrollableRect) - scrollOffset;
 
   APZC_LOG_FM(aFrameMetrics,
-    "Calculated displayport as (%f %f %f %f) from velocity (%f %f) acceleration (%f %f) paint time %f metrics",
+    "Calculated displayport as (%f %f %f %f) from velocity (%f %f) paint time %f metrics",
     displayPort.x, displayPort.y, displayPort.width, displayPort.height,
-    aVelocity.x, aVelocity.y, aAcceleration.x, aAcceleration.y,
-    (float)estimatedPaintDurationMillis);
+    aVelocity.x, aVelocity.y, (float)estimatedPaintDurationMillis);
 
   return displayPort;
 }
 
 void AsyncPanZoomController::ScheduleComposite() {
   if (mCompositorParent) {
     mCompositorParent->ScheduleRenderOnCompositorThread();
   }
@@ -1366,17 +1360,16 @@ void AsyncPanZoomController::ScheduleCom
 void AsyncPanZoomController::RequestContentRepaint() {
   RequestContentRepaint(mFrameMetrics);
 }
 
 void AsyncPanZoomController::RequestContentRepaint(FrameMetrics& aFrameMetrics) {
   aFrameMetrics.mDisplayPort =
     CalculatePendingDisplayPort(aFrameMetrics,
                                 GetVelocityVector(),
-                                GetAccelerationVector(),
                                 mPaintThrottler.AverageDuration().ToSeconds());
 
   // If we're trying to paint what we already think is painted, discard this
   // request since it's a pointless paint.
   CSSRect oldDisplayPort = mLastPaintRequestMetrics.mDisplayPort
                          + mLastPaintRequestMetrics.mScrollOffset;
   CSSRect newDisplayPort = aFrameMetrics.mDisplayPort
                          + aFrameMetrics.mScrollOffset;
@@ -1742,17 +1735,16 @@ void AsyncPanZoomController::ZoomToRect(
       aRect.x = cssPageRect.width - rectAfterZoom.width;
       aRect.x = aRect.x > 0 ? aRect.x : 0;
     }
 
     endZoomToMetrics.mScrollOffset = aRect.TopLeft();
     endZoomToMetrics.mDisplayPort =
       CalculatePendingDisplayPort(endZoomToMetrics,
                                   ScreenPoint(0,0),
-                                  gfx::Point(0,0),
                                   0);
 
     StartAnimation(new ZoomAnimation(
         mFrameMetrics.mScrollOffset,
         mFrameMetrics.mZoom,
         endZoomToMetrics.mScrollOffset,
         endZoomToMetrics.mZoom));
 
--- a/gfx/layers/ipc/AsyncPanZoomController.h
+++ b/gfx/layers/ipc/AsyncPanZoomController.h
@@ -235,17 +235,16 @@ public:
    * Recalculates the displayport. Ideally, this should paint an area bigger
    * than the composite-to dimensions so that when you scroll down, you don't
    * checkerboard immediately. This includes a bunch of logic, including
    * algorithms to bias painting in the direction of the velocity.
    */
   static const CSSRect CalculatePendingDisplayPort(
     const FrameMetrics& aFrameMetrics,
     const ScreenPoint& aVelocity,
-    const gfx::Point& aAcceleration,
     double aEstimatedPaintDuration);
 
   /**
    * Send an mozbrowserasyncscroll event.
    * *** The monitor must be held while calling this.
    */
   void SendAsyncScrollEvent();
 
@@ -434,21 +433,16 @@ protected:
   float PanDistance();
 
   /**
    * Gets a vector of the velocities of each axis.
    */
   const ScreenPoint GetVelocityVector();
 
   /**
-   * Gets a vector of the acceleration factors of each axis.
-   */
-  const gfx::Point GetAccelerationVector();
-
-  /**
    * Gets a reference to the first touch point from a MultiTouchInput.  This
    * gets only the first one and assumes the rest are either missing or not
    * relevant.
    */
   ScreenIntPoint& GetFirstTouchScreenPoint(const MultiTouchInput& aEvent);
 
   /**
    * Sets the panning state basing on the pan direction angle and current touch-action value.
--- a/gfx/layers/ipc/Axis.cpp
+++ b/gfx/layers/ipc/Axis.cpp
@@ -29,32 +29,16 @@ namespace layers {
 static float gMaxEventAcceleration = 999.0f;
 
 /**
  * Amount of friction applied during flings.
  */
 static float gFlingFriction = 0.002f;
 
 /**
- * Threshold for velocity beneath which we turn off any acceleration we had
- * during repeated flings.
- */
-static float gVelocityThreshold = 0.14f;
-
-/**
- * Amount of acceleration we multiply in each time the user flings in one
- * direction. Every time they let go of the screen, we increase the acceleration
- * by this amount raised to the power of the amount of times they have let go,
- * times two (to make the curve steeper).  This stops if the user lets go and we
- * slow down enough, or if they put their finger down without moving it for a
- * moment (or in the opposite direction).
- */
-static float gAccelerationMultiplier = 1.125f;
-
-/**
  * When flinging, if the velocity goes below this number, we just stop the
  * animation completely. This is to prevent asymptotically approaching 0
  * velocity and rerendering unnecessarily.
  */
 static float gFlingStoppedThreshold = 0.01f;
 
 /**
  * Maximum size of velocity queue. The queue contains last N velocity records.
@@ -62,18 +46,16 @@ static float gFlingStoppedThreshold = 0.
  * touch/mouse drivers misbehaviour.
  */
 static uint32_t gMaxVelocityQueueSize = 5;
 
 static void ReadAxisPrefs()
 {
   Preferences::AddFloatVarCache(&gMaxEventAcceleration, "apz.max_event_acceleration", gMaxEventAcceleration);
   Preferences::AddFloatVarCache(&gFlingFriction, "apz.fling_friction", gFlingFriction);
-  Preferences::AddFloatVarCache(&gVelocityThreshold, "apz.velocity_threshold", gVelocityThreshold);
-  Preferences::AddFloatVarCache(&gAccelerationMultiplier, "apz.acceleration_multiplier", gAccelerationMultiplier);
   Preferences::AddFloatVarCache(&gFlingStoppedThreshold, "apz.fling_stopped_threshold", gFlingStoppedThreshold);
   Preferences::AddUintVarCache(&gMaxVelocityQueueSize, "apz.max_velocity_queue_size", gMaxVelocityQueueSize);
 }
 
 class ReadAxisPref MOZ_FINAL : public nsRunnable {
 public:
   NS_IMETHOD Run()
   {
@@ -95,35 +77,25 @@ static void InitAxisPrefs()
     // We have to dispatch an event to the main thread to read the pref.
     NS_DispatchToMainThread(new ReadAxisPref());
   }
 }
 
 Axis::Axis(AsyncPanZoomController* aAsyncPanZoomController)
   : mPos(0),
     mVelocity(0.0f),
-    mAcceleration(0),
     mAxisLocked(false),
     mAsyncPanZoomController(aAsyncPanZoomController)
 {
   InitAxisPrefs();
 }
 
 void Axis::UpdateWithTouchAtDevicePoint(int32_t aPos, const TimeDuration& aTimeDelta) {
   float newVelocity = mAxisLocked ? 0 : (mPos - aPos) / aTimeDelta.ToMilliseconds();
 
-  bool curVelocityBelowThreshold = fabsf(newVelocity) < gVelocityThreshold;
-  bool directionChange = (mVelocity > 0) != (newVelocity > 0);
-
-  // If we've changed directions, or the current velocity threshold, stop any
-  // acceleration we've accumulated.
-  if (directionChange || curVelocityBelowThreshold) {
-    mAcceleration = 0;
-  }
-
   mVelocity = newVelocity;
   mPos = aPos;
 
   // Keep last gMaxVelocityQueueSize or less velocities in the queue.
   mVelocityQueue.AppendElement(mVelocity);
   if (mVelocityQueue.Length() > gMaxVelocityQueueSize) {
     mVelocityQueue.RemoveElementAt(0);
   }
@@ -140,65 +112,56 @@ float Axis::AdjustDisplacement(float aDi
   if (mAxisLocked) {
     aOverscrollAmountOut = 0;
     return 0;
   }
 
   if (aScrollingDisabled) {
     // Scrolling is disabled on this axis, stop scrolling.
     aOverscrollAmountOut = aDisplacement;
-    mAcceleration = 0;
     return 0;
   }
 
-  if (fabsf(mVelocity) < gVelocityThreshold) {
-    mAcceleration = 0;
-  }
+  float displacement = aDisplacement;
 
-  float accelerationFactor = GetAccelerationFactor();
-  float displacement = aDisplacement * accelerationFactor;
   // If this displacement will cause an overscroll, throttle it. Can potentially
   // bring it to 0 even if the velocity is high.
   if (DisplacementWillOverscroll(displacement) != OVERSCROLL_NONE) {
     // No need to have a velocity along this axis anymore; it won't take us
     // anywhere, so we're just spinning needlessly.
     mVelocity = 0.0f;
-    mAcceleration = 0;
     aOverscrollAmountOut = DisplacementWillOverscrollAmount(displacement);
     displacement -= aOverscrollAmountOut;
   }
   return displacement;
 }
 
 float Axis::PanDistance() {
   return fabsf(mPos - mStartPos);
 }
 
 float Axis::PanDistance(float aPos) {
   return fabsf(aPos - mStartPos);
 }
 
 void Axis::EndTouch() {
-  mAcceleration++;
-
   // Calculate the mean velocity and empty the queue.
   int count = mVelocityQueue.Length();
   if (count) {
     mVelocity = 0;
     while (!mVelocityQueue.IsEmpty()) {
       mVelocity += mVelocityQueue[0];
       mVelocityQueue.RemoveElementAt(0);
     }
     mVelocity /= count;
   }
 }
 
 void Axis::CancelTouch() {
   mVelocity = 0.0f;
-  mAcceleration = 0;
   while (!mVelocityQueue.IsEmpty()) {
     mVelocityQueue.RemoveElementAt(0);
   }
 }
 
 bool Axis::Scrollable() {
     if (mAxisLocked) {
         return false;
@@ -297,20 +260,16 @@ float Axis::ScaleWillOverscrollAmount(fl
   }
   return 0;
 }
 
 float Axis::GetVelocity() {
   return mAxisLocked ? 0 : mVelocity;
 }
 
-float Axis::GetAccelerationFactor() {
-  return powf(gAccelerationMultiplier, std::max(0, (mAcceleration - 4) * 3));
-}
-
 float Axis::GetCompositionEnd() {
   return GetOrigin() + GetCompositionLength();
 }
 
 float Axis::GetPageEnd() {
   return GetPageStart() + GetPageLength();
 }
 
--- a/gfx/layers/ipc/Axis.h
+++ b/gfx/layers/ipc/Axis.h
@@ -65,22 +65,21 @@ public:
    * Notify this Axis that a touch has ended forcefully. Useful for stopping
    * flings when a user puts their finger down in the middle of one (i.e. to
    * stop a previous touch including its fling so that a new one can take its
    * place).
    */
   void CancelTouch();
 
   /**
-   * Takes a requested displacement to the position of this axis, and adjusts
-   * it to account for acceleration (which might increase the displacement),
-   * overscroll (which might decrease the displacement; this is to prevent the
-   * viewport from overscrolling the page rect), and axis locking (which might
-   * prevent any displacement from happening). If overscroll ocurred, its amount
-   * is written to |aOverscrollAmountOut|.
+   * Takes a requested displacement to the position of this axis, and adjusts it
+   * to account for overscroll (which might decrease the displacement; this is
+   * to prevent the viewport from overscrolling the page rect), and axis locking
+   * (which might prevent any displacement from happening). If overscroll
+   * ocurred, its amount is written to |aOverscrollAmountOut|.
    * The adjusted displacement is returned.
    *
    * aScrollingDisabled is used to indicate that no scrolling should happen
    * in this axis. This is used to implement overflow: hidden;
    */
   float AdjustDisplacement(float aDisplacement, float& aOverscrollAmountOut,
                            bool aScrollingDisabled);
 
@@ -124,22 +123,16 @@ public:
    * overscrolling in the positive direction, whereas negative excess means
    * that it is overscrolling in the negative direction. If there is overscroll
    * in both directions, this returns 0; it assumes that you check
    * GetOverscroll() first.
    */
   float GetExcess();
 
   /**
-   * Gets the factor of acceleration applied to the velocity, based on the
-   * amount of flings that have been done successively.
-   */
-  float GetAccelerationFactor();
-
-  /**
    * Gets the raw velocity of this axis at this moment.
    */
   float GetVelocity();
 
   /**
    * Gets the overscroll state of the axis given an additional displacement.
    * That is to say, if the given displacement is applied, this will tell you
    * whether or not it will overscroll, and in what direction.
@@ -183,22 +176,16 @@ public:
   virtual float GetPointOffset(const CSSPoint& aPoint) = 0;
   virtual float GetRectLength(const CSSRect& aRect) = 0;
   virtual float GetRectOffset(const CSSRect& aRect) = 0;
 
 protected:
   int32_t mPos;
   int32_t mStartPos;
   float mVelocity;
-  // Acceleration is represented by an int, which is the power we raise a
-  // constant to and then multiply the velocity by whenever it is sampled. We do
-  // this only when we detect that the user wants to do a fast fling; that is,
-  // they are flinging multiple times in a row very quickly, probably trying to
-  // reach one of the extremes of the page.
-  int32_t mAcceleration;
   bool mAxisLocked;     // Whether movement on this axis is locked.
   AsyncPanZoomController* mAsyncPanZoomController;
   nsTArray<float> mVelocityQueue;
 };
 
 class AxisX : public Axis {
 public:
   AxisX(AsyncPanZoomController* mAsyncPanZoomController);
--- a/ipc/glue/ProtocolUtils.h
+++ b/ipc/glue/ProtocolUtils.h
@@ -17,16 +17,20 @@
 #include "IPCMessageStart.h"
 #include "mozilla/Attributes.h"
 #include "mozilla/ipc/FileDescriptor.h"
 #include "mozilla/ipc/Shmem.h"
 #include "mozilla/ipc/Transport.h"
 #include "mozilla/ipc/MessageLink.h"
 #include "mozilla/LinkedList.h"
 
+#if defined(ANDROID) && defined(DEBUG)
+#include <android/log.h>
+#endif
+
 // WARNING: this takes into account the private, special-message-type
 // enum in ipc_channel.h.  They need to be kept in sync.
 namespace {
 // XXX the max message ID is actually kuint32max now ... when this
 // changed, the assumptions of the special message IDs changed in that
 // they're not carving out messages from likely-unallocated space, but
 // rather carving out messages from the end of space allocated to
 // protocol 0.  Oops!  We can get away with this until protocol 0
--- a/ipc/ipdl/ipdl/lower.py
+++ b/ipc/ipdl/ipdl/lower.py
@@ -1820,50 +1820,66 @@ def _generateMessageClass(clsname, msgid
                                        ExprVar('IPC::Message::PRIORITY_NORMAL'),
                                        compression,
                                        ExprLiteral.String(prettyName) ]) ])
     cls.addstmts([ ctor, Whitespace.NL ])
 
     # generate a logging function
     # 'pfx' will be something like "[FooParent] sent"
     pfxvar = ExprVar('__pfx')
-    outfvar = ExprVar('__outf')
+    otherprocess = ExprVar('__otherProcess')
+    receiving = ExprVar('__receiving')
     logger = MethodDefn(MethodDecl(
         'Log',
         params=([ Decl(Type('std::string', const=1, ref=1), pfxvar.name),
-                  Decl(Type('FILE', ptr=True), outfvar.name) ]),
+                  Decl(Type('base::ProcessHandle'), otherprocess.name),
+                  Decl(Type('bool'), receiving.name) ]),
         const=1))
     # TODO/cjones: allow selecting what information is printed to 
     # the log
     msgvar = ExprVar('__logmsg')
     logger.addstmt(StmtDecl(Decl(Type('std::string'), msgvar.name)))
 
     def appendToMsg(thing):
         return StmtExpr(ExprCall(ExprSelect(msgvar, '.', 'append'),
                                  args=[ thing ]))
     logger.addstmts([
         StmtExpr(ExprCall(
             ExprVar('StringAppendF'),
             args=[ ExprAddrOf(msgvar),
-                   ExprLiteral.String('[time:%" PRId64 "][%d]'),
+                   ExprLiteral.String('[time:%" PRId64 "][%d%s%d]'),
                    ExprCall(ExprVar('PR_Now')),
-                   ExprCall(ExprVar('base::GetCurrentProcId')) ])),
+                   ExprCall(ExprVar('base::GetCurrentProcId')),
+                   ExprConditional(receiving, ExprLiteral.String('<-'),
+                                   ExprLiteral.String('->')),
+                   otherprocess ])),
         appendToMsg(pfxvar),
         appendToMsg(ExprLiteral.String(clsname +'(')),
         Whitespace.NL
     ])
 
     # TODO turn this back on when string stuff is sorted
 
     logger.addstmt(appendToMsg(ExprLiteral.String('[TODO])\\n')))
 
+    logger.addstmts([
+        CppDirective('ifdef', 'ANDROID'),
+        StmtExpr(ExprCall(
+            ExprVar('__android_log_write'),
+            args=[ ExprVar('ANDROID_LOG_INFO'),
+                   ExprLiteral.String('GeckoIPC'),
+                   ExprCall(ExprSelect(msgvar, '.', 'c_str')) ])),
+        CppDirective('endif')
+    ])
+
     # and actually print the log message
     logger.addstmt(StmtExpr(ExprCall(
         ExprVar('fputs'),
-        args=[ ExprCall(ExprSelect(msgvar, '.', 'c_str')), outfvar ])))
+        args=[ ExprCall(ExprSelect(msgvar, '.', 'c_str')),
+               ExprVar('stderr') ])))
 
     cls.addstmt(logger)
 
     return cls
 
 ##--------------------------------------------------
 
 class _ComputeTypeDeps(TypeVisitor):
@@ -4924,17 +4940,17 @@ class _GenerateProtocolActorCode(ipdl.as
         sendok, sendstmts = self.sendBlocking(md, msgvar, replyvar, actorvar)
         method.addstmts(
             stmts
             + [ Whitespace.NL,
                 StmtDecl(Decl(Type('Message'), replyvar.name)) ]
             + sendstmts)
 
         destmts = self.deserializeReply(
-            md, ExprAddrOf(replyvar), self.side, errfnSend)
+            md, ExprAddrOf(replyvar), self.side, errfnSend, actorvar)
         ifsendok = StmtIf(ExprLiteral.FALSE)
         ifsendok.addifstmts(destmts)
         ifsendok.addifstmts([ Whitespace.NL,
                               StmtExpr(ExprAssn(sendok, ExprLiteral.FALSE, '&=')) ])
 
         method.addstmt(ifsendok)
 
         if self.protocol.decl.type.hasReentrantDelete:
@@ -5160,17 +5176,18 @@ class _GenerateProtocolActorCode(ipdl.as
             # are forwarding the message name (yuck) or making the
             # IPDL|*Channel abstraction leak more
             StmtExpr(ExprCall(
                 ExprSelect(
                     ExprCast(msgvar, Type('Message', ref=1), const=1),
                     '.', 'set_name'),
                 args=[ ExprLiteral.String(md.prettyMsgName(self.protocol.name
                                                            +'::')) ])),
-            self.logMessage(md, md.msgCast(msgexpr), 'Received '),
+            self.logMessage(md, md.msgCast(msgexpr), 'Received ',
+                            receiving=True),
             self.profilerLabel('Recv', md.decl.progname),
             Whitespace.NL
         ])
 
         if 0 == len(md.params):
             return stmts
 
         start, decls, reads = 0, [], []
@@ -5195,20 +5212,20 @@ class _GenerateProtocolActorCode(ipdl.as
                                          msgexpr, ExprAddrOf(itervar),
                                          errfn, p.bareType(side).name)
                         for p in md.params[start:] ]
             + [ self.endRead(msgvar, itervar) ]))
 
         return stmts
 
 
-    def deserializeReply(self, md, replyexpr, side, errfn):
+    def deserializeReply(self, md, replyexpr, side, errfn, actor=None):
         stmts = [ Whitespace.NL,
                    self.logMessage(md, md.replyCast(replyexpr),
-                                   'Received reply ') ]
+                                   'Received reply ', actor, receiving=True) ]
         if 0 == len(md.returns):
             return stmts
 
         itervar = self.itervar
         stmts.extend(
             [ Whitespace.NL,
               StmtDecl(Decl(Type.VOIDPTR, itervar.name),
                        init=ExprLiteral.NULL) ]
@@ -5221,34 +5238,34 @@ class _GenerateProtocolActorCode(ipdl.as
 
         return stmts
 
     def sendAsync(self, md, msgexpr, actor=None):
         sendok = ExprVar('__sendok')
         return (
             sendok,
             ([ Whitespace.NL,
-               self.logMessage(md, msgexpr, 'Sending '),
+               self.logMessage(md, msgexpr, 'Sending ', actor),
                self.profilerLabel('AsyncSend', md.decl.progname) ]
             + self.transition(md, 'out', actor)
             + [ Whitespace.NL,
                 StmtDecl(Decl(Type.BOOL, sendok.name),
                          init=ExprCall(
                              ExprSelect(self.protocol.channelVar(actor),
                                         self.protocol.channelSel(), 'Send'),
                              args=[ msgexpr ]))
             ])
         )
 
     def sendBlocking(self, md, msgexpr, replyexpr, actor=None):
         sendok = ExprVar('__sendok')
         return (
             sendok,
             ([ Whitespace.NL,
-               self.logMessage(md, msgexpr, 'Sending '),
+               self.logMessage(md, msgexpr, 'Sending ', actor),
                self.profilerLabel('Send', md.decl.progname) ]
             + self.transition(md, 'out', actor)
             + [ Whitespace.NL,
                 StmtDecl(
                     Decl(Type.BOOL, sendok.name),
                     init=ExprCall(ExprSelect(self.protocol.channelVar(actor),
                                              self.protocol.channelSel(),
                                              _sendPrefix(md.decl.type)),
@@ -5307,23 +5324,24 @@ class _GenerateProtocolActorCode(ipdl.as
             params=md.makeCxxParams(paramsems='in', returnsems='out',
                                     side=self.side, implicit=implicit),
             warn_unused=(self.side == 'parent'),
             ret=Type.BOOL)
         if md.decl.type.isCtor():
             decl.ret = md.actorDecl().bareType(self.side)
         return decl
 
-    def logMessage(self, md, msgptr, pfx):
+    def logMessage(self, md, msgptr, pfx, actor=None, receiving=False):
         actorname = _actorName(self.protocol.name, self.side)
-        return _ifLogging([
-            StmtExpr(ExprCall(
-                ExprSelect(msgptr, '->', 'Log'),
-                args=[ ExprLiteral.String('['+ actorname +'] '+ pfx),
-                       ExprVar('stderr') ])) ])
+
+        return _ifLogging([ StmtExpr(ExprCall(
+            ExprSelect(msgptr, '->', 'Log'),
+            args=[ ExprLiteral.String('['+ actorname +'] '+ pfx),
+                   self.protocol.callOtherProcess(actor),
+                   ExprLiteral.TRUE if receiving else ExprLiteral.FALSE ])) ])
 
     def profilerLabel(self, tag, msgname):
         return StmtExpr(ExprCall(ExprVar('PROFILER_LABEL'),
                                  [ ExprLiteral.String('IPDL::' + self.protocol.name),
                                    ExprLiteral.String(tag + msgname) ]))
 
     def saveActorId(self, md):
         idvar = ExprVar('__id')
--- a/ipc/unixsocket/UnixSocket.cpp
+++ b/ipc/unixsocket/UnixSocket.cpp
@@ -169,16 +169,19 @@ public:
   /**
    * Consumer pointer. Non-thread safe RefPtr, so should only be manipulated
    * directly from main thread. All non-main-thread accesses should happen with
    * mImpl as container.
    */
   RefPtr<UnixSocketConsumer> mConsumer;
 
 private:
+
+  void FireSocketError();
+
   /**
    * libevent triggered functions that reads data from socket when available and
    * guarenteed non-blocking. Only to be called on IO thread.
    *
    * @param aFd File descriptor to read from
    */
   virtual void OnFileCanReadWithoutBlocking(int aFd);
 
@@ -482,126 +485,132 @@ void ShutdownSocketTask::Run()
   mImpl->ShutdownOnIOThread();
 
   nsRefPtr<nsIRunnable> t(new DeleteInstanceRunnable<UnixSocketImpl>(mImpl));
   nsresult rv = NS_DispatchToMainThread(t);
   NS_ENSURE_SUCCESS_VOID(rv);
 }
 
 void
-UnixSocketImpl::Accept()
+UnixSocketImpl::FireSocketError()
 {
   MOZ_ASSERT(!NS_IsMainThread());
 
-  if (!mConnector) {
-    NS_WARNING("No connector object available!");
-    return;
-  }
+  // Clean up watchers, statuses, fds
+  mReadWatcher.StopWatchingFileDescriptor();
+  mWriteWatcher.StopWatchingFileDescriptor();
+  mConnectionStatus = SOCKET_DISCONNECTED;
+  mFd.reset(-1);
+
+  // Tell the main thread we've errored
+  nsRefPtr<OnSocketEventTask> t =
+    new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
+  NS_DispatchToMainThread(t);
+}
+
+void
+UnixSocketImpl::Accept()
+{
+  MOZ_ASSERT(!NS_IsMainThread());
+  MOZ_ASSERT(mConnector);
 
   // This will set things we don't particularly care about, but it will hand
   // back the correct structure size which is what we do care about.
   if (!mConnector->CreateAddr(true, mAddrSize, mAddr, nullptr)) {
     NS_WARNING("Cannot create socket address!");
+    FireSocketError();
     return;
   }
 
   if (mFd.get() < 0) {
     mFd = mConnector->Create();
     if (mFd.get() < 0) {
+      NS_WARNING("Cannot create socket fd!");
+      FireSocketError();
       return;
     }
 
     if (!SetSocketFlags()) {
+      NS_WARNING("Cannot set socket flags!");
+      FireSocketError();
       return;
     }
 
     if (bind(mFd.get(), (struct sockaddr*)&mAddr, mAddrSize)) {
 #ifdef DEBUG
       CHROMIUM_LOG("...bind(%d) gave errno %d", mFd.get(), errno);
 #endif
+      FireSocketError();
       return;
     }
 
     if (listen(mFd.get(), 1)) {
 #ifdef DEBUG
       CHROMIUM_LOG("...listen(%d) gave errno %d", mFd.get(), errno);
 #endif
+      FireSocketError();
       return;
     }
 
     if (!mConnector->SetUpListenSocket(mFd)) {
       NS_WARNING("Could not set up listen socket!");
-      nsRefPtr<OnSocketEventTask> t =
-        new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
-      NS_DispatchToMainThread(t);
-      mConnectionStatus = SOCKET_DISCONNECTED;
+      FireSocketError();
       return;
     }
 
   }
 
   SetUpIO();
 }
 
 void
 UnixSocketImpl::Connect()
 {
   MOZ_ASSERT(!NS_IsMainThread());
-
-  if (!mConnector) {
-    NS_WARNING("No connector object available!");
-    return;
-  }
+  MOZ_ASSERT(mConnector);
 
   if (mFd.get() < 0) {
     mFd = mConnector->Create();
     if (mFd.get() < 0) {
+      NS_WARNING("Cannot create socket fd!");
+      FireSocketError();
       return;
     }
   }
 
   int ret;
 
   if (!mConnector->CreateAddr(false, mAddrSize, mAddr, mAddress.get())) {
     NS_WARNING("Cannot create socket address!");
+    FireSocketError();
     return;
   }
 
   // Select non-blocking IO.
   if (-1 == fcntl(mFd.get(), F_SETFL, O_NONBLOCK)) {
-    nsRefPtr<OnSocketEventTask> t =
-      new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
-    NS_DispatchToMainThread(t);
-    mConnectionStatus = SOCKET_DISCONNECTED;
+    NS_WARNING("Cannot set nonblock!");
+    FireSocketError();
     return;
   }
 
   ret = connect(mFd.get(), (struct sockaddr*)&mAddr, mAddrSize);
 
   if (ret) {
     if (errno == EINPROGRESS) {
       // Select blocking IO again, since we've now at least queue'd the connect
       // as nonblock.
       int current_opts = fcntl(mFd.get(), F_GETFL, 0);
       if (-1 == current_opts) {
         NS_WARNING("Cannot get socket opts!");
-        mFd.reset(-1);
-        nsRefPtr<OnSocketEventTask> t =
-          new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
-        NS_DispatchToMainThread(t);
-        mConnectionStatus = SOCKET_DISCONNECTED;
+        FireSocketError();
         return;
       }
       if (-1 == fcntl(mFd.get(), F_SETFL, current_opts & ~O_NONBLOCK)) {
         NS_WARNING("Cannot set socket opts to blocking!");
-        mFd.reset(-1);
-        nsRefPtr<OnSocketEventTask> t =
-          new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
-        NS_DispatchToMainThread(t);
-        mConnectionStatus = SOCKET_DISCONNECTED;
+        FireSocketError();
         return;
       }
 
       // Set up a write watch to make sure we receive the connect signal
       MessageLoopForIO::current()->WatchFileDescriptor(
         mFd.get(),
         false,
         MessageLoopForIO::WATCH_WRITE,
@@ -611,30 +620,29 @@ UnixSocketImpl::Connect()
 #ifdef DEBUG
       CHROMIUM_LOG("UnixSocket Connection delayed!");
 #endif
       return;
     }
 #if DEBUG
     CHROMIUM_LOG("Socket connect errno=%d\n", errno);
 #endif
-    mFd.reset(-1);
-    nsRefPtr<OnSocketEventTask> t =
-      new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
-    NS_DispatchToMainThread(t);
-    mConnectionStatus = SOCKET_DISCONNECTED;
+    FireSocketError();
     return;
   }
 
   if (!SetSocketFlags()) {
+    NS_WARNING("Cannot set socket flags!");
+    FireSocketError();
     return;
   }
 
   if (!mConnector->SetUp(mFd)) {
     NS_WARNING("Could not set up socket!");
+    FireSocketError();
     return;
   }
 
   nsRefPtr<OnSocketEventTask> t =
     new OnSocketEventTask(this, OnSocketEventTask::CONNECT_SUCCESS);
   NS_DispatchToMainThread(t);
   mConnectionStatus = SOCKET_CONNECTED;
 
@@ -857,40 +865,29 @@ UnixSocketImpl::OnFileCanWriteWithoutBlo
     }
   } else if (mConnectionStatus == SOCKET_CONNECTING) {
     int error, ret;
     socklen_t len = sizeof(error);
     ret = getsockopt(mFd.get(), SOL_SOCKET, SO_ERROR, &error, &len);
 
     if (ret || error) {
       NS_WARNING("getsockopt failure on async socket connect!");
-      mFd.reset(-1);
-      nsRefPtr<OnSocketEventTask> t =
-        new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
-      NS_DispatchToMainThread(t);
-      mConnectionStatus = SOCKET_DISCONNECTED;
+      FireSocketError();
       return;
     }
 
     if (!SetSocketFlags()) {
-      mFd.reset(-1);
-      nsRefPtr<OnSocketEventTask> t =
-        new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
-      NS_DispatchToMainThread(t);
-      mConnectionStatus = SOCKET_DISCONNECTED;
+      NS_WARNING("Cannot set socket flags!");
+      FireSocketError();
       return;
     }
 
     if (!mConnector->SetUp(mFd)) {
       NS_WARNING("Could not set up socket!");
-      mFd.reset(-1);
-      nsRefPtr<OnSocketEventTask> t =
-        new OnSocketEventTask(this, OnSocketEventTask::CONNECT_ERROR);
-      NS_DispatchToMainThread(t);
-      mConnectionStatus = SOCKET_DISCONNECTED;
+      FireSocketError();
       return;
     }
 
     nsRefPtr<OnSocketEventTask> t =
       new OnSocketEventTask(this, OnSocketEventTask::CONNECT_SUCCESS);
     NS_DispatchToMainThread(t);
     mConnectionStatus = SOCKET_CONNECTED;
 
--- a/mobile/android/installer/package-manifest.in
+++ b/mobile/android/installer/package-manifest.in
@@ -580,17 +580,16 @@ bin/components/@DLL_PREFIX@nkgnomevfs@DL
 @BINPATH@/components/NSSDialogService.js
 @BINPATH@/components/PromptService.js
 @BINPATH@/components/SessionStore.js
 @BINPATH@/components/Sidebar.js
 @BINPATH@/components/Snippets.js
 
 @BINPATH@/components/Payment.js
 @BINPATH@/components/PaymentFlowInfo.js
-@BINPATH@/components/PaymentRequestInfo.js
 @BINPATH@/components/Payment.manifest
 @BINPATH@/components/PaymentsUI.js
 
 #ifdef MOZ_SAFE_BROWSING
 @BINPATH@/components/SafeBrowsing.jsm
 #endif
 @BINPATH@/components/XPIDialogService.js
 @BINPATH@/components/browsercomps.xpt
--- a/netwerk/protocol/rtsp/rtsp/ARTSPConnection.cpp
+++ b/netwerk/protocol/rtsp/rtsp/ARTSPConnection.cpp
@@ -309,17 +309,17 @@ void ARTSPConnection::onConnect(const sp
         }
         close(mSocket);
         mSocket = -1;
     } else {
         reply->setInt32("result", OK);
         mState = CONNECTED;
         mNextCSeq = 1;
 
-        postReceiveReponseEvent();
+        postReceiveResponseEvent();
     }
 
     reply->post();
 }
 
 void ARTSPConnection::performDisconnect() {
     if (mUIDValid) {
         HTTPBase::UnRegisterSocketUserTag(mSocket);
@@ -411,17 +411,17 @@ void ARTSPConnection::onCompleteConnecti
         }
         close(mSocket);
         mSocket = -1;
     } else {
         reply->setInt32("result", OK);
         mState = CONNECTED;
         mNextCSeq = 1;
 
-        postReceiveReponseEvent();
+        postReceiveResponseEvent();
     }
 
     reply->post();
 }
 
 void ARTSPConnection::onSendRequest(const sp<AMessage> &msg) {
     sp<AMessage> reply;
     CHECK(msg->findMessage("reply", &reply));
@@ -506,42 +506,42 @@ void ARTSPConnection::onReceiveResponse(
     FD_SET(mSocket, &rs);
 
     int res = select(mSocket + 1, &rs, NULL, NULL, &tv);
     CHECK_GE(res, 0);
 
     if (res == 1) {
         MakeSocketBlocking(mSocket, true);
 
-        bool success = receiveRTSPReponse();
+        bool success = receiveRTSPResponse();
 
         MakeSocketBlocking(mSocket, false);
 
         if (!success) {
             // Something horrible, irreparable has happened.
             flushPendingRequests();
             return;
         }
     }
 
-    postReceiveReponseEvent();
+    postReceiveResponseEvent();
 }
 
 void ARTSPConnection::flushPendingRequests() {
     for (size_t i = 0; i < mPendingRequests.size(); ++i) {
         sp<AMessage> reply = mPendingRequests.valueAt(i);
 
         reply->setInt32("result", -ECONNABORTED);
         reply->post();
     }
 
     mPendingRequests.clear();
 }
 
-void ARTSPConnection::postReceiveReponseEvent() {
+void ARTSPConnection::postReceiveResponseEvent() {
     if (mReceiveResponseEventPending) {
         return;
     }
 
     sp<AMessage> msg = new AMessage(kWhatReceiveResponse, id());
     msg->post();
 
     mReceiveResponseEventPending = true;
@@ -616,17 +616,17 @@ sp<ABuffer> ARTSPConnection::receiveBina
 
     return buffer;
 }
 
 static bool IsRTSPVersion(const AString &s) {
     return s == "RTSP/1.0";
 }
 
-bool ARTSPConnection::receiveRTSPReponse() {
+bool ARTSPConnection::receiveRTSPResponse() {
     AString statusLine;
 
     if (!receiveLine(&statusLine)) {
         return false;
     }
 
     if (statusLine == "$") {
         sp<ABuffer> buffer = receiveBinaryData();
--- a/netwerk/protocol/rtsp/rtsp/ARTSPConnection.h
+++ b/netwerk/protocol/rtsp/rtsp/ARTSPConnection.h
@@ -97,20 +97,20 @@ private:
 
     void onConnect(const sp<AMessage> &msg);
     void onDisconnect(const sp<AMessage> &msg);
     void onCompleteConnection(const sp<AMessage> &msg);
     void onSendRequest(const sp<AMessage> &msg);
     void onReceiveResponse();
 
     void flushPendingRequests();
-    void postReceiveReponseEvent();
+    void postReceiveResponseEvent();
 
     // Return false iff something went unrecoverably wrong.
-    bool receiveRTSPReponse();
+    bool receiveRTSPResponse();
     status_t receive(void *data, size_t size);
     bool receiveLine(AString *line);
     sp<ABuffer> receiveBinaryData();
     bool notifyResponseListener(const sp<ARTSPResponse> &response);
 
     bool parseAuthMethod(const sp<ARTSPResponse> &response);
     void addAuthentication(AString *request);
 
--- a/testing/mochitest/b2g.json
+++ b/testing/mochitest/b2g.json
@@ -354,16 +354,17 @@
     "dom/tests/mochitest/localstorage/test_localStorageBase.html":"no storage chrome event received",
     "dom/tests/mochitest/localstorage/test_localStorageOriginsSchemaDiffs.html":"needs https support",
     "dom/tests/mochitest/localstorage/test_localStorageQuota.html":"needs https support",
     "dom/tests/mochitest/localstorage/test_localStorageQuotaSessionOnly.html":"needs https support",
     "dom/tests/mochitest/localstorage/test_localStorageQuotaSessionOnly2.html":"needs https support",
     "dom/tests/mochitest/sessionstorage/test_cookieSession.html":"4 failures",
     "dom/tests/mochitest/sessionstorage/test_sessionStorageBase.html":"no storage chrome event received",
     "dom/tests/mochitest/sessionstorage/test_sessionStorageBaseSessionOnly.html":"bug 967737",
+    "dom/tests/mochitest/sessionstorage/test_sessionStorageClone.html":"bug 968051",
     "dom/tests/mochitest/sessionstorage/test_sessionStorageHttpHttps.html":"needs https to work",
 
     "dom/tests/mochitest/pointerlock/test_pointerlock-api.html":"window.open focus issues (using fullscreen)",
     "dom/tests/mochitest/webapps/test_bug_779982.html":"",
     "dom/tests/mochitest/whatwg/test_postMessage_closed.html":"bug 894914 - wrong data - got FAIL, expected message",
 
     "dom/workers/test/test_suspend.html":"test timed out, might need more time",
     "dom/workers/test/test_xhr_parameters.html":"",