test_timer.html (2775B)
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"> 12 13 SimpleTest.waitForExplicitFinish(); 14 15 var reduceTimePrecisionPrevPrefValue = SpecialPowers.getBoolPref("privacy.reduceTimerPrecision"); 16 SpecialPowers.setBoolPref("privacy.reduceTimerPrecision", false); 17 18 function ConsoleListener() { 19 addConsoleStorageListener(this); 20 } 21 22 ConsoleListener.prototype = { 23 observe(aSubject) { 24 let obj = aSubject.wrappedJSObject; 25 if (obj.arguments[0] != "test_bug1463614") { 26 return; 27 } 28 29 if (!this._cb || !this._cb(obj)) { 30 return; 31 } 32 33 this._cb = null; 34 this._resolve(); 35 }, 36 37 shutdown() { 38 removeConsoleStorageListener(this); 39 }, 40 41 waitFor(cb) { 42 return new Promise(resolve => { 43 this._cb = SpecialPowers.wrapCallback(cb); 44 this._resolve = resolve; 45 }); 46 }, 47 }; 48 49 let listener = new ConsoleListener(); 50 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 }); 58 59 console.time("test_bug1463614"); 60 await cl; 61 ok(true, "Console.time received!"); 62 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!"); 78 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!"); 90 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!"); 101 } 102 103 runTest().then(() => { 104 listener.shutdown(); 105 106 SpecialPowers.setBoolPref("privacy.reduceTimerPrecision", reduceTimePrecisionPrevPrefValue); 107 SimpleTest.finish(); 108 }); 109 110 </script> 111 </body> 112 </html>