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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 60000;
MARIONETTE_HEAD_JS = "head.js";
// Must sync with hardware/ril/reference-ril/reference-ril.c
const MAX_DATA_CONTEXTS = 4;
function setEmulatorAPN() {
// Use different apn for each network type.
let apn = [[ { "carrier":"T-Mobile US",
"apn":"epc1.tmobile.com",
"types":["default"] },
{ "carrier":"T-Mobile US",
"apn":"epc2.tmobile.com",
"mmsc":"http://mms.msg.eng.t-mobile.com/mms/wapenc",
"types":["mms"] },
{ "carrier":"T-Mobile US",
"apn":"epc3.tmobile.com",
"types":["supl"] },
{ "carrier":"T-Mobile US",
"apn":"epc4.tmobile.com",
"types":["ims"] },
{ "carrier":"T-Mobile US",
"apn":"epc5.tmobile.com",
"types":["dun"] },
{ "carrier":"T-Mobile US",
"apn":"epc6.tmobile.com",
"types":["fota"] }]];
return setSettings(SETTINGS_KEY_DATA_APN_SETTINGS, apn);
}
// Test initial State
function testInitialState() {
log("= testInitialState =");
// Data should be off before starting any test.
return getSettings(SETTINGS_KEY_DATA_ENABLED)
.then(value => {
is(value, false, "Data must be off");
});
}
function testSetupConcurrentDataCalls() {
log("= testSetupConcurrentDataCalls =");
let promise = Promise.resolve();
// Skip default mobile type.
for (let i = 1; i < MAX_DATA_CONTEXTS; i++) {
let type = networkTypes[i];
promise = promise.then(() => setupDataCallAndWait(type));
}
return promise;
}
function testDeactivateConcurrentDataCalls() {
log("= testDeactivateConcurrentDataCalls =");
let promise = Promise.resolve();
// Skip default mobile type.
for (let i = 1; i < MAX_DATA_CONTEXTS; i++) {
let type = networkTypes[i];
promise = promise.then(() => deactivateDataCallAndWait(type));
}
return promise;
}
// Start test
startTestBase(function() {
let origApnSettings;
return testInitialState()
.then(() => getSettings(SETTINGS_KEY_DATA_APN_SETTINGS))
.then(value => {
origApnSettings = value;
})
.then(() => setEmulatorAPN())
.then(() => setDataEnabledAndWait(true))
.then(() => testSetupConcurrentDataCalls())
.then(() => testDeactivateConcurrentDataCalls())
.then(() => setDataEnabledAndWait(false))
.then(() => {
if (origApnSettings) {
return setSettings(SETTINGS_KEY_DATA_APN_SETTINGS, origApnSettings);
}
});
});
|