Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(248)

Side by Side Diff: third_party/WebKit/LayoutTests/http/tests/serviceworker/postmessage-to-client.html

Issue 2426723004: ServiceWorker: Modernize postMessage tests for cleanup (Closed)
Patch Set: address review comments Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <title>Service Worker: postMessage to Client</title> 2 <title>Service Worker: postMessage to Client</title>
3 <script src="../resources/testharness.js"></script> 3 <script src="../resources/testharness.js"></script>
4 <script src="../resources/testharnessreport.js"></script> 4 <script src="../resources/testharnessreport.js"></script>
5 <script src="resources/test-helpers.js"></script> 5 <script src="resources/test-helpers.js"></script>
6 <script> 6 <script>
7 var t = async_test('postMessage from ServiceWorker to Client'); 7
8 t.step(function() { 8 promise_test(t => {
9 var scope = 'resources/blank.html' 9 var script = 'resources/postmessage-to-client-worker.js';
10 service_worker_unregister_and_register( 10 var scope = 'resources/blank.html';
11 t, 'resources/postmessage-to-client-worker.js', scope) 11 var w;
12 .then(function(registration) { 12
13 return service_worker_unregister_and_register(t, script, scope)
14 .then(registration => {
15 add_completion_callback(() => registration.unregister());
13 return wait_for_state(t, registration.installing, 'activated'); 16 return wait_for_state(t, registration.installing, 'activated');
14 }) 17 })
15 .then(function() { return with_iframe(scope); }) 18 .then(() => with_iframe(scope))
16 .then(function(frame) { 19 .then(frame => {
17 var w = frame.contentWindow; 20 return new Promise(resolve => {
18 w.navigator.serviceWorker.onmessage = t.step_func(onMessage); 21 w = frame.contentWindow;
19 w.navigator.serviceWorker.controller.postMessage('ping'); 22 w.navigator.serviceWorker.onmessage = resolve;
23 w.navigator.serviceWorker.controller.postMessage('ping');
24 });
20 }) 25 })
21 .catch(unreached_rejection(t)); 26 .then(e => {
27 var message = e.data;
28 assert_equals(e.origin, location.origin,
29 'origin of message should be origin of Service Worker');
30 assert_equals(e.lastEventId, '',
31 'lastEventId should be an empty string');
32 assert_equals(message, 'Sending message via clients');
33 return new Promise(resolve => {
34 w.navigator.serviceWorker.onmessage = resolve;
35 });
36 })
37 .then(e => { assert_equals(e.data, 'quit'); });
38 }, 'postMessage from ServiceWorker to Client');
22 39
23 var result = [];
24 var expected = ['Sending message via clients'];
25
26 function onMessage(e) {
27 var message = e.data;
28 assert_equals(e.origin, location.origin,
29 'origin of message should be origin of Service Worker');
30 assert_equals(e.lastEventId, '',
31 'lastEventId should be an empty string');
32 if (message === 'quit') {
33 assert_array_equals(result, expected,
34 'Worker should post back expected messages.');
35 service_worker_unregister_and_done(t, scope);
36 } else {
37 result.push(message);
38 }
39 }
40 });
41 </script> 40 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698