blob: 6de2ce7d2f1ff163f38572c8a2aa09c32e2fb89f [file] [log] [blame]
Andrew Topef837fa2017-10-04 22:44:25 -07001// Copyright 2016 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5let {session, contextGroup, Protocol} = InspectorTest.start('Checks async instrumentation enabled in the middle.');
6
7contextGroup.addScript(`
8function foo() {
9 // asyncTaskStarted
10 debugger;
11 // asyncTaskFinished
12 debugger;
13}
14
15function test() {
16 debugger;
17 var resolve1;
18 var p1 = new Promise(resolve => resolve1 = resolve);
19 var p2 = p1.then(foo);
20 resolve1(); // asyncTaskScheduled
21 debugger;
22 return p2;
23}
24
25//# sourceURL=test.js`, 7, 26);
26
27session.setupScriptMap();
28Protocol.Debugger.onPaused(message => {
29 if (enableOnPause-- === 0)
30 Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 128 });
31 session.logCallFrames(message.params.callFrames);
32 var asyncStackTrace = message.params.asyncStackTrace;
33 while (asyncStackTrace) {
34 InspectorTest.log(`-- ${asyncStackTrace.description} --`);
35 session.logCallFrames(asyncStackTrace.callFrames);
36 asyncStackTrace = asyncStackTrace.parent;
37 }
38 InspectorTest.log('');
39 Protocol.Debugger.resume();
40});
41
42Protocol.Debugger.enable();
43var enableOnPause = 0;
44InspectorTest.runTestSuite([
45 function beforeAsyncTaskScheduled(next) {
46 enableOnPause = 0;
47 Protocol.Runtime.evaluate({ expression: 'test()//# sourceURL=expr1.js',
48 awaitPromise: true })
49 .then(() => Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 0 }))
50 .then(next);
51 },
52
53 function afterAsyncTaskScheduled(next) {
54 enableOnPause = 2;
55 Protocol.Runtime.evaluate({ expression: 'test()//# sourceURL=expr1.js',
56 awaitPromise: true })
57 .then(() => Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 0 }))
58 .then(next);
59 },
60
61 function afterAsyncTaskStarted(next) {
62 enableOnPause = 3;
63 Protocol.Runtime.evaluate({ expression: 'test()//# sourceURL=expr1.js',
64 awaitPromise: true })
65 .then(() => Protocol.Debugger.setAsyncCallStackDepth({ maxDepth: 0 }))
66 .then(next);
67 }
68]);