Index: LayoutTests/crypto/resources/common.js |
diff --git a/LayoutTests/crypto/resources/common.js b/LayoutTests/crypto/resources/common.js |
index 0edef40925ef94e90c50bb673e20d782aca9a774..d2335ab63fe3ef8b8893551e35c415ed5fd4b902 100644 |
--- a/LayoutTests/crypto/resources/common.js |
+++ b/LayoutTests/crypto/resources/common.js |
@@ -87,3 +87,62 @@ function failAndFinishJSTest(error) |
debug(error); |
finishJSTest(); |
} |
+ |
+numOutstandingTasks = 0; |
+ |
+function addTask(promise) |
+{ |
+ numOutstandingTasks++; |
+ |
+ function taskFinished() |
+ { |
+ numOutstandingTasks--; |
+ completeTestWhenAllTasksDone(); |
+ } |
+ |
+ promise.then(taskFinished, taskFinished); |
+} |
+ |
+function completeTestWhenAllTasksDone() |
+{ |
+ if (numOutstandingTasks == 0) { |
+ finishJSTest(); |
+ } |
+} |
+ |
+function shouldRejectPromiseWithNull(code) |
+{ |
+ var promise = eval(code); |
+ |
+ function acceptCallback(result) |
+ { |
+ debug("FAIL: '" + code + "' accepted with " + result + " but should have been rejected"); |
+ } |
+ |
+ function rejectCallback(result) |
+ { |
+ if (result == null) |
+ debug("PASS: '" + code + "' rejected with null"); |
+ else |
+ debug("FAIL: '" + code + "' rejected with " + result + " but was expecting null"); |
+ } |
+ |
+ addTask(promise.then(acceptCallback, rejectCallback)); |
+} |
+ |
+function shouldAcceptPromise(code) |
+{ |
+ var promise = eval(code); |
+ |
+ function acceptCallback(result) |
+ { |
+ debug("PASS: '" + code + "' accepted with " + result); |
+ } |
+ |
+ function rejectCallback(result) |
+ { |
+ debug("FAIL: '" + code + "' rejected with " + result); |
+ } |
+ |
+ addTask(promise.then(acceptCallback, rejectCallback)); |
+} |