Bug 793192 - MMI Codes: support call forwarding. Part 2 - RIL. Query CF; r=marshall_law

This commit is contained in:
Fernando Jiménez 2012-11-07 14:13:48 -08:00
parent c3eae14aa5
commit cccf6255e0
2 changed files with 34 additions and 18 deletions

View File

@ -817,10 +817,7 @@ RILContentHelper.prototype = {
break;
case "RIL:SendMMI:Return:OK":
case "RIL:CancelMMI:Return:OK":
request = this.takeRequest(msg.json.requestId);
if (request) {
Services.DOMRequest.fireSuccess(request, msg.json.result);
}
this.handleSendCancelMMIOK(msg.json);
break;
case "RIL:SendMMI:Return:KO":
case "RIL:CancelMMI:Return:KO":
@ -945,6 +942,19 @@ RILContentHelper.prototype = {
}
},
_cfRulesToMobileCfInfo: function _cfRulesToMobileCfInfo(rules) {
for (let i = 0; i < rules.length; i++) {
let rule = rules[i];
let info = new MobileCFInfo();
for (let key in rule) {
info[key] = rule[key];
}
rules[i] = info;
}
},
handleGetCallForwardingOption: function handleGetCallForwardingOption(message) {
let requestId = message.requestId;
let request = this.takeRequest(requestId);
@ -957,19 +967,8 @@ RILContentHelper.prototype = {
return;
}
let rules = message.rules;
for (let i = 0; i < rules.length; i++) {
let rule = rules[i];
let info = new MobileCFInfo();
for (let key in rule) {
info[key] = rule[key];
}
rules[i] = info;
}
Services.DOMRequest.fireSuccess(request, rules);
this._cfRulesToMobileCfInfo(message.rules);
Services.DOMRequest.fireSuccess(request, message.rules);
},
handleSetCallForwardingOption: function handleSetCallForwardingOption(message) {
@ -986,6 +985,23 @@ RILContentHelper.prototype = {
Services.DOMRequest.fireSuccess(request, null);
},
handleSendCancelMMIOK: function handleSendCancelMMIOK(message) {
let request = this.takeRequest(message.requestId);
if (!request) {
return;
}
// MMI query call forwarding options request returns a set of rules that
// will be exposed in the form of an array of nsIDOMMozMobileCFInfo
// instances.
if (message.success && message.rules) {
this._cfRulesToMobileCfInfo(message.rules);
message.result = message.rules;
}
Services.DOMRequest.fireSuccess(request, message.result);
},
_getRandomId: function _getRandomId() {
return gUUIDGenerator.generateUUID().toString();
},

View File

@ -2386,7 +2386,7 @@ let RIL = {
options.number = mmi.sia;
options.serviceClass = mmi.sib;
if (options.action == CALL_FORWARD_ACTION_QUERY_STATUS) {
_sendMMIError("CF_QUERY_STATUS_NOT_SUPPORTED");
this.queryCallForwardStatus(options);
return;
}