/* * worker-test-harness should be considered a temporary polyfill around * testharness.js for supporting Service Worker based tests. It should not be * necessary once the test harness is able to drive worker based tests natively. * See https://github.com/w3c/testharness.js/pull/82 for status of effort to * update upstream testharness.js. Once the upstreaming is complete, tests that * reference worker-test-harness should be updated to directly import * testharness.js. */ importScripts('/resources/testharness.js'); (function() { var next_cache_index = 1; // Returns a promise that resolves to a newly created Cache object. The // returned Cache will be destroyed when |test| completes. function create_temporary_cache(test) { var uniquifier = String(++next_cache_index); var cache_name = self.location.pathname + '/' + uniquifier; test.add_cleanup(function() { return self.caches.delete(cache_name); }); return self.caches.delete(cache_name) .then(function() { return self.caches.open(cache_name); }); } self.create_temporary_cache = create_temporary_cache; })(); // Runs |test_function| with a temporary unique Cache passed in as the only // argument. The function is run as a part of Promise chain owned by // promise_test(). As such, it is expected to behave in a manner identical (with // the exception of the argument) to a function passed into promise_test(). // // E.g.: // cache_test(function(cache) { // // Do something with |cache|, which is a Cache object. // }, "Some Cache test"); function cache_test(test_function, description) { promise_test(function(test) { return create_temporary_cache(test) .then(test_function); }, description); }