blob: 04fa30b5422003fb42a8f8677cce2b55096e0a91 [file] [log] [blame]
<!DOCTYPE html>
<!-- This test is prefixed with `chromium.` because the equivalent version
available in Web Platform Tests contains additional assertions which Chromium
currently fails. This test should be persisted only to preserve test coverage
until such time as the upstream version can be made to pass. See -->
<title>Service Worker: FetchEvent.request passed to onfetch</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="resources/test-helpers.js"></script>
'use strict';
promise_test(t => {
var url = 'resources/request-end-to-end-worker.js';
var scope = 'resources/blank.html';
return service_worker_unregister_and_register(t, url, scope)
.then(r => {
add_completion_callback(() => { r.unregister(); });
return wait_for_state(t, r.installing, 'activated');
.then(() => { return with_iframe(scope); })
.then(frame => {
add_completion_callback(() => { frame.remove(); });
var result = JSON.parse(frame.contentDocument.body.textContent);
assert_equals(result.url, frame.src, 'request.url');
assert_equals(result.method, 'GET', 'request.method');
assert_equals(result.referrer, location.href, 'request.referrer');
assert_equals(result.mode, 'navigate', 'request.mode');
assert_equals(result.request_construct_error, 'TypeError',
'Constructing a Request with a Request whose mode ' +
'is navigate and non-empty RequestInit must throw a ' +
assert_equals(result.credentials, 'include', 'request.credentials');
assert_equals(result.redirect, 'manual', 'request.redirect');
// TODO(falken): Chromium should fail this assertion but currently
// passes it. The equivalent WPT test instead asserts:
// assert_equals(result.headers['user-agent'], undefined);
// Once Chromium passes the WPT test assertion, this test file can be
// removed.
assert_equals(result.headers['user-agent'], navigator.userAgent,
'User-Agent header');
assert_equals(result.append_header_error, 'TypeError',
'Appending a new header to the request must throw a ' +
}, 'Test FetchEvent.request passed to onfetch');