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

Unified Diff: test/inspector/debugger/stepping-with-natives-and-frameworks.js

Issue 2758483002: [debugger] tuned StepNext and StepOut at return position (Closed)
Patch Set: addressed comments Created 3 years, 9 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
Index: test/inspector/debugger/stepping-with-natives-and-frameworks.js
diff --git a/test/inspector/debugger/stepping-with-natives-and-frameworks.js b/test/inspector/debugger/stepping-with-natives-and-frameworks.js
new file mode 100644
index 0000000000000000000000000000000000000000..fd79bb1db9b947cfb3c16fb722ced718ec0f32a8
--- /dev/null
+++ b/test/inspector/debugger/stepping-with-natives-and-frameworks.js
@@ -0,0 +1,300 @@
+// 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('Stepping with natives and frameworks.');
+
+InspectorTest.addScript(`
+function callAll() {
+ for (var f of arguments)
+ f();
+}
+//# sourceURL=framework.js`);
+
+InspectorTest.setupScriptMap();
+InspectorTest.dumpProtocolCommand('Debugger.pause');
+InspectorTest.dumpProtocolCommand('Debugger.stepInto');
+InspectorTest.dumpProtocolCommand('Debugger.stepOver');
+InspectorTest.dumpProtocolCommand('Debugger.stepOut');
+InspectorTest.dumpProtocolCommand('Debugger.resume');
+
+Protocol.Debugger.enable();
+Protocol.Debugger.setBlackboxPatterns({patterns: ['framework\.js']});
+InspectorTest.runAsyncTestSuite([
+ async function testNativeCodeStepOut() {
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({expression: '[1,2].map(v => v);'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testNativeCodeStepOver() {
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({expression: '[1,2].map(v => v);'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testNativeCodeStepInto() {
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({expression: '[1,2].map(v => v);'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testFrameworkCodeStepInto() {
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({expression: 'callAll(() => 1, () => 2);'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testFrameworkCodeStepOver() {
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({expression: 'callAll(() => 1, () => 2);'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testFrameworkCodeStepOut() {
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({expression: 'callAll(() => 1, () => 2);'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testFrameworkNextCallDeeperStepOut() {
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({
+ expression: 'callAll(() => 1, callAll.bind(null, () => 2));'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testFrameworkNextCallDeeperStepOutSameFunction() {
+ await Protocol.Runtime.evaluate({expression: 'foo = () => 1'});
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({
+ expression: 'callAll(foo, callAll.bind(null, foo));'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testFrameworkNextCallDeeperStepInto() {
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({
+ expression: 'callAll(() => 1, callAll.bind(null, () => 2));'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testFrameworkNextCallDeeperStepOver() {
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({
+ expression: 'callAll(() => 1, callAll.bind(null, () => 2));'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testFrameworkCurrentCallDeeperStepOut() {
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({
+ expression: 'callAll(callAll.bind(null, () => 1), () => 2);'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testFrameworkCurrentCallDeeperStepOutSameFunction() {
+ await Protocol.Runtime.evaluate({expression: 'foo = () => 1'});
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({
+ expression: 'callAll(callAll.bind(null, foo), foo);'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testFrameworkCurrentCallDeeperStepOver() {
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({
+ expression: 'callAll(callAll.bind(null, () => 1), () => 2);'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testFrameworkCurrentCallDeeperStepInto() {
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({
+ expression: 'callAll(callAll.bind(null, () => 1), () => 2);'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testFrameworkStepOverMixed() {
+ await Protocol.Runtime.evaluate({expression: 'foo = () => 1'});
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({
+ expression: 'callAll(foo, foo, () => 2);'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testFrameworkStepOutMixed() {
+ await Protocol.Runtime.evaluate({expression: 'foo = () => 1'});
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({
+ expression: 'callAll(foo, foo, () => 2);'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ },
+
+ async function testStepOutFrameworkSameFunctionAtReturn() {
+ await Protocol.Runtime.evaluate({expression: 'foo = () => 1'});
+ Protocol.Debugger.pause();
+ Protocol.Runtime.evaluate({
+ expression: 'callAll(foo, foo, () => 2);'});
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepInto();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOver();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ Protocol.Debugger.stepOut();
+ await logPauseLocation(await Protocol.Debugger.oncePaused());
+ await Protocol.Debugger.resume();
+ }
+]);
+
+function logPauseLocation(message) {
+ return InspectorTest.logSourceLocation(message.params.callFrames[0].location);
+}

Powered by Google App Engine
This is Rietveld 408576698