tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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');