text: // META: title=Cookie Store API: cookieStore.delete() arguments
  // META: global=!default,serviceworker,window
  
  'use strict';
  
  promise_test(async testCase => {
    await cookieStore.set('cookie-name', 'cookie-value');
  
    await cookieStore.delete('cookie-name');
    const cookie = await cookieStore.get('cookie-name');
    assert_equals(cookie, null);
  }, 'cookieStore.delete 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.delete({ name: 'cookie-name' });
    const cookie = await cookieStore.get('cookie-name');
    assert_equals(cookie, null);
  }, 'cookieStore.delete 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.delete('cookie-name', { name: 'wrong-cookie-name' });
    const cookie = await cookieStore.get('cookie-name');
    assert_equals(cookie, null);
  }, 'cookieStore.delete with name in both positional arguments and options');
  
  promise_test(async testCase => {
    const currentUrl = new URL(self.location.href);
    const currentDomain = currentUrl.hostname;
    await cookieStore.set(
        'cookie-name', 'cookie-value', { domain: currentDomain });
    testCase.add_cleanup(async () => {
      await cookieStore.delete({ name: 'cookie-name', domain: currentDomain });
    });
  
    await cookieStore.delete({ name: 'cookie-name', domain: currentDomain });
    const cookie = await cookieStore.get('cookie-name');
    assert_equals(cookie, null);
  }, 'cookieStore.delete with domain set to the current hostname');
  
  promise_test(async testCase => {
    const currentUrl = new URL(self.location.href);
    const currentDomain = currentUrl.hostname;
    const subDomain = `sub.${currentDomain}`;
  
    await promise_rejects(testCase, new TypeError(), cookieStore.delete(
        { name: 'cookie-name', domain: subDomain }));
  }, 'cookieStore.delete with domain set to a subdomain of the current hostname');
  
  promise_test(async testCase => {
    const currentUrl = new URL(self.location.href);
    const currentDomain = currentUrl.hostname;
    assert_not_equals(currentDomain[0] === '.',
        'this test assumes that the current hostname does not start with .');
    const domainSuffix = currentDomain.substr(1);
  
    await promise_rejects(testCase, new TypeError(), cookieStore.delete(
        { name: 'cookie-name', domain: domainSuffix }));
  }, 'cookieStore.delete with domain set to a non-domain-matching suffix of ' +
     'the current hostname');
  
  promise_test(async testCase => {
    const currentUrl = new URL(self.location.href);
    const currentDomain = currentUrl.hostname;
    await cookieStore.set(
        'cookie-name', 'cookie-value', { domain: currentDomain });
    testCase.add_cleanup(async () => {
      await cookieStore.delete({ name: 'cookie-name', domain: currentDomain });
    });
  
    await cookieStore.delete({ name: 'cookie-name', domain: currentDomain });
    const cookie = await cookieStore.get('cookie-name');
    assert_equals(cookie, null);
  }, 'cookieStore.delete with name in options and domain set to the current ' +
     'hostname');
  
  promise_test(async testCase => {
    const currentUrl = new URL(self.location.href);
    const currentDomain = currentUrl.hostname;
    const subDomain = `sub.${currentDomain}`;
  
    await promise_rejects(testCase, new TypeError(), cookieStore.delete(
        { name: 'cookie-name', domain: subDomain }));
  }, 'cookieStore.delete with name in options and domain set to a subdomain of ' +
     'the current hostname');
  
  promise_test(async testCase => {
    const currentUrl = new URL(self.location.href);
    const currentDomain = currentUrl.hostname;
    assert_not_equals(currentDomain[0] === '.',
        'this test assumes that the current hostname does not start with .');
    const domainSuffix = currentDomain.substr(1);
  
    await promise_rejects(testCase, new TypeError(), cookieStore.delete(
        { name: 'cookie-name', domain: domainSuffix }));
  }, 'cookieStore.delete with name in options and domain set to a ' +
     'non-domain-matching suffix of the current hostname');
  
  promise_test(async testCase => {
    const currentUrl = new URL(self.location.href);
    const currentPath = currentUrl.pathname;
    const currentDirectory =
        currentPath.substr(0, currentPath.lastIndexOf('/') + 1);
    await cookieStore.set(
        'cookie-name', 'cookie-value', { path: currentDirectory });
    testCase.add_cleanup(async () => {
      await cookieStore.delete({ name: 'cookie-name', path: currentDirectory });
    });
  
    await cookieStore.delete({ name: 'cookie-name', path: currentDirectory });
    const cookie = await cookieStore.get('cookie-name');
    assert_equals(cookie, null);
  }, 'cookieStore.delete with path set to the current directory');
  
  promise_test(async testCase => {
    const currentUrl = new URL(self.location.href);
    const currentPath = currentUrl.pathname;
    const currentDirectory =
        currentPath.substr(0, currentPath.lastIndexOf('/') + 1);
    const subDirectory = currentDirectory + "subdir/";
    await cookieStore.set(
        'cookie-name', 'cookie-value', { path: currentDirectory });
    testCase.add_cleanup(async () => {
      await cookieStore.delete({ name: 'cookie-name', path: currentDirectory });
    });
  
    await cookieStore.delete({ name: 'cookie-name', path: subDirectory });
    const cookie = await cookieStore.get('cookie-name');
    assert_equals(cookie.name, 'cookie-name');
    assert_equals(cookie.value, 'cookie-value');
  }, 'cookieStore.delete with path set to subdirectory of the current directory');
  
  promise_test(async testCase => {
    await cookieStore.set('cookie-name', 'cookie-value');
    testCase.add_cleanup(async () => {
      await cookieStore.delete('cookie-name');
    });
  
    const cookie_attributes = await cookieStore.get('cookie-name');
    assert_equals(cookie_attributes.name, 'cookie-name');
    assert_equals(cookie_attributes.value, 'cookie-value');
  
    await cookieStore.delete(cookie_attributes);
    const cookie = await cookieStore.get('cookie-name');
    assert_equals(cookie, null);
  }, 'cookieStore.delete with get result');
  