summaryrefslogtreecommitdiffstats
path: root/dom/media/tests/mochitest/NetworkPreparationChromeScript.js
blob: 1de778778c6b708031db4b54b24ea2513f892b10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/* Any copyright is dedicated to the Public Domain.
   http://creativecommons.org/publicdomain/zero/1.0/ */

const { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
const { Services } = Cu.import('resource://gre/modules/Services.jsm');

var browser = Services.wm.getMostRecentWindow('navigator:browser');
var connection = browser.navigator.mozMobileConnections[0];

// provide a fake APN and enable data connection.
function enableDataConnection() {
  let setLock = browser.navigator.mozSettings.createLock();
  setLock.set({
    'ril.data.enabled': true,
    'ril.data.apnSettings': [
      [
        {'carrier':'T-Mobile US',
         'apn':'epc.tmobile.com',
         'mmsc':'http://mms.msg.eng.t-mobile.com/mms/wapenc',
         'types':['default','supl','mms']}
      ]
    ]
  });
}

// enable 3G radio
function enableRadio() {
  if (connection.radioState !== 'enabled') {
    connection.setRadioEnabled(true);
  }
}

// disable 3G radio
function disableRadio() {
  if (connection.radioState === 'enabled') {
    connection.setRadioEnabled(false);
  }
}

addMessageListener('prepare-network', function(message) {
  connection.addEventListener('datachange', function onDataChange() {
    if (connection.data.connected) {
      connection.removeEventListener('datachange', onDataChange);
      Services.prefs.setIntPref('network.proxy.type', 2);
      sendAsyncMessage('network-ready', true);
    }
  });

  enableRadio();
  enableDataConnection();
});

addMessageListener('network-cleanup', function(message) {
  connection.addEventListener('datachange', function onDataChange() {
    if (!connection.data.connected) {
      connection.removeEventListener('datachange', onDataChange);
      Services.prefs.setIntPref('network.proxy.type', 2);
      sendAsyncMessage('network-disabled', true);
    }
  });
  disableRadio();
});