Index: LayoutTests/http/tests/serviceworker/resources/worker-testharness.js |
diff --git a/LayoutTests/http/tests/serviceworker/resources/worker-testharness.js b/LayoutTests/http/tests/serviceworker/resources/worker-testharness.js |
index 986c86a82ed7d8960380e258e78f03d5ccdd8bf8..6767dadf7b4941d99feede23804d1ac6cec2ecb0 100644 |
--- a/LayoutTests/http/tests/serviceworker/resources/worker-testharness.js |
+++ b/LayoutTests/http/tests/serviceworker/resources/worker-testharness.js |
@@ -72,3 +72,41 @@ 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() { |
+ 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); |
+} |