diff --git a/dom/system/gonk/RadioInterfaceLayer.js b/dom/system/gonk/RadioInterfaceLayer.js index 4bb325f22cdb..8b98a780f0fb 100644 --- a/dom/system/gonk/RadioInterfaceLayer.js +++ b/dom/system/gonk/RadioInterfaceLayer.js @@ -2296,17 +2296,27 @@ RadioInterface.prototype = { if (!message || !message.mvnoType || !message.mvnoData) { message.errorMsg = RIL.GECKO_ERROR_INVALID_PARAMETER; } - // Currently we only support imsi matching. - if (message.mvnoType != "imsi") { - message.errorMsg = RIL.GECKO_ERROR_MODE_NOT_SUPPORTED; - } - // Fire error if mvnoType is imsi but imsi is not available. - if (!this.rilContext.imsi) { - message.errorMsg = RIL.GECKO_ERROR_GENERIC_FAILURE; - } if (!message.errorMsg) { - message.result = this.isImsiMatches(message.mvnoData); + switch (message.mvnoType) { + case "imsi": + if (!this.rilContext.imsi) { + message.errorMsg = RIL.GECKO_ERROR_GENERIC_FAILURE; + break; + } + message.result = this.isImsiMatches(message.mvnoData); + break; + case "spn": + let spn = this.rilContext.iccInfo && this.rilContext.iccInfo.spn; + if (!spn) { + message.errorMsg = RIL.GECKO_ERROR_GENERIC_FAILURE; + break; + } + message.result = spn == message.mvnoData; + break; + default: + message.errorMsg = RIL.GECKO_ERROR_MODE_NOT_SUPPORTED; + } } target.sendAsyncMessage("RIL:MatchMvno", {