| OLD | NEW |
| 1 importScripts('worker-testharness.js'); | 1 importScripts('worker-testharness.js'); |
| 2 | 2 |
| 3 test(function() { | 3 test(function() { |
| 4 function size(headers) { | 4 function size(headers) { |
| 5 var count = 0; | 5 var count = 0; |
| 6 for (var header of headers) { | 6 for (var header of headers) { |
| 7 ++count; | 7 ++count; |
| 8 } | 8 } |
| 9 return count; | 9 return count; |
| 10 } | 10 } |
| 11 | 11 |
| 12 var expectedMap = { | 12 var expectedMap = { |
| 13 'content-language': 'ja', | 13 'content-language': 'ja', |
| 14 'content-type': 'text/html; charset=UTF-8', | 14 'content-type': 'text/html; charset=UTF-8', |
| 15 'x-serviceworker-test': 'response test field' | 15 'x-serviceworker-test': 'response test field' |
| 16 }; | 16 }; |
| 17 | 17 |
| 18 var headers = new Headers; | 18 var headers = new Headers; |
| 19 headers.set('Content-Language', 'ja'); | 19 headers.set('Content-Language', 'ja'); |
| 20 headers.set('Content-Type', 'text/html; charset=UTF-8'); | 20 headers.set('Content-Type', 'text/html; charset=UTF-8'); |
| 21 headers.set('X-ServiceWorker-Test', 'text/html; charset=UTF-8'); | 21 headers.set('X-ServiceWorker-Test', 'text/html; charset=UTF-8'); |
| 22 | 22 |
| 23 assert_equals(size(headers), 3, 'headers size should match'); | 23 assert_equals(size(headers), 3, 'headers size should match'); |
| 24 | 24 |
| 25 // 'has()', 'get()' | 25 // 'has()', 'get()' |
| 26 var key = 'Content-Type'; | 26 var key = 'Content-Type'; |
| 27 assert_true(headers.has(key)); | 27 assert_true(headers.has(key)); |
| 28 assert_true(headers.has(key.toUpperCase())); | 28 assert_true(headers.has(key.toUpperCase())); |
| 29 assert_equals(headers.get(key), expectedMap[key.toLowerCase()]); | 29 assert_equals(headers.get(key), expectedMap[key.toLowerCase()]); |
| 30 assert_equals(headers.get(key.toUpperCase()), expectedMap[key.toLowerCase()]
); | 30 assert_equals(headers.get(key.toUpperCase()), |
| 31 expectedMap[key.toLowerCase()]); |
| 31 assert_equals(headers.get('dummy'), null); | 32 assert_equals(headers.get('dummy'), null); |
| 32 assert_false(headers.has('dummy')); | 33 assert_false(headers.has('dummy')); |
| 33 | 34 |
| 34 // 'delete()' | 35 // 'delete()' |
| 35 var deleteKey = 'Content-Type'; | 36 var deleteKey = 'Content-Type'; |
| 36 headers.delete(deleteKey); | 37 headers.delete(deleteKey); |
| 37 assert_equals(size(headers), 2, 'headers size should have -1 size'); | 38 assert_equals(size(headers), 2, 'headers size should have -1 size'); |
| 38 Object.keys(expectedMap).forEach(function(key) { | 39 Object.keys(expectedMap).forEach(function(key) { |
| 39 if (key == deleteKey.toLowerCase()) | 40 if (key == deleteKey.toLowerCase()) |
| 40 assert_false(headers.has(key)); | 41 assert_false(headers.has(key)); |
| 41 else | 42 else |
| 42 assert_true(headers.has(key)); | 43 assert_true(headers.has(key)); |
| 43 }); | 44 }); |
| 44 | 45 |
| 45 // 'set()' | 46 // 'set()' |
| 46 var testCasesForSet = [ | 47 var testCasesForSet = [ |
| 47 // For a new key/value pair. | 48 // For a new key/value pair. |
| 48 { key: 'Cache-Control', | 49 { key: 'Cache-Control', |
| 49 value: 'max-age=3600', | 50 value: 'max-age=3600', |
| 50 isNewEntry: true }, | 51 isNewEntry: true }, |
| 51 | 52 |
| 52 // For an existing key. | 53 // For an existing key. |
| 53 { key: 'X-ServiceWorker-Test', | 54 { key: 'X-ServiceWorker-Test', |
| 54 value: 'response test field - updated', | 55 value: 'response test field - updated', |
| 55 isUpdate: true }, | 56 isUpdate: true }, |
| 56 | 57 |
| 57 // For setting a numeric value, expecting to see DOMString on getting. | 58 // For setting a numeric value, expecting to see DOMString on getting. |
| 58 { key: 'X-Numeric-Value', | 59 { key: 'X-Numeric-Value', |
| 59 value: 12345, | 60 value: 12345, |
| 60 expectedValue: '12345', | 61 expectedValue: '12345', |
| 61 isNewEntry: true }, | 62 isNewEntry: true }, |
| 62 | 63 |
| 63 // For case-insensitivity test. | 64 // For case-insensitivity test. |
| 64 { key: 'content-language', | 65 { key: 'content-language', |
| 65 value: 'fi', | 66 value: 'fi', |
| 66 isUpdate: true } | 67 isUpdate: true } |
| 67 ]; | 68 ]; |
| 68 | 69 |
| 69 var expectedHeaderSize = size(headers); | 70 var expectedHeaderSize = size(headers); |
| 70 testCasesForSet.forEach(function(testCase) { | 71 testCasesForSet.forEach(function(testCase) { |
| 71 var key = testCase.key; | 72 var key = testCase.key; |
| 72 var value = testCase.value; | 73 var value = testCase.value; |
| 73 var expectedValue = ('expectedValue' in testCase) ? testCase.expectedVal
ue : testCase.value; | 74 var expectedValue = ('expectedValue' in testCase) ? |
| 74 expectedHeaderSize = testCase.isNewEntry ? (expectedHeaderSize + 1) : ex
pectedHeaderSize; | 75 testCase.expectedValue : testCase.value; |
| 76 expectedHeaderSize = testCase.isNewEntry ? |
| 77 (expectedHeaderSize + 1) : expectedHeaderSize; |
| 75 | 78 |
| 76 headers.set(key, value); | 79 headers.set(key, value); |
| 77 assert_true(headers.has(key)); | 80 assert_true(headers.has(key)); |
| 78 assert_equals(headers.get(key), expectedValue); | 81 assert_equals(headers.get(key), expectedValue); |
| 79 if (testCase.isUpdate) | 82 if (testCase.isUpdate) |
| 80 assert_true(headers.get(key) != expectedMap[key.toLowerCase()]); | 83 assert_true(headers.get(key) != expectedMap[key.toLowerCase()]); |
| 81 assert_equals(size(headers), expectedHeaderSize); | 84 assert_equals(size(headers), expectedHeaderSize); |
| 82 | 85 |
| 83 // Update expectedMap too for forEach() test below. | 86 // Update expectedMap too for forEach() test below. |
| 84 expectedMap[key.toLowerCase()] = expectedValue; | 87 expectedMap[key.toLowerCase()] = expectedValue; |
| 85 }); | 88 }); |
| 86 | 89 |
| 87 // '[Symbol.iterator]()' | 90 // '[Symbol.iterator]()' |
| 88 for (var header of headers) { | 91 for (var header of headers) { |
| 89 var key = header[0], value = header[1]; | 92 var key = header[0], value = header[1]; |
| 90 assert_true(key != deleteKey.toLowerCase()); | 93 assert_true(key != deleteKey.toLowerCase()); |
| 91 assert_true(key in expectedMap); | 94 assert_true(key in expectedMap); |
| 92 assert_equals(headers.get(key), expectedMap[key]); | 95 assert_equals(headers.get(key), expectedMap[key]); |
| 93 } | 96 } |
| 94 | 97 |
| 95 // 'append()', 'getAll()' | 98 // 'append()', 'getAll()' |
| 96 var allValues = headers.getAll('X-ServiceWorker-Test'); | 99 var allValues = headers.getAll('X-ServiceWorker-Test'); |
| 97 assert_equals(allValues.length, 1); | 100 assert_equals(allValues.length, 1); |
| 98 assert_equals(size(headers), 4); | 101 assert_equals(size(headers), 4); |
| 99 headers.append('X-SERVICEWORKER-TEST', 'response test field - append'); | 102 headers.append('X-SERVICEWORKER-TEST', 'response test field - append'); |
| 100 assert_equals(size(headers), 5, 'headers size should increase by 1.'); | 103 assert_equals(size(headers), 5, 'headers size should increase by 1.'); |
| 101 assert_equals(headers.get('X-SERVICEWORKER-Test'), | 104 assert_equals(headers.get('X-SERVICEWORKER-Test'), |
| 102 'response test field - updated', | 105 'response test field - updated', |
| 103 'the value of the first header added should be returned.'); | 106 'the value of the first header added should be returned.'); |
| 104 allValues = headers.getAll('X-SERVICEWorker-TEST'); | 107 allValues = headers.getAll('X-SERVICEWorker-TEST'); |
| 105 assert_equals(allValues.length, 2); | 108 assert_equals(allValues.length, 2); |
| 106 assert_equals(allValues[0], 'response test field - updated'); | 109 assert_equals(allValues[0], 'response test field - updated'); |
| 107 assert_equals(allValues[1], 'response test field - append'); | 110 assert_equals(allValues[1], 'response test field - append'); |
| 108 headers.set('X-SERVICEWorker-Test', 'response test field - set'); | 111 headers.set('X-SERVICEWorker-Test', 'response test field - set'); |
| 109 assert_equals(size(headers), 4, 'the second header should be deleted'); | 112 assert_equals(size(headers), 4, 'the second header should be deleted'); |
| 110 allValues = headers.getAll('X-ServiceWorker-Test'); | 113 allValues = headers.getAll('X-ServiceWorker-Test'); |
| 111 assert_equals(allValues.length, 1, 'the second header should be deleted'); | 114 assert_equals(allValues.length, 1, 'the second header should be deleted'); |
| 112 assert_equals(allValues[0], 'response test field - set'); | 115 assert_equals(allValues[0], 'response test field - set'); |
| 113 headers.append('X-ServiceWorker-TEST', 'response test field - append'); | 116 headers.append('X-ServiceWorker-TEST', 'response test field - append'); |
| 114 assert_equals(size(headers), 5, 'headers size should increase by 1.') | 117 assert_equals(size(headers), 5, 'headers size should increase by 1.'); |
| 115 headers.delete('X-ServiceWORKER-Test'); | 118 headers.delete('X-ServiceWORKER-Test'); |
| 116 assert_equals(size(headers), 3, 'two headers should be deleted.') | 119 assert_equals(size(headers), 3, 'two headers should be deleted.'); |
| 117 | 120 |
| 118 // new Headers with sequence<sequence<ByteString>> | 121 // new Headers with sequence<sequence<ByteString>> |
| 119 headers = new Headers([['a', 'b'], ['c', 'd'], ['c', 'e']]); | 122 headers = new Headers([['a', 'b'], ['c', 'd'], ['c', 'e']]); |
| 120 assert_equals(size(headers), 3, 'headers size should match'); | 123 assert_equals(size(headers), 3, 'headers size should match'); |
| 121 assert_equals(headers.get('a'), 'b'); | 124 assert_equals(headers.get('a'), 'b'); |
| 122 assert_equals(headers.get('c'), 'd'); | 125 assert_equals(headers.get('c'), 'd'); |
| 123 assert_equals(headers.getAll('c')[0], 'd'); | 126 assert_equals(headers.getAll('c')[0], 'd'); |
| 124 assert_equals(headers.getAll('c')[1], 'e'); | 127 assert_equals(headers.getAll('c')[1], 'e'); |
| 125 | 128 |
| 126 // new Headers with Headers | 129 // new Headers with Headers |
| (...skipping 10 matching lines...) Expand all Loading... |
| 137 // new Headers with Dictionary | 140 // new Headers with Dictionary |
| 138 headers = new Headers({'a': 'b', 'c': 'd'}); | 141 headers = new Headers({'a': 'b', 'c': 'd'}); |
| 139 assert_equals(size(headers), 2, 'headers size should match'); | 142 assert_equals(size(headers), 2, 'headers size should match'); |
| 140 assert_equals(headers.get('a'), 'b'); | 143 assert_equals(headers.get('a'), 'b'); |
| 141 assert_equals(headers.get('c'), 'd'); | 144 assert_equals(headers.get('c'), 'd'); |
| 142 | 145 |
| 143 // Throw errors | 146 // Throw errors |
| 144 var invalidNames = ['', '(', ')', '<', '>', '@', ',', ';', ':', '\\', '"', | 147 var invalidNames = ['', '(', ')', '<', '>', '@', ',', ';', ':', '\\', '"', |
| 145 '/', '[', ']', '?', '=', '{', '}', '\u3042', 'a(b']; | 148 '/', '[', ']', '?', '=', '{', '}', '\u3042', 'a(b']; |
| 146 invalidNames.forEach(function(name) { | 149 invalidNames.forEach(function(name) { |
| 147 assert_throws({name:'TypeError'}, | 150 assert_throws({name: 'TypeError'}, |
| 148 function() { headers.append(name, 'a'); }, | 151 function() { headers.append(name, 'a'); }, |
| 149 'Headers.append with an invalid name (' + name +') should
throw'); | 152 'Headers.append with an invalid name (' + name + |
| 150 assert_throws({name:'TypeError'}, | 153 ') should throw'); |
| 154 assert_throws({name: 'TypeError'}, |
| 151 function() { headers.delete(name); }, | 155 function() { headers.delete(name); }, |
| 152 'Headers.delete with an invalid name (' + name +') should
throw'); | 156 'Headers.delete with an invalid name (' + name + |
| 153 assert_throws({name:'TypeError'}, | 157 ') should throw'); |
| 158 assert_throws({name: 'TypeError'}, |
| 154 function() { headers.get(name); }, | 159 function() { headers.get(name); }, |
| 155 'Headers.get with an invalid name (' + name +') should thr
ow'); | 160 'Headers.get with an invalid name (' + name + |
| 156 assert_throws({name:'TypeError'}, | 161 ') should throw'); |
| 162 assert_throws({name: 'TypeError'}, |
| 157 function() { headers.getAll(name); }, | 163 function() { headers.getAll(name); }, |
| 158 'Headers.getAll with an invalid name (' + name +') should
throw'); | 164 'Headers.getAll with an invalid name (' + name + |
| 159 assert_throws({name:'TypeError'}, | 165 ') should throw'); |
| 166 assert_throws({name: 'TypeError'}, |
| 160 function() { headers.has(name); }, | 167 function() { headers.has(name); }, |
| 161 'Headers.has with an invalid name (' + name +') should thr
ow'); | 168 'Headers.has with an invalid name (' + name + |
| 162 assert_throws({name:'TypeError'}, | 169 ') should throw'); |
| 170 assert_throws({name: 'TypeError'}, |
| 163 function() { headers.set(name, 'a'); }, | 171 function() { headers.set(name, 'a'); }, |
| 164 'Headers.set with an invalid name (' + name +') should thr
ow'); | 172 'Headers.set with an invalid name (' + name + |
| 165 assert_throws({name:'TypeError'}, | 173 ') should throw'); |
| 174 assert_throws({name: 'TypeError'}, |
| 166 function() { | 175 function() { |
| 167 var obj = {}; | 176 var obj = {}; |
| 168 obj[name] = 'a'; | 177 obj[name] = 'a'; |
| 169 var headers = new Headers(obj); | 178 var headers = new Headers(obj); |
| 170 }, | 179 }, |
| 171 'new Headers with an invalid name (' + name +') should thr
ow'); | 180 'new Headers with an invalid name (' + name + |
| 172 assert_throws({name:'TypeError'}, | 181 ') should throw'); |
| 182 assert_throws({name: 'TypeError'}, |
| 173 function() { var headers = new Headers([[name, 'a']]); }, | 183 function() { var headers = new Headers([[name, 'a']]); }, |
| 174 'new Headers with an invalid name (' + name +') should thr
ow'); | 184 'new Headers with an invalid name (' + name + |
| 175 }); | 185 ') should throw'); |
| 186 }); |
| 176 | 187 |
| 177 var invalidValues = ['test \r data', 'test \n data']; | 188 var invalidValues = ['test \r data', 'test \n data']; |
| 178 invalidValues.forEach(function(value) { | 189 invalidValues.forEach(function(value) { |
| 179 assert_throws({name:'TypeError'}, | 190 assert_throws({name: 'TypeError'}, |
| 180 function() { headers.append('a', value); }, | 191 function() { headers.append('a', value); }, |
| 181 'Headers.append with an invalid value should throw'); | 192 'Headers.append with an invalid value should throw'); |
| 182 assert_throws({name:'TypeError'}, | 193 assert_throws({name: 'TypeError'}, |
| 183 function() { headers.set('a', value); }, | 194 function() { headers.set('a', value); }, |
| 184 'Headers.set with an invalid value should throw'); | 195 'Headers.set with an invalid value should throw'); |
| 185 assert_throws({name:'TypeError'}, | 196 assert_throws({name: 'TypeError'}, |
| 186 function() { var headers = new Headers({'a': value}); }, | 197 function() { var headers = new Headers({'a': value}); }, |
| 187 'new Headers with an invalid value should throw'); | 198 'new Headers with an invalid value should throw'); |
| 188 assert_throws({name:'TypeError'}, | 199 assert_throws({name: 'TypeError'}, |
| 189 function() { var headers = new Headers([['a', value]]); }, | 200 function() { var headers = new Headers([['a', value]]); }, |
| 190 'new Headers with an invalid value should throw'); | 201 'new Headers with an invalid value should throw'); |
| 191 }); | 202 }); |
| 192 | 203 |
| 193 assert_throws({name:'TypeError'}, | 204 assert_throws({name: 'TypeError'}, |
| 194 function() { var headers = new Headers([[]]); }, | 205 function() { var headers = new Headers([[]]); }, |
| 195 'new Headers with a sequence with less than two strings should
throw'); | 206 'new Headers with a sequence with less than two strings ' + |
| 196 assert_throws({name:'TypeError'}, | 207 'should throw'); |
| 208 assert_throws({name: 'TypeError'}, |
| 197 function() { var headers = new Headers([['a']]); }, | 209 function() { var headers = new Headers([['a']]); }, |
| 198 'new Headers with a sequence with less than two strings should
throw'); | 210 'new Headers with a sequence with less than two strings ' + |
| 199 assert_throws({name:'TypeError'}, | 211 'should throw'); |
| 212 assert_throws({name: 'TypeError'}, |
| 200 function() { var headers = new Headers([['a', 'b'], []]); }, | 213 function() { var headers = new Headers([['a', 'b'], []]); }, |
| 201 'new Headers with a sequence with less than two strings should
throw'); | 214 'new Headers with a sequence with less than two strings ' + |
| 202 assert_throws({name:'TypeError'}, | 215 'should throw'); |
| 203 function() { var headers = new Headers([['a', 'b'], ['x', 'y',
'z']]); }, | 216 assert_throws({name: 'TypeError'}, |
| 204 'new Headers with a sequence with more than two strings should
throw'); | 217 function() { var headers = new Headers([['a', 'b'], |
| 205 }, 'Headers in ServiceWorkerGlobalScope'); | 218 ['x', 'y', 'z']]); }, |
| 219 'new Headers with a sequence with more than two strings ' + |
| 220 'should throw'); |
| 221 }, 'Headers in ServiceWorkerGlobalScope'); |
| OLD | NEW |