<!DOCTYPE html>
<meta charset="utf-8">
<title>respondWith with response body having invalid chunks</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/test-helpers.sub.js"></script>
<script>
'use strict';

const WORKER =
  'resources/fetch-event-respond-with-response-body-with-invalid-chunk-worker.js';
const SCOPE =
  'resources/fetch-event-respond-with-response-body-with-invalid-chunk-iframe.html';
// Called by the iframe when done.
var done;
var done_was_called = new Promise(resolve => done = resolve);

// This test creates an controlled iframe that makes a fetch request. The
// service worker returns a response with a body stream containing an invalid
// chunk.
promise_test(t => {
    return service_worker_unregister_and_register(t, WORKER, SCOPE)
      .then(reg => {
           add_completion_callback(() => reg.unregister());
           return wait_for_state(t, reg.installing, 'activated');
         })
      .then(() => with_iframe(SCOPE))
      .then(frame => {
          t.add_cleanup(() => frame.remove())
        })
      .then(() => done_was_called)
      .then(result => assert_equals(result, 'PASS'));
  }, 'Response with a ReadableStream having non-Uint8Array chunks should be transferred as errored');
</script>
