| <!DOCTYPE html> |
| <!-- This test cannot be upstreamed to WPT because it tests we don't crash when a |
| request body blob is constructed asyncronously. --> |
| <meta charset="utf-8"> |
| <title>request body</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="resources/test-helpers.js"></script> |
| <script> |
| var resolve_done; |
| var done_was_called = new Promise(resolve => resolve_done = resolve); |
| // Called by the iframe when done. |
| function done(result) { resolve_done(result); } |
| |
| // This test creates an controlled iframe that does a request with a request |
| // body blob. The service worker confirms it can read the blob and responds |
| // with 'Pass'. |
| promise_test(t => { |
| var worker = 'resources/request-body-blob-crash-worker.js'; |
| var scope = 'resources/request-body-blob-crash-iframe.html'; |
| 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(() => done_was_called) |
| .then(result => assert_equals(result, 'Pass')); |
| }, 'Service worker can read the request body blob and we dont crash'); |
| </script> |