dom/alarm/test/test_alarm_remove.html

Tue, 06 Jan 2015 21:39:09 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Tue, 06 Jan 2015 21:39:09 +0100
branch
TOR_BUG_9701
changeset 8
97036ab72558
permissions
-rw-r--r--

Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4   <meta charset="utf-8">
     5   <title>Test Adding and Removing Alarms with Alarm API</title>
     6   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     7   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
     8 </head>
     9 <body>
    10 <p id="display"></p>
    11 <div id="content" style="display: none"></div>
    12 <pre id="test">
    13   <script type="application/javascript">
    15   "use strict";
    17   function checkNumberOfAlarms(n, cbk) {
    18     var domRequest;
    19     try {
    20       domRequest = navigator.mozAlarms.getAll();
    21     } catch (e) {
    22       ok(false,
    23          "Unexpected exception trying to get all alarms.");
    24     }
    25     domRequest.onsuccess = function(e) {
    26       ok(e.target.result.length === n, "Correct number of alarms set.");
    27       cbk();
    28     }
    29   }
    31   // Add alarm and then remove it
    32   function testAddRemove() {
    33     var tomorrow = new Date();
    34     tomorrow.setDate(tomorrow.getDate() + 1);
    36     var domRequest;
    37     try {
    38       domRequest = navigator.mozAlarms.getAll();
    39     } catch (e) {
    40       ok(false,
    41          "Unexpected exception trying to get all alarms.");
    43       return SimpleTest.finish();
    44     }
    45     domRequest.onsuccess = function(e) {
    46       var initialAlarmsN = e.target.result.length;
    48       var dr;
    49       try {
    50         dr = navigator.mozAlarms.add(tomorrow, "honorTimezone", null);
    51       } catch (e) {
    52         ok(false,
    53            "Unexpected exception trying add alarm.");
    55         return SimpleTest.finish();
    56       }
    57       dr.onsuccess = function(ev) {
    58         var alarmId = ev.target.result;
    60         checkNumberOfAlarms(initialAlarmsN + 1, function() {
    61           navigator.mozAlarms.remove(alarmId);
    63           checkNumberOfAlarms(initialAlarmsN, function() {
    64             SimpleTest.finish();
    65           });
    66         });
    67       }
    69     }
    71   }
    73   function startTests() {
    75     SpecialPowers.pushPrefEnv({"set": [["dom.mozAlarms.enabled", true]]}, function() {
    77       // Currently applicable only on FxOS
    78       if (navigator.userAgent.indexOf("Mobile") != -1 &&
    79           navigator.appVersion.indexOf("Android") == -1) {
    81         testAddRemove();
    83       } else {
    84         ok(true, "mozAlarms on Firefox OS only.");
    85         SimpleTest.finish();
    86       }
    88     });
    89   }
    91   SimpleTest.expectAssertions(0, 9);
    92   SimpleTest.waitForExplicitFinish();
    93   if (SpecialPowers.hasPermission("alarms", document)) {
    94     startTests();
    95   } else {
    96     // Add the permission and reload so it's propogated
    97     SpecialPowers.addPermission("alarms", true, document);
    98     window.location.reload();
    99   }
   100   </script>
   101 </pre>
   102 </body>
   103 </html>

mercurial