1de778778c6b708031db4b54b24ea2513f892b10
[gecko.git] / NetworkPreparationChromeScript.js
blob1de778778c6b708031db4b54b24ea2513f892b10
1 /* Any copyright is dedicated to the Public Domain.
2    http://creativecommons.org/publicdomain/zero/1.0/ */
4 const { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
5 const { Services } = Cu.import('resource://gre/modules/Services.jsm');
7 var browser = Services.wm.getMostRecentWindow('navigator:browser');
8 var connection = browser.navigator.mozMobileConnections[0];
10 // provide a fake APN and enable data connection.
11 function enableDataConnection() {
12   let setLock = browser.navigator.mozSettings.createLock();
13   setLock.set({
14     'ril.data.enabled': true,
15     'ril.data.apnSettings': [
16       [
17         {'carrier':'T-Mobile US',
18          'apn':'epc.tmobile.com',
19          'mmsc':'http://mms.msg.eng.t-mobile.com/mms/wapenc',
20          'types':['default','supl','mms']}
21       ]
22     ]
23   });
26 // enable 3G radio
27 function enableRadio() {
28   if (connection.radioState !== 'enabled') {
29     connection.setRadioEnabled(true);
30   }
33 // disable 3G radio
34 function disableRadio() {
35   if (connection.radioState === 'enabled') {
36     connection.setRadioEnabled(false);
37   }
40 addMessageListener('prepare-network', function(message) {
41   connection.addEventListener('datachange', function onDataChange() {
42     if (connection.data.connected) {
43       connection.removeEventListener('datachange', onDataChange);
44       Services.prefs.setIntPref('network.proxy.type', 2);
45       sendAsyncMessage('network-ready', true);
46     }
47   });
49   enableRadio();
50   enableDataConnection();
51 });
53 addMessageListener('network-cleanup', function(message) {
54   connection.addEventListener('datachange', function onDataChange() {
55     if (!connection.data.connected) {
56       connection.removeEventListener('datachange', onDataChange);
57       Services.prefs.setIntPref('network.proxy.type', 2);
58       sendAsyncMessage('network-disabled', true);
59     }
60   });
61   disableRadio();
62 });