Index: LayoutTests/http/tests/serviceworker/resources/worker-test-harness.js |
diff --git a/LayoutTests/http/tests/serviceworker/resources/worker-test-harness.js b/LayoutTests/http/tests/serviceworker/resources/worker-test-harness.js |
index 1d3a5f576840015fc44df81b7e357ab7c5e76b51..399b48da8899ad2cb97db8d31d6b014f4535b779 100644 |
--- a/LayoutTests/http/tests/serviceworker/resources/worker-test-harness.js |
+++ b/LayoutTests/http/tests/serviceworker/resources/worker-test-harness.js |
@@ -84,3 +84,27 @@ function promise_test(func, name, properties) { |
throw value; |
})); |
} |
+ |
+// Returns a promise that fulfills after the provided |promise| is fulfilled. |
+// The |test| succeeds only if |promise| throws an exception matching |code|. |
+// The optional |description| describes the test being performed. |
+// E.g.: |
+// assert_promise_throws( |
+// new Promise(...), // something that should throw an exception. |
+// 'NotFoundError', |
+// 'Should throw NotFoundError.'); |
+function assert_promise_throws(promise, code, description) { |
+ return promise.then( |
+ function() { |
+ throw 'assert_promise_throws: ' + description + ' Promise did now throw.'; |
+ }, |
+ function(e) { |
+ if (code in self) { |
+ // If |code| is a JavaScript error exposed in the global object, then |
+ // require that the thrown exception be of that type. |
+ assert_class_string(e, code, description); |
+ } else { |
+ assert_throws(code, function() { throw e; }, description); |
+ } |
+ }); |
+} |