1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/media/tests/mochitest/NetworkPreparationChromeScript.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,65 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +const { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components; 1.8 +const { Services } = Cu.import('resource://gre/modules/Services.jsm'); 1.9 + 1.10 +var browser = Services.wm.getMostRecentWindow('navigator:browser'); 1.11 +var connection = browser.navigator.mozMobileConnections[0]; 1.12 + 1.13 +// provide a fake APN and enable data connection. 1.14 +function enableDataConnection() { 1.15 + let setLock = browser.navigator.mozSettings.createLock(); 1.16 + setLock.set({ 1.17 + 'ril.data.enabled': true, 1.18 + 'ril.data.apnSettings': [ 1.19 + [ 1.20 + {'carrier':'T-Mobile US', 1.21 + 'apn':'epc.tmobile.com', 1.22 + 'mmsc':'http://mms.msg.eng.t-mobile.com/mms/wapenc', 1.23 + 'types':['default','supl','mms']} 1.24 + ] 1.25 + ] 1.26 + }); 1.27 +} 1.28 + 1.29 +// enable 3G radio 1.30 +function enableRadio() { 1.31 + if (connection.radioState !== 'enabled') { 1.32 + connection.setRadioEnabled(true); 1.33 + } 1.34 +} 1.35 + 1.36 +// disable 3G radio 1.37 +function disableRadio() { 1.38 + if (connection.radioState === 'enabled') { 1.39 + connection.setRadioEnabled(false); 1.40 + } 1.41 +} 1.42 + 1.43 +addMessageListener('prepare-network', function(message) { 1.44 + //RIL DOM events will be pending until RIL receiveing system-message-listener-ready event. 1.45 + Services.obs.notifyObservers(null, 'system-message-listener-ready', null); 1.46 + 1.47 + connection.addEventListener('datachange', function onDataChange() { 1.48 + if (connection.data.connected) { 1.49 + connection.removeEventListener('datachange', onDataChange); 1.50 + Services.prefs.setIntPref('network.proxy.type', 2); 1.51 + sendAsyncMessage('network-ready', true); 1.52 + } 1.53 + }); 1.54 + 1.55 + enableRadio(); 1.56 + enableDataConnection(); 1.57 +}); 1.58 + 1.59 +addMessageListener('network-cleanup', function(message) { 1.60 + connection.addEventListener('datachange', function onDataChange() { 1.61 + if (!connection.data.connected) { 1.62 + connection.removeEventListener('datachange', onDataChange); 1.63 + Services.prefs.setIntPref('network.proxy.type', 2); 1.64 + sendAsyncMessage('network-disabled', true); 1.65 + } 1.66 + }); 1.67 + disableRadio(); 1.68 +});