1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/mobileconnection/tests/marionette/test_dsds_mobile_data_connection.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,154 @@ 1.4 +/* Any copyright is dedicated to the Public Domain. 1.5 + * http://creativecommons.org/publicdomain/zero/1.0/ */ 1.6 + 1.7 +MARIONETTE_TIMEOUT = 60000; 1.8 +MARIONETTE_HEAD_JS = "head.js"; 1.9 + 1.10 +const SETTINGS_KEY_DATA_DEFAULT_ID = "ril.data.defaultServiceId"; 1.11 + 1.12 +let connections; 1.13 +let numOfRadioInterfaces; 1.14 +let currentDataDefaultId = 0; 1.15 + 1.16 +function muxModem(id) { 1.17 + return runEmulatorCmdSafe("mux modem " + id); 1.18 +} 1.19 + 1.20 +function switchDataDefaultId(defaultId) { 1.21 + return Promise.resolve() 1.22 + .then(() => setSettings1(SETTINGS_KEY_DATA_DEFAULT_ID, defaultId)) 1.23 + .then(() => { 1.24 + log("Data default id switched to: " + defaultId); 1.25 + currentDataDefaultId = defaultId; 1.26 + }); 1.27 +} 1.28 + 1.29 +function setDataRoamingSettings(enableDataRoammingIds) { 1.30 + let dataRoamingSettings = []; 1.31 + for (let i = 0; i < numOfRadioInterfaces; i++) { 1.32 + dataRoamingSettings.push(false); 1.33 + } 1.34 + 1.35 + for (let i = 0; i < enableDataRoammingIds.length; i++) { 1.36 + log("Enable data roaming for id: " + enableDataRoammingIds[i]); 1.37 + dataRoamingSettings[enableDataRoammingIds[i]] = true; 1.38 + } 1.39 + 1.40 + return setDataRoamingEnabled(dataRoamingSettings); 1.41 +} 1.42 + 1.43 +function setApnSettings() { 1.44 + let apn = [{ 1.45 + "carrier":"T-Mobile US", 1.46 + "apn":"epc.tmobile.com", 1.47 + "mmsc":"http://mms.msg.eng.t-mobile.com/mms/wapenc", 1.48 + "types":["default","supl","mms"] 1.49 + }]; 1.50 + 1.51 + // Use the same APN for all sims for now. 1.52 + let apns = []; 1.53 + for (let i = 0; i < numOfRadioInterfaces; i++) { 1.54 + apns.push(apn); 1.55 + } 1.56 + 1.57 + return setDataApnSettings(apns); 1.58 + 1.59 +} 1.60 + 1.61 +function waitForDataState(clientId, connected) { 1.62 + let deferred = Promise.defer(); 1.63 + 1.64 + let connection = connections[clientId]; 1.65 + if (connection.data.connected === connected) { 1.66 + log("data connection for client " + clientId + " is now " + 1.67 + connection.data.connected); 1.68 + deferred.resolve(); 1.69 + return; 1.70 + } 1.71 + 1.72 + return Promise.resolve() 1.73 + .then(() => waitForManagerEvent("datachange", clientId)) 1.74 + .then(() => waitForDataState(clientId, connected)); 1.75 +} 1.76 + 1.77 +function restoreTestEnvironment() { 1.78 + return Promise.resolve() 1.79 + .then(() => setEmulatorRoamingAndWait(false, currentDataDefaultId)) 1.80 + .then(() => setDataRoamingSettings([])) 1.81 + .then(() => switchDataDefaultId(0)) 1.82 + .then(() => muxModem(0)); 1.83 +} 1.84 + 1.85 +function testEnableData() { 1.86 + log("Turn data on."); 1.87 + 1.88 + let connection = connections[currentDataDefaultId]; 1.89 + is(connection.data.connected, false); 1.90 + 1.91 + return Promise.resolve() 1.92 + .then(() => setApnSettings()) 1.93 + .then(() => setDataEnabledAndWait(true, currentDataDefaultId)); 1.94 +} 1.95 + 1.96 +function testSwitchDefaultDataToSimTwo() { 1.97 + log("Switch data connection to sim 2."); 1.98 + 1.99 + is(currentDataDefaultId, 0); 1.100 + let connection = connections[currentDataDefaultId]; 1.101 + is(connection.data.connected, true); 1.102 + 1.103 + return Promise.resolve() 1.104 + .then(() => switchDataDefaultId(1)) 1.105 + .then(() => { 1.106 + is(currentDataDefaultId, 1); 1.107 + }) 1.108 + .then(() => waitForDataState(currentDataDefaultId, true)); 1.109 +} 1.110 + 1.111 +function testDisableDataRoamingWhileRoaming() { 1.112 + log("Disable data roaming setting while roaming."); 1.113 + 1.114 + let connection = connections[currentDataDefaultId]; 1.115 + is(connection.data.connected, true); 1.116 + is(connection.data.roaming, false); 1.117 + 1.118 + return Promise.resolve() 1.119 + .then(() => setDataRoamingSettings([])) 1.120 + .then(() => muxModem(currentDataDefaultId)) 1.121 + .then(() => setEmulatorRoamingAndWait(true, currentDataDefaultId)) 1.122 + .then(() => waitForDataState(currentDataDefaultId, false)); 1.123 +} 1.124 + 1.125 +function testEnableDataRoamingWhileRoaming() { 1.126 + log("Enable data roaming setting while roaming."); 1.127 + 1.128 + let connection = connections[currentDataDefaultId]; 1.129 + is(connection.data.connected, false); 1.130 + is(connection.data.roaming, true); 1.131 + 1.132 + return Promise.resolve() 1.133 + .then(() => setDataRoamingSettings([currentDataDefaultId])) 1.134 + .then(() => waitForDataState(currentDataDefaultId, true)); 1.135 +} 1.136 + 1.137 +function testDisableData() { 1.138 + log("Turn data off."); 1.139 + 1.140 + let connection = connections[currentDataDefaultId]; 1.141 + is(connection.data.connected, true); 1.142 + 1.143 + return Promise.resolve() 1.144 + .then(() => setDataEnabledAndWait(false, currentDataDefaultId)); 1.145 +} 1.146 + 1.147 +startDSDSTestCommon(function() { 1.148 + connections = workingFrame.contentWindow.navigator.mozMobileConnections; 1.149 + numOfRadioInterfaces = getNumOfRadioInterfaces(); 1.150 + 1.151 + return testEnableData() 1.152 + .then(testSwitchDefaultDataToSimTwo) 1.153 + .then(testDisableDataRoamingWhileRoaming) 1.154 + .then(testEnableDataRoamingWhileRoaming) 1.155 + .then(testDisableData) 1.156 + .then(restoreTestEnvironment); 1.157 +}, ["settings-read", "settings-write"]);