Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Unified Diff: LayoutTests/inspector/debugger/async-callstack-promises.html

Issue 131823003: DevTools: Implement async call stacks for Promises. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: addressed Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | LayoutTests/inspector/debugger/async-callstack-promises-expected.txt » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: LayoutTests/inspector/debugger/async-callstack-promises.html
diff --git a/LayoutTests/inspector/debugger/async-callstack-promises.html b/LayoutTests/inspector/debugger/async-callstack-promises.html
new file mode 100644
index 0000000000000000000000000000000000000000..577774ae28e95c8e2f9dbb6c5fd1a3f23e246e8d
--- /dev/null
+++ b/LayoutTests/inspector/debugger/async-callstack-promises.html
@@ -0,0 +1,156 @@
+<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, doTestSettledPromises, doTestChainedPromises, doTestPromiseAll, doTestThrowFromChain, doTestPromiseResolveAndReject];
yurys 2014/01/16 12:49:20 Will these functions be always executed in this or
aandrey 2014/01/16 14:15:29 You mean the "debugger" breaks? Answer: NO. We sor
+ for (var i = 0; i < functions.length; ++i)
+ functions[i]();
+}
+
+function thenCallback(value)
+{
+ debugger;
+}
+
+function errorCallback(error)
+{
+ debugger;
+}
+
+function doTestPromiseConstructor()
+{
+ new Promise(function promiseCallback(resolve, reject) {
+ resolve(1);
+ debugger;
+ });
+}
+
+function doTestSettledPromises()
+{
+ settledPromise("resolved").then(thenCallback, errorCallback);
+ settledPromise(Error("rejected")).then(thenCallback, errorCallback);
+}
+
+function doTestChainedPromises()
+{
+ timeoutPromise(1).then(function chained1() {
+ debugger;
+ return timeoutPromise(2);
+ }).then(function chained2() {
+ debugger;
+ return 3;
+ }).then(function chained3() {
+ debugger;
+ return settledPromise(4);
+ }).then(function chained4() {
+ debugger;
+ return timeoutPromise(5);
+ }).then(thenCallback, errorCallback);
+
+ timeoutPromise(1)
+ .then(JSON.stringify)
+ .then(JSON.parse)
+ .then(function afterJSONStringifyAndParse() {
+ debugger;
+ });
+}
+
+function doTestPromiseAll()
+{
+ Promise.all([11, 22, 33, 44, 55].map(timeoutPromise))
+ .then(thenCallback, errorCallback);
+}
+
+function doTestThrowFromChain()
+{
+ timeoutPromise(1).then(function chained1() {
+ return timeoutPromise(2);
+ }).then(function chained2() {
+ return settledPromise(3);
+ }).then(function chained3() {
+ throw Error("thrown from chained3");
+ }).then(function chained4() {
+ return timeoutPromise(5);
+ }).catch(function catchCallback() {
+ debugger;
+ });
+
+ timeoutPromise(1).then(function chained1() {
+ return timeoutPromise(2);
+ }).then(function chained2() {
+ return timeoutPromise(3);
+ }).then(function chained3() {
+ return timeoutPromise(Error(4));
+ }).then(function chained4() {
+ return timeoutPromise(5);
+ }).catch(function catchCallback() {
+ debugger;
+ });
+}
+
+function doTestPromiseResolveAndReject()
+{
+ Promise.resolve(1).then(thenCallback, errorCallback);
+ Promise.reject(Error("2")).then(thenCallback, errorCallback);
+}
+
+var test = function()
+{
+ var totalDebuggerStatements = 14;
+ var maxAsyncCallStackDepth = 4;
+ InspectorTest.runAsyncCallStacksTest(totalDebuggerStatements, maxAsyncCallStackDepth);
+}
+
+</script>
+</head>
+
+<body onload="runTest()">
+<p>
+Tests asynchronous call stacks for Promises.
+</p>
+
+</body>
+</html>
« no previous file with comments | « no previous file | LayoutTests/inspector/debugger/async-callstack-promises-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698