Skip to content

Commit 4013039

Browse files
aamuleychromium-wpt-export-bot
authored andcommitted
Update cookieStore WPTs to not append "/" to the path attribute
Remove this behavior for better interoperability with document.cookie and the Set-Cookie header. This logic was added in https://chromium-review.googlesource.com/c/chromium/src/+/2131031 but it is unclear why that was done (per WICG/cookie-store#244). This change additionally updates the set/delete test cleanup methods to use the `Set-Cookie` header instead of `cookieStore.delete` to delete cookies to avoid a dependency on the API being tested. Bug: 402779102 Change-Id: I50fea05101c839f55736e7f3c958c919dd119f27 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6520094 Auto-Submit: Anusha Muley <[email protected]> Reviewed-by: Chris Fredrickson <[email protected]> Reviewed-by: Dylan Cutler <[email protected]> Commit-Queue: Dylan Cutler <[email protected]> Commit-Queue: Anusha Muley <[email protected]> Cr-Commit-Position: refs/heads/main@{#1460844}
1 parent 649319c commit 4013039

3 files changed

+82
-36
lines changed

cookie-store/cookieListItem_attributes.https.any.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,15 +161,15 @@ promise_test(async testCase => {
161161
assert_equals(cookie.name, 'cookie-name');
162162
assert_equals(cookie.value, 'cookie-value');
163163
assert_equals(cookie.domain, null);
164-
assert_equals(cookie.path, currentDirectory + '/');
164+
assert_equals(cookie.path, currentDirectory);
165165
assert_equals(cookie.expires, null);
166166
assert_equals(cookie.secure, true);
167167
assert_equals(cookie.sameSite, 'strict');
168168
const itemKeys = Object.keys(cookie);
169169
for (const key of kCookieListItemKeys) {
170170
assert_in_array(key, itemKeys);
171171
}
172-
}, 'CookieListItem - cookieStore.set adds / to path if it does not end with /');
172+
}, 'CookieListItem - cookieStore.set does not add / to path if it does not end with /');
173173

