Bug 1111990 - Support access EF_FDN only if FDN service is available. r=echen

This commit is contained in:
John Dai 2015-01-04 17:54:00 +08:00
parent 3f07f3317f
commit a8e9f406ce
3 changed files with 22 additions and 5 deletions

View File

@ -1316,6 +1316,7 @@ this.GECKO_ICC_SERVICES = {
}, },
// @see 3GPP2 C.S0023-D 3.4.18 (RUIM). // @see 3GPP2 C.S0023-D 3.4.18 (RUIM).
ruim: { ruim: {
FDN: 3,
ENHANCED_PHONEBOOK: 6, ENHANCED_PHONEBOOK: 6,
SPN: 17, SPN: 17,
SDN: 18 SDN: 18

View File

@ -15271,6 +15271,7 @@ ICCContactHelperObject.prototype = {
*/ */
readICCContacts: function(appType, contactType, onsuccess, onerror) { readICCContacts: function(appType, contactType, onsuccess, onerror) {
let ICCRecordHelper = this.context.ICCRecordHelper; let ICCRecordHelper = this.context.ICCRecordHelper;
let ICCUtilsHelper = this.context.ICCUtilsHelper;
switch (contactType) { switch (contactType) {
case GECKO_CARDCONTACT_TYPE_ADN: case GECKO_CARDCONTACT_TYPE_ADN:
@ -15281,10 +15282,13 @@ ICCContactHelperObject.prototype = {
} }
break; break;
case GECKO_CARDCONTACT_TYPE_FDN: case GECKO_CARDCONTACT_TYPE_FDN:
if (!ICCUtilsHelper.isICCServiceAvailable("FDN")) {
onerror(CONTACT_ERR_CONTACT_TYPE_NOT_SUPPORTED);
break;
}
ICCRecordHelper.readADNLike(ICC_EF_FDN, onsuccess, onerror); ICCRecordHelper.readADNLike(ICC_EF_FDN, onsuccess, onerror);
break; break;
case GECKO_CARDCONTACT_TYPE_SDN: case GECKO_CARDCONTACT_TYPE_SDN:
let ICCUtilsHelper = this.context.ICCUtilsHelper;
if (!ICCUtilsHelper.isICCServiceAvailable("SDN")) { if (!ICCUtilsHelper.isICCServiceAvailable("SDN")) {
onerror(CONTACT_ERR_CONTACT_TYPE_NOT_SUPPORTED); onerror(CONTACT_ERR_CONTACT_TYPE_NOT_SUPPORTED);
break; break;
@ -15411,6 +15415,7 @@ ICCContactHelperObject.prototype = {
*/ */
updateICCContact: function(appType, contactType, contact, pin2, onsuccess, onerror) { updateICCContact: function(appType, contactType, contact, pin2, onsuccess, onerror) {
let ICCRecordHelper = this.context.ICCRecordHelper; let ICCRecordHelper = this.context.ICCRecordHelper;
let ICCUtilsHelper = this.context.ICCUtilsHelper;
switch (contactType) { switch (contactType) {
case GECKO_CARDCONTACT_TYPE_ADN: case GECKO_CARDCONTACT_TYPE_ADN:
@ -15425,6 +15430,10 @@ ICCContactHelperObject.prototype = {
onerror(GECKO_ERROR_SIM_PIN2); onerror(GECKO_ERROR_SIM_PIN2);
return; return;
} }
if (!ICCUtilsHelper.isICCServiceAvailable("FDN")) {
onerror(CONTACT_ERR_CONTACT_TYPE_NOT_SUPPORTED);
break;
}
ICCRecordHelper.updateADNLike(ICC_EF_FDN, contact, pin2, onsuccess, onerror); ICCRecordHelper.updateADNLike(ICC_EF_FDN, contact, pin2, onsuccess, onerror);
break; break;
default: default:

View File

@ -130,8 +130,12 @@ add_test(function test_read_icc_contacts() {
ril.appType = aSimType; ril.appType = aSimType;
ril._isCdma = (aSimType === CARD_APPTYPE_RUIM); ril._isCdma = (aSimType === CARD_APPTYPE_RUIM);
ril.iccInfoPrivate.cst = (aEnhancedPhoneBook) ? ril.iccInfoPrivate.cst = (aEnhancedPhoneBook) ?
[0x0, 0x0C, 0x0, 0x0, 0x0]: [0x20, 0x0C, 0x0, 0x0, 0x0]:
[0x0, 0x00, 0x0, 0x0, 0x0]; [0x20, 0x00, 0x0, 0x0, 0x0];
ril.iccInfoPrivate.sst = (aSimType === CARD_APPTYPE_SIM)?
[0x20, 0x0, 0x0, 0x0, 0x0]:
[0x2, 0x0, 0x0, 0x0, 0x0];
// Override some functions to test. // Override some functions to test.
contactHelper.getContactFieldRecordId = function(pbr, contact, field, onsuccess, onerror) { contactHelper.getContactFieldRecordId = function(pbr, contact, field, onsuccess, onerror) {
@ -242,8 +246,11 @@ add_test(function test_update_icc_contact() {
function do_test(aSimType, aContactType, aContact, aPin2, aFileType, aHaveIapIndex, aEnhancedPhoneBook) { function do_test(aSimType, aContactType, aContact, aPin2, aFileType, aHaveIapIndex, aEnhancedPhoneBook) {
ril.appType = aSimType; ril.appType = aSimType;
ril._isCdma = (aSimType === CARD_APPTYPE_RUIM); ril._isCdma = (aSimType === CARD_APPTYPE_RUIM);
ril.iccInfoPrivate.cst = (aEnhancedPhoneBook) ? [0x0, 0x0C, 0x0, 0x0, 0x0] ril.iccInfoPrivate.cst = (aEnhancedPhoneBook) ? [0x20, 0x0C, 0x0, 0x0, 0x0]
: [0x0, 0x00, 0x0, 0x0, 0x0]; : [0x20, 0x00, 0x0, 0x0, 0x0];
ril.iccInfoPrivate.sst = (aSimType === CARD_APPTYPE_SIM)?
[0x20, 0x0, 0x0, 0x0, 0x0]:
[0x2, 0x0, 0x0, 0x0, 0x0];
recordHelper.readPBR = function(onsuccess, onerror) { recordHelper.readPBR = function(onsuccess, onerror) {
if (aFileType === ICC_USIM_TYPE1_TAG) { if (aFileType === ICC_USIM_TYPE1_TAG) {