1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/dom/alarm/test/test_alarm_add_data.html Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,233 @@ 1.4 +<!DOCTYPE HTML> 1.5 +<html> 1.6 +<head> 1.7 + <meta charset="utf-8"> 1.8 + <title>Test data Paramter for Alarm API</title> 1.9 + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> 1.10 + <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> 1.11 +</head> 1.12 +<body> 1.13 +<p id="display"></p> 1.14 +<div id="content" style="display: none"></div> 1.15 +<pre id="test"> 1.16 + <script type="application/javascript"> 1.17 + 1.18 + "use strict"; 1.19 + 1.20 + // Verify passing {} for the data paramter 1.21 + function testEmptyObject() { 1.22 + var tomorrow = new Date(); 1.23 + tomorrow.setDate(tomorrow.getDate() + 1); 1.24 + 1.25 + var data = {}; 1.26 + 1.27 + var domRequest; 1.28 + try { 1.29 + domRequest = navigator.mozAlarms.add(tomorrow, "honorTimezone", data); 1.30 + } catch (e) { 1.31 + ok(false, 1.32 + "Unexpected exception trying to add alarm for tomorrow for empty object test."); 1.33 + 1.34 + return testEmptyList(); 1.35 + } 1.36 + domRequest.onsuccess = function(e) { 1.37 + var alarmId = e.target.result; 1.38 + 1.39 + // Confirm the alarm added has the data we requested 1.40 + var allReq; 1.41 + try { 1.42 + allReq = navigator.mozAlarms.getAll(); 1.43 + } catch (e) { 1.44 + ok(false, 1.45 + "Unexpected exception trying to get all alarms for empty object test."); 1.46 + 1.47 + return testEmptyList(); 1.48 + } 1.49 + allReq.onsuccess = function(ev) { 1.50 + navigator.mozAlarms.remove(alarmId); 1.51 + 1.52 + var found = false; 1.53 + ev.target.result.forEach(function(alarm, i, arr) { 1.54 + if (alarm.id == alarmId) { 1.55 + // Found the one we added 1.56 + ok(Object.keys(alarm.data).length === 0, 1.57 + "Empty object passed for data parameter for new alarm."); 1.58 + 1.59 + found = true; 1.60 + } 1.61 + }); 1.62 + 1.63 + if (!found) { 1.64 + ok(false, "Couldn't find alarm that was added for empty object test."); 1.65 + } 1.66 + 1.67 + testEmptyList(); 1.68 + } 1.69 + allReq.onerror = function(e) { 1.70 + ok(false, "Unable to get all alarms for empty object test."); 1.71 + 1.72 + testEmptyList(); 1.73 + } 1.74 + }; 1.75 + domRequest.onerror = function(e) { 1.76 + ok(false, "Unable to add alarm for tomorrow for empty object test."); 1.77 + 1.78 + testEmptyList(); 1.79 + }; 1.80 + 1.81 + } 1.82 + 1.83 + // Verify passing [] for the data paramter 1.84 + function testEmptyList() { 1.85 + var tomorrow = new Date(); 1.86 + tomorrow.setDate(tomorrow.getDate() + 1); 1.87 + 1.88 + var data = []; 1.89 + 1.90 + var domRequest; 1.91 + try { 1.92 + domRequest = navigator.mozAlarms.add(tomorrow, "honorTimezone", data); 1.93 + } catch (e) { 1.94 + ok(false, 1.95 + "Unexpected exception trying to add alarm for tomorrow for empty list test."); 1.96 + 1.97 + return testNull(); 1.98 + } 1.99 + domRequest.onsuccess = function(e) { 1.100 + var alarmId = e.target.result; 1.101 + 1.102 + // Confirm the alarm added has the data we requested 1.103 + var allReq; 1.104 + try { 1.105 + allReq = navigator.mozAlarms.getAll(); 1.106 + } catch (e) { 1.107 + ok(false, 1.108 + "Unexpected exception trying to get all alarms for empty list test."); 1.109 + 1.110 + return testNull(); 1.111 + } 1.112 + allReq.onsuccess = function(ev) { 1.113 + navigator.mozAlarms.remove(alarmId); 1.114 + 1.115 + var found = false; 1.116 + ev.target.result.forEach(function(alarm, i, arr) { 1.117 + if (alarm.id == alarmId) { 1.118 + // Found the one we added 1.119 + ok(alarm.data.length === 0, 1.120 + "Empty list passed for data parameter for new alarm."); 1.121 + 1.122 + found = true; 1.123 + } 1.124 + }); 1.125 + 1.126 + if (!found) { 1.127 + ok(false, "Couldn't find alarm that was added for empty list test."); 1.128 + } 1.129 + 1.130 + testNull(); 1.131 + } 1.132 + allReq.onerror = function(e) { 1.133 + ok(false, "Unable to get all alarms for empty list test."); 1.134 + 1.135 + testNull(); 1.136 + } 1.137 + }; 1.138 + domRequest.onerror = function(e) { 1.139 + ok(false, "Unable to add alarm for tomorrow for empty list test."); 1.140 + 1.141 + testNull(); 1.142 + }; 1.143 + 1.144 + } 1.145 + 1.146 + // Verify passing null for the data paramter 1.147 + function testNull() { 1.148 + var tomorrow = new Date(); 1.149 + tomorrow.setDate(tomorrow.getDate() + 1); 1.150 + 1.151 + var data = null; 1.152 + 1.153 + var domRequest; 1.154 + try { 1.155 + domRequest = navigator.mozAlarms.add(tomorrow, "honorTimezone", data); 1.156 + } catch (e) { 1.157 + ok(false, 1.158 + "Unexpected exception trying to add alarm for tomorrow for null test."); 1.159 + return SimpleTest.finish(); 1.160 + } 1.161 + domRequest.onsuccess = function(e) { 1.162 + var alarmId = e.target.result; 1.163 + 1.164 + // Confirm the alarm added has the data we requested 1.165 + var allReq; 1.166 + try { 1.167 + allReq = navigator.mozAlarms.getAll(); 1.168 + } catch (e) { 1.169 + ok(false, 1.170 + "Unexpected exception trying to get all alarms for null test."); 1.171 + return SimpleTest.finish(); 1.172 + } 1.173 + allReq.onsuccess = function(ev) { 1.174 + navigator.mozAlarms.remove(alarmId); 1.175 + 1.176 + var found = false; 1.177 + ev.target.result.forEach(function(alarm, i, arr) { 1.178 + if (alarm.id == alarmId) { 1.179 + // Found the one we added 1.180 + ok(alarm.data === null, 1.181 + "Null passed for data parameter for new alarm."); 1.182 + 1.183 + found = true; 1.184 + } 1.185 + }); 1.186 + 1.187 + if (!found) { 1.188 + ok(false, "Couldn't find alarm that was added for null test."); 1.189 + } 1.190 + SimpleTest.finish(); 1.191 + } 1.192 + allReq.onerror = function(e) { 1.193 + ok(false, "Unable to get all alarms for null test."); 1.194 + SimpleTest.finish(); 1.195 + } 1.196 + }; 1.197 + domRequest.onerror = function(e) { 1.198 + ok(false, "Unable to add alarm for tomorrow for null test."); 1.199 + SimpleTest.finish(); 1.200 + }; 1.201 + 1.202 + } 1.203 + 1.204 + function startTests() { 1.205 + 1.206 + SpecialPowers.pushPrefEnv({"set": [["dom.mozAlarms.enabled", true]]}, function() { 1.207 + 1.208 + // Currently applicable only on FxOS 1.209 + if (navigator.userAgent.indexOf("Mobile") != -1 && 1.210 + navigator.appVersion.indexOf("Android") == -1) { 1.211 + 1.212 + testEmptyObject(); 1.213 + 1.214 + } else { 1.215 + ok(true, "mozAlarms on Firefox OS only."); 1.216 + SimpleTest.finish(); 1.217 + } 1.218 + 1.219 + }); 1.220 + 1.221 + } 1.222 + 1.223 + SimpleTest.expectAssertions(0, 9); 1.224 + SimpleTest.waitForExplicitFinish(); 1.225 + if (SpecialPowers.hasPermission("alarms", document)) { 1.226 + startTests(); 1.227 + } else { 1.228 + // Add the permission and reload the page so it propogates 1.229 + SpecialPowers.addPermission("alarms", true, document); 1.230 + window.location.reload(); 1.231 + } 1.232 + 1.233 + </script> 1.234 +</pre> 1.235 +</body> 1.236 +</html>