File: fetch-event-respond-with-response-body-with-invalid-chunk.https.html

package info (click to toggle)
thunderbird 1%3A128.14.0esr-1~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 4,334,824 kB
  • sloc: cpp: 7,391,917; javascript: 5,617,271; ansic: 3,833,216; python: 1,230,742; xml: 619,690; asm: 456,022; java: 179,892; sh: 118,796; makefile: 21,908; perl: 14,825; objc: 12,399; yacc: 4,583; pascal: 2,973; lex: 1,720; ruby: 1,190; exp: 762; sql: 674; awk: 580; php: 436; lisp: 430; sed: 70; csh: 10
file content (46 lines) | stat: -rw-r--r-- 1,837 bytes parent folder | download | duplicates (27)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!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 it has the reader promise we should watch.
var set_reader_promise;
let reader_promise = new Promise(resolve => set_reader_promise = resolve);

var set_fetch_promise;
let fetch_promise = new Promise(resolve => set_fetch_promise = 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(async t => {
    // Start off the process.
    let errorConstructor;
    await 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())
          errorConstructor = frame.contentWindow.TypeError;
        });

    await promise_rejects_js(t, errorConstructor, reader_promise,
                             "read() should be rejected");
    // Fetch should complete properly, because the reader error is caught in
    // the subframe.  That is, there should be no errors _other_ than the
    // reader!
    return fetch_promise;
  }, 'Response with a ReadableStream having non-Uint8Array chunks should be transferred as errored');
</script>