// META: title=Cookie Store API: cookieStore.getAll() arguments // META: global=window,serviceworker 'use strict'; promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); await cookieStore.set('cookie-name-2', 'cookie-value-2'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name-2'); }); const cookies = await cookieStore.getAll(); cookies.sort((a, b) => a.name.localeCompare(b.name)); assert_equals(cookies.length, 2); assert_equals(cookies[0].name, 'cookie-name'); assert_equals(cookies[0].value, 'cookie-value'); assert_equals(cookies[1].name, 'cookie-name-2'); assert_equals(cookies[1].value, 'cookie-value-2'); }, 'cookieStore.getAll with no arguments'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); await cookieStore.set('cookie-name-2', 'cookie-value-2'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name-2'); }); const cookies = await cookieStore.getAll({}); cookies.sort((a, b) => a.name.localeCompare(b.name)); assert_equals(cookies.length, 2); assert_equals(cookies[0].name, 'cookie-name'); assert_equals(cookies[0].value, 'cookie-value'); assert_equals(cookies[1].name, 'cookie-name-2'); assert_equals(cookies[1].value, 'cookie-value-2'); }, 'cookieStore.getAll with empty options'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); await cookieStore.set('cookie-name-2', 'cookie-value-2'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name-2'); }); const cookies = await cookieStore.getAll('cookie-name'); assert_equals(cookies.length, 1); assert_equals(cookies[0].name, 'cookie-name'); assert_equals(cookies[0].value, 'cookie-value'); }, 'cookieStore.getAll with positional name'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); await cookieStore.set('cookie-name-2', 'cookie-value-2'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name-2'); }); const cookies = await cookieStore.getAll({ name: 'cookie-name' }); assert_equals(cookies.length, 1); assert_equals(cookies[0].name, 'cookie-name'); assert_equals(cookies[0].value, 'cookie-value'); }, 'cookieStore.getAll with name in options'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); await cookieStore.set('cookie-name-2', 'cookie-value-2'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name-2'); }); const cookies = await cookieStore.getAll('cookie-name', { name: 'wrong-cookie-name' }); assert_equals(cookies.length, 1); assert_equals(cookies[0].name, 'cookie-name'); assert_equals(cookies[0].value, 'cookie-value'); }, 'cookieStore.getAll with name in both positional arguments and options'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); let target_url = self.location.href; if (self.GLOBAL.isWorker()) { target_url = target_url + '/path/within/scope'; } const cookies = await cookieStore.getAll({ url: target_url }); assert_equals(cookies.length, 1); assert_equals(cookies[0].name, 'cookie-name'); assert_equals(cookies[0].value, 'cookie-value'); }, 'cookieStore.getAll with absolute url in options'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); let target_path = self.location.pathname; if (self.GLOBAL.isWorker()) { target_path = target_path + '/path/within/scope'; } const cookies = await cookieStore.getAll({ url: target_path }); assert_equals(cookies.length, 1); assert_equals(cookies[0].name, 'cookie-name'); assert_equals(cookies[0].value, 'cookie-value'); }, 'cookieStore.getAll with relative url in options'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); const invalid_url = `${self.location.protocol}//${self.location.host}/different/path`; await promise_rejects_js(testCase, TypeError, cookieStore.getAll( { url: invalid_url })); }, 'cookieStore.getAll with invalid url path in options'); promise_test(async testCase => { await cookieStore.set('cookie-name', 'cookie-value'); testCase.add_cleanup(async () => { await cookieStore.delete('cookie-name'); }); const invalid_url = `${self.location.protocol}//www.example.com${self.location.pathname}`; await promise_rejects_js(testCase, TypeError, cookieStore.getAll( { url: invalid_url })); }, 'cookieStore.getAll with invalid url host in options');