dom/fmradio/test/marionette/test_set_frequency.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

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();

mercurial