| 'use strict'; |
| |
| promise_test(async testCase => { |
| testCase.add_cleanup(async () => { |
| await cookieStore.delete('cookie-name'); |
| }); |
| |
| // The events are asynchronously dispatched. Let's wait for both in the |
| // expected order to avoid race conditions. |
| |
| { |
| const eventPromise = new Promise((resolve) => { |
| cookieStore.onchange = resolve; |
| }); |
| await cookieStore.set('cookie-name', 'cookie-value'); |
| |
| const event = await eventPromise; |
| assert_true(event instanceof CookieChangeEvent); |
| assert_equals(event.type, 'change'); |
| assert_equals(event.changed.length, 1); |
| assert_equals(event.changed[0].name, 'cookie-name'); |
| } |
| |
| { |
| const eventPromise = new Promise((resolve) => { |
| cookieStore.onchange = resolve; |
| }); |
| await cookieStore.delete('cookie-name'); |
| const event = await eventPromise; |
| assert_true(event instanceof CookieChangeEvent); |
| assert_equals(event.type, 'change'); |
| assert_equals(event.deleted.length, 1); |
| assert_equals(event.deleted[0].name, 'cookie-name'); |
| assert_equals( |
| event.deleted[0].value, undefined, |
| 'Cookie change events for deletions should not have cookie values'); |
| assert_equals(event.changed.length, 0); |
| } |
| }, 'cookieStore fires change event for cookie deleted by cookieStore.delete()'); |
| |
| promise_test(async testCase => { |
| testCase.add_cleanup(async () => { |
| await cookieStore.delete('cookie-name'); |
| }); |
| |
| const eventPromise = new Promise((resolve) => { |
| const events = []; |
| cookieStore.onchange = event => { |
| events.push(event); |
| if (event.type === 'change' && |
| event.deleted.length === 1 && |
| event.deleted[0].name === 'cookie-name') { |
| resolve(events); |
| } |
| } |
| }); |
| |
| await cookieStore.delete('cookie-unknown'); |
| await cookieStore.set('cookie-name', 'cookie-value'); |
| await cookieStore.delete('cookie-another-unknown'); |
| await cookieStore.delete('cookie-name'); |
| |
| const events = await eventPromise; |
| |
| assert_equals(events.length, 2); |
| assert_true(events[0] instanceof CookieChangeEvent); |
| assert_equals(events[0].type, 'change'); |
| assert_equals(events[0].changed.length, 1); |
| assert_equals(events[0].changed[0].name, 'cookie-name'); |
| |
| assert_true(events[1] instanceof CookieChangeEvent); |
| assert_equals(events[1].type, 'change'); |
| assert_equals(events[1].deleted.length, 1); |
| assert_equals(events[1].deleted[0].name, 'cookie-name'); |
| }, 'cookieStore does not fire change events for non-existing expired cookies'); |