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

Side by Side Diff: LayoutTests/http/tests/serviceworker/resources/test-helpers.js

Issue 435453002: [ServiceWorker] Update formatting for tests. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Don't forget to update callsites. Created 6 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « LayoutTests/http/tests/serviceworker/resources/interfaces-worker.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Adapter for testharness.js-style tests with Service Workers 1 // Adapter for testharness.js-style tests with Service Workers
2 2
3 function service_worker_unregister_and_register(test, url, scope) { 3 function service_worker_unregister_and_register(test, url, scope) {
4 var options = scope ? { scope: scope } : {}; 4 var options = scope ? {scope: scope} : {};
5 return navigator.serviceWorker.unregister(scope).then( 5 return navigator.serviceWorker.unregister(scope)
6 test.step_func(function() { 6 .catch(unreached_rejection(test, 'Unregister should not fail'))
7 return navigator.serviceWorker.register(url, options); 7 .then(test.step_func(function() {
8 }), 8 return navigator.serviceWorker.register(url, options);
9 unreached_rejection(test, 'Unregister should not fail') 9 }))
10 ).then(test.step_func(function(worker) { 10 .catch(unreached_rejection(test, 'Registration should not fail'));
11 return Promise.resolve(worker);
12 }),
13 unreached_rejection(test, 'Registration should not fail')
14 );
15 } 11 }
16 12
17 function service_worker_unregister_and_done(test, scope) { 13 function service_worker_unregister_and_done(test, scope) {
18 return navigator.serviceWorker.unregister(scope).then( 14 return navigator.serviceWorker.unregister(scope)
19 test.done.bind(test), 15 .then(test.done.bind(test),
20 unreached_rejection(test, 'Unregister should not fail')); 16 unreached_rejection(test, 'Unregister should not fail'));
21 } 17 }
22 18
23 // Rejection-specific helper that provides more details 19 // Rejection-specific helper that provides more details
24 function unreached_rejection(test, prefix) { 20 function unreached_rejection(test, prefix) {
25 return test.step_func(function(error) { 21 return test.step_func(function(error) {
26 var reason = error.name ? error.name : error; 22 var reason = error.message || error.name || error;
falken 2014/08/07 12:45:45 Thank you for this!!! I've been using this locally
27 var prefix = prefix ? prefix : "unexpected rejection"; 23 var error_prefix = prefix || 'unexpected rejection';
28 assert_unreached(prefix + ': ' + reason); 24 assert_unreached(error_prefix + ': ' + reason);
29 }); 25 });
30 } 26 }
31 27
32 // FIXME: Clean up the iframe when the test completes. 28 // FIXME: Clean up the iframe when the test completes.
33 function with_iframe(url, f) { 29 function with_iframe(url, f) {
34 return new Promise(function(resolve, reject) { 30 return new Promise(function(resolve, reject) {
35 var frame = document.createElement('iframe'); 31 var frame = document.createElement('iframe');
36 frame.src = url; 32 frame.src = url;
37 frame.onload = function() { 33 frame.onload = function() {
38 if (f) { 34 if (f) {
39 f(frame); 35 f(frame);
40 } 36 }
41 resolve(frame); 37 resolve(frame);
42 }; 38 };
43 document.body.appendChild(frame); 39 document.body.appendChild(frame);
44 }); 40 });
45 } 41 }
46 42
47 function normalizeURL(url) { 43 function normalizeURL(url) {
48 return new URL(url, document.location).toString().replace(/#.*$/, ''); 44 return new URL(url, document.location).toString().replace(/#.*$/, '');
49 } 45 }
50 46
51 function wait_for_state(test, worker, state) { 47 function wait_for_state(test, worker, state) {
52 return new Promise(test.step_func(function(resolve, reject) { 48 return new Promise(test.step_func(function(resolve, reject) {
53 worker.addEventListener('statechange', test.step_func(function() { 49 worker.addEventListener('statechange',
50 test.step_func(function() {
54 if (worker.state === state) 51 if (worker.state === state)
55 resolve(state); 52 resolve(state);
56 })); 53 }));
57 })); 54 }));
58 } 55 }
59 56
60 (function() { 57 (function() {
61 function fetch_tests_from_worker(worker) { 58 function fetch_tests_from_worker(worker) {
62 return new Promise(function(resolve, reject) { 59 return new Promise(function(resolve, reject) {
63 var messageChannel = new MessageChannel(); 60 var messageChannel = new MessageChannel();
64 messageChannel.port1.addEventListener('message', function(message) { 61 messageChannel.port1.addEventListener('message', function(message) {
65 if (message.data.type == 'complete') { 62 if (message.data.type == 'complete') {
66 synthesize_tests(message.data.tests, message.data.status); 63 synthesize_tests(message.data.tests, message.data.status);
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 var test = async_test(description); 99 var test = async_test(description);
103 service_worker_unregister_and_register(test, url, scope) 100 service_worker_unregister_and_register(test, url, scope)
104 .then(function(worker) { return fetch_tests_from_worker(worker); }) 101 .then(function(worker) { return fetch_tests_from_worker(worker); })
105 .then(function() { return navigator.serviceWorker.unregister(scope); }) 102 .then(function() { return navigator.serviceWorker.unregister(scope); })
106 .then(function() { test.done(); }) 103 .then(function() { test.done(); })
107 .catch(test.step_func(function(e) { throw e; })); 104 .catch(test.step_func(function(e) { throw e; }));
108 }; 105 };
109 106
110 self.service_worker_test = service_worker_test; 107 self.service_worker_test = service_worker_test;
111 })(); 108 })();
OLDNEW
« no previous file with comments | « LayoutTests/http/tests/serviceworker/resources/interfaces-worker.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698