| Index: third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-await/async-callstack-async-await.html
|
| diff --git a/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-await/async-callstack-async-await.html b/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-await/async-callstack-async-await.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..dcb1c026c6bf17b26cf98b48cda8047e449b2cd1
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/inspector/sources/debugger-async/async-await/async-callstack-async-await.html
|
| @@ -0,0 +1,211 @@
|
| +<html>
|
| +<head>
|
| +<script src="../../../../http/tests/inspector/inspector-test.js"></script>
|
| +<script src="../../../../http/tests/inspector/debugger-test.js"></script>
|
| +<script>
|
| +
|
| +function timeoutPromise(value, ms)
|
| +{
|
| + return new Promise(function promiseCallback(resolve, reject) {
|
| + function resolvePromise()
|
| + {
|
| + resolve(value);
|
| + }
|
| + function rejectPromise()
|
| + {
|
| + reject(value);
|
| + }
|
| + if (value instanceof Error)
|
| + setTimeout(rejectPromise, ms || 0);
|
| + else
|
| + setTimeout(resolvePromise, ms || 0);
|
| + });
|
| +}
|
| +
|
| +function settledPromise(value)
|
| +{
|
| + function resolveCallback(resolve, reject)
|
| + {
|
| + resolve(value);
|
| + }
|
| + function rejectCallback(resolve, reject)
|
| + {
|
| + reject(value);
|
| + }
|
| + if (value instanceof Error)
|
| + return new Promise(rejectCallback);
|
| + else
|
| + return new Promise(resolveCallback);
|
| +}
|
| +
|
| +function testFunction()
|
| +{
|
| + setTimeout(testFunctionTimeout, 0);
|
| +}
|
| +
|
| +function testFunctionTimeout()
|
| +{
|
| + var functions = [doTestPromiseConstructor, doTestSettledPromisesResolved, doTestSettledPromisesRejected, doTestChainedPromises, doTestChainedPromisesJSON, doTestPromiseAll, doTestThrowFromChain, doTestRejectFromChain, doTestPromiseResolve, doTestPromiseReject];
|
| + for (var i = 0; i < functions.length; ++i)
|
| + functions[i]();
|
| +}
|
| +
|
| +function thenCallback(value)
|
| +{
|
| + debugger;
|
| +}
|
| +
|
| +function errorCallback(error)
|
| +{
|
| + debugger;
|
| +}
|
| +
|
| +async function doTestPromiseConstructor()
|
| +{
|
| + try {
|
| + let result = await new Promise(function promiseCallback(resolve, reject) {
|
| + resolve(1);
|
| + debugger;
|
| + });
|
| + thenCallback(result);
|
| + } catch (e) {
|
| + errorCallback(e);
|
| + }
|
| +}
|
| +
|
| +async function doTestSettledPromisesResolved()
|
| +{
|
| + try {
|
| + let value = await settledPromise("resolved");
|
| + thenCallback(value);
|
| + } catch (e) {
|
| + errorCallback(e);
|
| + }
|
| +}
|
| +
|
| +async function doTestSettledPromisesRejected()
|
| +{
|
| + try {
|
| + let value = await settledPromise(new Error("rejected"));
|
| + thenCallback(value);
|
| + } catch (e) {
|
| + errorCallback(e);
|
| + }
|
| +}
|
| +
|
| +async function doTestChainedPromises()
|
| +{
|
| + try {
|
| + await timeoutPromise(1);
|
| + debugger;
|
| + await timeoutPromise(2);
|
| + debugger;
|
| + await 3;
|
| + debugger;
|
| + await settledPromise(4);
|
| + debugger;
|
| + thenCallback(await timeoutPromise(5));
|
| + } catch (e) {
|
| + errorCallback(e);
|
| + }
|
| +}
|
| +
|
| +async function doTestChainedPromisesJSON()
|
| +{
|
| + try {
|
| + let one = await timeoutPromise(1);
|
| + let stringify = await JSON.stringify(one);
|
| + let parse = await JSON.parse(stringify);
|
| + thenCallback(parse);
|
| + } catch (e) {
|
| + errorCallback(e);
|
| + }
|
| +}
|
| +
|
| +async function doTestPromiseAll()
|
| +{
|
| + try {
|
| + let all = await Promise.all([11, 22, 33, 44, 55].map(timeoutPromise));
|
| + thenCallback(all);
|
| + } catch (e) {
|
| + errorCallback(e);
|
| + }
|
| +}
|
| +
|
| +async function throwFromChain()
|
| +{
|
| + await timeoutPromise(1);
|
| + await timeoutPromise(2);
|
| + await settledPromise(3);
|
| + throw Error("thrown from 4");
|
| + await timeoutPromise(5);
|
| + debugger;
|
| +}
|
| +
|
| +async function doTestThrowFromChain()
|
| +{
|
| + try {
|
| + let result = await throwFromChain();
|
| + thencallback(result);
|
| + } catch (e) {
|
| + errorCallback(e);
|
| + }
|
| +}
|
| +
|
| +async function rejectFromChain()
|
| +{
|
| + await timeoutPromise(1);
|
| + await timeoutPromise(2);
|
| + await timeoutPromise(3);
|
| + await timeoutPromise(new Error(4));
|
| + throw new Error("thrown from rejectFromChain");
|
| + debugger;
|
| +}
|
| +
|
| +async function doTestRejectFromChain()
|
| +{
|
| + try {
|
| + let result = await rejectFromChain();
|
| + thenCallback(result);
|
| + } catch (e) {
|
| + errorCallback(e);
|
| + }
|
| +}
|
| +
|
| +async function doTestPromiseResolve()
|
| +{
|
| + try {
|
| + let result = await Promise.resolve(1);
|
| + thenCallback(result);
|
| + } catch (e) {
|
| + errorCallback(e);
|
| + }
|
| +}
|
| +
|
| +async function doTestPromiseReject()
|
| +{
|
| + try {
|
| + let result = await Promise.reject(new Error("2"))
|
| + thenCallback(result);
|
| + } catch (e) {
|
| + errorCallback(e);
|
| + }
|
| +}
|
| +
|
| +var test = function()
|
| +{
|
| + var totalDebuggerStatements = 15;
|
| + var maxAsyncCallStackDepth = 5;
|
| + InspectorTest.runAsyncCallStacksTest(totalDebuggerStatements, maxAsyncCallStackDepth);
|
| +}
|
| +
|
| +</script>
|
| +</head>
|
| +
|
| +<body onload="runTest()">
|
| +<p>
|
| +Tests asynchronous call stacks for async functions.
|
| +</p>
|
| +
|
| +</body>
|
| +</html>
|
|
|