<!DOCTYPE html>
<html>
<link rel="author" href="mtrzos@google.com" title="Maciek Trzos">
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src=/fetch/sec-metadata/resources/helper.js></script>
<body></body>
<script>
  promise_test(t => {
    return new Promise((resolve, reject) => {
      let key = "style-same-origin";

      let e = document.createElement('link');
      e.rel = "stylesheet";
      e.href = "https://{{host}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
      e.onload = e => {
        let expected = {"destination":"style", "site":"same-origin"};
        fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
          .then(response => response.text())
          .then(text => assert_header_equals(text, expected))
          .then(_ => resolve())
          .catch(e => reject(e));
      };

      document.body.appendChild(e);
    })
  }, "Same-Origin style");

  promise_test(t => {
    return new Promise((resolve, reject) => {
      let key = "style-same-site";

      let e = document.createElement('link');
      e.rel = "stylesheet";
      e.href = "https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
      e.onload = e => {
        let expected = {"destination":"style", "site":"same-site"};
        fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
          .then(response => response.text())
          .then(text => assert_header_equals(text, expected))
          .then(_ => resolve())
          .catch(e => reject(e));
      };

      document.body.appendChild(e);
    })
  }, "Same-Site style");

  promise_test(t => {
    return new Promise((resolve, reject) => {
      let key = "style-cross-site";

      let e = document.createElement('link');
      e.rel = "stylesheet";
      e.href = "https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/sec-metadata/resources/record-header.py?file=" + key;
      e.onload = e => {
        let expected = {"destination":"style", "site":"cross-site"};
        fetch("/fetch/sec-metadata/resources/record-header.py?retrieve=true&file=" + key)
          .then(response => response.text())
          .then(text => assert_header_equals(text, expected))
          .then(_ => resolve())
          .catch(e => reject(e));
      };

      document.body.appendChild(e);
    })
  }, "Cross-Site style");
</script>
</html>

