зеркало из https://github.com/mozilla/gecko-dev.git
Merge m-c to b2g-inbound. a=merge
This commit is contained in:
Коммит
73a62f9f55
|
@ -15,7 +15,7 @@
|
|||
<project name="platform_build" path="build" remote="b2g" revision="4b4336c73c081b39776d399835ce4853aee5cc1c">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="008026e932b64b4a70b9931c3da96986583bc8d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="5567c7d0b4408032723231490ed7e7ba1a3e0dcf"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6969df171e5295f855f12d12db0382048e6892e7"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<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="008026e932b64b4a70b9931c3da96986583bc8d4"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="5567c7d0b4408032723231490ed7e7ba1a3e0dcf"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6969df171e5295f855f12d12db0382048e6892e7"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="cd88d860656c31c7da7bb310d6a160d0011b0961"/>
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
</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="008026e932b64b4a70b9931c3da96986583bc8d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="5567c7d0b4408032723231490ed7e7ba1a3e0dcf"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6969df171e5295f855f12d12db0382048e6892e7"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="68af8bfafdf9e35f4db0ae60e087cbf8f6d7ee6d"/>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<project name="platform_build" path="build" remote="b2g" revision="4b4336c73c081b39776d399835ce4853aee5cc1c">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="008026e932b64b4a70b9931c3da96986583bc8d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="5567c7d0b4408032723231490ed7e7ba1a3e0dcf"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6969df171e5295f855f12d12db0382048e6892e7"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<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="008026e932b64b4a70b9931c3da96986583bc8d4"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="5567c7d0b4408032723231490ed7e7ba1a3e0dcf"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6969df171e5295f855f12d12db0382048e6892e7"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="cd88d860656c31c7da7bb310d6a160d0011b0961"/>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<project name="platform_build" path="build" remote="b2g" revision="4b4336c73c081b39776d399835ce4853aee5cc1c">
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="008026e932b64b4a70b9931c3da96986583bc8d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="5567c7d0b4408032723231490ed7e7ba1a3e0dcf"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6969df171e5295f855f12d12db0382048e6892e7"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
</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="008026e932b64b4a70b9931c3da96986583bc8d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="5567c7d0b4408032723231490ed7e7ba1a3e0dcf"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6969df171e5295f855f12d12db0382048e6892e7"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="68af8bfafdf9e35f4db0ae60e087cbf8f6d7ee6d"/>
|
||||
|
|
|
@ -4,6 +4,6 @@
|
|||
"remote": "",
|
||||
"branch": ""
|
||||
},
|
||||
"revision": "7448e582578f9d88a6d24a8f372cb7a6343e25e3",
|
||||
"revision": "b5cc16c2b2818570c0688dfaf7c78ba6ac63a5ec",
|
||||
"repo_path": "/integration/gaia-central"
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
<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="008026e932b64b4a70b9931c3da96986583bc8d4"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="5567c7d0b4408032723231490ed7e7ba1a3e0dcf"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6969df171e5295f855f12d12db0382048e6892e7"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<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="008026e932b64b4a70b9931c3da96986583bc8d4"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="5567c7d0b4408032723231490ed7e7ba1a3e0dcf"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6969df171e5295f855f12d12db0382048e6892e7"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
</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="008026e932b64b4a70b9931c3da96986583bc8d4"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="5567c7d0b4408032723231490ed7e7ba1a3e0dcf"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6969df171e5295f855f12d12db0382048e6892e7"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="562d357b72279a9e35d4af5aeecc8e1ffa2f44f1"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="68af8bfafdf9e35f4db0ae60e087cbf8f6d7ee6d"/>
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
<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="008026e932b64b4a70b9931c3da96986583bc8d4"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="5567c7d0b4408032723231490ed7e7ba1a3e0dcf"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="6969df171e5295f855f12d12db0382048e6892e7"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
|
||||
|
|
|
@ -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
|
|
@ -100,19 +100,20 @@ Icc::GetIccInfo() const
|
|||
return iccInfo.forget();
|
||||
}
|
||||
|
||||
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
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#ifndef mozilla_dom_Icc_h
|
||||
#define mozilla_dom_Icc_h
|
||||
|
||||
#include "mozilla/dom/MozIccBinding.h" // For IccCardState
|
||||
#include "mozilla/DOMEventTargetHelper.h"
|
||||
#include "nsIIccProvider.h"
|
||||
|
||||
|
@ -49,8 +50,8 @@ public:
|
|||
already_AddRefed<nsIDOMMozIccInfo>
|
||||
GetIccInfo() const;
|
||||
|
||||
void
|
||||
GetCardState(nsString& aCardState) const;
|
||||
Nullable<IccCardState>
|
||||
GetCardState() const;
|
||||
|
||||
void
|
||||
SendStkResponse(const JSContext* aCx, JS::Handle<JS::Value> aCommand,
|
||||
|
|
|
@ -20,9 +20,43 @@ interface nsIIccListener : nsISupports
|
|||
/**
|
||||
* XPCOM component (in the content process) that provides the ICC information.
|
||||
*/
|
||||
[scriptable, uuid(7c67ab92-52a3-4e11-995c-c0ad2f66c4cb)]
|
||||
[scriptable, uuid(aa404b6e-fcfa-4bd2-bc46-e4e94b603ca7)]
|
||||
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
|
||||
|
@ -39,7 +73,7 @@ interface nsIIccProvider : nsISupports
|
|||
/**
|
||||
* Card State
|
||||
*/
|
||||
DOMString getCardState(in unsigned long clientId);
|
||||
unsigned long getCardState(in unsigned long clientId);
|
||||
|
||||
/**
|
||||
* STK interfaces.
|
||||
|
|
|
@ -11,6 +11,10 @@ EXPORTS.mozilla.dom += [
|
|||
'IccManager.h',
|
||||
]
|
||||
|
||||
UNIFIED_SOURCES += [
|
||||
'Assertions.cpp',
|
||||
]
|
||||
|
||||
SOURCES += [
|
||||
'Icc.cpp',
|
||||
'IccListener.cpp',
|
||||
|
|
|
@ -284,8 +284,8 @@ function RILContentHelper() {
|
|||
this.voicemailStatuses = [];
|
||||
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.voicemailInfos[clientId] = new VoicemailInfo();
|
||||
|
|
|
@ -559,8 +559,8 @@ XPCOMUtils.defineLazyGetter(this, "gRadioEnabledController", function() {
|
|||
|
||||
_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) {
|
||||
|
@ -1873,7 +1873,7 @@ function RadioInterface(aClientId, aWorkerMessenger) {
|
|||
aWorkerMessenger.registerClient(aClientId, this);
|
||||
|
||||
this.rilContext = {
|
||||
cardState: RIL.GECKO_CARDSTATE_UNKNOWN,
|
||||
cardState: Ci.nsIIccProvider.CARD_STATE_UNKNOWN,
|
||||
iccInfo: null,
|
||||
imsi: null
|
||||
};
|
||||
|
@ -3713,7 +3713,7 @@ RadioInterface.prototype = {
|
|||
} else if (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;
|
||||
}
|
||||
|
|
|
@ -2487,38 +2487,40 @@ 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";
|
||||
|
@ -2556,6 +2558,7 @@ PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_NETWORK_PUK] = GECKO_CARDSTATE_NETWORK_PUK
|
|||
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;
|
||||
|
|
|
@ -33,45 +33,65 @@ add_test(function test_personalization_state() {
|
|||
|
||||
// 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();
|
||||
});
|
||||
|
@ -101,17 +121,17 @@ add_test(function test_card_app_state() {
|
|||
}
|
||||
|
||||
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();
|
||||
});
|
||||
|
@ -139,7 +159,7 @@ add_test(function test_icc_permanent_blocked() {
|
|||
};
|
||||
|
||||
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,
|
||||
|
|
|
@ -4,6 +4,57 @@
|
|||
|
||||
interface MozIccInfo;
|
||||
|
||||
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
|
||||
{
|
||||
|
@ -29,21 +80,11 @@ interface MozIcc : EventTarget
|
|||
/**
|
||||
* 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
|
||||
|
|
Загрузка…
Ссылка в новой задаче