Wed, 31 Dec 2014 06:09:35 +0100
Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
4 MARIONETTE_TIMEOUT = 10000;
6 SpecialPowers.addPermission("fmradio", true, document);
8 let FMRadio = window.navigator.mozFMRadio;
10 function verifyInitialState() {
11 log("Verifying initial state.");
12 ok(FMRadio);
13 is(FMRadio.enabled, false);
14 setUp();
15 }
17 function setUp() {
18 let frequency = FMRadio.frequencyLowerBound + FMRadio.channelWidth;
19 FMRadio.enable(frequency);
20 FMRadio.onenabled = setFrequency;
21 }
23 function setFrequency() {
24 log("Set Frequency");
25 let frequency = FMRadio.frequency + FMRadio.channelWidth;
26 var request = FMRadio.setFrequency(frequency);
27 ok(request);
29 request.onsuccess = setOutOfRangeFrequency;
30 request.onerror = function() {
31 ok(false, "setFrequency request should not fail.");
32 };
33 }
35 function setOutOfRangeFrequency() {
36 log("Set Frequency that out of the range");
37 var request = FMRadio.setFrequency(FMRadio.frequencyUpperBound + 1);
38 ok(request);
40 request.onsuccess = function() {
41 ok(false, "The request of setting an out-of-range frequency should fail.");
42 };
43 request.onerror = setFrequencyWhenSeeking;
44 }
46 function setFrequencyWhenSeeking() {
47 log("Set frequency when seeking");
48 var request = FMRadio.seekUp();
49 ok(request);
51 // There are two possibilities which depends on the system
52 // process scheduling (bug 911063 comment 0):
53 // - seek fails
54 // - seek's onsuccess fires before setFrequency's onsucess
56 var failedToSeek = false;
57 request.onerror = function() {
58 failedToSeek = true;
59 };
61 var seekCompletes = false;
62 request.onsuccess = function() {
63 ok(!failedToSeek);
64 seekCompletes = true;
65 };
67 var frequency = FMRadio.frequencyUpperBound - FMRadio.channelWidth;
68 var setFreqRequest = FMRadio.setFrequency(frequency);
69 ok(setFreqRequest);
71 setFreqRequest.onsuccess = function() {
72 ok(failedToSeek || seekCompletes);
73 cleanUp();
74 };
75 }
77 function cleanUp() {
78 FMRadio.disable();
79 FMRadio.ondisabled = function() {
80 FMRadio.ondisabled = null;
81 ok(!FMRadio.enabled);
82 finish();
83 };
84 }
86 verifyInitialState();