Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- This WPT test may be referenced by the following Test IDs:
- /cookie-store/cookieStore_get_set_ordering.https.any.html - WPT Dashboard Interop Dashboard
- /cookie-store/cookieStore_get_set_ordering.https.any.serviceworker.html - WPT Dashboard Interop Dashboard
// META: title=Cookie Store API: Cookie ordering
// META: global=window,serviceworker
'use strict';
promise_test(async t => {
await cookieStore.set('ordered-1', 'cookie-value1');
await cookieStore.set('ordered-2', 'cookie-value2');
await cookieStore.set('ordered-3', 'cookie-value3');
// NOTE: this assumes no concurrent writes from elsewhere; it also
// uses three separate cookie jar read operations where a single getAll
// would be more efficient, but this way the CookieStore does the filtering
// for us.
const matchingValues = await Promise.all(['1', '2', '3'].map(
async suffix => (await cookieStore.get('ordered-' + suffix)).value));
const actual = matchingValues.join(';');
const expected = 'cookie-value1;cookie-value2;cookie-value3';
assert_equals(actual, expected);
}, 'Set three simple origin session cookies sequentially and ensure ' +
'they all end up in the cookie jar in order.');
promise_test(async t => {
await Promise.all([
cookieStore.set('ordered-unordered1', 'unordered-cookie-value1'),
cookieStore.set('ordered-unordered2', 'unordered-cookie-value2'),
cookieStore.set('ordered-unordered3', 'unordered-cookie-value3')
]);
// NOTE: this assumes no concurrent writes from elsewhere; it also
// uses three separate cookie jar read operations where a single getAll
// would be more efficient, but this way the CookieStore does the filtering
// for us and we do not need to sort.
const matchingCookies = await Promise.all(['1', '2', '3'].map(
suffix => cookieStore.get('ordered-unordered' + suffix)));
const actual = matchingCookies.map(({ value }) => value).join(';');
const expected =
'unordered-cookie-value1;' +
'unordered-cookie-value2;' +
'unordered-cookie-value3';
assert_equals(actual, expected);
}, 'Set three simple origin session cookies in undefined order using ' +
'Promise.all and ensure they all end up in the cookie jar in any ' +
'order. ');