174174
['strict', 'lax', 'none'].forEach(sameSiteValue => {
175175
promise_test(async testCase => {

cookie-store/cookieStore_delete_arguments.https.any.js

Lines changed: 37 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
// META: title=Cookie Store API: cookieStore.delete() arguments
2+
// META: script=resources/cookie-test-helpers.js
23
// META: global=window,serviceworker
34

45
'use strict';
56

67
promise_test(async testCase => {
78
await cookieStore.set('cookie-name', 'cookie-value');
8-
9+
testCase.add_cleanup(async () => {
10+
await setCookieStringHttp(`cookie-name=deleted; Max-Age=0`);
11+
});
912
await cookieStore.delete('cookie-name');
1013
const cookie = await cookieStore.get('cookie-name');
1114
assert_equals(cookie, null);
@@ -14,7 +17,7 @@ promise_test(async testCase => {
1417
promise_test(async testCase => {
1518
await cookieStore.set('cookie-name', 'cookie-value');
1619
testCase.add_cleanup(async () => {
17-
await cookieStore.delete('cookie-name');
20+
await setCookieStringHttp(`cookie-name=deleted; Max-Age=0`);
1821
});
1922

2023
await cookieStore.delete({ name: 'cookie-name' });
@@ -42,7 +45,7 @@ promise_test(async testCase => {
4245
await cookieStore.set(
4346
{ name: 'cookie-name', value: 'cookie-value', domain: currentDomain });
4447
testCase.add_cleanup(async () => {
45-
await cookieStore.delete({ name: 'cookie-name', domain: currentDomain });
48+
await setCookieStringHttp(`cookie-name=deleted; Domain=${currentDomain}; Max-Age=0`);
4649
});
4750

4851
await cookieStore.delete({ name: 'cookie-name', domain: currentDomain });
@@ -79,7 +82,8 @@ promise_test(async testCase => {
7982
await cookieStore.set(
8083
{ name: 'cookie-name', value: 'cookie-value', path: currentDirectory });
8184
testCase.add_cleanup(async () => {
82-
await cookieStore.delete({ name: 'cookie-name', path: currentDirectory });
85+
await setCookieStringHttp(`cookie-name=deleted; Path=${currentDirectory}; Max-Age=0`);
86+
await setCookieStringHttp(`cookie-name=deleted; Path=${currentDirectory}/; Max-Age=0`);
8387
});
8488

8589
await cookieStore.delete({ name: 'cookie-name', path: currentDirectory });
@@ -96,7 +100,8 @@ promise_test(async testCase => {
96100
await cookieStore.set(
97101
{ name: 'cookie-name', value: 'cookie-value', path: currentDirectory });
98102
testCase.add_cleanup(async () => {
99-
await cookieStore.delete({ name: 'cookie-name', path: currentDirectory });
103+
await setCookieStringHttp(`cookie-name=deleted; Path=${currentDirectory}; Max-Age=0`);
104+
await setCookieStringHttp(`cookie-name=deleted; Path=${currentDirectory}/; Max-Age=0`);
100105
});
101106

102107
await cookieStore.delete({ name: 'cookie-name', path: subDirectory });
@@ -109,18 +114,36 @@ promise_test(async testCase => {
109114
const currentUrl = new URL(self.location.href);
110115
const currentPath = currentUrl.pathname;
111116
const currentDirectory = currentPath.substr(0, currentPath.lastIndexOf('/'));
112-
await cookieStore.set(
113-
{ name: 'cookie-name',
114-
value: 'cookie-value',
115-
path: currentDirectory + '/' });
117+
await setCookieStringHttp(`cookie-name=cookie-value; Path=${currentDirectory};`);
118+
116119
testCase.add_cleanup(async () => {
117-
await cookieStore.delete({ name: 'cookie-name', path: currentDirectory });
120+
await setCookieStringHttp(`cookie-name=deleted; Path=${currentDirectory}; Max-Age=0`);
121+
await setCookieStringHttp(`cookie-name=deleted; Path=${currentDirectory}/; Max-Age=0`);
118122
});
119123

120124
await cookieStore.delete({ name: 'cookie-name', path: currentDirectory });
121125
const cookie = await cookieStore.get('cookie-name');
122126
assert_equals(cookie, null);
123-
}, 'cookieStore.delete with missing / at the end of path');
127+
}, 'cookieStore.delete does not append / at the end of path');
128+
129+
promise_test(async testCase => {
130+
if (typeof self.document === 'undefined') {
131+
// The test is being run from a service worker context where document is undefined
132+
testCase.done();
133+
return;
134+
}
135+
const currentUrl = new URL(self.location.href);
136+
const currentPath = currentUrl.pathname;
137+
const currentDirectory = currentPath.substr(0, currentPath.lastIndexOf('/'));
138+
await setCookieStringDocument('cookie-name=cookie-value; path=' + currentDirectory);
139+
testCase.add_cleanup(async () => {
140+
await setCookieStringHttp(`cookie-name=deleted; Path=${currentDirectory}; Max-Age=0`);
141+
await setCookieStringHttp(`cookie-name=deleted; Path=${currentDirectory}/; Max-Age=0`);
142+
});
143+
await cookieStore.delete({ name: 'cookie-name', path: currentDirectory });
144+
const cookie = await cookieStore.get('cookie-name');
145+
assert_equals(cookie, null);
146+
}, 'cookieStore.delete can delete a cookie set by document.cookie if document is defined');
124147

125148
promise_test(async testCase => {
126149
const currentUrl = new URL(self.location.href);
@@ -136,7 +159,7 @@ promise_test(async testCase => {
136159
promise_test(async testCase => {
137160
await cookieStore.set('cookie-name', 'cookie-value');
138161
testCase.add_cleanup(async () => {
139-
await cookieStore.delete('cookie-name');
162+
await setCookieStringHttp(`cookie-name=deleted; Max-Age=0`);
140163
});
141164

142165
const cookie_attributes = await cookieStore.get('cookie-name');
@@ -151,7 +174,7 @@ promise_test(async testCase => {
151174
promise_test(async testCase => {
152175
await cookieStore.set('', 'cookie-value');
153176
testCase.add_cleanup(async () => {
154-
await cookieStore.delete('');
177+
await setCookieStringHttp(`=deleted; Max-Age=0`);
155178
});
156179

157180
await cookieStore.delete('');
@@ -162,7 +185,7 @@ promise_test(async testCase => {
162185
promise_test(async testCase => {
163186
await cookieStore.set('', 'cookie-value');
164187
testCase.add_cleanup(async () => {
165-
await cookieStore.delete('');
188+
await setCookieStringHttp(`=deleted; Max-Age=0`);
166189
});
167190

168191
await cookieStore.delete({ name: '' });

cookie-store/cookieStore_set_arguments.https.any.js

Lines changed: 43 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// META: title=Cookie Store API: cookieStore.set() arguments
2+
// META: script=resources/cookie-test-helpers.js
23
// META: global=window,serviceworker
34

45
'use strict';
@@ -8,7 +9,7 @@ promise_test(async testCase => {
89

910
await cookieStore.set('cookie-name', 'cookie-value');
1011
testCase.add_cleanup(async () => {
11-
await cookieStore.delete('cookie-name');
12+
await setCookieStringHttp(`cookie-name=deleted; Max-Age=0`);
1213
});
1314

1415
const cookie = await cookieStore.get('cookie-name');
@@ -21,7 +22,7 @@ promise_test(async testCase => {
2122

2223
await cookieStore.set({ name: 'cookie-name', value: 'cookie-value' });
2324
testCase.add_cleanup(async () => {
24-
await cookieStore.delete('cookie-name');
25+
await setCookieStringHttp(`cookie-name=deleted; Max-Age=0`);
2526
});
2627
const cookie = await cookieStore.get('cookie-name');
2728
assert_equals(cookie.name, 'cookie-name');
@@ -42,7 +43,7 @@ promise_test(async testCase => {
4243
await cookieStore.delete('cookie-name');
4344
cookieStore.set('cookie-name', 'suspicious-value=resembles-name-and-value');
4445
testCase.add_cleanup(async () => {
45-
await cookieStore.delete('cookie-name');
46+
await setCookieStringHttp(`cookie-name=deleted; Max-Age=0`);
4647
});
4748
const cookie = await cookieStore.get('cookie-name');
4849
assert_equals(cookie.name, 'cookie-name');
@@ -81,7 +82,7 @@ promise_test(async testCase => {
8182
value: 'cookie-value',
8283
expires: new Date(tenYearsFromNow) });
8384
testCase.add_cleanup(async () => {
84-
await cookieStore.delete('cookie-name');
85+
await setCookieStringHttp(`cookie-name=deleted; Max-Age=0`);
8586
});
8687
const cookie = await cookieStore.get('cookie-name');
8788
assert_equals(cookie.name, 'cookie-name');
@@ -98,7 +99,7 @@ promise_test(async testCase => {
9899
value: 'cookie-value',
99100
expires: new Date(tenYearsAgo) });
100101
testCase.add_cleanup(async () => {
101-
await cookieStore.delete('cookie-name');
102+
await setCookieStringHttp(`cookie-name=deleted; Max-Age=0`);
102103
});
103104
const cookie = await cookieStore.get('cookie-name');
104105
assert_equals(cookie, null);
@@ -112,7 +113,7 @@ promise_test(async testCase => {
112113
await cookieStore.set(
113114
{ name: 'cookie-name', value: 'cookie-value', expires: tenYearsFromNow });
114115
testCase.add_cleanup(async () => {
115-
await cookieStore.delete('cookie-name');
116+
await setCookieStringHttp(`cookie-name=deleted; Max-Age=0`);
116117
});
117118
const cookie = await cookieStore.get('cookie-name');
118119
assert_equals(cookie.name, 'cookie-name');
@@ -127,7 +128,7 @@ promise_test(async testCase => {
127128
await cookieStore.set(
128129
{ name: 'cookie-name', value: 'cookie-value', expires: tenYearsAgo });
129130
testCase.add_cleanup(async () => {
130-
await cookieStore.delete('cookie-name');
131+
await setCookieStringHttp(`cookie-name=deleted; Max-Age=0`);
131132
});
132133
const cookie = await cookieStore.get('cookie-name');
133134
assert_equals(cookie, null);
@@ -156,7 +157,7 @@ promise_test(async testCase => {
156157
await cookieStore.set(
157158
{ name: 'cookie-name', value: 'cookie-value', domain: currentDomain });
158159
testCase.add_cleanup(async () => {
159-
await cookieStore.delete({ name: 'cookie-name', domain: currentDomain });
160+
await setCookieStringHttp(`cookie-name=deleted; Domain=${currentDomain}; Path=/; Max-Age=0`);
160161
});
161162
const cookie = await cookieStore.get('cookie-name');
162163
assert_equals(cookie.name, 'cookie-name');
@@ -195,12 +196,12 @@ promise_test(async testCase => {
195196

196197
await cookieStore.set('cookie-name', 'cookie-value1');
197198
testCase.add_cleanup(async () => {
198-
await cookieStore.delete('cookie-name');
199+
await setCookieStringHttp(`cookie-name=deleted; Path=/; Max-Age=0`);
199200
});
200201
await cookieStore.set(
201202
{ name: 'cookie-name', value: 'cookie-value2', domain: currentDomain });
202203
testCase.add_cleanup(async () => {
203-
await cookieStore.delete({ name: 'cookie-name', domain: currentDomain });
204+
await setCookieStringHttp(`cookie-name=deleted; Domain=${currentDomain}; Path=/; Max-Age=0`);
204205
});
205206

206207
const cookies = await cookieStore.getAll('cookie-name');
@@ -224,7 +225,7 @@ promise_test(async testCase => {
224225
await cookieStore.set(
225226
{ name: 'cookie-name', value: 'cookie-value', path: currentDirectory });
226227
testCase.add_cleanup(async () => {
227-
await cookieStore.delete({ name: 'cookie-name', path: currentDirectory });
228+
await setCookieStringHttp(`cookie-name=deleted; Path=${currentDirectory}; Max-Age=0`);
228229
});
229230
const cookie = await cookieStore.get('cookie-name');
230231
assert_equals(cookie.name, 'cookie-name');
@@ -243,7 +244,7 @@ promise_test(async testCase => {
243244
await cookieStore.set(
244245
{ name: 'cookie-name', value: 'cookie-value', path: subDirectory });
245246
testCase.add_cleanup(async () => {
246-
await cookieStore.delete({ name: 'cookie-name', path: subDirectory });
247+
await setCookieStringHttp(`cookie-name=deleted; Path=${subDirectory}; Max-Age=0`);
247248
});
248249
const cookie = await cookieStore.get('cookie-name');
249250
assert_equals(cookie, null);
@@ -254,12 +255,13 @@ promise_test(async testCase => {
254255

255256
await cookieStore.set('cookie-name', 'cookie-old-value');
256257
testCase.add_cleanup(async () => {
257-
await cookieStore.delete('cookie-name');
258+
await setCookieStringHttp(`cookie-name=deleted; Max-Age=0`);
258259
});
260+
259261
await cookieStore.set(
260262
{ name: 'cookie-name', value: 'cookie-new-value', path: '/' });
261263
testCase.add_cleanup(async () => {
262-
await cookieStore.delete({ name: 'cookie-name', path: '/' });
264+
await setCookieStringHttp(`cookie-name=deleted; Path=/; Max-Age=0`);
263265
});
264266

265267
const cookies = await cookieStore.getAll('cookie-name');
@@ -277,13 +279,34 @@ promise_test(async testCase => {
277279
await cookieStore.set(
278280
{ name: 'cookie-name', value: 'cookie-value', path: currentDirectory });
279281
testCase.add_cleanup(async () => {
280-
await cookieStore.delete({ name: 'cookie-name', path: currentDirectory });
282+
await setCookieStringHttp(`cookie-name=deleted; Path=${currentDirectory}/; Max-Age=0`);
281283
});
284+
await setCookieStringHttp(`cookie-name=deleted; Path=${currentDirectory}; Max-Age=0`);
282285
const cookie = await cookieStore.get('cookie-name');
283-
assert_equals(cookie.name, 'cookie-name');
284-
assert_equals(cookie.value, 'cookie-value');
285-
assert_equals(cookie.path, currentDirectory + '/');
286-
}, 'cookieStore.set adds / to path that does not end with /');
286+
assert_equals(cookie, null);
287+
}, 'cookieStore.set does not add / to path that does not end with /');
288+
289+
promise_test(async testCase => {
290+
if (typeof self.document === 'undefined') {
291+
// The test is being run from a service worker context where document is undefined
292+
testCase.done();
293+
return;
294+
}
295+
const currentUrl = new URL(self.location.href);
296+
const currentPath = currentUrl.pathname;
297+
const currentDirectory = currentPath.substr(0, currentPath.lastIndexOf('/'));
298+
await setCookieStringDocument('cookie-name=cookie-value; path=' + currentDirectory);
299+
await cookieStore.set(
300+
{ name: 'cookie-name', value: 'new-cookie-value', path: currentDirectory });
301+
testCase.add_cleanup(async () => {
302+
await setCookieStringHttp(`cookie-name=deleted; Path=${currentDirectory}; Max-Age=0`);
303+
await setCookieStringHttp(`cookie-name=deleted; Path=${currentDirectory}/; Max-Age=0`);
304+
});
305+
const cookies = await cookieStore.getAll('cookie-name');
306+
assert_equals(cookies.length, 1);
307+
assert_equals(cookies[0].name, 'cookie-name');
308+
assert_equals(cookies[0].value, 'cookie-new-value');
309+
}, 'cookieStore.set can modify a cookie set by document.cookie if document is defined');
287310

288311
promise_test(async testCase => {
289312
const currentUrl = new URL(self.location.href);
@@ -299,7 +322,7 @@ promise_test(async testCase => {
299322
promise_test(async testCase => {
300323
await cookieStore.set('cookie-name', 'old-cookie-value');
301324
testCase.add_cleanup(async () => {
302-
await cookieStore.delete('cookie-name');
325+
await setCookieStringHttp(`cookie-name=deleted; Max-Age=0`);
303326
});
304327

305328
const cookie_attributes = await cookieStore.get('cookie-name');

0 commit comments

Comments
 (0)