<!DOCTYPE html>
%(generated_disclaimer)s
<html>
  <head>
    <title>Referrer-Policy: %(spec_title)s</title>%(meta_delivery_method)s
    <meta name="description" content="%(spec_description)s">
    <meta name="assert" content="%(test_description)s">
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <!-- Common global functions for referrer-policy tests. -->
    <script src="/referrer-policy/generic/common.js"></script>
    <!-- The original specification JSON for validating the scenario. -->
    <script src="/referrer-policy/spec_json.js"></script>
    <!-- Internal checking of the tests -->
    <script src="/referrer-policy/generic/sanity-checker.js"></script>
    <!-- Simple wrapper API for all referrer-policy test cases. -->
    <script src="/referrer-policy/generic/referrer-policy-test-case.js?pipe=sub"></script>
  </head>
  <body>
    <h1>%(spec_title)s</h1>
    <h2>%(spec_description)s</h2>

    <p>
      <script>
        // Show the detailed assertion description of the test.
        document.write(document.querySelector("meta[name=assert]").content);
      </script>
    </p>

    <p>See <a href="%(spec_specification_url)s" target="_blank">specification</a>
       details for this test.</p>

    <h3>Scenario outline</h3>
    <table>
      <tbody>
        <tr>
          <th>Delivery method</th>
          <td>%(delivery_method)s</td>
        </tr>
        <tr>
          <th>Redirection</th>
          <td>%(redirection)s</td>
        </tr>
        <tr>
          <th>Origin transition</th>
          <td>%(origin)s</td>
        </tr>
        <tr>
          <th>Protocol transition</th>
          <td>from %(source_protocol)s to %(target_protocol)s</td>
        </tr>
        <tr>
          <th>Subresource type</th>
          <td>%(subresource)s</td>
        </tr>
        <tr>
          <td colspan="2"><hr></td>
        </tr>
        <tr>
          <th>Expected result</th>
          <td>Referrer URL should be <strong>%(referrer_url)s</strong></td>
        </tr>
      <tbody>
    </table>

    <script>%(test_js)s</script>

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