Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(686)

Side by Side Diff: LayoutTests/http/tests/serviceworker/resources/headers-worker.js

Issue 366853003: [ServiceWorker] A header list contains lowercased header names (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 importScripts('worker-test-helpers.js'); 1 importScripts('worker-test-helpers.js');
2 2
3 test(function() { 3 test(function() {
4 var expectedMap = { 4 var expectedMap = {
5 'Content-Language': 'ja', 5 'content-language': 'ja',
6 'Content-Type': 'text/html; charset=UTF-8', 6 'content-type': 'text/html; charset=UTF-8',
7 'X-ServiceWorker-Test': 'response test field' 7 'x-serviceworker-test': 'response test field'
8 }; 8 };
9 9
10 var headers = new Headers; 10 var headers = new Headers;
11 Object.keys(expectedMap).forEach(function(key) { 11 headers.set('Content-Language', 'ja');
12 headers.set(key, expectedMap[key]); 12 headers.set('Content-Type', 'text/html; charset=UTF-8');
13 }); 13 headers.set('X-ServiceWorker-Test', 'text/html; charset=UTF-8');
14 14
15 // 'size' 15 // 'size'
16 assert_equals(headers.size, 3, 'headers.size should match'); 16 assert_equals(headers.size, 3, 'headers.size should match');
17 17
18 // 'has()', 'get()' 18 // 'has()', 'get()'
19 var key = 'Content-Type'; 19 var key = 'Content-Type';
20 assert_true(headers.has(key)); 20 assert_true(headers.has(key));
21 assert_equals(headers.get(key), expectedMap[key]); 21 assert_true(headers.has(key.toUpperCase()));
22 assert_equals(headers.get(key), expectedMap[key.toLowerCase()]);
23 assert_equals(headers.get(key.toUpperCase()), expectedMap[key.toLowerCase()] );
22 assert_equals(headers.get('dummy'), null); 24 assert_equals(headers.get('dummy'), null);
23 assert_false(headers.has('dummy')); 25 assert_false(headers.has('dummy'));
24 26
25 // 'delete()' 27 // 'delete()'
26 var deleteKey = 'Content-Type'; 28 var deleteKey = 'Content-Type';
27 headers.delete(deleteKey); 29 headers.delete(deleteKey);
28 assert_equals(headers.size, 2, 'headers.size should have -1 size'); 30 assert_equals(headers.size, 2, 'headers.size should have -1 size');
29 Object.keys(expectedMap).forEach(function(key) { 31 Object.keys(expectedMap).forEach(function(key) {
30 if (key == deleteKey) 32 if (key == deleteKey.toLowerCase())
31 assert_false(headers.has(key)); 33 assert_false(headers.has(key));
32 else 34 else
33 assert_true(headers.has(key)); 35 assert_true(headers.has(key));
34 }); 36 });
35 37
36 // 'set()' 38 // 'set()'
37 var testCasesForSet = [ 39 var testCasesForSet = [
38 // For a new key/value pair. 40 // For a new key/value pair.
39 { key: 'Cache-Control', 41 { key: 'Cache-Control',
40 value: 'max-age=3600', 42 value: 'max-age=3600',
41 isNewEntry: true }, 43 isNewEntry: true },
42 44
43 // For an existing key. 45 // For an existing key.
44 { key: 'X-ServiceWorker-Test', 46 { key: 'X-ServiceWorker-Test',
45 value: 'response test field - updated', 47 value: 'response test field - updated',
46 isUpdate: true }, 48 isUpdate: true },
47 49
48 // For setting a numeric value, expecting to see DOMString on getting. 50 // For setting a numeric value, expecting to see DOMString on getting.
49 { key: 'X-Numeric-Value', 51 { key: 'X-Numeric-Value',
50 value: 12345, 52 value: 12345,
51 expectedValue: '12345', 53 expectedValue: '12345',
52 isNewEntry: true }, 54 isNewEntry: true },
53 55
54 // For case-sensitivity test. (FIXME: if we want HeaderMap to 56 // For case-insensitivity test.
55 // work in an case-insensitive way (as we do for headers in XHR)
56 // update the test and code)
57 { key: 'content-language', 57 { key: 'content-language',
58 value: 'fi', 58 value: 'fi',
59 isNewEntry: true } 59 isUpdate: true }
60 ]; 60 ];
61 61
62 var expectedHeaderSize = headers.size; 62 var expectedHeaderSize = headers.size;
63 testCasesForSet.forEach(function(testCase) { 63 testCasesForSet.forEach(function(testCase) {
64 var key = testCase.key; 64 var key = testCase.key;
65 var value = testCase.value; 65 var value = testCase.value;
66 var expectedValue = ('expectedValue' in testCase) ? testCase.expectedVal ue : testCase.value; 66 var expectedValue = ('expectedValue' in testCase) ? testCase.expectedVal ue : testCase.value;
67 expectedHeaderSize = testCase.isNewEntry ? (expectedHeaderSize + 1) : ex pectedHeaderSize; 67 expectedHeaderSize = testCase.isNewEntry ? (expectedHeaderSize + 1) : ex pectedHeaderSize;
68 68
69 headers.set(key, value); 69 headers.set(key, value);
70 assert_true(headers.has(key)); 70 assert_true(headers.has(key));
71 assert_equals(headers.get(key), expectedValue); 71 assert_equals(headers.get(key), expectedValue);
72 if (testCase.isUpdate) 72 if (testCase.isUpdate)
73 assert_true(headers.get(key) != expectedMap[key]); 73 assert_true(headers.get(key) != expectedMap[key.toLowerCase()]);
74 assert_equals(headers.size, expectedHeaderSize); 74 assert_equals(headers.size, expectedHeaderSize);
75 75
76 // Update expectedMap too for forEach() test below. 76 // Update expectedMap too for forEach() test below.
77 expectedMap[key] = expectedValue; 77 expectedMap[key.toLowerCase()] = expectedValue;
78 }); 78 });
79 79
80 // 'forEach()' 80 // 'forEach()'
81 headers.forEach(function(value, key) { 81 headers.forEach(function(value, key) {
82 assert_true(key != deleteKey); 82 assert_true(key != deleteKey.toLowerCase());
83 assert_true(key in expectedMap); 83 assert_true(key in expectedMap);
84 assert_equals(headers.get(key), expectedMap[key]); 84 assert_equals(headers.get(key), expectedMap[key]);
85 }); 85 });
86 86
87 // 'append()', 'getAll()' 87 // 'append()', 'getAll()'
88 var allValues = headers.getAll('X-ServiceWorker-Test'); 88 var allValues = headers.getAll('X-ServiceWorker-Test');
89 assert_equals(allValues.length, 1); 89 assert_equals(allValues.length, 1);
90 assert_equals(headers.size, 5); 90 assert_equals(headers.size, 4);
91 headers.append('X-ServiceWorker-Test', 'response test field - append'); 91 headers.append('X-SERVICEWORKER-TEST', 'response test field - append');
92 assert_equals(headers.size, 6, 'headers.size should increase by 1.'); 92 assert_equals(headers.size, 5, 'headers.size should increase by 1.');
93 assert_equals(headers.get('X-ServiceWorker-Test'), 93 assert_equals(headers.get('X-SERVICEWORKER-Test'),
94 'response test field - updated', 94 'response test field - updated',
95 'the value of the first header added should be returned.'); 95 'the value of the first header added should be returned.');
96 allValues = headers.getAll('X-ServiceWorker-Test'); 96 allValues = headers.getAll('X-SERVICEWorker-TEST');
97 assert_equals(allValues.length, 2); 97 assert_equals(allValues.length, 2);
98 assert_equals(allValues[0], 'response test field - updated'); 98 assert_equals(allValues[0], 'response test field - updated');
99 assert_equals(allValues[1], 'response test field - append'); 99 assert_equals(allValues[1], 'response test field - append');
100 headers.set('X-ServiceWorker-Test', 'response test field - set'); 100 headers.set('X-SERVICEWorker-Test', 'response test field - set');
101 assert_equals(headers.size, 5, 'the second header should be deleted'); 101 assert_equals(headers.size, 4, 'the second header should be deleted');
102 allValues = headers.getAll('X-ServiceWorker-Test'); 102 allValues = headers.getAll('X-ServiceWorker-Test');
103 assert_equals(allValues.length, 1, 'the second header should be deleted'); 103 assert_equals(allValues.length, 1, 'the second header should be deleted');
104 assert_equals(allValues[0], 'response test field - set'); 104 assert_equals(allValues[0], 'response test field - set');
105 headers.append('X-ServiceWorker-Test', 'response test field - append'); 105 headers.append('X-ServiceWorker-TEST', 'response test field - append');
106 assert_equals(headers.size, 6, 'headers.size should increase by 1.') 106 assert_equals(headers.size, 5, 'headers.size should increase by 1.')
107 headers.delete('X-ServiceWorker-Test'); 107 headers.delete('X-ServiceWORKER-Test');
108 assert_equals(headers.size, 4, 'two headers should be deleted.') 108 assert_equals(headers.size, 3, 'two headers should be deleted.')
109 109
110 // new Headers with sequence<sequence<ByteString>> 110 // new Headers with sequence<sequence<ByteString>>
111 headers = new Headers([['a', 'b'], ['c', 'd'], ['c', 'e']]); 111 headers = new Headers([['a', 'b'], ['c', 'd'], ['c', 'e']]);
112 assert_equals(headers.size, 3, 'headers.size should match'); 112 assert_equals(headers.size, 3, 'headers.size should match');
113 assert_equals(headers.get('a'), 'b'); 113 assert_equals(headers.get('a'), 'b');
114 assert_equals(headers.get('c'), 'd'); 114 assert_equals(headers.get('c'), 'd');
115 assert_equals(headers.getAll('c')[0], 'd'); 115 assert_equals(headers.getAll('c')[0], 'd');
116 assert_equals(headers.getAll('c')[1], 'e'); 116 assert_equals(headers.getAll('c')[1], 'e');
117 117
118 // new Headers with Headers 118 // new Headers with Headers
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 headers.set('a', 'b'); 201 headers.set('a', 'b');
202 headers.forEach(function() { saw_that = this; }, that); 202 headers.forEach(function() { saw_that = this; }, that);
203 assert_equals(saw_that, that, 'Passed thisArg should match'); 203 assert_equals(saw_that, that, 'Passed thisArg should match');
204 204
205 headers.forEach(function() { 'use strict'; saw_that = this; }, 'abc'); 205 headers.forEach(function() { 'use strict'; saw_that = this; }, 'abc');
206 assert_equals(saw_that, 'abc', 'Passed non-object thisArg should match'); 206 assert_equals(saw_that, 'abc', 'Passed non-object thisArg should match');
207 207
208 headers.forEach(function() { saw_that = this; }, null); 208 headers.forEach(function() { saw_that = this; }, null);
209 assert_equals(saw_that, self, 'Passed null thisArg should be replaced with g lobal object'); 209 assert_equals(saw_that, self, 'Passed null thisArg should be replaced with g lobal object');
210 }, 'Headers in ServiceWorkerGlobalScope'); 210 }, 'Headers in ServiceWorkerGlobalScope');
OLDNEW
« no previous file with comments | « no previous file | Source/modules/serviceworkers/FetchHeaderList.cpp » ('j') | Source/modules/serviceworkers/FetchHeaderList.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698