Index: third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-promise-then.html |
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-promise-then.html b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-promise-then.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..98198c4d71429a7cd7c8647a19d74997fcfabff7 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-promise-then.html |
@@ -0,0 +1,92 @@ |
+<html> |
+<head> |
+<script type="text/javascript" src="../../http/tests/inspector-protocol/inspector-protocol-test.js"></script> |
+<script> |
+ |
+var callback; |
+function createPromise() |
+{ |
+ return new Promise(fulfill => callback = fulfill); |
+} |
+ |
+function fulfillPromise() |
+{ |
+ callback(239); |
+ callback = undefined; |
+} |
+ |
+function runGC() |
+{ |
+ if (window.gc) |
+ window.gc(); |
+} |
+ |
+function test() |
+{ |
+ InspectorTest.runTestSuite([ |
+ function testResolvedPromise(next) |
+ { |
+ InspectorTest.runtimeEvaluatePromise("Promise.resolve(239)") |
+ .then((result) => InspectorTest.runtimePromiseThenPromise(result.result.result.objectId, /* returnByValue */ false, /* generatePreview */ true)) |
+ .then((result) => InspectorTest.logObject(result.result)) |
+ .then(() => next()); |
+ }, |
+ |
+ function testRejectedPromise(next) |
+ { |
+ InspectorTest.runtimeEvaluatePromise("Promise.reject({ a : 1 })") |
+ .then((result) => InspectorTest.runtimePromiseThenPromise(result.result.result.objectId, /* returnByValue */ true, /* generatePreview */ false)) |
+ .then((result) => InspectorTest.logObject(result.result)) |
+ .then(() => next()); |
+ }, |
+ |
+ function testPengingPromise(next) |
dgozman
2016/07/28 00:07:56
typo: pending
kozy
2016/07/28 22:54:09
Done.
|
+ { |
+ InspectorTest.runtimeEvaluatePromise("createPromise()") |
+ .then((result) => scheduleFulfillAndPromiseThen(result)) |
+ .then((result) => InspectorTest.logObject(result.result)) |
+ .then(() => next()); |
+ |
+ function scheduleFulfillAndPromiseThen(result) |
+ { |
+ setTimeout(() => InspectorTest.runtimeEvaluatePromise("fulfillPromise()"), 0); |
+ return InspectorTest.runtimePromiseThenPromise(result.result.result.objectId); |
+ } |
+ }, |
+ |
+ function testResolvedWithoutArgsPromise(next) |
+ { |
+ InspectorTest.runtimeEvaluatePromise("Promise.resolve()") |
+ .then((result) => InspectorTest.runtimePromiseThenPromise(result.result.result.objectId)) |
+ .then((result) => InspectorTest.logObject(result.result)) |
+ .then(() => next()); |
+ }, |
+ |
+ function testGarbageCollectedPromise(next) |
+ { |
+ InspectorTest.runtimeEvaluatePromise("new Promise(() => undefined)") |
+ .then((result) => scheduleGCAndPromiseThen(result)) |
+ .then((result) => InspectorTest.logObject(result.error)) |
+ .then(() => next()); |
+ |
+ function scheduleGCAndPromiseThen(result) |
+ { |
+ var objectId = result.result.result.objectId; |
+ setTimeout(gcPromise.bind(null, objectId), 0); |
dgozman
2016/07/28 00:07:56
Let's try without setTimeout.
kozy
2016/07/28 22:54:09
Done.
|
+ return InspectorTest.runtimePromiseThenPromise(objectId); |
+ } |
+ |
+ function gcPromise(objectId) |
+ { |
+ InspectorTest.runtimeReleaseObjectPromise(objectId) |
+ .then(() => InspectorTest.runtimeEvaluatePromise("runGC()")); |
+ } |
+ } |
+ ]); |
+} |
+</script> |
+</head> |
+<body onLoad="runTest();"> |
+Tests that Runtime.promiseThen works. |
+</body> |
+</html> |