<!doctype html>
<html>
  <head>
    <title>XMLHttpRequest: content-encoding:deflate response was correctly inflated</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <link rel="help" href="https://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-send()-method" data-tested-assertations="following::p[contains(text(),'content-encodings')]" />
  </head>
  <body>
    <div id="log"></div>
    <script>
      function request(input) {
        var test = async_test();
        test.step(function() {
          var client = new XMLHttpRequest()

          client.open("POST", "resources/zlib.py", false);

          client.onreadystatechange = test.step_func(function () {
              if (client.readyState === 4) {
                  var len = parseInt(client.getResponseHeader('content-length'), 10);

                  assert_equals(client.getResponseHeader('content-encoding'), 'deflate');
                  assert_true(len < input.length);
                  assert_equals(client.responseText, input);
                  test.done();
              }
          });

          client.send(input);
        });
      }

      var wellCompressableData = '';
      for (var i = 0; i < 500; i++) {
          wellCompressableData += 'foofoofoofoofoofoofoo';
      }

      request(wellCompressableData);
    </script>
  </body>
</html>
