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

Unified Diff: test/inspector/debugger/get-possible-breakpoints.js

Issue 2465553003: [inspector] added Debugger.getPossibleBreakpoints method (Closed)
Patch Set: it works Created 4 years, 1 month 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/get-possible-breakpoints.js
diff --git a/test/inspector/debugger/get-possible-breakpoints.js b/test/inspector/debugger/get-possible-breakpoints.js
new file mode 100644
index 0000000000000000000000000000000000000000..99bcb5c516f3089a37779c41078d47a71e2d45b0
--- /dev/null
+++ b/test/inspector/debugger/get-possible-breakpoints.js
@@ -0,0 +1,144 @@
+// Copyright 2016 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.
+// Flags: --expose-gc
+
+print("Test for Debugger.getPossibleBreakpoints");
+
+Protocol.Runtime.enable();
+Protocol.Debugger.enable();
+
+/**
+ * - collected script
+ * - on paused
+ */
+
+InspectorTest.runTestSuite([
+ function getPossibleBreakpointsInRange(next) {
+ var source = "function foo(){ return Promise.resolve(); }\nfunction boo(){ return Promise.resolve().then(() => 42); }\n\n";
+ var scriptId;
+ compileScript(source)
+ .then(id => scriptId = id)
+ .then(() => InspectorTest.log("Test start.scriptId != end.scriptId."))
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: { lineNumber: 0, columnNumber: 0, scriptId: scriptId }, end: { lineNumber: 0, columnNumber: 0, scriptId: scriptId + "0" }}))
+ .then(InspectorTest.logMessage)
+ .then(() => InspectorTest.log("Test not existing scriptId."))
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: { lineNumber: 0, columnNumber: 0, scriptId: "-1" }}))
+ .then(InspectorTest.logMessage)
+ .then(() => InspectorTest.log("Test end < start."))
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: { lineNumber: 1, columnNumber: 0, scriptId: scriptId }, end: { lineNumber: 0, columnNumber: 0, scriptId: scriptId }}))
+ .then(InspectorTest.logMessage)
+ .then(() => InspectorTest.log("Test empty range in first line."))
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: { lineNumber: 0, columnNumber: 16, scriptId: scriptId }, end: { lineNumber: 0, columnNumber: 16, scriptId: scriptId }}))
+ .then(InspectorTest.logMessage)
+ .then(() => InspectorTest.log("Test one character range in first line."))
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: { lineNumber: 0, columnNumber: 16, scriptId: scriptId }, end: { lineNumber: 0, columnNumber: 17, scriptId: scriptId }}))
+ .then(InspectorTest.logMessage)
+ .then(() => InspectorTest.log("Test empty range in not first line."))
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: { lineNumber: 1, columnNumber: 16, scriptId: scriptId }, end: { lineNumber: 1, columnNumber: 16, scriptId: scriptId }}))
+ .then(InspectorTest.logMessage)
+ .then(() => InspectorTest.log("Test one character range in not first line."))
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: { lineNumber: 1, columnNumber: 16, scriptId: scriptId }, end: { lineNumber: 1, columnNumber: 17, scriptId: scriptId }}))
+ .then(InspectorTest.logMessage)
+ .then(() => InspectorTest.log("Test end is undefined"))
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: { lineNumber: 0, columnNumber: 0, scriptId: scriptId }}))
+ .then(InspectorTest.logMessage)
+ .then(() => InspectorTest.log("Test end.lineNumber > scripts.lineCount()"))
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: { lineNumber: 0, columnNumber: 0, scriptId: scriptId }, end: { lineNumber: 5, columnNumber: 0, scriptId: scriptId }}))
+ .then(InspectorTest.logMessage)
+ .then(() => InspectorTest.log("Test one string"))
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: { lineNumber: 0, columnNumber: 0, scriptId: scriptId }, end: { lineNumber: 1, columnNumber: 0, scriptId: scriptId }}))
+ .then(InspectorTest.logMessage)
+ .then(() => InspectorTest.log("Test end.columnNumber > end.line.length(), should be the same as previous."))
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: { lineNumber: 0, columnNumber: 0, scriptId: scriptId }, end: { lineNumber: 0, columnNumber: 256, scriptId: scriptId }}))
+ .then(InspectorTest.logMessage)
+ .then(next);
+ },
+
+ function getPossibleBreakpointsInArrow(next) {
+ var source = "function foo() { return Promise.resolve().then(() => 239).then(() => 42).then(() => () => 42) }";
+ var scriptId;
+ compileScript(source)
+ .then(id => scriptId = id)
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: { lineNumber: 0, columnNumber: 0, scriptId: scriptId }}))
+ .then(InspectorTest.logMessage)
+ .then(next);
+ },
+
+ function arrowFunctionFirstLine(next) {
+ Protocol.Debugger.onPaused(message => {
+ InspectorTest.log("paused in " + message.params.callFrames[0].functionName);
+ InspectorTest.logMessage(message.params.callFrames[0].location);
+ Protocol.Debugger.resume();
+ });
+
+ var source = `function foo1() { Promise.resolve().then(() => 42) }
+function foo2() { Promise.resolve().then(() => 42) }`;
+ waitForPossibleBreakpoints(source, { lineNumber: 0, columnNumber: 0 }, { lineNumber: 1, columnNumber: 0 })
+ .then(InspectorTest.logMessage)
+ .then(setAllBreakpoints)
+ .then(() => Protocol.Runtime.evaluate({ expression: "foo1(); foo2()"}))
+ .then(next);
+ },
+
+ function arrowFunctionOnPause(next) {
+ function dumpAndResume(message) {
+ InspectorTest.log("paused in " + message.params.callFrames[0].functionName);
+ InspectorTest.logMessage(message.params.callFrames[0].location);
+ Protocol.Debugger.resume();
+ }
+
+ // TODO(kozyatinskiy): where pauses before foo3 and foo4 calls?!
+ var source = `debugger; function foo3() { Promise.resolve().then(() => 42) }
+function foo4() { Promise.resolve().then(() => 42) };\nfoo3();\nfoo4();`;
+ waitForPossibleBreakpointsOnPause(source, { lineNumber: 0, columnNumber: 0 }, undefined, next)
+ .then(InspectorTest.logMessage)
+ .then(setAllBreakpoints)
+ .then(() => Protocol.Debugger.onPaused(dumpAndResume))
+ .then(() => Protocol.Debugger.resume());
+ }
+
+]);
+
+function compileScript(source) {
+ var promise = Protocol.Debugger.onceScriptParsed().then(message => message.params.scriptId);
+ Protocol.Runtime.compileScript({ expression: source, sourceURL: "", persistScript: true });
+ return promise;
+}
+
+function waitForPossibleBreakpoints(source, start, end) {
+ var promise = Protocol.Debugger.onceScriptParsed()
+ .then(msg => { (start || {}).scriptId = msg.params.scriptId; (end || {}).scriptId = msg.params.scriptId })
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: start, end: end }));
+ Protocol.Runtime.evaluate({ expression: source });
+ return promise;
+}
+
+function waitForPossibleBreakpointsOnPause(source, start, end, next) {
+ var promise = Protocol.Debugger.oncePaused()
+ .then(msg => { (start || {}).scriptId = msg.params.callFrames[0].location.scriptId; (end || {}).scriptId = msg.params.callFrames[0].location.scriptId })
+ .then(() => Protocol.Debugger.getPossibleBreakpoints({ start: start, end: end }));
+ Protocol.Runtime.evaluate({ expression: source }).then(next);
+ return promise;
+}
+
+function setAllBreakpoints(message) {
+ var promises = [];
+ for (var location of message.result.locations)
+ promises.push(Protocol.Debugger.setBreakpoint({ location: location }).then(checkBreakpointAndDump));
+ return Promise.all(promises);
+}
+
+function checkBreakpointAndDump(message) {
+ if (message.error) {
+ InspectorTest.log("FAIL: error in setBreakpoint");
+ InspectorTest.logMessage(message);
+ return;
+ }
+ var id_data = message.result.breakpointId.split(":");
+ if (id_data[1] * 1 !== message.result.actualLocation.lineNumber || id_data[2] * 1 !== message.result.actualLocation.columnNumber) {
+ InspectorTest.log("FAIL: possible breakpoint was resolved in another location");
+ InspectorTest.logMessage(message);
+ }
+ InspectorTest.logMessage(message);
+}

Powered by Google App Engine
This is Rietveld 408576698