dom/alarm/test/test_alarm_add_data.html

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4   <meta charset="utf-8">
     5   <title>Test data Paramter for 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   // Verify passing {} for the data paramter
    18   function testEmptyObject() {
    19     var tomorrow = new Date();
    20     tomorrow.setDate(tomorrow.getDate() + 1);
    22     var data = {};
    24     var domRequest;
    25     try {
    26       domRequest = navigator.mozAlarms.add(tomorrow, "honorTimezone", data);
    27     } catch (e) {
    28       ok(false,
    29          "Unexpected exception trying to add alarm for tomorrow for empty object test.");
    31       return testEmptyList();
    32     }
    33     domRequest.onsuccess = function(e) {
    34       var alarmId = e.target.result;
    36       // Confirm the alarm added has the data we requested
    37       var allReq;
    38       try {
    39         allReq = navigator.mozAlarms.getAll();
    40       } catch (e) {
    41         ok(false,
    42           "Unexpected exception trying to get all alarms for empty object test.");
    44         return testEmptyList();
    45       }
    46       allReq.onsuccess = function(ev) {
    47         navigator.mozAlarms.remove(alarmId);
    49         var found = false;
    50         ev.target.result.forEach(function(alarm, i, arr) {
    51           if (alarm.id == alarmId) {
    52             // Found the one we added
    53             ok(Object.keys(alarm.data).length === 0,
    54                "Empty object passed for data parameter for new alarm.");
    56             found = true;
    57           }
    58         });
    60         if (!found) {
    61           ok(false, "Couldn't find alarm that was added for empty object test.");
    62         }
    64         testEmptyList();
    65       }
    66       allReq.onerror = function(e) {
    67         ok(false, "Unable to get all alarms for empty object test.");
    69         testEmptyList();
    70       }
    71     };
    72     domRequest.onerror = function(e) {
    73       ok(false, "Unable to add alarm for tomorrow for empty object test.");
    75       testEmptyList();
    76     };
    78   }
    80   // Verify passing [] for the data paramter
    81   function testEmptyList() {
    82     var tomorrow = new Date();
    83     tomorrow.setDate(tomorrow.getDate() + 1);
    85     var data = [];
    87     var domRequest;
    88     try {
    89       domRequest = navigator.mozAlarms.add(tomorrow, "honorTimezone", data);
    90     } catch (e) {
    91       ok(false,
    92          "Unexpected exception trying to add alarm for tomorrow for empty list test.");
    94       return testNull();
    95     }
    96     domRequest.onsuccess = function(e) {
    97       var alarmId = e.target.result;
    99       // Confirm the alarm added has the data we requested
   100       var allReq;
   101       try {
   102         allReq = navigator.mozAlarms.getAll();
   103       } catch (e) {
   104         ok(false,
   105           "Unexpected exception trying to get all alarms for empty list test.");
   107         return testNull();
   108       }
   109       allReq.onsuccess = function(ev) {
   110         navigator.mozAlarms.remove(alarmId);
   112         var found = false;
   113         ev.target.result.forEach(function(alarm, i, arr) {
   114           if (alarm.id == alarmId) {
   115             // Found the one we added
   116             ok(alarm.data.length === 0,
   117                "Empty list passed for data parameter for new alarm.");
   119             found = true;
   120           }
   121         });
   123         if (!found) {
   124           ok(false, "Couldn't find alarm that was added for empty list test.");
   125         }
   127         testNull();
   128       }
   129       allReq.onerror = function(e) {
   130         ok(false, "Unable to get all alarms for empty list test.");
   132         testNull();
   133       }
   134     };
   135     domRequest.onerror = function(e) {
   136       ok(false, "Unable to add alarm for tomorrow for empty list test.");
   138       testNull();
   139     };
   141   }
   143   // Verify passing null for the data paramter
   144   function testNull() {
   145     var tomorrow = new Date();
   146     tomorrow.setDate(tomorrow.getDate() + 1);
   148     var data = null;
   150     var domRequest;
   151     try {
   152       domRequest = navigator.mozAlarms.add(tomorrow, "honorTimezone", data);
   153     } catch (e) {
   154       ok(false,
   155          "Unexpected exception trying to add alarm for tomorrow for null test.");
   156       return SimpleTest.finish();
   157     }
   158     domRequest.onsuccess = function(e) {
   159       var alarmId = e.target.result;
   161       // Confirm the alarm added has the data we requested
   162       var allReq;
   163       try {
   164         allReq = navigator.mozAlarms.getAll();
   165       } catch (e) {
   166         ok(false,
   167           "Unexpected exception trying to get all alarms for null test.");
   168         return SimpleTest.finish();
   169       }
   170       allReq.onsuccess = function(ev) {
   171         navigator.mozAlarms.remove(alarmId);
   173         var found = false;
   174         ev.target.result.forEach(function(alarm, i, arr) {
   175           if (alarm.id == alarmId) {
   176             // Found the one we added
   177             ok(alarm.data === null,
   178                "Null passed for data parameter for new alarm.");
   180             found = true;
   181           }
   182         });
   184         if (!found) {
   185           ok(false, "Couldn't find alarm that was added for null test.");
   186         }
   187         SimpleTest.finish();
   188       }
   189       allReq.onerror = function(e) {
   190         ok(false, "Unable to get all alarms for null test.");
   191         SimpleTest.finish();
   192       }
   193     };
   194     domRequest.onerror = function(e) {
   195       ok(false, "Unable to add alarm for tomorrow for null test.");
   196       SimpleTest.finish();
   197     };
   199   }
   201   function startTests() {
   203     SpecialPowers.pushPrefEnv({"set": [["dom.mozAlarms.enabled", true]]}, function() {
   205       // Currently applicable only on FxOS
   206       if (navigator.userAgent.indexOf("Mobile") != -1 &&
   207           navigator.appVersion.indexOf("Android") == -1) {
   209         testEmptyObject();
   211       } else {
   212         ok(true, "mozAlarms on Firefox OS only.");
   213         SimpleTest.finish();
   214       }
   216     });
   218   }
   220   SimpleTest.expectAssertions(0, 9);
   221   SimpleTest.waitForExplicitFinish();
   222   if (SpecialPowers.hasPermission("alarms", document)) {
   223     startTests();
   224   } else {
   225     // Add the permission and reload the page so it propogates
   226     SpecialPowers.addPermission("alarms", true, document);
   227     window.location.reload();
   228   }
   230   </script>
   231 </pre>
   232 </body>
   233 </html>

mercurial