Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / http / tests / serviceworker / resources / response-content-worker.js
1 importScripts('worker-test-harness.js');
2
3 promise_test(function() {
4     var response = new Response('test string');
5     assert_equals(
6       response.headers.get('Content-Type'),
7       'text/plain;charset=UTF-8',
8       'A Response constructed with a string should have a Content-Type.');
9     return response.text()
10       .then(function(text) {
11           assert_equals(text, 'test string',
12             'Response body text should match the string on construction.');
13         });
14   }, 'Behavior of Response with string content.');
15
16 promise_test(function() {
17     var intView = new Int32Array([0, 1, 2, 3, 4, 55, 6, 7, 8, 9]);
18     var buffer = intView.buffer;
19
20     var response = new Response(buffer);
21     assert_false(response.headers.has('Content-Type'),
22       'A Response constructed with ArrayBuffer should not have a content type.');
23     return response.arrayBuffer()
24       .then(function(buffer) {
25           var resultIntView = new Int32Array(buffer);
26           assert_array_equals(
27             resultIntView, [0, 1, 2, 3, 4, 55, 6, 7, 8, 9],
28             'Response body ArrayBuffer should match ArrayBuffer ' +
29             'it was constructed with.');
30         });
31   }, 'Behavior of Response with ArrayBuffer content.');
32
33 promise_test(function() {
34     var intView = new Int32Array([0, 1, 2, 3, 4, 55, 6, 7, 8, 9]);
35
36     var response = new Response(intView);
37     assert_false(response.headers.has('Content-Type'),
38       'A Response constructed with ArrayBufferView ' +
39       'should not have a content type.');
40     return response.arrayBuffer()
41       .then(function(buffer) {
42           var resultIntView = new Int32Array(buffer);
43           assert_array_equals(
44             resultIntView, [0, 1, 2, 3, 4, 55, 6, 7, 8, 9],
45             'Response body ArrayBuffer should match ArrayBufferView ' +
46             'it was constructed with.');
47         });
48   }, 'Behavior of Response with ArrayBufferView content without a slice.');
49
50 promise_test(function() {
51     var intView = new Int32Array([0, 1, 2, 3, 4, 55, 6, 7, 8, 9]);
52     var slice = intView.subarray(1, 4);  // Should be [1, 2, 3]
53     var response = new Response(slice);
54     assert_false(response.headers.has('Content-Type'),
55       'A Response constructed with ArrayBufferView ' +
56       'should not have a content type.');
57     return response.arrayBuffer()
58       .then(function(buffer) {
59           var resultIntView = new Int32Array(buffer);
60           assert_array_equals(
61             resultIntView, [1, 2, 3],
62             'Response body ArrayBuffer should match ArrayBufferView ' +
63             'slice it was constructed with.');
64         });
65   }, 'Behavior of Response with ArrayBufferView content with a slice.');
66
67 promise_test(function() {
68     var headers = new Headers;
69     headers.set('Content-Language', 'ja');
70     var response = new Response(
71       'test string', {method: 'GET', headers: headers});
72     assert_false(response.bodyUsed,
73                  "bodyUsed is not set until Response is consumed.");
74     var response2 = response.clone();
75     response.headers.set('Content-Language', 'en');
76     var response3;
77     assert_false(response2.bodyUsed,
78                  "bodyUsed should be false in clone of non-consumed Response.");
79     assert_equals(
80       response2.headers.get('Content-Language'), 'ja', 'Headers of cloned ' +
81       'response should not change when original response headers are changed.');
82
83     return response.text()
84       .then(function(text) {
85           assert_true(
86             response.bodyUsed,
87             "bodyUsed should be true after a response is consumed.");
88           assert_false(
89             response2.bodyUsed, "bodyUsed should be false in Response cloned " +
90             "before the original response was consumed.");
91           response3 = response.clone();
92           assert_true(response3.bodyUsed,
93                       "bodyUsed should be true in clone of consumed response.");
94           return response2.text();
95         })
96       .then(function(text) {
97           assert_equals(text, 'test string',
98             'Response clone response body text should match.');
99         });
100   }, 'Behavior of bodyUsed in Response and clone behavior.');