Bug 1102677 - Part 1: Support change barring password. r=hsinyi

This commit is contained in:
Szu-Yu Chen [:aknow] 2014-12-22 16:31:05 +08:00
parent 99e242e484
commit c9f7bd7b3d
3 changed files with 55 additions and 0 deletions

View File

@ -2999,6 +2999,10 @@ this.MMI_SC_CLIR = "31";
// MMI call waiting service code
this.MMI_SC_CALL_WAITING = "43";
// MMI service code for registration new password as defined in TS 22.030 6.5.4
this.MMI_SC_CHANGE_PASSWORD = "03";
this.MMI_ZZ_BARRING_SERVICE = "330";
// MMI call barring service codes
this.MMI_SC_BAOC = "33";
this.MMI_SC_BAOIC = "331";
@ -3031,6 +3035,7 @@ this.MMI_KS_SC_PIN = "scPin";
this.MMI_KS_SC_PIN2 = "scPin2";
this.MMI_KS_SC_PUK = "scPuk";
this.MMI_KS_SC_PUK2 = "scPuk2";
this.MMI_KS_SC_CHANGE_PASSWORD = "scChangePassword"
this.MMI_KS_SC_IMEI = "scImei";
this.MMI_KS_SC_USSD = "scUssd";
this.MMI_KS_SC_CALL = "scCall";
@ -3040,13 +3045,16 @@ this.MMI_ERROR_KS_ERROR = "emMmiError";
this.MMI_ERROR_KS_NOT_SUPPORTED = "emMmiErrorNotSupported";
this.MMI_ERROR_KS_INVALID_ACTION = "emMmiErrorInvalidAction";
this.MMI_ERROR_KS_MISMATCH_PIN = "emMmiErrorMismatchPin";
this.MMI_ERROR_KS_MISMATCH_PASSWORD = "emMmiErrorMismatchPassword";
this.MMI_ERROR_KS_BAD_PIN = "emMmiErrorBadPin";
this.MMI_ERROR_KS_BAD_PUK = "emMmiErrorBadPuk";
this.MMI_ERROR_KS_INVALID_PIN = "emMmiErrorInvalidPin";
this.MMI_ERROR_KS_INVALID_PASSWORD = "emMmiErrorInvalidPassword";
this.MMI_ERROR_KS_NEEDS_PUK = "emMmiErrorNeedsPuk";
this.MMI_ERROR_KS_SIM_BLOCKED = "emMmiErrorSimBlocked";
// MMI status message.
this.MMI_SM_KS_PASSWORD_CHANGED = "smPasswordChanged";
this.MMI_SM_KS_PIN_CHANGED = "smPinChanged";
this.MMI_SM_KS_PIN2_CHANGED = "smPin2Changed";
this.MMI_SM_KS_PIN_UNBLOCKED = "smPinUnblocked";

View File

@ -2409,6 +2409,33 @@ RilObject.prototype = {
return true;
}
function _isValidChangePasswordRequest() {
if (mmi.procedure !== MMI_PROCEDURE_REGISTRATION &&
mmi.procedure !== MMI_PROCEDURE_ACTIVATION) {
_sendMMIError(MMI_ERROR_KS_INVALID_ACTION);
return false;
}
if (mmi.sia !== "" && mmi.sia !== MMI_ZZ_BARRING_SERVICE) {
_sendMMIError(MMI_ERROR_KS_NOT_SUPPORTED);
return false;
}
let validPassword = si => /^[0-9]{4}$/.test(si);
if (!validPassword(mmi.sib) || !validPassword(mmi.sic) ||
!validPassword(mmi.pwd)) {
_sendMMIError(MMI_ERROR_KS_INVALID_PASSWORD);
return false;
}
if (mmi.sic != mmi.pwd) {
_sendMMIError(MMI_ERROR_KS_MISMATCH_PASSWORD);
return false;
}
return true;
}
let _isRadioAvailable = (function() {
if (this.radioState !== GECKO_RADIOSTATE_ENABLED) {
_sendMMIError(GECKO_ERROR_RADIO_NOT_AVAILABLE);
@ -2556,6 +2583,17 @@ RilObject.prototype = {
this.setCLIR(options);
return;
// Change call barring password
case MMI_SC_CHANGE_PASSWORD:
if (!_isRadioAvailable() || !_isValidChangePasswordRequest()) {
return;
}
options.pin = mmi.sib;
options.newPin = mmi.sic;
this.changeCallBarringPassword(options);
return;
// Call barring
case MMI_SC_BAOC:
case MMI_SC_BAOIC:
@ -5986,6 +6024,13 @@ RilObject.prototype[REQUEST_CHANGE_BARRING_PASSWORD] =
if (options.rilRequestError) {
options.errorMsg = RIL_ERROR_TO_GECKO_ERROR[options.rilRequestError];
}
if (options.rilMessageType != "sendMMI") {
this.sendChromeMessage(options);
return;
}
options.statusMessage = MMI_SM_KS_PASSWORD_CHANGED;
this.sendChromeMessage(options);
};
RilObject.prototype[REQUEST_SIM_OPEN_CHANNEL] = function REQUEST_SIM_OPEN_CHANNEL(length, options) {

View File

@ -907,6 +907,8 @@ TelephonyService.prototype = {
return RIL.MMI_KS_SC_CALL_BARRING;
case RIL.MMI_SC_CALL_WAITING:
return RIL.MMI_KS_SC_CALL_WAITING;
case RIL.MMI_SC_CHANGE_PASSWORD:
return RIL.MMI_KS_SC_CHANGE_PASSWORD;
default:
return RIL.MMI_KS_SC_USSD;
}