OLD | NEW |
1 // Test helper that is meant as a mini test framework to be used from a service | 1 // Test helper that is meant as a mini test framework to be used from a service |
2 // worker that runs some tests and send results back to its client. | 2 // worker that runs some tests and send results back to its client. |
3 // | 3 // |
4 // A simple usage of this framework would consist of calling initialize() to | 4 // A simple usage of this framework would consist of calling initialize() to |
5 // setup then runNextTestOrQuit() in order to start running the methods defined | 5 // setup then runNextTestOrQuit() in order to start running the methods defined |
6 // by TESTS. Then, tests can start sending messages back to the client using | 6 // by TESTS. Then, tests can start sending messages back to the client using |
7 // postMessage(). | 7 // postMessage(). |
8 // | 8 // |
9 // Example: | 9 // Example: |
10 // var TESTS = [ | 10 // var TESTS = [ |
(...skipping 21 matching lines...) Expand all Loading... |
32 } | 32 } |
33 | 33 |
34 self.postMessage = function(msg) { | 34 self.postMessage = function(msg) { |
35 client.postMessage(msg); | 35 client.postMessage(msg); |
36 } | 36 } |
37 | 37 |
38 // Run the next test in TESTS if any. Otherwise sends a 'quit' message. and | 38 // Run the next test in TESTS if any. Otherwise sends a 'quit' message. and |
39 // stops. | 39 // stops. |
40 // In order for that call to succeed, the script MUST have a TESTS array | 40 // In order for that call to succeed, the script MUST have a TESTS array |
41 // defined. | 41 // defined. |
42 self.runNextTestOrQuit = function() { | 42 self.runNextTestOrQuit = function(data) { |
43 ++currentTest; | 43 ++currentTest; |
44 if (currentTest >= TESTS.length) { | 44 if (currentTest >= TESTS.length) { |
45 client.postMessage('quit'); | 45 client.postMessage('quit'); |
46 return; | 46 return; |
47 } | 47 } |
48 TESTS[currentTest](); | 48 TESTS[currentTest](data); |
49 } | 49 } |
50 | 50 |
51 // This method will use the |client| in order to synthesize a notificationclick | 51 // This method will use the |client| in order to synthesize a notificationclick |
52 // event. The client will then use the testRunner. | 52 // event. The client will then use the testRunner. |
53 // The returned promise will be resolved with the notificationclick event | 53 // The returned promise will be resolved with the notificationclick event |
54 // object. | 54 // object. |
55 self.synthesizeNotificationClick = function() { | 55 self.synthesizeNotificationClick = function() { |
56 var promise = new Promise(function(resolve) { | 56 var promise = new Promise(function(resolve) { |
57 var title = "fake notification"; | 57 var title = "fake notification"; |
58 registration.showNotification(title).then(function() { | 58 registration.showNotification(title).then(function() { |
59 client.postMessage({type: 'click', title: title}); | 59 client.postMessage({type: 'click', title: title}); |
60 }); | 60 }); |
61 | 61 |
62 var handler = function(e) { | 62 var handler = function(e) { |
63 resolve(e); | 63 resolve(e); |
64 e.notification.close(); | 64 e.notification.close(); |
65 self.removeEventListener('notificationclick', handler); | 65 self.removeEventListener('notificationclick', handler); |
66 }; | 66 }; |
67 | 67 |
68 self.addEventListener('notificationclick', handler); | 68 self.addEventListener('notificationclick', handler); |
69 }); | 69 }); |
70 | 70 |
71 return promise; | 71 return promise; |
72 } | 72 } |
OLD | NEW |