dom/fmradio/test/marionette/test_set_frequency.js

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:3fb98742fc73
1 /* Any copyright is dedicated to the Public Domain.
2 * http://creativecommons.org/publicdomain/zero/1.0/ */
3
4 MARIONETTE_TIMEOUT = 10000;
5
6 SpecialPowers.addPermission("fmradio", true, document);
7
8 let FMRadio = window.navigator.mozFMRadio;
9
10 function verifyInitialState() {
11 log("Verifying initial state.");
12 ok(FMRadio);
13 is(FMRadio.enabled, false);
14 setUp();
15 }
16
17 function setUp() {
18 let frequency = FMRadio.frequencyLowerBound + FMRadio.channelWidth;
19 FMRadio.enable(frequency);
20 FMRadio.onenabled = setFrequency;
21 }
22
23 function setFrequency() {
24 log("Set Frequency");
25 let frequency = FMRadio.frequency + FMRadio.channelWidth;
26 var request = FMRadio.setFrequency(frequency);
27 ok(request);
28
29 request.onsuccess = setOutOfRangeFrequency;
30 request.onerror = function() {
31 ok(false, "setFrequency request should not fail.");
32 };
33 }
34
35 function setOutOfRangeFrequency() {
36 log("Set Frequency that out of the range");
37 var request = FMRadio.setFrequency(FMRadio.frequencyUpperBound + 1);
38 ok(request);
39
40 request.onsuccess = function() {
41 ok(false, "The request of setting an out-of-range frequency should fail.");
42 };
43 request.onerror = setFrequencyWhenSeeking;
44 }
45
46 function setFrequencyWhenSeeking() {
47 log("Set frequency when seeking");
48 var request = FMRadio.seekUp();
49 ok(request);
50
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
55
56 var failedToSeek = false;
57 request.onerror = function() {
58 failedToSeek = true;
59 };
60
61 var seekCompletes = false;
62 request.onsuccess = function() {
63 ok(!failedToSeek);
64 seekCompletes = true;
65 };
66
67 var frequency = FMRadio.frequencyUpperBound - FMRadio.channelWidth;
68 var setFreqRequest = FMRadio.setFrequency(frequency);
69 ok(setFreqRequest);
70
71 setFreqRequest.onsuccess = function() {
72 ok(failedToSeek || seekCompletes);
73 cleanUp();
74 };
75 }
76
77 function cleanUp() {
78 FMRadio.disable();
79 FMRadio.ondisabled = function() {
80 FMRadio.ondisabled = null;
81 ok(!FMRadio.enabled);
82 finish();
83 };
84 }
85
86 verifyInitialState();
87

mercurial