<!DOCTYPE html>
<html>
  <head>
    <title>CSS integration - image from inline style</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="origin">
  </head>
  <body>
    <p>Check that resources from inline styles are loaded with
    the referrer and referrer policy from the document.</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/image.py" + "?id=" + id;
        var img_url = css_url + "&report-headers";

        var div = document.querySelector("div.styled");
        div.style = "content:url(" + css_url + ")";
        return 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, location.origin + "/");
            });
      }, "Image from inline styles.");
    </script>

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