forked from mirrors/gecko-dev
Bug 1486445 - P2 - Add a wpt test to verify url of a service worker redirected request is propagated to response; r=asuth
This patch add a wpt test to ensure the service worker redirected request URL is propagated to the outer response. Differential Revision: https://phabricator.services.mozilla.com/D4763 --HG-- extra : moz-landing-system : lando
This commit is contained in:
parent
b98b2f6c82
commit
66ce6870b3
2 changed files with 26 additions and 0 deletions
|
|
@ -33,6 +33,11 @@ function redirected_test(options) {
|
||||||
assert_equals(
|
assert_equals(
|
||||||
cloned_response.redirected, options.expected_redirected,
|
cloned_response.redirected, options.expected_redirected,
|
||||||
'The redirected flag of cloned response must match. URL: ' + options.url);
|
'The redirected flag of cloned response must match. URL: ' + options.url);
|
||||||
|
if (options.expected_response_url) {
|
||||||
|
assert_equals(
|
||||||
|
cloned_response.url, options.expected_response_url,
|
||||||
|
'The URL does not meet expectation. URL: ' + options.url);
|
||||||
|
}
|
||||||
return cache.put(options.url, response);
|
return cache.put(options.url, response);
|
||||||
})
|
})
|
||||||
.then(_ => cache.match(options.url))
|
.then(_ => cache.match(options.url))
|
||||||
|
|
@ -348,4 +353,23 @@ promise_test(t => setup_and_clean()
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
'Fetch should not follow the redirect response 21 times.');
|
'Fetch should not follow the redirect response 21 times.');
|
||||||
|
|
||||||
|
// =======================================================
|
||||||
|
// A test for verifying the url of a service-worker-redirected request is
|
||||||
|
// propagated to the outer response.
|
||||||
|
// =======================================================
|
||||||
|
promise_test(t => setup_and_clean()
|
||||||
|
.then(() => {
|
||||||
|
const url = host_info['HTTPS_ORIGIN'] + base_path() + 'dummy?url=' +
|
||||||
|
encodeURIComponent(TARGET_URL) +'&sw=fetch-url';
|
||||||
|
return redirected_test({url: url,
|
||||||
|
fetch_option: {},
|
||||||
|
fetch_method: frame.contentWindow.fetch,
|
||||||
|
expected_type: 'basic',
|
||||||
|
expected_redirected: false,
|
||||||
|
expected_intercepted_urls: [url],
|
||||||
|
expected_response_url: TARGET_URL});
|
||||||
|
}),
|
||||||
|
'The URL for the service worker redirected request should be propagated to ' +
|
||||||
|
'response.');
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -68,6 +68,8 @@ self.addEventListener('fetch', function(event) {
|
||||||
return Response.redirect(params['url']);
|
return Response.redirect(params['url']);
|
||||||
} else if (params['sw'] == 'fetch') {
|
} else if (params['sw'] == 'fetch') {
|
||||||
return fetch(event.request);
|
return fetch(event.request);
|
||||||
|
} else if (params['sw'] == 'fetch-url') {
|
||||||
|
return fetch(params['url']);
|
||||||
} else if (params['sw'] == 'follow') {
|
} else if (params['sw'] == 'follow') {
|
||||||
return fetch(new Request(event.request.url, {redirect: 'follow'}));
|
return fetch(new Request(event.request.url, {redirect: 'follow'}));
|
||||||
} else if (params['sw'] == 'manual') {
|
} else if (params['sw'] == 'manual') {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue