<!DOCTYPE html>
<html>
  <head>
    <title>CSS integration - image from imported stylesheet (external)</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <script src="/common/utils.js"></script>
    <!-- Common global functions for referrer-policy tests. -->
    <script src="/common/security-features/resources/common.js"></script>
    <script src="/referrer-policy/generic/referrer-policy-test-case.js"></script>
    <meta name="referrer" content="never">
  </head>
  <body>
    <p>Check that resources from imported stylesheets (loaded from external
    stylesheets) are loaded with the referrer and referrer policy from the
    external stylesheet.</p>

    <div class="styled"></div>

    <script>
      promise_test(function(css_test) {
        var id = token();
        var css_url = location.protocol + "//www1." + location.hostname + ":" + location.port +
          "/common/security-features/subresource/stylesheet.py?id=" + id +
          "&import-rule" + "&type=image";
        var url_prefix = location.protocol + "//" + location.hostname + ":" + location.port;
        var css_referrer = url_prefix +
          "/common/security-features/subresource/stylesheet.py?id=" + id +
          "&type=image";
        var img_url = url_prefix + "/common/security-features/subresource/image.py" +
                      "?id=" + id + "&report-headers";

        return new Promise(resolve => {
            var link = document.createElement("link");
            link.href = css_url;
            link.rel = "stylesheet";
            link.onload = resolve;
            document.head.appendChild(link);
          })
          .then(() => timeoutPromise(css_test, 1000))
          .then(() => requestViaXhr(img_url))
          .then(function(message) {
              assert_own_property(message, "headers");
              assert_own_property(message, "referrer");
              assert_equals(message.referrer, css_referrer);
            });
      }, "Image from imported stylesheet (external).");
    </script>

    <div id="log"></div>
  </body>
</html>
