author | Wes Kocher <wkocher@mozilla.com> |
Wed, 08 Oct 2014 16:49:26 -0700 | |
changeset 232675 | f0bb13ef0ee488d4ece70467e4e819cb7506f5e3 |
parent 232626 | a689386944da22b83a337c63052ef0f93fb43f30 (current diff) |
parent 232674 | 7cb242688f81434e5cc450d681da90c3bf5965d4 (diff) |
child 232715 | ddbc456a8ee686327f125b94c45323a3acfe3073 |
child 232810 | 1befba96c7a5a59a8fae9d24ab89528ce61f2b18 |
child 232878 | cb23299c13c744bae7bd2812f90c8348b1c73710 |
push id | 4187 |
push user | bhearsum@mozilla.com |
push date | Fri, 28 Nov 2014 15:29:12 +0000 |
treeherder | mozilla-beta@f23cc6a30c11 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | merge |
milestone | 35.0a1 |
first release with | nightly linux32
f0bb13ef0ee4
/
35.0a1
/
20141009030201
/
files
nightly linux64
f0bb13ef0ee4
/
35.0a1
/
20141009030201
/
files
nightly mac
f0bb13ef0ee4
/
35.0a1
/
20141009030201
/
files
nightly win32
f0bb13ef0ee4
/
35.0a1
/
20141009030201
/
files
nightly win64
f0bb13ef0ee4
/
35.0a1
/
20141009030201
/
files
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
releases | nightly linux32
35.0a1
/
20141009030201
/
pushlog to previous
nightly linux64
35.0a1
/
20141009030201
/
pushlog to previous
nightly mac
35.0a1
/
20141009030201
/
pushlog to previous
nightly win32
35.0a1
/
20141009030201
/
pushlog to previous
nightly win64
35.0a1
/
20141009030201
/
pushlog to previous
|
--- a/b2g/config/dolphin/sources.xml +++ b/b2g/config/dolphin/sources.xml @@ -10,19 +10,19 @@ <!--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="3a2947df41a480de1457a6dcdbf46ad0af70d8e0"> <copyfile dest="Makefile" src="core/root.mk"/> </project> - <project name="gaia" path="gaia" remote="mozillaorg" revision="2665e714beea5dc433862ca6bb8d2b47ffe2f2d1"/> + <project name="gaia" path="gaia" remote="mozillaorg" revision="7b92615bdc97e5c675cd385ec68bc5e47e0c5288"/> <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/> - <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="5883a99b6528ced9dafaed8d3ca2405fb285537e"/> + <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="a42f56ffac1c52e5bbc82143a949feeed359d528"/> <project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/> <project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/> <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/> <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/> <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/> <project name="apitrace" path="external/apitrace" remote="apitrace" revision="6ca2008ac50b163d31244ef9f036cb224f4f229b"/> <!-- Stock Android things --> <project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
--- a/b2g/config/emulator-ics/sources.xml +++ b/b2g/config/emulator-ics/sources.xml @@ -14,18 +14,18 @@ <!--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="84923f1940625c47ff4c1fdf01b10fde3b7d909e"> <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="2665e714beea5dc433862ca6bb8d2b47ffe2f2d1"/> - <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="5883a99b6528ced9dafaed8d3ca2405fb285537e"/> + <project name="gaia.git" path="gaia" remote="mozillaorg" revision="7b92615bdc97e5c675cd385ec68bc5e47e0c5288"/> + <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="a42f56ffac1c52e5bbc82143a949feeed359d528"/> <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/> <project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="cd88d860656c31c7da7bb310d6a160d0011b0961"/> <project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="c058843242068d0df7c107e09da31b53d2e08fa6"/> <project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/> <project name="apitrace" path="external/apitrace" remote="apitrace" revision="6ca2008ac50b163d31244ef9f036cb224f4f229b"/> <!-- 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 @@ -12,18 +12,18 @@ <!--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="8986df0f82e15ac2798df0b6c2ee3435400677ac"> <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="2665e714beea5dc433862ca6bb8d2b47ffe2f2d1"/> - <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="5883a99b6528ced9dafaed8d3ca2405fb285537e"/> + <project name="gaia" path="gaia" remote="mozillaorg" revision="7b92615bdc97e5c675cd385ec68bc5e47e0c5288"/> + <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="a42f56ffac1c52e5bbc82143a949feeed359d528"/> <project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/> <project name="apitrace" path="external/apitrace" remote="apitrace" revision="6ca2008ac50b163d31244ef9f036cb224f4f229b"/> <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"/> <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-kk/sources.xml +++ b/b2g/config/emulator-kk/sources.xml @@ -10,19 +10,19 @@ <!--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="3a2947df41a480de1457a6dcdbf46ad0af70d8e0"> <copyfile dest="Makefile" src="core/root.mk"/> </project> - <project name="gaia" path="gaia" remote="mozillaorg" revision="2665e714beea5dc433862ca6bb8d2b47ffe2f2d1"/> + <project name="gaia" path="gaia" remote="mozillaorg" revision="7b92615bdc97e5c675cd385ec68bc5e47e0c5288"/> <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/> - <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="5883a99b6528ced9dafaed8d3ca2405fb285537e"/> + <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="a42f56ffac1c52e5bbc82143a949feeed359d528"/> <project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/> <project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/> <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/> <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/> <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/> <project name="apitrace" path="external/apitrace" remote="apitrace" revision="6ca2008ac50b163d31244ef9f036cb224f4f229b"/> <!-- Stock Android things --> <project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="f92a936f2aa97526d4593386754bdbf02db07a12"/>
--- a/b2g/config/emulator/sources.xml +++ b/b2g/config/emulator/sources.xml @@ -14,18 +14,18 @@ <!--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="84923f1940625c47ff4c1fdf01b10fde3b7d909e"> <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="2665e714beea5dc433862ca6bb8d2b47ffe2f2d1"/> - <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="5883a99b6528ced9dafaed8d3ca2405fb285537e"/> + <project name="gaia.git" path="gaia" remote="mozillaorg" revision="7b92615bdc97e5c675cd385ec68bc5e47e0c5288"/> + <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="a42f56ffac1c52e5bbc82143a949feeed359d528"/> <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/> <project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="cd88d860656c31c7da7bb310d6a160d0011b0961"/> <project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="c058843242068d0df7c107e09da31b53d2e08fa6"/> <project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/> <project name="apitrace" path="external/apitrace" remote="apitrace" revision="6ca2008ac50b163d31244ef9f036cb224f4f229b"/> <!-- Stock Android things --> <project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/> <project name="platform/bionic" path="bionic" revision="c72b8f6359de7ed17c11ddc9dfdde3f615d188a9"/>
--- a/b2g/config/flame-kk/sources.xml +++ b/b2g/config/flame-kk/sources.xml @@ -10,19 +10,19 @@ <!--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="3a2947df41a480de1457a6dcdbf46ad0af70d8e0"> <copyfile dest="Makefile" src="core/root.mk"/> </project> - <project name="gaia" path="gaia" remote="mozillaorg" revision="2665e714beea5dc433862ca6bb8d2b47ffe2f2d1"/> + <project name="gaia" path="gaia" remote="mozillaorg" revision="7b92615bdc97e5c675cd385ec68bc5e47e0c5288"/> <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/> - <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="5883a99b6528ced9dafaed8d3ca2405fb285537e"/> + <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="a42f56ffac1c52e5bbc82143a949feeed359d528"/> <project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/> <project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/> <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/> <project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/> <project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/> <project name="apitrace" path="external/apitrace" remote="apitrace" revision="6ca2008ac50b163d31244ef9f036cb224f4f229b"/> <!-- Stock Android things --> <project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
--- a/b2g/config/flame/sources.xml +++ b/b2g/config/flame/sources.xml @@ -12,18 +12,18 @@ <!--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="8986df0f82e15ac2798df0b6c2ee3435400677ac"> <copyfile dest="Makefile" src="core/root.mk"/> </project> <project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/> <project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/> - <project name="gaia" path="gaia" remote="mozillaorg" revision="2665e714beea5dc433862ca6bb8d2b47ffe2f2d1"/> - <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="5883a99b6528ced9dafaed8d3ca2405fb285537e"/> + <project name="gaia" path="gaia" remote="mozillaorg" revision="7b92615bdc97e5c675cd385ec68bc5e47e0c5288"/> + <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="a42f56ffac1c52e5bbc82143a949feeed359d528"/> <project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/> <project name="apitrace" path="external/apitrace" remote="apitrace" revision="6ca2008ac50b163d31244ef9f036cb224f4f229b"/> <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"/> <project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="95bb5b66b3ec5769c3de8d3f25d681787418e7d2"/>
--- a/b2g/config/gaia.json +++ b/b2g/config/gaia.json @@ -1,9 +1,9 @@ { "git": { "git_revision": "", "remote": "", "branch": "" }, - "revision": "3adc8626bd88ae4a8782d2f478656e8d52d805c2", + "revision": "9d8c254abad2ceaad8f1ae22a18e0f36af5860c4", "repo_path": "/integration/gaia-central" }
--- a/b2g/config/hamachi/sources.xml +++ b/b2g/config/hamachi/sources.xml @@ -12,18 +12,18 @@ <!--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="84923f1940625c47ff4c1fdf01b10fde3b7d909e"> <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="2665e714beea5dc433862ca6bb8d2b47ffe2f2d1"/> - <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="5883a99b6528ced9dafaed8d3ca2405fb285537e"/> + <project name="gaia.git" path="gaia" remote="mozillaorg" revision="7b92615bdc97e5c675cd385ec68bc5e47e0c5288"/> + <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="a42f56ffac1c52e5bbc82143a949feeed359d528"/> <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/> <project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/> <project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/> <project name="apitrace" path="external/apitrace" remote="apitrace" revision="6ca2008ac50b163d31244ef9f036cb224f4f229b"/> <!-- 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 @@ -10,18 +10,18 @@ <!--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="84923f1940625c47ff4c1fdf01b10fde3b7d909e"> <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="2665e714beea5dc433862ca6bb8d2b47ffe2f2d1"/> - <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="5883a99b6528ced9dafaed8d3ca2405fb285537e"/> + <project name="gaia.git" path="gaia" remote="mozillaorg" revision="7b92615bdc97e5c675cd385ec68bc5e47e0c5288"/> + <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="a42f56ffac1c52e5bbc82143a949feeed359d528"/> <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/> <project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/> <project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/> <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/nexus-4/sources.xml +++ b/b2g/config/nexus-4/sources.xml @@ -12,18 +12,18 @@ <!--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="8986df0f82e15ac2798df0b6c2ee3435400677ac"> <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="2665e714beea5dc433862ca6bb8d2b47ffe2f2d1"/> - <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="5883a99b6528ced9dafaed8d3ca2405fb285537e"/> + <project name="gaia" path="gaia" remote="mozillaorg" revision="7b92615bdc97e5c675cd385ec68bc5e47e0c5288"/> + <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="a42f56ffac1c52e5bbc82143a949feeed359d528"/> <project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/> <project name="apitrace" path="external/apitrace" remote="apitrace" revision="6ca2008ac50b163d31244ef9f036cb224f4f229b"/> <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"/> <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 @@ -12,18 +12,18 @@ <!--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="84923f1940625c47ff4c1fdf01b10fde3b7d909e"> <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="2665e714beea5dc433862ca6bb8d2b47ffe2f2d1"/> - <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="5883a99b6528ced9dafaed8d3ca2405fb285537e"/> + <project name="gaia.git" path="gaia" remote="mozillaorg" revision="7b92615bdc97e5c675cd385ec68bc5e47e0c5288"/> + <project name="gonk-misc" path="gonk-misc" remote="b2g" revision="a42f56ffac1c52e5bbc82143a949feeed359d528"/> <project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/> <project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/> <project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/> <project name="apitrace" path="external/apitrace" remote="apitrace" revision="6ca2008ac50b163d31244ef9f036cb224f4f229b"/> <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/dom/apps/Webapps.jsm +++ b/dom/apps/Webapps.jsm @@ -1823,16 +1823,20 @@ this.DOMApplicationRegistry = { // aOldManifest can be null if we don't have any handler to unregister. updateAppHandlers: function(aOldManifest, aNewManifest, aApp) { debug("updateAppHandlers: old=" + aOldManifest + " new=" + aNewManifest); this.notifyAppsRegistryStart(); if (aApp.appStatus >= Ci.nsIPrincipal.APP_STATUS_PRIVILEGED) { aApp.redirects = this.sanitizeRedirects(aNewManifest.redirects); } + let manifest = + new ManifestHelper(aNewManifest, aApp.origin, aApp.manifestURL); + this._saveWidgetsFullPath(manifest, aApp); + if (supportSystemMessages()) { if (aOldManifest) { this._unregisterActivities(aOldManifest, aApp); } this._registerSystemMessages(aNewManifest, aApp); this._registerActivities(aNewManifest, aApp, true); this._registerInterAppConnections(aNewManifest, aApp); } else { @@ -2166,17 +2170,16 @@ this.DOMApplicationRegistry = { }, true); } this.updateDataStore(this.webapps[aId].localId, aApp.origin, aApp.manifestURL, aApp.manifest); aApp.name = aNewManifest.name; aApp.csp = manifest.csp || ""; - this._saveWidgetsFullPath(manifest, aApp); aApp.updateTime = Date.now(); } // Update the registry. this.webapps[aId] = aApp; yield this._saveApps(); if ((aApp.kind !== this.kHostedAppcache &&
new file mode 100644 --- /dev/null +++ b/dom/icc/Assertions.cpp @@ -0,0 +1,49 @@ +/* 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 "mozilla/dom/MozIccBinding.h" +#include "nsIIccProvider.h" + +namespace mozilla { +namespace dom { + +#define ASSERT_ICC_CARD_STATE_EQUALITY(webidlState, xpidlState) \ + static_assert(static_cast<uint32_t>(IccCardState::webidlState) == nsIIccProvider::xpidlState, \ + "IccCardState::" #webidlState " should equal to nsIIccProvider::" #xpidlState) + +ASSERT_ICC_CARD_STATE_EQUALITY(Unknown, CARD_STATE_UNKNOWN); +ASSERT_ICC_CARD_STATE_EQUALITY(Ready, CARD_STATE_READY); +ASSERT_ICC_CARD_STATE_EQUALITY(PinRequired, CARD_STATE_PIN_REQUIRED); +ASSERT_ICC_CARD_STATE_EQUALITY(PukRequired, CARD_STATE_PUK_REQUIRED); +ASSERT_ICC_CARD_STATE_EQUALITY(PermanentBlocked, CARD_STATE_PERMANENT_BLOCKED); +ASSERT_ICC_CARD_STATE_EQUALITY(PersonalizationInProgress, CARD_STATE_PERSONALIZATION_IN_PROGRESS); +ASSERT_ICC_CARD_STATE_EQUALITY(PersonalizationReady, CARD_STATE_PERSONALIZATION_READY); +ASSERT_ICC_CARD_STATE_EQUALITY(NetworkLocked, CARD_STATE_NETWORK_LOCKED); +ASSERT_ICC_CARD_STATE_EQUALITY(NetworkSubsetLocked, CARD_STATE_NETWORK_SUBSET_LOCKED); +ASSERT_ICC_CARD_STATE_EQUALITY(CorporateLocked, CARD_STATE_CORPORATE_LOCKED); +ASSERT_ICC_CARD_STATE_EQUALITY(ServiceProviderLocked, CARD_STATE_SERVICE_PROVIDER_LOCKED); +ASSERT_ICC_CARD_STATE_EQUALITY(SimPersonalizationLocked, CARD_STATE_SIM_LOCKED); +ASSERT_ICC_CARD_STATE_EQUALITY(NetworkPukRequired, CARD_STATE_NETWORK_PUK_REQUIRED); +ASSERT_ICC_CARD_STATE_EQUALITY(NetworkSubsetPukRequired, CARD_STATE_NETWORK_SUBSET_PUK_REQUIRED); +ASSERT_ICC_CARD_STATE_EQUALITY(CorporatePukRequired, CARD_STATE_CORPORATE_PUK_REQUIRED); +ASSERT_ICC_CARD_STATE_EQUALITY(ServiceProviderPukRequired, CARD_STATE_SERVICE_PROVIDER_PUK_REQUIRED); +ASSERT_ICC_CARD_STATE_EQUALITY(SimPersonalizationPukRequired, CARD_STATE_SIM_PUK_REQUIRED); +ASSERT_ICC_CARD_STATE_EQUALITY(Network1Locked, CARD_STATE_NETWORK1_LOCKED); +ASSERT_ICC_CARD_STATE_EQUALITY(Network2Locked, CARD_STATE_NETWORK2_LOCKED); +ASSERT_ICC_CARD_STATE_EQUALITY(HrpdNetworkLocked, CARD_STATE_HRPD_NETWORK_LOCKED); +ASSERT_ICC_CARD_STATE_EQUALITY(RuimCorporateLocked, CARD_STATE_RUIM_CORPORATE_LOCKED); +ASSERT_ICC_CARD_STATE_EQUALITY(RuimServiceProviderLocked, CARD_STATE_RUIM_SERVICE_PROVIDER_LOCKED); +ASSERT_ICC_CARD_STATE_EQUALITY(RuimPersonalizationLocked, CARD_STATE_RUIM_LOCKED); +ASSERT_ICC_CARD_STATE_EQUALITY(Network1PukRequired, CARD_STATE_NETWORK1_PUK_REQUIRED); +ASSERT_ICC_CARD_STATE_EQUALITY(Network2PukRequired, CARD_STATE_NETWORK2_PUK_REQUIRED); +ASSERT_ICC_CARD_STATE_EQUALITY(HrpdNetworkPukRequired, CARD_STATE_HRPD_NETWORK_PUK_REQUIRED); +ASSERT_ICC_CARD_STATE_EQUALITY(RuimCorporatePukRequired, CARD_STATE_RUIM_CORPORATE_PUK_REQUIRED); +ASSERT_ICC_CARD_STATE_EQUALITY(RuimServiceProviderPukRequired, CARD_STATE_RUIM_SERVICE_PROVIDER_PUK_REQUIRED); +ASSERT_ICC_CARD_STATE_EQUALITY(RuimPersonalizationPukRequired, CARD_STATE_RUIM_PUK_REQUIRED); +ASSERT_ICC_CARD_STATE_EQUALITY(Illegal, CARD_STATE_ILLEGAL); + +#undef ASSERT_ICC_CARD_STATE_EQUALITY + +} // namespace dom +} // namespace mozilla
--- a/dom/icc/Icc.cpp +++ b/dom/icc/Icc.cpp @@ -1,17 +1,16 @@ /* 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 "mozilla/dom/Icc.h" #include "mozilla/dom/DOMRequest.h" #include "mozilla/dom/IccInfo.h" -#include "mozilla/dom/MozIccBinding.h" #include "mozilla/dom/MozStkCommandEvent.h" #include "mozilla/dom/ScriptSettings.h" #include "nsIIccInfo.h" #include "nsIIccProvider.h" #include "nsJSON.h" #include "nsRadioInterfaceLayer.h" #include "nsServiceManagerUtils.h" @@ -131,29 +130,30 @@ Icc::WrapObject(JSContext* aCx) // MozIcc WebIDL void Icc::GetIccInfo(Nullable<OwningMozIccInfoOrMozGsmIccInfoOrMozCdmaIccInfo>& aIccInfo) const { aIccInfo = mIccInfo; } -void -Icc::GetCardState(nsString& aCardState) const +Nullable<IccCardState> +Icc::GetCardState() const { - aCardState.SetIsVoid(true); + Nullable<IccCardState> result; - if (!mProvider) { - return; + uint32_t cardState = nsIIccProvider::CARD_STATE_UNDETECTED; + if (mProvider && + NS_SUCCEEDED(mProvider->GetCardState(mClientId, &cardState)) && + cardState != nsIIccProvider::CARD_STATE_UNDETECTED) { + MOZ_ASSERT(cardState < static_cast<uint32_t>(IccCardState::EndGuard_)); + result.SetValue(static_cast<IccCardState>(cardState)); } - nsresult rv = mProvider->GetCardState(mClientId, aCardState); - if (NS_FAILED(rv)) { - aCardState.SetIsVoid(true); - } + return result; } void Icc::SendStkResponse(const JSContext* aCx, JS::Handle<JS::Value> aCommand, JS::Handle<JS::Value> aResponse, ErrorResult& aRv) { if (!mProvider) { aRv.Throw(NS_ERROR_FAILURE);
--- a/dom/icc/Icc.h +++ b/dom/icc/Icc.h @@ -1,15 +1,16 @@ /* 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/. */ #ifndef mozilla_dom_Icc_h #define mozilla_dom_Icc_h +#include "mozilla/dom/MozIccBinding.h" // For IccCardState #include "mozilla/dom/UnionTypes.h" #include "mozilla/DOMEventTargetHelper.h" class nsIIccInfo; class nsIIccProvider; namespace mozilla { namespace dom { @@ -52,18 +53,18 @@ public: // WrapperCache virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE; // MozIcc WebIDL void GetIccInfo(Nullable<OwningMozIccInfoOrMozGsmIccInfoOrMozCdmaIccInfo>& aIccInfo) const; - void - GetCardState(nsString& aCardState) const; + Nullable<IccCardState> + GetCardState() const; void SendStkResponse(const JSContext* aCx, JS::Handle<JS::Value> aCommand, JS::Handle<JS::Value> aResponse, ErrorResult& aRv); void SendStkMenuSelection(uint16_t aItemIdentifier, bool aHelpRequested, ErrorResult& aRv);
--- a/dom/icc/interfaces/nsIIccProvider.idl +++ b/dom/icc/interfaces/nsIIccProvider.idl @@ -15,36 +15,72 @@ interface nsIIccListener : nsISupports void notifyStkSessionEnd(); void notifyCardStateChanged(); void notifyIccInfoChanged(); }; /** * XPCOM component (in the content process) that provides the ICC information. */ -[scriptable, uuid(1afa72d0-3d70-11e4-916c-0800200c9a66)] +[scriptable, uuid(bf802bf0-4df2-11e4-916c-0800200c9a66)] interface nsIIccProvider : nsISupports { + // MUST match enum IccCardState in MozIcc.webidl! + const unsigned long CARD_STATE_UNKNOWN = 0; + const unsigned long CARD_STATE_READY = 1; + const unsigned long CARD_STATE_PIN_REQUIRED = 2; + const unsigned long CARD_STATE_PUK_REQUIRED = 3; + const unsigned long CARD_STATE_PERMANENT_BLOCKED = 4; + const unsigned long CARD_STATE_PERSONALIZATION_IN_PROGRESS = 5; + const unsigned long CARD_STATE_PERSONALIZATION_READY = 6; + const unsigned long CARD_STATE_NETWORK_LOCKED = 7; + const unsigned long CARD_STATE_NETWORK_SUBSET_LOCKED = 8; + const unsigned long CARD_STATE_CORPORATE_LOCKED = 9; + const unsigned long CARD_STATE_SERVICE_PROVIDER_LOCKED = 10; + const unsigned long CARD_STATE_SIM_LOCKED = 11; + const unsigned long CARD_STATE_NETWORK_PUK_REQUIRED = 12; + const unsigned long CARD_STATE_NETWORK_SUBSET_PUK_REQUIRED = 13; + const unsigned long CARD_STATE_CORPORATE_PUK_REQUIRED = 14; + const unsigned long CARD_STATE_SERVICE_PROVIDER_PUK_REQUIRED = 15; + const unsigned long CARD_STATE_SIM_PUK_REQUIRED = 16; + const unsigned long CARD_STATE_NETWORK1_LOCKED = 17; + const unsigned long CARD_STATE_NETWORK2_LOCKED = 18; + const unsigned long CARD_STATE_HRPD_NETWORK_LOCKED = 19; + const unsigned long CARD_STATE_RUIM_CORPORATE_LOCKED = 20; + const unsigned long CARD_STATE_RUIM_SERVICE_PROVIDER_LOCKED = 21; + const unsigned long CARD_STATE_RUIM_LOCKED = 22; + const unsigned long CARD_STATE_NETWORK1_PUK_REQUIRED = 23; + const unsigned long CARD_STATE_NETWORK2_PUK_REQUIRED = 24; + const unsigned long CARD_STATE_HRPD_NETWORK_PUK_REQUIRED = 25; + const unsigned long CARD_STATE_RUIM_CORPORATE_PUK_REQUIRED = 26; + const unsigned long CARD_STATE_RUIM_SERVICE_PROVIDER_PUK_REQUIRED = 27; + const unsigned long CARD_STATE_RUIM_PUK_REQUIRED = 28; + const unsigned long CARD_STATE_ILLEGAL = 29; + + const unsigned long CARD_STATE_UNDETECTED = 4294967295; // UINT32_MAX + /** * Called when a content process registers receiving unsolicited messages from * RadioInterfaceLayer in the chrome process. Only a content process that has * the 'mobileconnection' permission is allowed to register. */ void registerIccMsg(in unsigned long clientId, in nsIIccListener listener); void unregisterIccMsg(in unsigned long clientId, in nsIIccListener listener); /** * UICC Information */ nsIIccInfo getIccInfo(in unsigned long clientId); /** * Card State + * + * One of the nsIIccProvider.CARD_STATE_* values. */ - DOMString getCardState(in unsigned long clientId); + unsigned long getCardState(in unsigned long clientId); /** * STK interfaces. */ void sendStkResponse(in unsigned long clientId, in nsIDOMWindow window, in jsval command, in jsval response);
--- a/dom/icc/moz.build +++ b/dom/icc/moz.build @@ -8,16 +8,17 @@ DIRS += ['interfaces'] EXPORTS.mozilla.dom += [ 'Icc.h', 'IccInfo.h', 'IccManager.h', ] UNIFIED_SOURCES += [ + 'Assertions.cpp', 'Icc.cpp', "IccInfo.cpp", 'IccListener.cpp', 'IccManager.cpp', ] FAIL_ON_WARNINGS = True
--- a/dom/mobilemessage/gonk/MmsService.js +++ b/dom/mobilemessage/gonk/MmsService.js @@ -415,17 +415,18 @@ MmsConnection.prototype = { // MMS request and try to setup the MMS network first. if (!this.connected) { this.pendingCallbacks.push(callback); let errorStatus; if (getRadioDisabledState()) { if (DEBUG) debug("Error! Radio is disabled when sending MMS."); errorStatus = _HTTP_STATUS_RADIO_DISABLED; - } else if (this.radioInterface.rilContext.cardState != "ready") { + } else if (this.radioInterface.rilContext.cardState != + Ci.nsIIccProvider.CARD_STATE_READY) { if (DEBUG) debug("Error! SIM card is not ready when sending MMS."); errorStatus = _HTTP_STATUS_NO_SIM_CARD; } if (errorStatus != null) { this.flushPendingCallbacks(errorStatus); return true; }
--- a/dom/system/gonk/MozMtpDatabase.cpp +++ b/dom/system/gonk/MozMtpDatabase.cpp @@ -262,42 +262,41 @@ MozMtpDatabase::FileWatcherUpdate(RefCou aFile->mFile->GetPath(wideFilePath); NS_ConvertUTF16toUTF8 filePath(wideFilePath); nsCString evtType(aEventType); MTP_LOG("file %s %s", filePath.get(), evtType.get()); MtpObjectHandle entryHandle = FindEntryByPath(filePath); - if (aEventType.EqualsLiteral("created")) { + if (aEventType.EqualsLiteral("modified")) { + // To update the file information to the newest, we remove the entry for + // the existing file, then re-add the entry for the file. if (entryHandle != 0) { - // The entry already exists. This means that we're being notified - // about a file added by MTP. So we can ignore it. - - return; + MTP_LOG("About to call sendObjectRemoved Handle 0x%08x file %s", entryHandle, filePath.get()); + aMtpServer->sendObjectRemoved(entryHandle); + RemoveEntry(entryHandle); } entryHandle = CreateEntryForFile(filePath, aFile); if (entryHandle == 0) { - // CreateEntryForFile didn't create a new entry. We can't tell MTP. + // creating entry for the file failed, don't tell MTP return; } MTP_LOG("About to call sendObjectAdded Handle 0x%08x file %s", entryHandle, filePath.get()); aMtpServer->sendObjectAdded(entryHandle); return; } if (aEventType.EqualsLiteral("deleted")) { if (entryHandle == 0) { // The entry has already been removed. We can't tell MTP. return; } - MTP_LOG("About to call sendObjectRemoved Handle 0x%08x file %s", entryHandle, filePath.get()); aMtpServer->sendObjectRemoved(entryHandle); - RemoveEntry(entryHandle); return; } } nsCString MozMtpDatabase::BaseName(const nsCString& path) { @@ -611,21 +610,17 @@ MozMtpDatabase::endSendObject(const char MtpObjectFormat aFormat, bool aSucceeded) { MTP_LOG("Handle: 0x%08x Path: '%s'", aHandle, aPath); if (aSucceeded) { RefPtr<DbEntry> entry = GetEntry(aHandle); if (entry) { - if (mBeginSendObjectCalled) { - FileWatcherNotify(entry, "created"); - } else { - FileWatcherNotify(entry, "modified"); - } + FileWatcherNotify(entry, "modified"); } } else { RemoveEntry(aHandle); } mBeginSendObjectCalled = false; } //virtual
--- a/dom/system/gonk/MozMtpServer.cpp +++ b/dom/system/gonk/MozMtpServer.cpp @@ -103,18 +103,19 @@ public: MOZ_ASSERT(NS_IsMainThread()); if (strcmp(aTopic, "file-watcher-update")) { // We're only interested in file-watcher-update events return NS_OK; } NS_ConvertUTF16toUTF8 eventType(aData); - if (!eventType.EqualsLiteral("created") && !eventType.EqualsLiteral("deleted")) { - // MTP doesn't have a modified notification. + if (!eventType.EqualsLiteral("modified") && !eventType.EqualsLiteral("deleted")) { + // Bug 1074604: Needn't handle "created" event, once file operation + // finished, it would trigger "modified" event. return NS_OK; } DeviceStorageFile* file = static_cast<DeviceStorageFile*>(aSubject); file->Dump("file-watcher-update"); MTP_LOG("file-watcher-update: file %s %s", NS_LossyConvertUTF16toASCII(file->mPath).get(), eventType.get());
--- a/dom/system/gonk/RILContentHelper.js +++ b/dom/system/gonk/RILContentHelper.js @@ -154,18 +154,18 @@ function RILContentHelper() { this.updateDebugFlag(); this.numClients = gNumRadioInterfaces; if (DEBUG) debug("Number of clients: " + this.numClients); this.rilContexts = []; for (let clientId = 0; clientId < this.numClients; clientId++) { this.rilContexts[clientId] = { - cardState: RIL.GECKO_CARDSTATE_UNKNOWN, - iccInfo: null + cardState: Ci.nsIIccProvider.CARD_STATE_UNKNOWN, + iccInfo: null }; } this.initDOMRequestHelper(/* aWindow */ null, RIL_IPC_MSG_NAMES); this._windowsMap = []; this._iccListeners = []; Services.obs.addObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID, false);
--- a/dom/system/gonk/RadioInterfaceLayer.js +++ b/dom/system/gonk/RadioInterfaceLayer.js @@ -495,18 +495,18 @@ XPCOMUtils.defineLazyGetter(this, "gRadi numCards++; } } return numCards; }, _isCardPresentAtClient: function(clientId) { let cardState = _ril.getRadioInterface(clientId).rilContext.cardState; - return cardState !== RIL.GECKO_CARDSTATE_UNDETECTED && - cardState !== RIL.GECKO_CARDSTATE_UNKNOWN; + return cardState !== Ci.nsIIccProvider.CARD_STATE_UNDETECTED && + cardState !== Ci.nsIIccProvider.CARD_STATE_UNKNOWN; }, _isRadioAbleToEnableAtClient: function(clientId, numCards) { if (!RILQUIRKS_RADIO_OFF_WO_CARD) { return true; } // We could only turn on the radio for clientId if @@ -1795,17 +1795,17 @@ function RadioInterface(aClientId, aWork this.workerMessenger = { send: aWorkerMessenger.send.bind(aWorkerMessenger, aClientId), sendWithIPCMessage: aWorkerMessenger.sendWithIPCMessage.bind(aWorkerMessenger, aClientId), }; aWorkerMessenger.registerClient(aClientId, this); this.rilContext = { - cardState: RIL.GECKO_CARDSTATE_UNKNOWN, + cardState: Ci.nsIIccProvider.CARD_STATE_UNKNOWN, iccInfo: null, imsi: null }; this.operatorInfo = {}; let lock = gSettingsService.createLock(); @@ -3631,17 +3631,17 @@ RadioInterface.prototype = { if (!PhoneNumberUtils.isPlainPhoneNumber(options.number)) { if (DEBUG) this.debug("Error! Address is invalid when sending SMS: " + options.number); errorCode = Ci.nsIMobileMessageCallback.INVALID_ADDRESS_ERROR; } else if (radioState == null || radioState == RIL.GECKO_RADIOSTATE_DISABLED) { if (DEBUG) this.debug("Error! Radio is disabled when sending SMS."); errorCode = Ci.nsIMobileMessageCallback.RADIO_DISABLED_ERROR; - } else if (this.rilContext.cardState != "ready") { + } else if (this.rilContext.cardState != Ci.nsIIccProvider.CARD_STATE_READY) { if (DEBUG) this.debug("Error! SIM card is not ready when sending SMS."); errorCode = Ci.nsIMobileMessageCallback.NO_SIM_CARD_ERROR; } if (errorCode) { if (silent) { request.notifySendMessageFailed(errorCode, domMessage); return; }
--- a/dom/system/gonk/nsIRadioInterfaceLayer.idl +++ b/dom/system/gonk/nsIRadioInterfaceLayer.idl @@ -18,20 +18,23 @@ interface nsIRilNetworkInterface : nsINe readonly attribute DOMString iccId; /* The following attributes are for MMS proxy settings. */ readonly attribute DOMString mmsc; // Empty string if not set. readonly attribute DOMString mmsProxy; // Empty string if not set. readonly attribute long mmsPort; // -1 if not set. }; -[scriptable, uuid(08a69c70-34b1-11e4-8c21-0800200c9a66)] +[scriptable, uuid(4441e660-4ad0-11e4-916c-0800200c9a66)] interface nsIRilContext : nsISupports { - readonly attribute DOMString cardState; + /** + * One of the nsIIccProvider.CARD_STATE_* values. + */ + readonly attribute unsigned long cardState; readonly attribute DOMString imsi; readonly attribute nsIIccInfo iccInfo; }; [scriptable, function, uuid(3bc96351-53b0-47a1-a888-c74c64b60f25)] interface nsIRilSendWorkerMessageCallback : nsISupports
--- a/dom/system/gonk/ril_consts.js +++ b/dom/system/gonk/ril_consts.js @@ -2487,48 +2487,50 @@ this.CALL_FAIL_ERROR_UNSPECIFIED = 0xfff // Other Gecko-specific constants this.GECKO_RADIOSTATE_UNKNOWN = null; this.GECKO_RADIOSTATE_ENABLING = "enabling"; this.GECKO_RADIOSTATE_ENABLED = "enabled"; this.GECKO_RADIOSTATE_DISABLING = "disabling"; this.GECKO_RADIOSTATE_DISABLED = "disabled"; -this.GECKO_CARDSTATE_UNINITIALIZED = "uninitialized"; -this.GECKO_CARDSTATE_UNDETECTED = null; -this.GECKO_CARDSTATE_ILLEGAL = "illegal"; -this.GECKO_CARDSTATE_UNKNOWN = "unknown"; -this.GECKO_CARDSTATE_PIN_REQUIRED = "pinRequired"; -this.GECKO_CARDSTATE_PUK_REQUIRED = "pukRequired"; -this.GECKO_CARDSTATE_PERSONALIZATION_IN_PROGRESS = "personalizationInProgress"; -this.GECKO_CARDSTATE_PERSONALIZATION_READY = "personalizationReady"; -this.GECKO_CARDSTATE_NETWORK_LOCKED = "networkLocked"; -this.GECKO_CARDSTATE_NETWORK_SUBSET_LOCKED = "networkSubsetLocked"; -this.GECKO_CARDSTATE_NETWORK1_LOCKED = "network1Locked"; -this.GECKO_CARDSTATE_NETWORK2_LOCKED = "network2Locked"; -this.GECKO_CARDSTATE_HRPD_NETWORK_LOCKED = "hrpdNetworkLocked"; -this.GECKO_CARDSTATE_CORPORATE_LOCKED = "corporateLocked"; -this.GECKO_CARDSTATE_SERVICE_PROVIDER_LOCKED = "serviceProviderLocked"; -this.GECKO_CARDSTATE_SIM_LOCKED = "simPersonalizationLock"; -this.GECKO_CARDSTATE_RUIM_CORPORATE_LOCKED = "ruimCorporateLocked"; -this.GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_LOCKED = "ruimServiceProviderLocked"; -this.GECKO_CARDSTATE_RUIM_LOCKED = "ruimPersonalizationLock"; -this.GECKO_CARDSTATE_NETWORK_PUK_REQUIRED = "networkPukRequired"; -this.GECKO_CARDSTATE_NETWORK_SUBSET_PUK_REQUIRED = "networkSubsetPukRequired"; -this.GECKO_CARDSTATE_NETWORK1_PUK_REQUIRED = "network1PukRequired"; -this.GECKO_CARDSTATE_NETWORK2_PUK_REQUIRED = "network2PukRequired"; -this.GECKO_CARDSTATE_HRPD_NETWORK_PUK_REQUIRED = "hrpdNetworkPukRequired"; -this.GECKO_CARDSTATE_CORPORATE_PUK_REQUIRED = "corporatePukRequired"; -this.GECKO_CARDSTATE_SERVICE_PROVIDER_PUK_REQUIRED = "serviceProviderPukRequired"; -this.GECKO_CARDSTATE_SIM_PUK_REQUIRED = "simPersonalizationPukRequired"; -this.GECKO_CARDSTATE_RUIM_CORPORATE_PUK_REQUIRED = "ruimCorporatePukRequired"; -this.GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_PUK_REQUIRED = "ruimServiceProviderPukRequired"; -this.GECKO_CARDSTATE_RUIM_PUK_REQUIRED = "ruimPersonalizationPukRequired"; -this.GECKO_CARDSTATE_READY = "ready"; -this.GECKO_CARDSTATE_PERMANENT_BLOCKED = "permanentBlocked"; +// Only used in ril_worker.js +this.GECKO_CARDSTATE_UNINITIALIZED = 4294967294; // UINT32_MAX - 1 +// See nsIIccProvider::CARD_STATE_* +this.GECKO_CARDSTATE_UNDETECTED = 4294967295; // UINT32_MAX +this.GECKO_CARDSTATE_UNKNOWN = 0; +this.GECKO_CARDSTATE_READY = 1; +this.GECKO_CARDSTATE_PIN_REQUIRED = 2; +this.GECKO_CARDSTATE_PUK_REQUIRED = 3; +this.GECKO_CARDSTATE_PERMANENT_BLOCKED = 4; +this.GECKO_CARDSTATE_PERSONALIZATION_IN_PROGRESS = 5; +this.GECKO_CARDSTATE_PERSONALIZATION_READY = 6; +this.GECKO_CARDSTATE_NETWORK_LOCKED = 7; +this.GECKO_CARDSTATE_NETWORK_SUBSET_LOCKED = 8; +this.GECKO_CARDSTATE_CORPORATE_LOCKED = 9; +this.GECKO_CARDSTATE_SERVICE_PROVIDER_LOCKED = 10; +this.GECKO_CARDSTATE_SIM_LOCKED = 11; +this.GECKO_CARDSTATE_NETWORK_PUK_REQUIRED = 12; +this.GECKO_CARDSTATE_NETWORK_SUBSET_PUK_REQUIRED = 13; +this.GECKO_CARDSTATE_CORPORATE_PUK_REQUIRED = 14; +this.GECKO_CARDSTATE_SERVICE_PROVIDER_PUK_REQUIRED = 15; +this.GECKO_CARDSTATE_SIM_PUK_REQUIRED = 16; +this.GECKO_CARDSTATE_NETWORK1_LOCKED = 17; +this.GECKO_CARDSTATE_NETWORK2_LOCKED = 18; +this.GECKO_CARDSTATE_HRPD_NETWORK_LOCKED = 19; +this.GECKO_CARDSTATE_RUIM_CORPORATE_LOCKED = 20; +this.GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_LOCKED = 21; +this.GECKO_CARDSTATE_RUIM_LOCKED = 22; +this.GECKO_CARDSTATE_NETWORK1_PUK_REQUIRED = 23; +this.GECKO_CARDSTATE_NETWORK2_PUK_REQUIRED = 24; +this.GECKO_CARDSTATE_HRPD_NETWORK_PUK_REQUIRED = 25; +this.GECKO_CARDSTATE_RUIM_CORPORATE_PUK_REQUIRED = 26; +this.GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_PUK_REQUIRED = 27; +this.GECKO_CARDSTATE_RUIM_PUK_REQUIRED = 28; +this.GECKO_CARDSTATE_ILLEGAL = 29; this.GECKO_CARDLOCK_PIN = "pin"; this.GECKO_CARDLOCK_PIN2 = "pin2"; this.GECKO_CARDLOCK_PUK = "puk"; this.GECKO_CARDLOCK_PUK2 = "puk2"; this.GECKO_CARDLOCK_FDN = "fdn"; this.GECKO_CARDLOCK_NCK = "nck"; this.GECKO_CARDLOCK_NCK1 = "nck1"; @@ -2556,16 +2558,17 @@ PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_NE PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_NETWORK_SUBSET] = GECKO_CARDSTATE_NETWORK_SUBSET_LOCKED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_CORPORATE] = GECKO_CARDSTATE_CORPORATE_LOCKED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER] = GECKO_CARDSTATE_SERVICE_PROVIDER_LOCKED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_SIM] = GECKO_CARDSTATE_SIM_LOCKED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_NETWORK_PUK] = GECKO_CARDSTATE_NETWORK_PUK_REQUIRED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK] = GECKO_CARDSTATE_NETWORK_SUBSET_PUK_REQUIRED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_CORPORATE_PUK] = GECKO_CARDSTATE_CORPORATE_PUK_REQUIRED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK] = GECKO_CARDSTATE_SERVICE_PROVIDER_PUK_REQUIRED; +PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_SIM_PUK] = GECKO_CARDSTATE_SIM_PUK_REQUIRED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_NETWORK1] = GECKO_CARDSTATE_NETWORK1_LOCKED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_NETWORK2] = GECKO_CARDSTATE_NETWORK2_LOCKED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_HRPD] = GECKO_CARDSTATE_HRPD_NETWORK_LOCKED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_CORPORATE] = GECKO_CARDSTATE_RUIM_CORPORATE_LOCKED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER] = GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_LOCKED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_RUIM] = GECKO_CARDSTATE_RUIM_LOCKED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_NETWORK1_PUK] = GECKO_CARDSTATE_NETWORK1_PUK_REQUIRED; PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_NETWORK2_PUK] = GECKO_CARDSTATE_NETWORK2_PUK_REQUIRED;
--- a/dom/system/gonk/tests/test_ril_worker_icc_CardState.js +++ b/dom/system/gonk/tests/test_ril_worker_icc_CardState.js @@ -28,55 +28,75 @@ add_test(function test_personalization_s ril._isCdma = isCdma; ril._processICCStatus(iccStatus); do_check_eq(ril.cardState, geckoCardState); } // Test GSM personalization state. testPersonalization(false, CARD_PERSOSUBSTATE_SIM_NETWORK, - GECKO_CARDSTATE_NETWORK_LOCKED); + Ci.nsIIccProvider.CARD_STATE_NETWORK_LOCKED); + testPersonalization(false, CARD_PERSOSUBSTATE_SIM_NETWORK_SUBSET, + Ci.nsIIccProvider.CARD_STATE_NETWORK_SUBSET_LOCKED); testPersonalization(false, CARD_PERSOSUBSTATE_SIM_CORPORATE, - GECKO_CARDSTATE_CORPORATE_LOCKED); + Ci.nsIIccProvider.CARD_STATE_CORPORATE_LOCKED); testPersonalization(false, CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER, - GECKO_CARDSTATE_SERVICE_PROVIDER_LOCKED); + Ci.nsIIccProvider.CARD_STATE_SERVICE_PROVIDER_LOCKED); + testPersonalization(false, CARD_PERSOSUBSTATE_SIM_SIM, + Ci.nsIIccProvider.CARD_STATE_SIM_LOCKED); testPersonalization(false, CARD_PERSOSUBSTATE_SIM_NETWORK_PUK, - GECKO_CARDSTATE_NETWORK_PUK_REQUIRED); + Ci.nsIIccProvider.CARD_STATE_NETWORK_PUK_REQUIRED); + testPersonalization(false, CARD_PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK, + Ci.nsIIccProvider.CARD_STATE_NETWORK_SUBSET_PUK_REQUIRED); testPersonalization(false, CARD_PERSOSUBSTATE_SIM_CORPORATE_PUK, - GECKO_CARDSTATE_CORPORATE_PUK_REQUIRED); + Ci.nsIIccProvider.CARD_STATE_CORPORATE_PUK_REQUIRED); testPersonalization(false, CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK, - GECKO_CARDSTATE_SERVICE_PROVIDER_PUK_REQUIRED); + Ci.nsIIccProvider.CARD_STATE_SERVICE_PROVIDER_PUK_REQUIRED); + testPersonalization(false, CARD_PERSOSUBSTATE_SIM_SIM_PUK, + Ci.nsIIccProvider.CARD_STATE_SIM_PUK_REQUIRED); + + testPersonalization(false, CARD_PERSOSUBSTATE_UNKNOWN, + Ci.nsIIccProvider.CARD_STATE_UNKNOWN); + testPersonalization(false, CARD_PERSOSUBSTATE_IN_PROGRESS, + Ci.nsIIccProvider.CARD_STATE_PERSONALIZATION_IN_PROGRESS); testPersonalization(false, CARD_PERSOSUBSTATE_READY, - GECKO_CARDSTATE_PERSONALIZATION_READY); + Ci.nsIIccProvider.CARD_STATE_PERSONALIZATION_READY); // Test CDMA personalization state. testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_NETWORK1, - GECKO_CARDSTATE_NETWORK1_LOCKED); + Ci.nsIIccProvider.CARD_STATE_NETWORK1_LOCKED); testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_NETWORK2, - GECKO_CARDSTATE_NETWORK2_LOCKED); + Ci.nsIIccProvider.CARD_STATE_NETWORK2_LOCKED); testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_HRPD, - GECKO_CARDSTATE_HRPD_NETWORK_LOCKED); + Ci.nsIIccProvider.CARD_STATE_HRPD_NETWORK_LOCKED); testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_CORPORATE, - GECKO_CARDSTATE_RUIM_CORPORATE_LOCKED); + Ci.nsIIccProvider.CARD_STATE_RUIM_CORPORATE_LOCKED); testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER, - GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_LOCKED); + Ci.nsIIccProvider.CARD_STATE_RUIM_SERVICE_PROVIDER_LOCKED); testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_RUIM, - GECKO_CARDSTATE_RUIM_LOCKED); + Ci.nsIIccProvider.CARD_STATE_RUIM_LOCKED); testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_NETWORK1_PUK, - GECKO_CARDSTATE_NETWORK1_PUK_REQUIRED); + Ci.nsIIccProvider.CARD_STATE_NETWORK1_PUK_REQUIRED); testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_NETWORK2_PUK, - GECKO_CARDSTATE_NETWORK2_PUK_REQUIRED); + Ci.nsIIccProvider.CARD_STATE_NETWORK2_PUK_REQUIRED); testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_HRPD_PUK, - GECKO_CARDSTATE_HRPD_NETWORK_PUK_REQUIRED); + Ci.nsIIccProvider.CARD_STATE_HRPD_NETWORK_PUK_REQUIRED); testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_CORPORATE_PUK, - GECKO_CARDSTATE_RUIM_CORPORATE_PUK_REQUIRED); + Ci.nsIIccProvider.CARD_STATE_RUIM_CORPORATE_PUK_REQUIRED); testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK, - GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_PUK_REQUIRED); + Ci.nsIIccProvider.CARD_STATE_RUIM_SERVICE_PROVIDER_PUK_REQUIRED); testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_RUIM_PUK, - GECKO_CARDSTATE_RUIM_PUK_REQUIRED); + Ci.nsIIccProvider.CARD_STATE_RUIM_PUK_REQUIRED); + + testPersonalization(true, CARD_PERSOSUBSTATE_UNKNOWN, + Ci.nsIIccProvider.CARD_STATE_UNKNOWN); + testPersonalization(true, CARD_PERSOSUBSTATE_IN_PROGRESS, + Ci.nsIIccProvider.CARD_STATE_PERSONALIZATION_IN_PROGRESS); + testPersonalization(true, CARD_PERSOSUBSTATE_READY, + Ci.nsIIccProvider.CARD_STATE_PERSONALIZATION_READY); run_next_test(); }); /** * Verify SIM app_state in _processICCStatus */ add_test(function test_card_app_state() { @@ -96,27 +116,27 @@ add_test(function test_card_app_state() }], }; ril._processICCStatus(iccStatus); do_check_eq(ril.cardState, geckoCardState); } testCardAppState(CARD_APPSTATE_ILLEGAL, - GECKO_CARDSTATE_ILLEGAL); + Ci.nsIIccProvider.CARD_STATE_ILLEGAL); testCardAppState(CARD_APPSTATE_PIN, - GECKO_CARDSTATE_PIN_REQUIRED); + Ci.nsIIccProvider.CARD_STATE_PIN_REQUIRED); testCardAppState(CARD_APPSTATE_PUK, - GECKO_CARDSTATE_PUK_REQUIRED); + Ci.nsIIccProvider.CARD_STATE_PUK_REQUIRED); testCardAppState(CARD_APPSTATE_READY, - GECKO_CARDSTATE_READY); + Ci.nsIIccProvider.CARD_STATE_READY); testCardAppState(CARD_APPSTATE_UNKNOWN, - GECKO_CARDSTATE_UNKNOWN); + Ci.nsIIccProvider.CARD_STATE_UNKNOWN); testCardAppState(CARD_APPSTATE_DETECTED, - GECKO_CARDSTATE_UNKNOWN); + Ci.nsIIccProvider.CARD_STATE_UNKNOWN); run_next_test(); }); /** * Verify permanent blocked for ICC. */ add_test(function test_icc_permanent_blocked() { @@ -134,17 +154,17 @@ add_test(function test_icc_permanent_blo apps: [ { pin1_replaced: pin1_replaced, pin1: pin1 }] }; ril._processICCStatus(iccStatus); - do_check_eq(ril.cardState, GECKO_CARDSTATE_PERMANENT_BLOCKED); + do_check_eq(ril.cardState, Ci.nsIIccProvider.CARD_STATE_PERMANENT_BLOCKED); } testPermanentBlocked(1, CARD_PINSTATE_ENABLED_PERM_BLOCKED, CARD_PINSTATE_UNKNOWN); testPermanentBlocked(1, CARD_PINSTATE_ENABLED_PERM_BLOCKED, CARD_PINSTATE_ENABLED_PERM_BLOCKED);
--- a/dom/webidl/MozIcc.webidl +++ b/dom/webidl/MozIcc.webidl @@ -1,12 +1,59 @@ /* 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/. */ +enum IccCardState { + "unknown", // ICC card state is either not yet reported from modem or in an + // unknown state. + "ready", + "pinRequired", + "pukRequired", + "permanentBlocked", + + /** + * Personalization States + */ + "personalizationInProgress", + "personalizationReady", + + // SIM Personalization States. + "networkLocked", + "networkSubsetLocked", + "corporateLocked", + "serviceProviderLocked", + "simPersonalizationLocked", + "networkPukRequired", + "networkSubsetPukRequired", + "corporatePukRequired", + "serviceProviderPukRequired", + "simPersonalizationPukRequired", + + // RUIM Personalization States. + "network1Locked", + "network2Locked", + "hrpdNetworkLocked", + "ruimCorporateLocked", + "ruimServiceProviderLocked", + "ruimPersonalizationLocked", + "network1PukRequired", + "network2PukRequired", + "hrpdNetworkPukRequired", + "ruimCorporatePukRequired", + "ruimServiceProviderPukRequired", + "ruimPersonalizationPukRequired", + + /** + * Additional States. + */ + "illegal" // See Bug 916000. An owed pay card will be rejected by the network + // and fall in this state. +}; + [Pref="dom.icc.enabled"] interface MozIcc : EventTarget { // Integrated Circuit Card Information. /** * Information stored in the device's ICC. * @@ -22,31 +69,21 @@ interface MozIcc : EventTarget */ attribute EventHandler oniccinfochange; // Integrated Circuit Card State. /** * Indicates the state of the device's ICC. * - * Possible values: 'illegal', 'unknown', 'pinRequired', 'pukRequired', - * 'personalizationInProgress', 'networkLocked', 'network1Locked', - * 'network2Locked', 'hrpdNetworkLocked', 'corporateLocked', - * 'serviceProviderLocked', 'ruimCorporateLocked', 'ruimServiceProviderLocked', - * 'networkPukRequired', 'network1PukRequired', 'network2PukRequired', - * 'hrpdNetworkPukRequired', 'corporatePukRequired', - * 'serviceProviderPukRequired', 'ruimCorporatePukRequired', - * 'ruimServiceProviderPukRequired', 'personalizationReady', 'ready', - * 'permanentBlocked'. - * * Once the ICC becomes undetectable, cardstatechange event will be notified. * Also, the attribute is set to null and this MozIcc object becomes invalid. * Calling asynchronous functions raises exception then. */ - readonly attribute DOMString? cardState; + readonly attribute IccCardState? cardState; /** * The 'cardstatechange' event is notified when the 'cardState' attribute * changes value. */ attribute EventHandler oncardstatechange; // Integrated Circuit Card STK.
--- a/netwerk/protocol/rtsp/controller/RtspController.cpp +++ b/netwerk/protocol/rtsp/controller/RtspController.cpp @@ -42,36 +42,47 @@ #include "zlib.h" #include <algorithm> #include "nsDebug.h" extern PRLogModuleInfo* gRtspLog; #undef LOG #define LOG(args) PR_LOG(gRtspLog, PR_LOG_DEBUG, args) +const unsigned long kCommandDelayMs = 200; + namespace mozilla { namespace net { +//----------------------------------------------------------------------------- +// RtspController +//----------------------------------------------------------------------------- NS_IMPL_ISUPPORTS(RtspController, nsIStreamingProtocolController) RtspController::RtspController(nsIChannel *channel) - : mState(INIT) + : mState(INIT), + mTimerLock("RtspController.mTimerLock"), + mPlayTimer(nullptr), + mPauseTimer(nullptr) { LOG(("RtspController::RtspController()")); } RtspController::~RtspController() { LOG(("RtspController::~RtspController()")); if (mRtspSource.get()) { mRtspSource.clear(); } } +//----------------------------------------------------------------------------- +// nsIStreamingProtocolController +//----------------------------------------------------------------------------- NS_IMETHODIMP RtspController::GetTrackMetaData(uint8_t index, nsIStreamingProtocolMetaData * *_retval) { LOG(("RtspController::GetTrackMetaData()")); return NS_OK; } @@ -83,69 +94,85 @@ RtspController::Play(void) MOZ_ASSERT(mRtspSource.get(), "mRtspSource should not be null!"); return NS_ERROR_NOT_INITIALIZED; } if (mState != CONNECTED) { return NS_ERROR_NOT_CONNECTED; } - mRtspSource->play(); + MutexAutoLock lock(mTimerLock); + // Cancel the pause timer if it is active because successive pause-play in a + // short duration is unnecessary but could impair playback smoothing. + if (mPauseTimer) { + mPauseTimer->Cancel(); + mPauseTimer = nullptr; + } + + // Start a timer to delay the play operation for a short duration. + if (!mPlayTimer) { + mPlayTimer = do_CreateInstance("@mozilla.org/timer;1"); + if (!mPlayTimer) { + return NS_ERROR_NOT_INITIALIZED; + } + mPlayTimer->InitWithFuncCallback( + RtspController::PlayTimerCallback, + this, kCommandDelayMs, + nsITimer::TYPE_ONE_SHOT); + } + return NS_OK; } NS_IMETHODIMP RtspController::Pause(void) { LOG(("RtspController::Pause()")); if (!mRtspSource.get()) { MOZ_ASSERT(mRtspSource.get(), "mRtspSource should not be null!"); return NS_ERROR_NOT_INITIALIZED; } if (mState != CONNECTED) { return NS_ERROR_NOT_CONNECTED; } - mRtspSource->pause(); + MutexAutoLock lock(mTimerLock); + // Cancel the play timer if it is active because successive play-pause in a + // short duration is unnecessary but could impair playback smoothing. + if (mPlayTimer) { + mPlayTimer->Cancel(); + mPlayTimer = nullptr; + } + + // Start a timer to delay the pause operation for a short duration. + if (!mPauseTimer) { + mPauseTimer = do_CreateInstance("@mozilla.org/timer;1"); + if (!mPauseTimer) { + return NS_ERROR_NOT_INITIALIZED; + } + mPauseTimer->InitWithFuncCallback( + RtspController::PauseTimerCallback, + this, kCommandDelayMs, + nsITimer::TYPE_ONE_SHOT); + } + return NS_OK; } NS_IMETHODIMP RtspController::Resume(void) { - LOG(("RtspController::Resume()")); - if (!mRtspSource.get()) { - MOZ_ASSERT(mRtspSource.get(), "mRtspSource should not be null!"); - return NS_ERROR_NOT_INITIALIZED; - } - - if (mState != CONNECTED) { - return NS_ERROR_NOT_CONNECTED; - } - - mRtspSource->play(); - return NS_OK; + return Play(); } NS_IMETHODIMP RtspController::Suspend(void) { - LOG(("RtspController::Suspend()")); - if (!mRtspSource.get()) { - MOZ_ASSERT(mRtspSource.get(), "mRtspSource should not be null!"); - return NS_ERROR_NOT_INITIALIZED; - } - - if (mState != CONNECTED) { - return NS_ERROR_NOT_CONNECTED; - } - - mRtspSource->pause(); - return NS_OK; + return Pause(); } NS_IMETHODIMP RtspController::Seek(uint64_t seekTimeUs) { LOG(("RtspController::Seek() %llu", seekTimeUs)); if (!mRtspSource.get()) { MOZ_ASSERT(mRtspSource.get(), "mRtspSource should not be null!"); @@ -205,16 +232,19 @@ RtspController::AsyncOpen(nsIStreamingPr mUserAgent.get(), false, 0); } // Connect to Rtsp Server. mRtspSource->start(); return NS_OK; } +//----------------------------------------------------------------------------- +// nsIStreamingProtocolListener +//----------------------------------------------------------------------------- class SendMediaDataTask : public nsRunnable { public: SendMediaDataTask(nsIStreamingProtocolListener *listener, uint8_t index, const nsACString & data, uint32_t length, uint32_t offset, @@ -324,16 +354,30 @@ private: }; NS_IMETHODIMP RtspController::OnDisconnected(uint8_t index, nsresult reason) { LOG(("RtspController::OnDisconnected() for track %d reason = 0x%x", index, reason)); mState = DISCONNECTED; + + // Ensure play and pause timer are stopped. + { + MutexAutoLock lock(mTimerLock); + if (mPlayTimer) { + mPlayTimer->Cancel(); + mPlayTimer = nullptr; + } + if (mPauseTimer) { + mPauseTimer->Cancel(); + mPauseTimer = nullptr; + } + } + if (mListener) { nsRefPtr<SendOnDisconnectedTask> task = new SendOnDisconnectedTask(mListener, index, reason); // Break the cycle reference between the Listener (RtspControllerParent) and // us. mListener = nullptr; return NS_DispatchToMainThread(task); } @@ -387,10 +431,45 @@ RtspController::PlaybackEnded() MOZ_ASSERT(mRtspSource.get(), "mRtspSource should not be null!"); return NS_ERROR_NOT_INITIALIZED; } mRtspSource->playbackEnded(); return NS_OK; } +//----------------------------------------------------------------------------- +// RtspController static member methods +//----------------------------------------------------------------------------- +//static +void RtspController::PlayTimerCallback(nsITimer *aTimer, void *aClosure) +{ + MOZ_ASSERT(aTimer); + MOZ_ASSERT(aClosure); + + RtspController *self = static_cast<RtspController*>(aClosure); + MOZ_ASSERT(self->mRtspSource.get()); + + MutexAutoLock lock(self->mTimerLock); + if (self->mPlayTimer) { + self->mRtspSource->play(); + self->mPlayTimer = nullptr; + } +} + +//static +void RtspController::PauseTimerCallback(nsITimer *aTimer, void *aClosure) +{ + MOZ_ASSERT(aTimer); + MOZ_ASSERT(aClosure); + + RtspController *self = static_cast<RtspController*>(aClosure); + MOZ_ASSERT(self->mRtspSource.get()); + + MutexAutoLock lock(self->mTimerLock); + if (self->mPauseTimer) { + self->mRtspSource->pause(); + self->mPauseTimer = nullptr; + } +} + } // namespace mozilla::net } // namespace mozilla
--- a/netwerk/protocol/rtsp/controller/RtspController.h +++ b/netwerk/protocol/rtsp/controller/RtspController.h @@ -2,36 +2,42 @@ /* vim: set sw=2 ts=8 et tw=80 : */ /* 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/. */ #ifndef RtspController_h #define RtspController_h +#include "mozilla/Mutex.h" #include "nsIStreamingProtocolController.h" #include "nsIChannel.h" #include "nsCOMPtr.h" #include "nsString.h" +#include "nsITimer.h" #include "RTSPSource.h" namespace mozilla { namespace net { class RtspController : public nsIStreamingProtocolController , public nsIStreamingProtocolListener { public: NS_DECL_THREADSAFE_ISUPPORTS NS_DECL_NSISTREAMINGPROTOCOLCONTROLLER NS_DECL_NSISTREAMINGPROTOCOLLISTENER RtspController(nsIChannel *channel); ~RtspController(); + // These callbacks will be called when mPlayTimer/mPauseTimer fires. + static void PlayTimerCallback(nsITimer *aTimer, void *aClosure); + static void PauseTimerCallback(nsITimer *aTimer, void *aClosure); + private: enum State { INIT, CONNECTED, DISCONNECTED }; // RTSP URL refer to a stream or an aggregate of streams. @@ -42,13 +48,20 @@ private: nsCString mSpec; // UserAgent string. nsCString mUserAgent; // Indicate the connection state between the // media streaming server and the Rtsp client. State mState; // Rtsp Streaming source. android::sp<android::RTSPSource> mRtspSource; + // This lock protects mPlayTimer and mPauseTimer. + Mutex mTimerLock; + // Timers to delay the play and pause operations. + // They are used for optimization and avoid sending unnecessary requests to + // the server. + nsCOMPtr<nsITimer> mPlayTimer; + nsCOMPtr<nsITimer> mPauseTimer; }; } } // namespace mozilla::net #endif