mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
122 lines
4.0 KiB
JavaScript
122 lines
4.0 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
MARIONETTE_TIMEOUT = 30000;
|
|
|
|
SpecialPowers.addPermission("mobileconnection", true, document);
|
|
|
|
let mobileConnection = navigator.mozMobileConnection;
|
|
|
|
function verifyInitialState() {
|
|
log("Verifying initial state.");
|
|
ok(mobileConnection instanceof MozMobileConnection,
|
|
"mobileConnection is instanceof " + mobileConnection.constructor);
|
|
// Want to start test with mobileConnection.data.state 'registered'
|
|
// This is the default state; if it is not currently this value then set it
|
|
log("Starting mobileConnection.data.state is: '"
|
|
+ mobileConnection.data.state + "'.");
|
|
if (mobileConnection.data.state != "registered") {
|
|
changeDataStateAndVerify("home", "registered", testUnregistered);
|
|
} else {
|
|
testUnregistered();
|
|
}
|
|
}
|
|
|
|
function changeDataStateAndVerify(dataState, expected, nextFunction) {
|
|
let gotCallback = false;
|
|
|
|
// Change the mobileConnection.data.state via 'gsm data' command
|
|
log("Changing emulator data state to '" + dataState
|
|
+ "' and waiting for 'ondatachange' event.");
|
|
|
|
// Setup 'ondatachange' event handler
|
|
mobileConnection.addEventListener("datachange", function ondatachange() {
|
|
mobileConnection.removeEventListener("datachange", ondatachange);
|
|
log("Received 'ondatachange' event.");
|
|
log("mobileConnection.data.state is now '"
|
|
+ mobileConnection.data.state + "'.");
|
|
is(mobileConnection.data.state, expected, "data.state");
|
|
waitFor(nextFunction, function() {
|
|
return(gotCallback);
|
|
});
|
|
});
|
|
|
|
// Change the emulator data state
|
|
gotCallback = false;
|
|
runEmulatorCmd("gsm data " + dataState, function(result) {
|
|
is(result[0], "OK");
|
|
log("Emulator callback complete.");
|
|
gotCallback = true;
|
|
});
|
|
}
|
|
|
|
function testUnregistered() {
|
|
log("Test 1: Unregistered.");
|
|
// Set emulator data state to 'unregistered' and verify
|
|
// Expect mobileConnection.data.state to be 'notsearching'
|
|
changeDataStateAndVerify("unregistered", "notSearching", testRoaming);
|
|
}
|
|
|
|
function testRoaming() {
|
|
log("Test 2: Roaming.");
|
|
// Set emulator data state to 'roaming' and verify
|
|
// Expect mobileConnection.data.state to be 'registered'
|
|
changeDataStateAndVerify("roaming", "registered", testOff);
|
|
}
|
|
|
|
function testOff() {
|
|
log("Test 3: Off.");
|
|
// Set emulator data state to 'off' and verify
|
|
// Expect mobileConnection.data.state to be 'notsearching'
|
|
changeDataStateAndVerify("off", "notSearching", testSearching);
|
|
}
|
|
|
|
function testSearching() {
|
|
log("Test 4: Searching.");
|
|
// Set emulator data state to 'searching' and verify
|
|
|
|
// Bug 819533: WebMobileConnection data/voice state incorrect when emulator
|
|
// data state is 'searching'. So until fixed, expect 'registered'.
|
|
|
|
// changeDataStateAndVerify("searching", "searching", testDenied);
|
|
log("* When Bug 819533 is fixed, change this test to expect 'searching' *");
|
|
changeDataStateAndVerify("searching", "registered", testDenied);
|
|
}
|
|
|
|
function testDenied() {
|
|
log("Test 5: Denied.");
|
|
// Set emulator data state to 'denied' and verify
|
|
// Expect mobileConnection.data.state to be 'denied'
|
|
changeDataStateAndVerify("denied", "denied", testOn);
|
|
}
|
|
|
|
function testOn() {
|
|
log("Test 6: On.");
|
|
// Set emulator data state to 'on' and verify
|
|
// Expect mobileConnection.data.state to be 'registered'
|
|
changeDataStateAndVerify("on", "registered", testOffAgain);
|
|
}
|
|
|
|
function testOffAgain() {
|
|
log("Test 7: Off again.");
|
|
// Set emulator data state to 'off' and verify
|
|
// Expect mobileConnection.data.state to be 'notsearching'
|
|
changeDataStateAndVerify("off", "notSearching", testHome);
|
|
}
|
|
|
|
function testHome() {
|
|
log("Test 8: Home.");
|
|
// Set emulator data state to 'home' and verify
|
|
// Expect mobileConnection.data.state to be 'registered'
|
|
changeDataStateAndVerify("home", "registered", cleanUp);
|
|
}
|
|
|
|
function cleanUp() {
|
|
mobileConnection.ondatachange = null;
|
|
SpecialPowers.removePermission("mobileconnection", document);
|
|
finish();
|
|
}
|
|
|
|
// Start the test
|
|
verifyInitialState();
|