<!doctype html>
<html>
  <head>
    <title>XMLHttpRequest: send() - conditional requests</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <link rel="help" href="https://xhr.spec.whatwg.org/#the-send()-method" data-tested-assertations="following::code[contains(text(),'Modified')]/.." />
  </head>
  <body>
    <div id="log"></div>
    <script>
      function request(type) {
        test(function() {
          var client = new XMLHttpRequest,
          identifier = type == "tag" ? Math.random() : new Date().toGMTString(),
          url = "resources/conditional.py?" + type + "=" + identifier
          client.open("GET", url, false)
          client.send(null)
          assert_equals(client.status, 200)
          assert_equals(client.statusText, "OK")
          assert_equals(client.responseText, "MAYBE NOT")
          client.open("GET", url, false)
          client.setRequestHeader(type == "tag" ? "If-None-Match" : "If-Modified-Since", identifier)
          client.send(null)
          assert_equals(client.status, 304)
          assert_equals(client.statusText, "SUPERCOOL")
          assert_equals(client.responseText, "")
        }, document.title + " (" + type + ")")
      }
      request("tag")
      request("date")
    </script>
  </body>
</html>
