<!DOCTYPE html>
<head>
  <script src="/resources/testharness.js"></script>
  <script src="/resources/testharnessreport.js"></script>
  <script src="/cookies/resources/cookie-helper.sub.js"></script>
</head>
<body>
  <script>
    //
    // Set-Cookie: domain-attribute-host-with-and-without-leading-period=b; Path=/; Domain=.{{host}}
    // Set-Cookie: domain-attribute-host-with-and-without-leading-period=c; Path=/; Domain={{host}}
    //
    const cookieName = "domain-attribute-host-with-and-without-leading-period";
    test(t => {
      assert_dom_cookie(cookieName, "c", true);
    }, "Domain=.{{host}} => Second value available via `document.cookie`");

    async_test(t => {
      fetch("/cookies/resources/list.py", { credentials: "include" })
        .then(t.step_func(r => r.json()))
        .then(t.step_func_done(r => {
          assert_equals(r[cookieName], "c");
        }))
        .catch(_ => assert_unreached);
    }, "Domain=.{{host}} => Second value sent with same-origin requests.");

    async_test(t => {
      fetch(`${SECURE_SUBDOMAIN_ORIGIN}/cookies/resources/list.py`, { credentials: "include" })
        .then(t.step_func(r => r.json()))
        .then(t.step_func_done(r => {
          assert_equals(r[cookieName], "c");
        }))
        .catch(_ => assert_unreached);
    }, "Domain=.{{host}} => Second value sent with subdomain requests.");
  </script>
</body>
