Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 var code = 404; | 5 var code = 404; |
|
jsbell
2014/04/03 21:47:34
The test would be clearer if the global state was
jkarlin
2014/04/04 11:59:09
Done.
| |
| 6 var fetchCount = 0; | |
| 7 | |
| 8 // onfetch is a state machine: | |
| 9 // 1st call returns 404 and calls requestSyncEvents() | |
| 10 // .. expect sync call here .. | |
| 11 // 2nd call returns 200 because sync ran and calls requestSyncEvents(false) | |
| 12 // .. sync doesn't fire .. | |
| 13 // 3rd call returns 404 and calls requestSyncEvents(true) | |
| 14 // .. expect sync call here .. | |
| 15 // 4th call returns 200 because sync ran | |
| 6 | 16 |
| 7 this.onfetch = function(event) { | 17 this.onfetch = function(event) { |
| 18 if (fetchCount == 0) { | |
|
jsbell
2014/04/03 21:47:34
Since the sync event won't fire until after the ev
jkarlin
2014/04/04 11:59:09
Done. Great suggestions, thanks.
| |
| 19 requestSyncEvents(); | |
| 20 } else if (fetchCount == 1) { | |
| 21 requestSyncEvents(false); | |
| 22 } else if (fetchCount == 2) { | |
| 23 requestSyncEvents(true); | |
| 24 } | |
| 25 | |
| 26 fetchCount += 1; | |
| 27 | |
| 8 response = new Response({ | 28 response = new Response({ |
| 9 statusCode: code, | 29 statusCode: code, |
|
jsbell
2014/04/03 21:47:34
And this would be sawSyncEvent ? 200 : 404;
jkarlin
2014/04/04 11:59:09
Done.
| |
| 10 statusText: 'OK', | 30 statusText: 'OK', |
| 11 method: 'GET', | 31 method: 'GET', |
| 12 headers: { | 32 headers: { |
| 13 'Content-Language': 'fi', | 33 'Content-Language': 'fi', |
|
jsbell
2014/04/03 21:47:34
Just for kicks? :)
jkarlin
2014/04/04 11:59:09
Why not :)
| |
| 14 'Content-Type': 'text/html; charset=UTF-8' | 34 'Content-Type': 'text/html; charset=UTF-8' |
| 15 } | 35 } |
| 16 }); | 36 }); |
| 17 | 37 |
| 38 code = 404; | |
| 39 | |
| 18 event.respondWith(new Promise(function(r) { | 40 event.respondWith(new Promise(function(r) { |
| 19 setTimeout(function() { r(response); }, 5); | 41 setTimeout(function() { r(response); }, 5); |
| 20 })); | 42 })); |
| 21 }; | 43 }; |
| 22 | 44 |
| 23 this.onsync = function(event) { | 45 this.onsync = function(event) { |
| 24 code = 200; | 46 code = 200; |
| 25 }; | 47 }; |
| OLD | NEW |