mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-07-06 03:29:01 +00:00
106 lines
2.8 KiB
JavaScript
106 lines
2.8 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
MARIONETTE_TIMEOUT = 60000;
|
|
MARIONETTE_HEAD_JS = 'head.js';
|
|
|
|
const kPrefRilRadioDisabled = "ril.radio.disabled";
|
|
|
|
var connection;
|
|
function ensureMobileConnection() {
|
|
let deferred = Promise.defer();
|
|
|
|
let permissions = [{
|
|
"type": "mobileconnection",
|
|
"allow": true,
|
|
"context": document,
|
|
}];
|
|
SpecialPowers.pushPermissions(permissions, function() {
|
|
ok(true, "permissions pushed: " + JSON.stringify(permissions));
|
|
|
|
connection = window.navigator.mozMobileConnections[0];
|
|
if (connection) {
|
|
log("navigator.mozMobileConnections[0] is instance of " + connection.constructor);
|
|
} else {
|
|
log("navigator.mozMobileConnections[0] is undefined.");
|
|
}
|
|
|
|
if (connection instanceof MozMobileConnection) {
|
|
deferred.resolve(connection);
|
|
} else {
|
|
deferred.reject();
|
|
}
|
|
});
|
|
|
|
return deferred.promise;
|
|
}
|
|
|
|
function waitRadioState(state) {
|
|
let deferred = Promise.defer();
|
|
|
|
waitFor(function() {
|
|
deferred.resolve();
|
|
}, function() {
|
|
return connection.radioState == state;
|
|
});
|
|
|
|
return deferred.promise;
|
|
}
|
|
|
|
function setRadioEnabled(enabled) {
|
|
log("setRadioEnabled to " + enabled);
|
|
|
|
let deferred = Promise.defer();
|
|
|
|
let finalState = (enabled) ? "enabled" : "disabled";
|
|
connection.onradiostatechange = function() {
|
|
let state = connection.radioState;
|
|
log("Received 'radiostatechange' event, radioState: " + state);
|
|
|
|
if (state == finalState) {
|
|
deferred.resolve();
|
|
connection.onradiostatechange = null;
|
|
}
|
|
};
|
|
|
|
let req = connection.setRadioEnabled(enabled);
|
|
|
|
req.onsuccess = function() {
|
|
log("setRadioEnabled success");
|
|
};
|
|
|
|
req.onerror = function() {
|
|
ok(false, "setRadioEnabled should not fail");
|
|
deferred.reject();
|
|
};
|
|
|
|
return deferred.promise;
|
|
}
|
|
|
|
function testSendFailed(aCause) {
|
|
log("testSendFailed, aCause: " + aCause);
|
|
|
|
let testReceiver = "+0987654321";
|
|
let testMessage = "quick fox jump over the lazy dog";
|
|
|
|
return sendSmsWithFailure(testReceiver, testMessage)
|
|
.then((result) => {
|
|
is(result.error.name, aCause, "Checking failure cause.");
|
|
|
|
let domMessage = result.error.data;
|
|
is(domMessage.id, result.message.id, "Checking message id.");
|
|
is(domMessage.receiver, testReceiver, "Checking receiver address.");
|
|
is(domMessage.body, testMessage, "Checking message body.");
|
|
is(domMessage.delivery, "error", "Checking delivery.");
|
|
is(domMessage.deliveryStatus, "error", "Checking deliveryStatus.");
|
|
});
|
|
}
|
|
|
|
startTestCommon(function testCaseMain() {
|
|
return ensureMobileConnection()
|
|
.then(() => waitRadioState("enabled"))
|
|
.then(() => setRadioEnabled(false))
|
|
.then(() => testSendFailed("RadioDisabledError"))
|
|
.then(() => setRadioEnabled(true));
|
|
});
|