| Index: third_party/WebKit/LayoutTests/http/tests/serviceworker/redirected-response.html
|
| diff --git a/third_party/WebKit/LayoutTests/http/tests/serviceworker/redirected-response.html b/third_party/WebKit/LayoutTests/http/tests/serviceworker/redirected-response.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4cb8354d3a810114d8c2112991f8868132ae7cbd
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/http/tests/serviceworker/redirected-response.html
|
| @@ -0,0 +1,85 @@
|
| +<!DOCTYPE html>
|
| +<title>Service Worker: Redirected response</title>
|
| +<script src="../resources/testharness.js"></script>
|
| +<script src="../resources/testharnessreport.js"></script>
|
| +<script src="../resources/get-host-info.js?pipe=sub"></script>
|
| +<script src="resources/test-helpers.js"></script>
|
| +<script>
|
| +
|
| +function redirected_test(url,
|
| + fetch_method,
|
| + cache,
|
| + expected_url_list) {
|
| + return fetch_method(url).then(response => {
|
| + var cloned_response = response.clone();
|
| + if (self.internals) {
|
| + assert_array_equals(
|
| + self.internals.getInternalResponseURLList(response),
|
| + expected_url_list,
|
| + 'The URL list of response must match. URL: ' + url);
|
| + assert_array_equals(
|
| + self.internals.getInternalResponseURLList(cloned_response),
|
| + expected_url_list,
|
| + 'The URL list of cloned response must match. URL: ' + url);
|
| + }
|
| + return cache.put(url, response);
|
| + })
|
| + .then(_ => cache.match(url))
|
| + .then(response => {
|
| + if (self.internals) {
|
| + assert_array_equals(
|
| + self.internals.getInternalResponseURLList(response),
|
| + expected_url_list,
|
| + 'The URL list of response in CacheStorage must match. URL: ' +
|
| + url);
|
| + }
|
| + });
|
| +}
|
| +
|
| +promise_test(t => {
|
| + var SCOPE = 'resources/blank.html?redirected-response';
|
| + var SCRIPT = 'resources/fetch-rewrite-worker.js';
|
| + var host_info = get_host_info();
|
| + var REDIRECT_URL = host_info['HTTP_ORIGIN'] +
|
| + '/serviceworker/resources/redirect.php?Redirect=';
|
| + var TARGET_URL = host_info['HTTP_ORIGIN'] +
|
| + '/serviceworker/resources/simple.txt';
|
| + var REDIRECT_TO_TARGET_URL = REDIRECT_URL + encodeURIComponent(TARGET_URL);
|
| + var CACHE_NAME = 'serviceworker/redirected-response';
|
| +
|
| + var frame;
|
| + var cache;
|
| + return service_worker_unregister_and_register(t, SCRIPT, SCOPE)
|
| + .then(registration => {
|
| + return wait_for_state(t, registration.installing, 'activated');
|
| + })
|
| + .then(_ => self.caches.open(CACHE_NAME))
|
| + .then(c => {
|
| + cache = c;
|
| + return with_iframe(SCOPE);
|
| + })
|
| + .then(f => {
|
| + frame = f;
|
| + return Promise.all([
|
| + redirected_test(TARGET_URL, self.fetch, cache,
|
| + [TARGET_URL]),
|
| + redirected_test(REDIRECT_TO_TARGET_URL, self.fetch, cache,
|
| + [REDIRECT_TO_TARGET_URL, TARGET_URL]),
|
| + redirected_test('./?url=' + encodeURIComponent(TARGET_URL),
|
| + frame.contentWindow.fetch,
|
| + cache,
|
| + [TARGET_URL]),
|
| + redirected_test(
|
| + './?url=' + encodeURIComponent(REDIRECT_TO_TARGET_URL),
|
| + frame.contentWindow.fetch,
|
| + cache,
|
| + [REDIRECT_TO_TARGET_URL, TARGET_URL]),
|
| + ]);
|
| + })
|
| + .then(_ => self.caches.delete(CACHE_NAME))
|
| + .then(_ => {
|
| + frame.remove();
|
| + return service_worker_unregister(t, SCOPE);
|
| + });
|
| + }, 'Verify URL list of responses.');
|
| +</script>
|
|
|