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

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: 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
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 .then(test.step_func(
7 return navigator.serviceWorker.register(url, options); 7 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 unreached_rejection(test, 'Unregister should not fail'))
11 return Promise.resolve(worker); 11 .then(
12 }), 12 test.step_func(function(worker) { return Promise.resolve(worker); }),
jsbell 2014/07/31 20:37:23 Is this .then() clause necessary, or can we drop i
asanka 2014/08/01 05:15:52 Replaced with a .catch().then().catch() chain.
13 unreached_rejection(test, 'Registration should not fail') 13 unreached_rejection(test, 'Registration should not fail'));
14 );
15 } 14 }
16 15
17 function service_worker_unregister_and_done(test, scope) { 16 function service_worker_unregister_and_done(test, scope) {
18 return navigator.serviceWorker.unregister(scope).then( 17 return navigator.serviceWorker.unregister(scope)
19 test.done.bind(test), 18 .then(test.done.bind(test),
20 unreached_rejection(test, 'Unregister should not fail')); 19 unreached_rejection(test, 'Unregister should not fail'));
21 } 20 }
22 21
23 // Rejection-specific helper that provides more details 22 // Rejection-specific helper that provides more details
24 function unreached_rejection(test, prefix) { 23 function unreached_rejection(test, prefix) {
25 return test.step_func(function(error) { 24 return test.step_func(function(error) {
26 var reason = error.name ? error.name : error; 25 var reason = error.message || error.name || error;
27 var prefix = prefix ? prefix : "unexpected rejection"; 26 var error_prefix = prefix || 'unexpected rejection';
28 assert_unreached(prefix + ': ' + reason); 27 assert_unreached(error_prefix + ': ' + reason);
29 }); 28 });
30 } 29 }
31 30
32 // FIXME: Clean up the iframe when the test completes. 31 // FIXME: Clean up the iframe when the test completes.
33 function with_iframe(url, f) { 32 function with_iframe(url, f) {
34 return new Promise(function(resolve, reject) { 33 return new Promise(function(resolve, reject) {
35 var frame = document.createElement('iframe'); 34 var frame = document.createElement('iframe');
36 frame.src = url; 35 frame.src = url;
37 frame.onload = function() { 36 frame.onload = function() {
38 if (f) { 37 if (f) {
39 f(frame); 38 f(frame);
40 } 39 }
41 resolve(frame); 40 resolve(frame);
42 }; 41 };
43 document.body.appendChild(frame); 42 document.body.appendChild(frame);
44 }); 43 });
45 } 44 }
46 45
47 function normalizeURL(url) { 46 function normalizeURL(url) {
48 return new URL(url, document.location).toString().replace(/#.*$/, ''); 47 return new URL(url, document.location).toString().replace(/#.*$/, '');
49 } 48 }
50 49
51 function wait_for_state(test, worker, state) { 50 function wait_for_state(test, worker, state) {
52 return new Promise(test.step_func(function(resolve, reject) { 51 return new Promise(test.step_func(function(resolve, reject) {
53 worker.addEventListener('statechange', test.step_func(function() { 52 worker.addEventListener('statechange',
53 test.step_func(function() {
54 if (worker.state === state) 54 if (worker.state === state)
55 resolve(state); 55 resolve(state);
56 })); 56 }));
57 })); 57 }));
58 } 58 }
59 59
60 (function() { 60 (function() {
61 var fetch_tests_from_worker = function(worker) { 61 var fetch_tests_from_worker = function(worker) {
62 return new Promise(function(resolve, reject) { 62 return new Promise(function(resolve, reject) {
63 var messageChannel = new MessageChannel(); 63 var messageChannel = new MessageChannel();
64 on_event(messageChannel.port1, 'message', function(message) { 64 on_event(messageChannel.port1, 'message', function(message) {
65 if (message.data.type == 'complete') { 65 if (message.data.type == 'complete') {
66 synthesize_tests(message.data.tests, message.data.status); 66 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); 102 var test = async_test(description);
103 service_worker_unregister_and_register(test, url, scope) 103 service_worker_unregister_and_register(test, url, scope)
104 .then(function(worker) { return fetch_tests_from_worker(worker); }) 104 .then(function(worker) { return fetch_tests_from_worker(worker); })
105 .then(function() { return navigator.serviceWorker.unregister(scope); }) 105 .then(function() { return navigator.serviceWorker.unregister(scope); })
106 .then(function() { test.done(); }) 106 .then(function() { test.done(); })
107 .catch(test.step_func(function(e) { throw e; })); 107 .catch(test.step_func(function(e) { throw e; }));
108 }; 108 };
109 109
110 self.service_worker_test = service_worker_test; 110 self.service_worker_test = service_worker_test;
111 })(); 111 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698