| Index: test/inspector/debugger/set-async-call-stack-depth.js
 | 
| diff --git a/test/inspector/debugger/set-async-call-stack-depth.js b/test/inspector/debugger/set-async-call-stack-depth.js
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..444c10591a32a4ed1f2c7e0f70c3f2fd3cdaf5f2
 | 
| --- /dev/null
 | 
| +++ b/test/inspector/debugger/set-async-call-stack-depth.js
 | 
| @@ -0,0 +1,77 @@
 | 
| +// Copyright 2017 the V8 project authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +InspectorTest.log('Checks that we report not more then maxDepth call chains.');
 | 
| +
 | 
| +InspectorTest.addScript(`
 | 
| +function promisesChain(num) {
 | 
| +  var p = Promise.resolve();
 | 
| +  for (var i = 0; i < num - 1; ++i) {
 | 
| +    p = p.then(() => 42);
 | 
| +  }
 | 
| +  return p;
 | 
| +}
 | 
| +`);
 | 
| +
 | 
| +Protocol.Debugger.enable();
 | 
| +InspectorTest.runAsyncTestSuite([
 | 
| +  async function testPaused() {
 | 
| +    let callback = '() => { debugger; }';
 | 
| +    startTest({ generated: 8, limit: 16, callback});
 | 
| +    dumpCaptured((await Protocol.Debugger.oncePaused()).params.asyncStackTrace);
 | 
| +    await Protocol.Debugger.resume();
 | 
| +
 | 
| +    startTest({ generated: 8, limit: 8, callback});
 | 
| +    dumpCaptured((await Protocol.Debugger.oncePaused()).params.asyncStackTrace);
 | 
| +    await Protocol.Debugger.resume();
 | 
| +
 | 
| +    startTest({ generated: 8, limit: 7, callback});
 | 
| +    dumpCaptured((await Protocol.Debugger.oncePaused()).params.asyncStackTrace);
 | 
| +    await Protocol.Debugger.resume();
 | 
| +
 | 
| +    startTest({ generated: 8, limit: 0, callback});
 | 
| +    dumpCaptured((await Protocol.Debugger.oncePaused()).params.asyncStackTrace);
 | 
| +    await Protocol.Debugger.resume();
 | 
| +  },
 | 
| +
 | 
| +  async function testConsoleTrace() {
 | 
| +    await Protocol.Runtime.enable();
 | 
| +    let callback = '() => { console.trace(42); }';
 | 
| +    startTest({ generated: 8, limit: 16, callback});
 | 
| +    let msg = await Protocol.Runtime.onceConsoleAPICalled();
 | 
| +    dumpCaptured(msg.params.stackTrace.parent);
 | 
| +
 | 
| +    startTest({ generated: 8, limit: 8, callback});
 | 
| +    msg = await Protocol.Runtime.onceConsoleAPICalled();
 | 
| +    dumpCaptured(msg.params.stackTrace.parent);
 | 
| +
 | 
| +    startTest({ generated: 8, limit: 7, callback});
 | 
| +    msg = await Protocol.Runtime.onceConsoleAPICalled();
 | 
| +    dumpCaptured(msg.params.stackTrace.parent);
 | 
| +
 | 
| +    startTest({ generated: 8, limit: 0, callback});
 | 
| +    msg = await Protocol.Runtime.onceConsoleAPICalled();
 | 
| +    dumpCaptured(msg.params.stackTrace.parent);
 | 
| +
 | 
| +    await Protocol.Runtime.disable();
 | 
| +  }
 | 
| +]);
 | 
| +
 | 
| +function startTest(params) {
 | 
| +  InspectorTest.log('Actual call chain length: ' + params.generated);
 | 
| +  InspectorTest.log('setAsyncCallStackDepth(maxDepth): ' + params.limit);
 | 
| +
 | 
| +  Protocol.Debugger.setAsyncCallStackDepth({maxDepth: params.limit});
 | 
| +  Protocol.Runtime.evaluate({expression:
 | 
| +      `promisesChain(${params.generated}).then(${params.callback})`});
 | 
| +}
 | 
| +
 | 
| +function dumpCaptured(stack) {
 | 
| +  let count = 0;
 | 
| +  while (stack) {
 | 
| +    ++count;
 | 
| +    stack = stack.parent;
 | 
| +  }
 | 
| +  InspectorTest.log('reported: ' + count + '\n');
 | 
| +}
 | 
| 
 |