| Index: LayoutTests/http/tests/serviceworker/resources/cache-match-worker.js
|
| diff --git a/LayoutTests/http/tests/serviceworker/resources/cache-match-worker.js b/LayoutTests/http/tests/serviceworker/resources/cache-match-worker.js
|
| index e47827a63d6e5a116ddcb5f0f9cfcf76ef0b9bbf..654706a9aa853544d92db8fe50e6a4da00b687f0 100644
|
| --- a/LayoutTests/http/tests/serviceworker/resources/cache-match-worker.js
|
| +++ b/LayoutTests/http/tests/serviceworker/resources/cache-match-worker.js
|
| @@ -38,14 +38,29 @@ var simple_entries = {
|
| response: new Response('')
|
| },
|
|
|
| - cat_with_fragment: {
|
| - request: new Request('http://example.com/cat#mouse'),
|
| + catmandu: {
|
| + request: new Request('http://example.com/catmandu'),
|
| + response: new Response('')
|
| + },
|
| +
|
| + cat_num_lives: {
|
| + request: new Request('http://example.com/cat?lives=9'),
|
| response: new Response('')
|
| },
|
|
|
| cat_in_the_hat: {
|
| request: new Request('http://example.com/cat/in/the/hat'),
|
| response: new Response('')
|
| + },
|
| +
|
| + secret_cat: {
|
| + request: new Request('http://tom:jerry@example.com/cat'),
|
| + response: new Response('')
|
| + },
|
| +
|
| + top_secret_cat: {
|
| + request: new Request('http://tom:j3rry@example.com/cat'),
|
| + response: new Response('')
|
| }
|
| };
|
|
|
| @@ -86,12 +101,21 @@ var vary_entries = {
|
| };
|
|
|
| prepopulated_cache_test(simple_entries, function(cache) {
|
| + return cache.matchAll('not-present-in-the-cache')
|
| + .then(function(result) {
|
| + assert_array_equivalent(
|
| + result, [],
|
| + 'Cache.matchAll should resolve with an empty array on failure.');
|
| + });
|
| + }, 'Cache.matchAll with no matching entries');
|
| +
|
| +prepopulated_cache_test(simple_entries, function(cache) {
|
| return cache.match('not-present-in-the-cache')
|
| .then(function(result) {
|
| assert_equals(result, undefined,
|
| 'Cache.match failures should resolve with undefined.');
|
| });
|
| - }, 'Cache.match failure');
|
| + }, 'Cache.match with no matching entries');
|
|
|
| prepopulated_cache_test(simple_entries, function(cache) {
|
| return cache.matchAll(simple_entries.a.request.url)
|
| @@ -187,6 +211,23 @@ prepopulated_cache_test(simple_entries, function(cache) {
|
| 'parameters)');
|
|
|
| prepopulated_cache_test(simple_entries, function(cache) {
|
| + return cache.match(simple_entries.a.request,
|
| + {ignoreSearch: true})
|
| + .then(function(result) {
|
| + assert_object_in_array(
|
| + result,
|
| + [
|
| + simple_entries.a.response,
|
| + simple_entries.a_with_query.response
|
| + ],
|
| + 'Cache.match with ignoreSearch should ignore the ' +
|
| + 'search parameters of cached request.');
|
| + });
|
| + },
|
| + 'Cache.match with ignoreSearch option (request with no search ' +
|
| + 'parameters)');
|
| +
|
| +prepopulated_cache_test(simple_entries, function(cache) {
|
| return cache.matchAll(simple_entries.a_with_query.request,
|
| {ignoreSearch: true})
|
| .then(function(result) {
|
| @@ -203,17 +244,40 @@ prepopulated_cache_test(simple_entries, function(cache) {
|
| 'Cache.matchAll with ignoreSearch option (request with search parameter)');
|
|
|
| prepopulated_cache_test(simple_entries, function(cache) {
|
| - return cache.matchAll(simple_entries.cat.request)
|
| + return cache.match(simple_entries.a_with_query.request,
|
| + {ignoreSearch: true})
|
| + .then(function(result) {
|
| + assert_object_in_array(
|
| + result,
|
| + [
|
| + simple_entries.a.response,
|
| + simple_entries.a_with_query.response
|
| + ],
|
| + 'Cache.match with ignoreSearch should ignore the ' +
|
| + 'search parameters of request.');
|
| + });
|
| + },
|
| + 'Cache.match with ignoreSearch option (request with search parameter)');
|
| +
|
| +prepopulated_cache_test(simple_entries, function(cache) {
|
| + return cache.matchAll(simple_entries.cat.request.url + '#mouse')
|
| .then(function(result) {
|
| assert_array_equivalent(
|
| result,
|
| [
|
| simple_entries.cat.response,
|
| - simple_entries.cat_with_fragment.response
|
| ],
|
| - 'Cache.matchAll should ignore URL hash.');
|
| + 'Cache.matchAll should ignore URL fragment.');
|
| });
|
| - }, 'Cache.matchAll with request containing hash');
|
| + }, 'Cache.matchAll with URL containing fragment');
|
| +
|
| +prepopulated_cache_test(simple_entries, function(cache) {
|
| + return cache.match(simple_entries.cat.request.url + '#mouse')
|
| + .then(function(result) {
|
| + assert_object_equals(result, simple_entries.cat.response,
|
| + 'Cache.match should ignore URL fragment.');
|
| + });
|
| + }, 'Cache.match with URL containing fragment');
|
|
|
| prepopulated_cache_test(simple_entries, function(cache) {
|
| return cache.matchAll('http')
|
| @@ -226,6 +290,16 @@ prepopulated_cache_test(simple_entries, function(cache) {
|
| }, 'Cache.matchAll with string fragment "http" as query');
|
|
|
| prepopulated_cache_test(simple_entries, function(cache) {
|
| + return cache.match('http')
|
| + .then(function(result) {
|
| + assert_equals(
|
| + result, undefined,
|
| + 'Cache.match should treat query as a URL and not ' +
|
| + 'just a string fragment.');
|
| + });
|
| + }, 'Cache.match with string fragment "http" as query');
|
| +
|
| +prepopulated_cache_test(simple_entries, function(cache) {
|
| return cache.matchAll('http://example.com/cat',
|
| {prefixMatch: true})
|
| .then(function(result) {
|
| @@ -233,7 +307,8 @@ prepopulated_cache_test(simple_entries, function(cache) {
|
| result,
|
| [
|
| simple_entries.cat.response,
|
| - simple_entries.cat_with_fragment.response,
|
| + simple_entries.catmandu.response,
|
| + simple_entries.cat_num_lives.response,
|
| simple_entries.cat_in_the_hat.response
|
| ],
|
| 'Cache.matchAll should honor prefixMatch.');
|
| @@ -241,6 +316,22 @@ prepopulated_cache_test(simple_entries, function(cache) {
|
| }, 'Cache.matchAll with prefixMatch option');
|
|
|
| prepopulated_cache_test(simple_entries, function(cache) {
|
| + return cache.match('http://example.com/cat',
|
| + {prefixMatch: true})
|
| + .then(function(result) {
|
| + assert_object_in_array(
|
| + result,
|
| + [
|
| + simple_entries.cat.response,
|
| + simple_entries.catmandu.response,
|
| + simple_entries.cat_num_lives.response,
|
| + simple_entries.cat_in_the_hat.response
|
| + ],
|
| + 'Cache.match should honor prefixMatch.');
|
| + });
|
| + }, 'Cache.match with prefixMatch option');
|
| +
|
| +prepopulated_cache_test(simple_entries, function(cache) {
|
| return cache.matchAll('http://example.com/cat/',
|
| {prefixMatch: true})
|
| .then(function(result) {
|
| @@ -248,7 +339,81 @@ prepopulated_cache_test(simple_entries, function(cache) {
|
| result, [simple_entries.cat_in_the_hat.response],
|
| 'Cache.matchAll should honor prefixMatch.');
|
| });
|
| - }, 'Cache.matchAll with prefixMatch option');
|
| + }, 'Cache.matchAll with prefixMatch option (URL ending with path delimiter)');
|
| +
|
| +prepopulated_cache_test(simple_entries, function(cache) {
|
| + return cache.match('http://example.com/cat/',
|
| + {prefixMatch: true})
|
| + .then(function(result) {
|
| + assert_object_equals(
|
| + result, simple_entries.cat_in_the_hat.response,
|
| + 'Cache.match should honor prefixMatch.');
|
| + });
|
| + }, 'Cache.match with prefixMatch option (URL ending with path delimiter)');
|
| +
|
| +prepopulated_cache_test(simple_entries, function(cache) {
|
| + return cache.matchAll('http://tom:jerry@example.com', {prefixMatch: true})
|
| + .then(function(result) {
|
| + assert_array_equivalent(
|
| + result,
|
| + [
|
| + simple_entries.secret_cat.response,
|
| + ],
|
| + 'Cache.matchAll should honor prefixMatch.');
|
| + });
|
| + }, 'Cache.matchAll with prefixMatch option (URL with embedded credentials)');
|
| +
|
| +prepopulated_cache_test(simple_entries, function(cache) {
|
| + return cache.match('http://tom:jerry@example.com', {prefixMatch: true})
|
| + .then(function(result) {
|
| + assert_object_equals(
|
| + result, simple_entries.secret_cat.response,
|
| + 'Cache.match should honor prefixMatch.');
|
| + });
|
| + }, 'Cache.match with prefixMatch option (URL with embedded credentials)');
|
| +
|
| +prepopulated_cache_test(simple_entries, function(cache) {
|
| + // The string 'http://tom' should be converted to a URL and then serialized
|
| + // yielding 'http://tom/'. The trailing slash prevents the URL from matching
|
| + // the embedded credentials in the entries already in the cache.
|
| + return cache.matchAll('http://tom', {prefixMatch: true})
|
| + .then(function(result) {
|
| + assert_array_equivalent(
|
| + result, [],
|
| + 'Cache.matchAll should honor prefixMatch.');
|
| + });
|
| + },
|
| + 'Cache.matchAll with prefixMatch option (URL matching embedded credentials)');
|
| +
|
| +prepopulated_cache_test(simple_entries, function(cache) {
|
| + // The string 'http://tom' should be converted to a URL and then serialized
|
| + // yielding 'http://tom/'. The trailing slash prevents the URL from matching
|
| + // the embedded credentials in the entries already in the cache.
|
| + return cache.match('http://tom', {prefixMatch: true})
|
| + .then(function(result) {
|
| + assert_equals(result, undefined,
|
| + 'Cache.match should honor prefixMatch.');
|
| + });
|
| + },
|
| + 'Cache.match with prefixMatch option (URL matching embedded credentials)');
|
| +
|
| +prepopulated_cache_test(simple_entries, function(cache) {
|
| + return cache.matchAll(simple_entries.secret_cat.request.url)
|
| + .then(function(result) {
|
| + assert_array_equivalent(
|
| + result, [simple_entries.secret_cat.response],
|
| + 'Cache.matchAll should not ignore embedded credentials');
|
| + });
|
| + }, 'Cache.matchAll with URL containing credentials');
|
| +
|
| +prepopulated_cache_test(simple_entries, function(cache) {
|
| + return cache.match(simple_entries.secret_cat.request.url)
|
| + .then(function(result) {
|
| + assert_object_equals(
|
| + result, simple_entries.secret_cat.response,
|
| + 'Cache.match should not ignore embedded credentials');
|
| + });
|
| + }, 'Cache.match with URL containing credentials');
|
|
|
| prepopulated_cache_test(vary_entries, function(cache) {
|
| return cache.matchAll('http://example.com/c')
|
| @@ -398,11 +563,11 @@ cache_test(function(cache) {
|
| function prepopulated_cache_test(entries, test_function, description) {
|
| cache_test(function(cache) {
|
| return Promise.all(Object.keys(entries).map(function(k) {
|
| - return cache.put(entries[k].request, entries[k].response);
|
| + return cache.put(entries[k].request, entries[k].response)
|
| + .catch(function(e) {
|
| + assert_unreached('Test setup failed for entry ' + k + ' : ' + e);
|
| + });
|
| }))
|
| - .catch(function(reason) {
|
| - assert_unreached('Test setup failed: ' + reason.message);
|
| - })
|
| .then(function() {
|
| return test_function(cache);
|
| });
|
|
|