зеркало из https://github.com/mozilla/gecko-dev.git
74 строки
1.6 KiB
JavaScript
74 строки
1.6 KiB
JavaScript
|
/* Any copyright is dedicated to the Public Domain.
|
||
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
||
|
|
||
|
MARIONETTE_TIMEOUT = 10000;
|
||
|
|
||
|
SpecialPowers.addPermission("fmradio", true, document);
|
||
|
|
||
|
let FMRadio = window.navigator.mozFMRadio;
|
||
|
|
||
|
function verifyInitialState() {
|
||
|
log("Verifying initial state.");
|
||
|
ok(FMRadio);
|
||
|
is(FMRadio.enabled, false);
|
||
|
setUp();
|
||
|
}
|
||
|
|
||
|
function setUp() {
|
||
|
let frequency = FMRadio.frequencyLowerBound + FMRadio.channelWidth;
|
||
|
FMRadio.enable(frequency);
|
||
|
FMRadio.onenabled = seek;
|
||
|
}
|
||
|
|
||
|
function seek() {
|
||
|
var request = FMRadio.seekUp();
|
||
|
ok(request);
|
||
|
|
||
|
// There are two possibilities which depends on the system
|
||
|
// process scheduling (bug 911063 comment 0):
|
||
|
// - the second seek fails
|
||
|
// - both seeks are executed
|
||
|
|
||
|
request.onerror = function() {
|
||
|
ok(!firstSeekCompletes);
|
||
|
cleanUp();
|
||
|
};
|
||
|
|
||
|
var firstSeekCompletes = false;
|
||
|
request.onsuccess = function() {
|
||
|
firstSeekCompletes = true;
|
||
|
};
|
||
|
|
||
|
var seekAgainReq = FMRadio.seekUp();
|
||
|
ok(seekAgainReq);
|
||
|
|
||
|
seekAgainReq.onerror = function() {
|
||
|
log("Cancel the first seek to finish the test");
|
||
|
let cancelReq = FMRadio.cancelSeek();
|
||
|
ok(cancelReq);
|
||
|
|
||
|
// It's possible that the first seek completes when the
|
||
|
// cancel request is handled.
|
||
|
cancelReq.onerror = function() {
|
||
|
cleanUp();
|
||
|
};
|
||
|
};
|
||
|
|
||
|
seekAgainReq.onsuccess = function() {
|
||
|
ok(firstSeekCompletes);
|
||
|
cleanUp();
|
||
|
};
|
||
|
}
|
||
|
|
||
|
function cleanUp() {
|
||
|
FMRadio.disable();
|
||
|
FMRadio.ondisabled = function() {
|
||
|
FMRadio.ondisabled = null;
|
||
|
ok(!FMRadio.enabled);
|
||
|
finish();
|
||
|
};
|
||
|
}
|
||
|
|
||
|
verifyInitialState();
|
||
|
|