author | Vicamo Yang <vyang@mozilla.com> |
Mon, 17 Feb 2014 19:35:02 +0800 | |
changeset 169136 | 5ddf528d09dff99814c7d9131db2c741d94f1ecc |
parent 169135 | d01667dc2bc3e399ab3cee50df9405e03085a876 |
child 169137 | 5dbab941f4e7b389f7dfeb3d0402a6a498645290 |
push id | 26234 |
push user | philringnalda@gmail.com |
push date | Mon, 17 Feb 2014 23:16:21 +0000 |
treeherder | mozilla-central@6b6450d3fbf0 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | hsinyi |
bugs | 960894 |
milestone | 30.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/dom/system/gonk/RadioInterfaceLayer.js +++ b/dom/system/gonk/RadioInterfaceLayer.js @@ -1552,57 +1552,21 @@ DataConnectionHandler.prototype = { */ handleDataCallList: function(message) { this._deliverDataCallCallback("receiveDataCallList", [message.datacalls, message.datacalls.length]); }, }; function RadioInterfaceLayer() { - let options = { - debug: debugPref, - cellBroadcastDisabled: false, - clirMode: RIL.CLIR_DEFAULT, - quirks: { - callstateExtraUint32: - libcutils.property_get("ro.moz.ril.callstate_extra_int", "false") === "true", - v5Legacy: - libcutils.property_get("ro.moz.ril.v5_legacy", "true") === "true", - requestUseDialEmergencyCall: - libcutils.property_get("ro.moz.ril.dial_emergency_call", "false") === "true", - simAppStateExtraFields: - libcutils.property_get("ro.moz.ril.simstate_extra_field", "false") === "true", - extraUint2ndCall: - libcutils.property_get("ro.moz.ril.extra_int_2nd_call", "false") == "true", - haveQueryIccLockRetryCount: - libcutils.property_get("ro.moz.ril.query_icc_count", "false") == "true", - sendStkProfileDownload: - libcutils.property_get("ro.moz.ril.send_stk_profile_dl", "false") == "true", - dataRegistrationOnDemand: - libcutils.property_get("ro.moz.ril.data_reg_on_demand", "false") == "true" - }, - rilEmergencyNumbers: libcutils.property_get("ril.ecclist") || - libcutils.property_get("ro.ril.ecclist") - }; - - try { - options.cellBroadcastDisabled = - Services.prefs.getBoolPref(kPrefCellBroadcastDisabled); - } catch(e) {} - - try { - options.clirMode = Services.prefs.getIntPref(kPrefClirModePreference); - } catch(e) {} - let numIfaces = this.numRadioInterfaces; if (DEBUG) debug(numIfaces + " interfaces"); this.radioInterfaces = []; for (let clientId = 0; clientId < numIfaces; clientId++) { - options.clientId = clientId; - this.radioInterfaces.push(new RadioInterface(options)); + this.radioInterfaces.push(new RadioInterface(clientId)); } Services.obs.addObserver(this, NS_XPCOM_SHUTDOWN_OBSERVER_ID, false); gMessageManager.init(this); gRadioEnabledController.init(this); gDataConnectionManager.init(this); } @@ -1667,43 +1631,81 @@ XPCOMUtils.defineLazyGetter(RadioInterfa "numRadioInterfaces", function() { try { return Services.prefs.getIntPref(kPrefRilNumRadioInterfaces); } catch(e) {} return 1; }); -function WorkerMessenger(radioInterface, options) { +function WorkerMessenger(radioInterface) { // Initial owning attributes. this.radioInterface = radioInterface; this.tokenCallbackMap = {}; // Add a convenient alias to |radioInterface.debug()|. this.debug = radioInterface.debug.bind(radioInterface); - if (DEBUG) this.debug("Starting RIL Worker[" + options.clientId + "]"); this.worker = new ChromeWorker("resource://gre/modules/ril_worker.js"); this.worker.onerror = this.onerror.bind(this); this.worker.onmessage = this.onmessage.bind(this); - - this.send("setInitialOptions", options); - - gSystemWorkerManager.registerRilWorker(options.clientId, this.worker); } WorkerMessenger.prototype = { radioInterface: null, worker: null, // This gets incremented each time we send out a message. token: 1, // Maps tokens we send out with messages to the message callback. tokenCallbackMap: null, + init: function() { + let options = { + debug: DEBUG, + cellBroadcastDisabled: false, + clirMode: RIL.CLIR_DEFAULT, + quirks: { + callstateExtraUint32: + libcutils.property_get("ro.moz.ril.callstate_extra_int", "false") === "true", + v5Legacy: + libcutils.property_get("ro.moz.ril.v5_legacy", "true") === "true", + requestUseDialEmergencyCall: + libcutils.property_get("ro.moz.ril.dial_emergency_call", "false") === "true", + simAppStateExtraFields: + libcutils.property_get("ro.moz.ril.simstate_extra_field", "false") === "true", + extraUint2ndCall: + libcutils.property_get("ro.moz.ril.extra_int_2nd_call", "false") == "true", + haveQueryIccLockRetryCount: + libcutils.property_get("ro.moz.ril.query_icc_count", "false") == "true", + sendStkProfileDownload: + libcutils.property_get("ro.moz.ril.send_stk_profile_dl", "false") == "true", + dataRegistrationOnDemand: + libcutils.property_get("ro.moz.ril.data_reg_on_demand", "false") == "true" + }, + rilEmergencyNumbers: libcutils.property_get("ril.ecclist") || + libcutils.property_get("ro.ril.ecclist") + }; + + try { + options.cellBroadcastDisabled = + Services.prefs.getBoolPref(kPrefCellBroadcastDisabled); + } catch(e) {} + + try { + options.clirMode = Services.prefs.getIntPref(kPrefClirModePreference); + } catch(e) {} + + if (DEBUG) this.debug("Starting RIL Worker"); + let clientId = this.radioInterface.clientId; + options.clientId = clientId; + this.send("setInitialOptions", options); + gSystemWorkerManager.registerRilWorker(clientId, this.worker); + }, + onerror: function(event) { if (DEBUG) { this.debug("Got an error: " + event.filename + ":" + event.lineno + ": " + event.message + "\n"); } event.preventDefault(); }, @@ -1796,19 +1798,20 @@ WorkerMessenger.prototype = { clientId: this.radioInterface.clientId, data: reply }); return false; }).bind(this)); } }; -function RadioInterface(options) { - this.clientId = options.clientId; - this.workerMessenger = new WorkerMessenger(this, options); +function RadioInterface(aClientId) { + this.clientId = aClientId; + this.workerMessenger = new WorkerMessenger(this); + this.workerMessenger.init(); this.supportedNetworkTypes = this.getSupportedNetworkTypes(); this.rilContext = { radioState: RIL.GECKO_RADIOSTATE_UNAVAILABLE, detailedRadioState: null, cardState: RIL.GECKO_CARDSTATE_UNKNOWN, networkSelectionMode: RIL.GECKO_NETWORK_SELECTION_UNKNOWN,