Bug 1874684 - Part 6: Limit day length calculations to safe integers. r=mgaudet
[gecko.git] / dom / console / tests / test_timer.html
blobfa3ca7baec2777ea9b7b9c168a9af5be3db5c5d4
1 <!DOCTYPE HTML>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title>Test for timeStart/timeLog/timeEnd in console</title>
6 <script src="/tests/SimpleTest/SimpleTest.js"></script>
7 <script src="head.js"></script>
8 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
9 </head>
10 <body>
11 <script type="application/javascript">
13 SimpleTest.waitForExplicitFinish();
15 var reduceTimePrecisionPrevPrefValue = SpecialPowers.getBoolPref("privacy.reduceTimerPrecision");
16 SpecialPowers.setBoolPref("privacy.reduceTimerPrecision", false);
18 function ConsoleListener() {
19 addConsoleStorageListener(this);
22 ConsoleListener.prototype = {
23 observe(aSubject) {
24 let obj = aSubject.wrappedJSObject;
25 if (obj.arguments[0] != "test_bug1463614") {
26 return;
29 if (!this._cb || !this._cb(obj)) {
30 return;
33 this._cb = null;
34 this._resolve();
37 shutdown() {
38 removeConsoleStorageListener(this);
41 waitFor(cb) {
42 return new Promise(resolve => {
43 this._cb = SpecialPowers.wrapCallback(cb);
44 this._resolve = resolve;
45 });
49 let listener = new ConsoleListener();
51 // Timer creation:
52 async function runTest() {
53 let cl = listener.waitFor(obj => {
54 return ("timer" in obj) &&
55 ("name" in obj.timer) &&
56 obj.timer.name == "test_bug1463614";
57 });
59 console.time("test_bug1463614");
60 await cl;
61 ok(true, "Console.time received!");
63 // Timer check:
64 cl = listener.waitFor(obj => {
65 return ("timer" in obj) &&
66 ("name" in obj.timer) &&
67 obj.timer.name == "test_bug1463614" &&
68 ("duration" in obj.timer) &&
69 obj.timer.duration >= 0 &&
70 obj.arguments[1] == 1 &&
71 obj.arguments[2] == 2 &&
72 obj.arguments[3] == 3 &&
73 obj.arguments[4] == 4;
74 });
75 console.timeLog("test_bug1463614", 1, 2, 3, 4);
76 await cl;
77 ok(true, "Console.timeLog received!");
79 // Time deleted:
80 cl = listener.waitFor(obj => {
81 return ("timer" in obj) &&
82 ("name" in obj.timer) &&
83 obj.timer.name == "test_bug1463614" &&
84 ("duration" in obj.timer) &&
85 obj.timer.duration >= 0;
86 });
87 console.timeEnd("test_bug1463614");
88 await cl;
89 ok(true, "Console.timeEnd received!");
91 // Here an error:
92 cl = listener.waitFor(obj => {
93 return ("timer" in obj) &&
94 ("name" in obj.timer) &&
95 obj.timer.name == "test_bug1463614" &&
96 ("error" in obj.timer);
97 });
98 console.timeLog("test_bug1463614");
99 await cl;
100 ok(true, "Console.time with error received!");
103 runTest().then(() => {
104 listener.shutdown();
106 SpecialPowers.setBoolPref("privacy.reduceTimerPrecision", reduceTimePrecisionPrevPrefValue);
107 SimpleTest.finish();
110 </script>
111 </body>
112 </html>