Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / http / tests / serviceworker / resources / fetch-event-test-worker.js
1 function handleString(event) {
2   event.respondWith(new Response('Test string'));
3 }
4
5 function handleBlob(event) {
6   event.respondWith(new Response(new Blob(['Test blob'])));
7 }
8
9 function handleReferrer(event) {
10   event.respondWith(new Response(new Blob(
11     ['Referrer: ' + event.request.referrer])));
12 }
13
14 function handleNullBody(event) {
15   event.respondWith(new Response(null));
16 }
17
18 function handleFetch(event) {
19   event.respondWith(fetch('other.html'));
20 }
21
22 function handleFormPost(event) {
23   event.respondWith(new Promise(function(resolve) {
24       event.request.text()
25         .then(function(result) {
26             resolve(new Response(event.request.method + ':' + result));
27           })
28     }));
29 }
30
31 var logForMultipleRespondWith = '';
32
33 function handleMultipleRespondWith(event) {
34   for (var i = 0; i < 3; ++i) {
35     logForMultipleRespondWith += '(' + i + ')';
36     try {
37       event.respondWith(new Response(logForMultipleRespondWith));
38     } catch (e) {
39       logForMultipleRespondWith += '[' + e.name + ']';
40     }
41   }
42 }
43
44 self.addEventListener('fetch', function(event) {
45     var url = event.request.url;
46     var handlers = [
47       { pattern: '?string', fn: handleString },
48       { pattern: '?blob', fn: handleBlob },
49       { pattern: '?referrer', fn: handleReferrer },
50       { pattern: '?ignore', fn: function() {} },
51       { pattern: '?null', fn: handleNullBody },
52       { pattern: '?fetch', fn: handleFetch },
53       { pattern: '?form-post', fn: handleFormPost },
54       { pattern: '?multiple-respond-with', fn: handleMultipleRespondWith }
55     ];
56
57     var handler = null;
58     for (var i = 0; i < handlers.length; ++i) {
59       if (url.indexOf(handlers[i].pattern) != -1) {
60         handler = handlers[i];
61         break;
62       }
63     }
64
65     if (handler) {
66       handler.fn(event);
67     } else {
68       event.respondWith(new Response(new Blob(
69         ['Service Worker got an unexpected request: ' + url])));
70     }
71   });