cookieStore_event_delete.https.window.js (2503B)
1 'use strict'; 2 3 promise_test(async testCase => { 4 testCase.add_cleanup(async () => { 5 await cookieStore.delete('cookie-name'); 6 }); 7 8 // The events are asynchronously dispatched. Let's wait for both in the 9 // expected order to avoid race conditions. 10 11 { 12 const eventPromise = new Promise((resolve) => { 13 cookieStore.onchange = resolve; 14 }); 15 await cookieStore.set('cookie-name', 'cookie-value'); 16 17 const event = await eventPromise; 18 assert_true(event instanceof CookieChangeEvent); 19 assert_equals(event.type, 'change'); 20 assert_equals(event.changed.length, 1); 21 assert_equals(event.changed[0].name, 'cookie-name'); 22 } 23 24 { 25 const eventPromise = new Promise((resolve) => { 26 cookieStore.onchange = resolve; 27 }); 28 await cookieStore.delete('cookie-name'); 29 const event = await eventPromise; 30 assert_true(event instanceof CookieChangeEvent); 31 assert_equals(event.type, 'change'); 32 assert_equals(event.deleted.length, 1); 33 assert_equals(event.deleted[0].name, 'cookie-name'); 34 assert_equals( 35 event.deleted[0].value, undefined, 36 'Cookie change events for deletions should not have cookie values'); 37 assert_equals(event.changed.length, 0); 38 } 39 }, 'cookieStore fires change event for cookie deleted by cookieStore.delete()'); 40 41 promise_test(async testCase => { 42 testCase.add_cleanup(async () => { 43 await cookieStore.delete('cookie-name'); 44 }); 45 46 const eventPromise = new Promise((resolve) => { 47 const events = []; 48 cookieStore.onchange = event => { 49 events.push(event); 50 if (event.type === 'change' && 51 event.deleted.length === 1 && 52 event.deleted[0].name === 'cookie-name') { 53 resolve(events); 54 } 55 } 56 }); 57 58 await cookieStore.delete('cookie-unknown'); 59 await cookieStore.set('cookie-name', 'cookie-value'); 60 await cookieStore.delete('cookie-another-unknown'); 61 await cookieStore.delete('cookie-name'); 62 63 const events = await eventPromise; 64 65 assert_equals(events.length, 2); 66 assert_true(events[0] instanceof CookieChangeEvent); 67 assert_equals(events[0].type, 'change'); 68 assert_equals(events[0].changed.length, 1); 69 assert_equals(events[0].changed[0].name, 'cookie-name'); 70 71 assert_true(events[1] instanceof CookieChangeEvent); 72 assert_equals(events[1].type, 'change'); 73 assert_equals(events[1].deleted.length, 1); 74 assert_equals(events[1].deleted[0].name, 'cookie-name'); 75 }, 'cookieStore does not fire change events for non-existing expired cookies');