OLD | NEW |
---|---|
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src="../resources/testharness.js"></script> | 2 <script src="../resources/testharness.js"></script> |
3 <script src="../resources/testharnessreport.js"></script> | 3 <script src="../resources/testharnessreport.js"></script> |
4 <script src="resources/test-helpers.js"></script> | 4 <script src="resources/test-helpers.js"></script> |
5 <body> | 5 <body> |
6 <script> | 6 <script> |
7 // Temporary measure to diagnose timeouts on Win XP. Let the W3C harness | 7 // Temporary measure to diagnose timeouts on Win XP. Let the W3C harness |
8 // timeout before run-webkit-tests does, so it can report the particular | 8 // timeout before run-webkit-tests does, so it can report the particular |
9 // test that timed out. | 9 // test that timed out. |
10 // FIXME: Remove after the cause of timeout is fixed. | 10 // FIXME: Remove after the cause of timeout is fixed. |
11 var properties = {timeout: 5500}; | 11 var properties = {timeout: 5500}; |
12 | 12 |
13 var worker = 'resources/fetch-event-test-worker.js'; | 13 var worker = 'resources/fetch-event-test-worker.js'; |
14 | 14 |
15 async_test(function(t) { | 15 async_test(function(t) { |
16 var scope = 'resources/simple.html?string'; | 16 var scope = 'resources/simple.html?string'; |
17 service_worker_unregister_and_register(t, worker, scope) | 17 service_worker_unregister_and_register(t, worker, scope) |
18 .then(function(registration) { | 18 .then(function(registration) { |
19 return wait_for_update(t, registration); | 19 return wait_for_state(t, registration.installing, 'activated'); |
horo
2014/09/03 06:13:48
How about introducing wait_for_activated(t, regist
nhiroki
2014/09/04 06:47:09
I'd prefer to keep it as is because I think the be
horo
2014/09/04 09:07:13
I think there are many tests which just need an ac
nhiroki
2014/09/04 09:20:40
"make '.waiting' for 'activated'?" -> "make '.wait
nhiroki
2014/09/05 07:42:09
Done.
| |
20 }) | 20 }) |
21 .then(t.step_func(function(sw) { | 21 .then(function() { return with_iframe(scope); }) |
22 return wait_for_state(t, sw, 'activated'); | 22 .then(function(frame) { |
23 })) | |
24 .then(t.step_func(function() { return with_iframe(scope); })) | |
25 .then(t.step_func(function(frame) { | |
26 assert_equals( | 23 assert_equals( |
27 frame.contentDocument.body.textContent, | 24 frame.contentDocument.body.textContent, |
28 'Test string', | 25 'Test string', |
29 'Service Worker should respond to fetch with a test string'); | 26 'Service Worker should respond to fetch with a test string'); |
30 assert_equals( | 27 assert_equals( |
31 frame.contentDocument.contentType, | 28 frame.contentDocument.contentType, |
32 'text/plain', | 29 'text/plain', |
33 'The content type of the response created with a string should be te xt/plain'); | 30 'The content type of the response created with a string should be te xt/plain'); |
34 assert_equals( | 31 assert_equals( |
35 frame.contentDocument.characterSet, | 32 frame.contentDocument.characterSet, |
36 'UTF-8', | 33 'UTF-8', |
37 'The character set of the response created with a string should be U TF-8'); | 34 'The character set of the response created with a string should be U TF-8'); |
35 unload_iframe(frame); | |
38 return service_worker_unregister_and_done(t, scope); | 36 return service_worker_unregister_and_done(t, scope); |
39 })) | 37 }) |
40 .catch(unreached_rejection(t)); | 38 .catch(unreached_rejection(t)); |
41 }, 'Service Worker responds to fetch event with string', properties); | 39 }, 'Service Worker responds to fetch event with string', properties); |
42 | 40 |
43 async_test(function(t) { | 41 async_test(function(t) { |
44 var scope = 'resources/simple.html?blob'; | 42 var scope = 'resources/simple.html?blob'; |
45 service_worker_unregister_and_register(t, worker, scope) | 43 service_worker_unregister_and_register(t, worker, scope) |
46 .then(function(registration) { | 44 .then(function(registration) { |
47 return wait_for_update(t, registration); | 45 return wait_for_state(t, registration.installing, 'activated'); |
48 }) | 46 }) |
49 .then(t.step_func(function(sw) { | 47 .then(function() { return with_iframe(scope); }) |
50 return wait_for_state(t, sw, 'activated'); | 48 .then(function(frame) { |
51 })) | |
52 .then(t.step_func(function() { return with_iframe(scope); })) | |
53 .then(t.step_func(function(frame) { | |
54 assert_equals( | 49 assert_equals( |
55 frame.contentDocument.body.textContent, | 50 frame.contentDocument.body.textContent, |
56 'Test blob', | 51 'Test blob', |
57 'Service Worker should respond to fetch with a test string'); | 52 'Service Worker should respond to fetch with a test string'); |
53 unload_iframe(frame); | |
58 return service_worker_unregister_and_done(t, scope); | 54 return service_worker_unregister_and_done(t, scope); |
59 })) | 55 }) |
60 .catch(unreached_rejection(t)); | 56 .catch(unreached_rejection(t)); |
61 }, 'Service Worker responds to fetch event with blob body', properties); | 57 }, 'Service Worker responds to fetch event with blob body', properties); |
62 | 58 |
63 async_test(function(t) { | 59 async_test(function(t) { |
64 var scope = 'resources/simple.html?referrer'; | 60 var scope = 'resources/simple.html?referrer'; |
65 service_worker_unregister_and_register(t, worker, scope) | 61 service_worker_unregister_and_register(t, worker, scope) |
66 .then(function(registration) { | 62 .then(function(registration) { |
67 return wait_for_update(t, registration); | 63 return wait_for_state(t, registration.installing, 'activated'); |
68 }) | 64 }) |
69 .then(t.step_func(function(sw) { | 65 .then(function() { return with_iframe(scope); }) |
70 return wait_for_state(t, sw, 'activated'); | 66 .then(function(frame) { |
71 })) | |
72 .then(t.step_func(function() { return with_iframe(scope); })) | |
73 .then(t.step_func(function(frame) { | |
74 assert_equals( | 67 assert_equals( |
75 frame.contentDocument.body.textContent, | 68 frame.contentDocument.body.textContent, |
76 'Referrer: ' + document.location.href, | 69 'Referrer: ' + document.location.href, |
77 'Service Worker should respond to fetch with the referrer URL'); | 70 'Service Worker should respond to fetch with the referrer URL'); |
71 unload_iframe(frame); | |
78 return service_worker_unregister_and_done(t, scope); | 72 return service_worker_unregister_and_done(t, scope); |
79 })) | 73 }) |
80 .catch(unreached_rejection(t)); | 74 .catch(unreached_rejection(t)); |
81 }, 'Service Worker responds to fetch event with the referrer URL', properties) ; | 75 }, 'Service Worker responds to fetch event with the referrer URL', properties) ; |
82 | 76 |
83 async_test(function(t) { | 77 async_test(function(t) { |
84 var scope = 'resources/simple.html?ignore'; | 78 var scope = 'resources/simple.html?ignore'; |
85 service_worker_unregister_and_register(t, worker, scope) | 79 service_worker_unregister_and_register(t, worker, scope) |
86 .then(function(registration) { | 80 .then(function(registration) { |
87 return wait_for_update(t, registration); | 81 return wait_for_state(t, registration.installing, 'activated'); |
88 }) | 82 }) |
89 .then(t.step_func(function(sw) { | 83 .then(function() { return with_iframe(scope); }) |
90 return wait_for_state(t, sw, 'activated'); | 84 .then(function(frame) { |
91 })) | |
92 .then(t.step_func(function() { return with_iframe(scope); })) | |
93 .then(t.step_func(function(frame) { | |
94 assert_equals(frame.contentDocument.body.textContent, | 85 assert_equals(frame.contentDocument.body.textContent, |
95 'Here\'s a simple html file.\n', | 86 'Here\'s a simple html file.\n', |
96 'Response should come from fallback to native fetch'); | 87 'Response should come from fallback to native fetch'); |
88 unload_iframe(frame); | |
97 return service_worker_unregister_and_done(t, scope); | 89 return service_worker_unregister_and_done(t, scope); |
98 })) | 90 }) |
99 .catch(unreached_rejection(t)); | 91 .catch(unreached_rejection(t)); |
100 }, 'Service Worker does not respond to fetch event', properties); | 92 }, 'Service Worker does not respond to fetch event', properties); |
101 | 93 |
102 async_test(function(t) { | 94 async_test(function(t) { |
103 var scope = 'resources/simple.html?null'; | 95 var scope = 'resources/simple.html?null'; |
104 service_worker_unregister_and_register(t, worker, scope) | 96 service_worker_unregister_and_register(t, worker, scope) |
105 .then(function(registration) { | 97 .then(function(registration) { |
106 return wait_for_update(t, registration); | 98 return wait_for_state(t, registration.installing, 'activated'); |
107 }) | 99 }) |
108 .then(t.step_func(function(sw) { | 100 .then(function() { return with_iframe(scope); }) |
109 return wait_for_state(t, sw, 'activated'); | 101 .then(function(frame) { |
110 })) | |
111 .then(t.step_func(function() { return with_iframe(scope); })) | |
112 .then(t.step_func(function(frame) { | |
113 assert_equals(frame.contentDocument.body.textContent, | 102 assert_equals(frame.contentDocument.body.textContent, |
114 '', | 103 '', |
115 'Response should be the empty string'); | 104 'Response should be the empty string'); |
105 unload_iframe(frame); | |
116 return service_worker_unregister_and_done(t, scope); | 106 return service_worker_unregister_and_done(t, scope); |
117 })) | 107 }) |
118 .catch(unreached_rejection(t)); | 108 .catch(unreached_rejection(t)); |
119 }, 'Service Worker responds to fetch event with null response body', propertie s); | 109 }, 'Service Worker responds to fetch event with null response body', propertie s); |
120 | 110 |
121 async_test(function(t) { | 111 async_test(function(t) { |
122 var scope = 'resources/simple.html?reject'; | 112 var scope = 'resources/simple.html?reject'; |
123 service_worker_unregister_and_register(t, worker, scope) | 113 service_worker_unregister_and_register(t, worker, scope) |
124 .then(function(registration) { | 114 .then(function(registration) { |
125 return wait_for_update(t, registration); | 115 return wait_for_state(t, registration.installing, 'activated'); |
126 }) | 116 }) |
127 .then(t.step_func(function(sw) { | 117 .then(function() { return with_iframe(scope); }) |
128 return wait_for_state(t, sw, 'activated'); | 118 .then(function(frame) { |
129 })) | |
130 .then(t.step_func(function() { return with_iframe(scope); })) | |
131 .then(t.step_func(function(frame) { | |
132 assert_equals(frame.contentDocument.body.textContent, | 119 assert_equals(frame.contentDocument.body.textContent, |
133 'Here\'s a simple html file.\n', | 120 'Here\'s a simple html file.\n', |
134 'Response should come from fallback to native fetch'); | 121 'Response should come from fallback to native fetch'); |
122 unload_iframe(frame); | |
135 return service_worker_unregister_and_done(t, scope); | 123 return service_worker_unregister_and_done(t, scope); |
136 })) | 124 }) |
137 .catch(unreached_rejection(t)); | 125 .catch(unreached_rejection(t)); |
138 }, 'Service Worker rejects fetch event', properties); | 126 }, 'Service Worker rejects fetch event', properties); |
139 | 127 |
140 async_test(function(t) { | 128 async_test(function(t) { |
141 var scope = 'resources/simple.html?fetch'; | 129 var scope = 'resources/simple.html?fetch'; |
142 service_worker_unregister_and_register(t, worker, scope) | 130 service_worker_unregister_and_register(t, worker, scope) |
143 .then(function(registration) { | 131 .then(function(registration) { |
144 return wait_for_update(t, registration); | 132 return wait_for_state(t, registration.installing, 'activated'); |
145 }) | 133 }) |
146 .then(t.step_func(function(sw) { | 134 .then(function() { return with_iframe(scope); }) |
147 return wait_for_state(t, sw, 'activated'); | 135 .then(function(frame) { |
148 })) | |
149 .then(t.step_func(function() { return with_iframe(scope); })) | |
150 .then(t.step_func(function(frame) { | |
151 assert_equals(frame.contentDocument.body.textContent, | 136 assert_equals(frame.contentDocument.body.textContent, |
152 'Here\'s an other html file.\n', | 137 'Here\'s an other html file.\n', |
153 'Response should come from fetched other file'); | 138 'Response should come from fetched other file'); |
139 unload_iframe(frame); | |
154 return service_worker_unregister_and_done(t, scope); | 140 return service_worker_unregister_and_done(t, scope); |
155 })) | 141 }) |
156 .catch(unreached_rejection(t)); | 142 .catch(unreached_rejection(t)); |
157 }, 'Service Worker fetches other file in fetch event', properties); | 143 }, 'Service Worker fetches other file in fetch event', properties); |
158 | 144 |
159 async_test(function(t) { | 145 async_test(function(t) { |
160 var scope = 'resources/simple.html?form-post'; | 146 var scope = 'resources/simple.html?form-post'; |
161 var frame_name = 'xhr-post-frame'; | 147 var frame_name = 'xhr-post-frame'; |
162 service_worker_unregister_and_register(t, worker, scope) | 148 service_worker_unregister_and_register(t, worker, scope) |
163 .then(function(registration) { | 149 .then(t.step_func(function(registration) { |
164 return wait_for_update(t, registration); | 150 return wait_for_state(t, registration.installing, 'activated'); |
165 }) | |
166 .then(t.step_func(function(sw) { | |
167 return wait_for_state(t, sw, 'activated'); | |
168 })) | 151 })) |
169 .then(t.step_func(function(sw) { | 152 .then(function(sw) { |
170 return new Promise(function(resolve) { | 153 return new Promise(function(resolve) { |
171 var frame = document.createElement('iframe'); | 154 var frame = document.createElement('iframe'); |
172 frame.name = frame_name; | 155 frame.name = frame_name; |
173 document.body.appendChild(frame); | 156 document.body.appendChild(frame); |
174 var form = document.createElement('form'); | 157 var form = document.createElement('form'); |
175 form.target = frame_name; | 158 form.target = frame_name; |
176 form.action = scope; | 159 form.action = scope; |
177 form.method = 'post'; | 160 form.method = 'post'; |
178 var input1 = document.createElement('input'); | 161 var input1 = document.createElement('input'); |
179 input1.type = 'text'; | 162 input1.type = 'text'; |
180 input1.value = 'testValue1'; | 163 input1.value = 'testValue1'; |
181 input1.name = 'testName1' | 164 input1.name = 'testName1' |
182 form.appendChild(input1); | 165 form.appendChild(input1); |
183 var input2 = document.createElement('input'); | 166 var input2 = document.createElement('input'); |
184 input2.type = 'text'; | 167 input2.type = 'text'; |
185 input2.value = 'testValue2'; | 168 input2.value = 'testValue2'; |
186 input2.name = 'testName2' | 169 input2.name = 'testName2' |
187 form.appendChild(input2); | 170 form.appendChild(input2); |
188 document.body.appendChild(form); | 171 document.body.appendChild(form); |
189 frame.onload = function() { | 172 frame.onload = function() { |
190 document.body.removeChild(form); | 173 document.body.removeChild(form); |
191 resolve(frame); | 174 resolve(frame); |
192 }; | 175 }; |
193 form.submit(); | 176 form.submit(); |
194 }); | 177 }); |
195 })) | 178 }) |
196 .then(t.step_func(function(frame) { | 179 .then(function(frame) { |
197 assert_equals(frame.contentDocument.body.textContent, | 180 assert_equals(frame.contentDocument.body.textContent, |
198 'POST:testName1=testValue1&testName2=testValue2'); | 181 'POST:testName1=testValue1&testName2=testValue2'); |
199 document.body.removeChild(frame); | 182 document.body.removeChild(frame); |
200 return service_worker_unregister_and_done(t, scope); | 183 return service_worker_unregister_and_done(t, scope); |
201 })) | 184 }) |
202 .catch(unreached_rejection(t)); | 185 .catch(unreached_rejection(t)); |
203 }, 'Service Worker responds to fetch event with POST form', properties); | 186 }, 'Service Worker responds to fetch event with POST form', properties); |
204 </script> | 187 </script> |
205 </body> | 188 </body> |
OLD | NEW |