michael@0: /* Any copyright is dedicated to the Public Domain. michael@0: http://creativecommons.org/publicdomain/zero/1.0/ */ michael@0: michael@0: const { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components; michael@0: const { Services } = Cu.import('resource://gre/modules/Services.jsm'); michael@0: michael@0: var browser = Services.wm.getMostRecentWindow('navigator:browser'); michael@0: var connection = browser.navigator.mozMobileConnections[0]; michael@0: michael@0: // provide a fake APN and enable data connection. michael@0: function enableDataConnection() { michael@0: let setLock = browser.navigator.mozSettings.createLock(); michael@0: setLock.set({ michael@0: 'ril.data.enabled': true, michael@0: 'ril.data.apnSettings': [ michael@0: [ michael@0: {'carrier':'T-Mobile US', michael@0: 'apn':'epc.tmobile.com', michael@0: 'mmsc':'http://mms.msg.eng.t-mobile.com/mms/wapenc', michael@0: 'types':['default','supl','mms']} michael@0: ] michael@0: ] michael@0: }); michael@0: } michael@0: michael@0: // enable 3G radio michael@0: function enableRadio() { michael@0: if (connection.radioState !== 'enabled') { michael@0: connection.setRadioEnabled(true); michael@0: } michael@0: } michael@0: michael@0: // disable 3G radio michael@0: function disableRadio() { michael@0: if (connection.radioState === 'enabled') { michael@0: connection.setRadioEnabled(false); michael@0: } michael@0: } michael@0: michael@0: addMessageListener('prepare-network', function(message) { michael@0: //RIL DOM events will be pending until RIL receiveing system-message-listener-ready event. michael@0: Services.obs.notifyObservers(null, 'system-message-listener-ready', null); michael@0: michael@0: connection.addEventListener('datachange', function onDataChange() { michael@0: if (connection.data.connected) { michael@0: connection.removeEventListener('datachange', onDataChange); michael@0: Services.prefs.setIntPref('network.proxy.type', 2); michael@0: sendAsyncMessage('network-ready', true); michael@0: } michael@0: }); michael@0: michael@0: enableRadio(); michael@0: enableDataConnection(); michael@0: }); michael@0: michael@0: addMessageListener('network-cleanup', function(message) { michael@0: connection.addEventListener('datachange', function onDataChange() { michael@0: if (!connection.data.connected) { michael@0: connection.removeEventListener('datachange', onDataChange); michael@0: Services.prefs.setIntPref('network.proxy.type', 2); michael@0: sendAsyncMessage('network-disabled', true); michael@0: } michael@0: }); michael@0: disableRadio(); michael@0: });