1 importScripts('worker-test-harness.js');
3 promise_test(function() {
4 var response = new Response('test string');
6 response.headers.get('Content-Type'),
7 'text/plain;charset=UTF-8',
8 'A Response constructed with a string should have a Content-Type.');
10 .then(function(text) {
11 assert_equals(text, 'test string',
12 'Response body text should match the string on construction.');
14 }, 'Behavior of Response with string content.');
16 promise_test(function() {
17 var intView = new Int32Array([0, 1, 2, 3, 4, 55, 6, 7, 8, 9]);
18 var buffer = intView.buffer;
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);
27 resultIntView, [0, 1, 2, 3, 4, 55, 6, 7, 8, 9],
28 'Response body ArrayBuffer should match ArrayBuffer ' +
29 'it was constructed with.');
31 }, 'Behavior of Response with ArrayBuffer content.');
33 promise_test(function() {
34 var intView = new Int32Array([0, 1, 2, 3, 4, 55, 6, 7, 8, 9]);
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);
44 resultIntView, [0, 1, 2, 3, 4, 55, 6, 7, 8, 9],
45 'Response body ArrayBuffer should match ArrayBufferView ' +
46 'it was constructed with.');
48 }, 'Behavior of Response with ArrayBufferView content without a slice.');
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);
61 resultIntView, [1, 2, 3],
62 'Response body ArrayBuffer should match ArrayBufferView ' +
63 'slice it was constructed with.');
65 }, 'Behavior of Response with ArrayBufferView content with a slice.');
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');
77 assert_false(response2.bodyUsed,
78 "bodyUsed should be false in clone of non-consumed Response.");
80 response2.headers.get('Content-Language'), 'ja', 'Headers of cloned ' +
81 'response should not change when original response headers are changed.');
83 return response.text()
84 .then(function(text) {
87 "bodyUsed should be true after a response is consumed.");
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();
96 .then(function(text) {
97 assert_equals(text, 'test string',
98 'Response clone response body text should match.');
100 }, 'Behavior of bodyUsed in Response and clone behavior.');