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

Side by Side Diff: src/inspector/v8-debugger-agent-impl.cc

Issue 2728563002: [inspector] added type of break location into getPossibleBreakpoints output (Closed)
Patch Set: a 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/inspector/v8-debugger-agent-impl.h" 5 #include "src/inspector/v8-debugger-agent-impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "src/debug/debug-interface.h" 9 #include "src/debug/debug-interface.h"
10 #include "src/inspector/injected-script.h" 10 #include "src/inspector/injected-script.h"
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 413
414 m_debugger->removeBreakpoint(debuggerBreakpointId); 414 m_debugger->removeBreakpoint(debuggerBreakpointId);
415 m_serverBreakpoints.erase(debuggerBreakpointId); 415 m_serverBreakpoints.erase(debuggerBreakpointId);
416 } 416 }
417 m_breakpointIdToDebuggerBreakpointIds.erase(breakpointId); 417 m_breakpointIdToDebuggerBreakpointIds.erase(breakpointId);
418 } 418 }
419 419
420 Response V8DebuggerAgentImpl::getPossibleBreakpoints( 420 Response V8DebuggerAgentImpl::getPossibleBreakpoints(
421 std::unique_ptr<protocol::Debugger::Location> start, 421 std::unique_ptr<protocol::Debugger::Location> start,
422 Maybe<protocol::Debugger::Location> end, Maybe<bool> restrictToFunction, 422 Maybe<protocol::Debugger::Location> end, Maybe<bool> restrictToFunction,
423 std::unique_ptr<protocol::Array<protocol::Debugger::Location>>* locations) { 423 std::unique_ptr<protocol::Array<protocol::Debugger::BreakLocation>>*
424 locations) {
424 String16 scriptId = start->getScriptId(); 425 String16 scriptId = start->getScriptId();
425 426
426 if (start->getLineNumber() < 0 || start->getColumnNumber(0) < 0) 427 if (start->getLineNumber() < 0 || start->getColumnNumber(0) < 0)
427 return Response::Error( 428 return Response::Error(
428 "start.lineNumber and start.columnNumber should be >= 0"); 429 "start.lineNumber and start.columnNumber should be >= 0");
429 430
430 v8::debug::Location v8Start(start->getLineNumber(), 431 v8::debug::Location v8Start(start->getLineNumber(),
431 start->getColumnNumber(0)); 432 start->getColumnNumber(0));
432 v8::debug::Location v8End; 433 v8::debug::Location v8End;
433 if (end.isJust()) { 434 if (end.isJust()) {
434 if (end.fromJust()->getScriptId() != scriptId) 435 if (end.fromJust()->getScriptId() != scriptId)
435 return Response::Error("Locations should contain the same scriptId"); 436 return Response::Error("Locations should contain the same scriptId");
436 int line = end.fromJust()->getLineNumber(); 437 int line = end.fromJust()->getLineNumber();
437 int column = end.fromJust()->getColumnNumber(0); 438 int column = end.fromJust()->getColumnNumber(0);
438 if (line < 0 || column < 0) 439 if (line < 0 || column < 0)
439 return Response::Error( 440 return Response::Error(
440 "end.lineNumber and end.columnNumber should be >= 0"); 441 "end.lineNumber and end.columnNumber should be >= 0");
441 v8End = v8::debug::Location(line, column); 442 v8End = v8::debug::Location(line, column);
442 } 443 }
443 auto it = m_scripts.find(scriptId); 444 auto it = m_scripts.find(scriptId);
444 if (it == m_scripts.end()) return Response::Error("Script not found"); 445 if (it == m_scripts.end()) return Response::Error("Script not found");
445 446
446 std::vector<v8::debug::Location> v8Locations; 447 std::vector<v8::debug::BreakLocation> v8Locations;
447 if (!it->second->getPossibleBreakpoints( 448 if (!it->second->getPossibleBreakpoints(
448 v8Start, v8End, restrictToFunction.fromMaybe(false), &v8Locations)) 449 v8Start, v8End, restrictToFunction.fromMaybe(false), &v8Locations))
449 return Response::InternalError(); 450 return Response::InternalError();
450 451
451 *locations = protocol::Array<protocol::Debugger::Location>::create(); 452 *locations = protocol::Array<protocol::Debugger::BreakLocation>::create();
452 for (size_t i = 0; i < v8Locations.size(); ++i) { 453 for (size_t i = 0; i < v8Locations.size(); ++i) {
453 (*locations) 454 std::unique_ptr<protocol::Debugger::Location> location =
454 ->addItem(protocol::Debugger::Location::create() 455 protocol::Debugger::Location::create()
455 .setScriptId(scriptId) 456 .setScriptId(scriptId)
456 .setLineNumber(v8Locations[i].GetLineNumber()) 457 .setLineNumber(v8Locations[i].GetLocation().GetLineNumber())
457 .setColumnNumber(v8Locations[i].GetColumnNumber()) 458 .setColumnNumber(v8Locations[i].GetLocation().GetColumnNumber())
458 .build()); 459 .build();
460 std::unique_ptr<protocol::Debugger::BreakLocation> breakLocation =
461 protocol::Debugger::BreakLocation::create()
462 .setLocation(std::move(location))
463 .build();
464 if (v8Locations[i].IsCall()) {
465 breakLocation->setType(protocol::Debugger::BreakLocation::TypeEnum::Call);
466 } else if (v8Locations[i].IsReturn()) {
467 breakLocation->setType(
468 protocol::Debugger::BreakLocation::TypeEnum::Return);
469 } else if (v8Locations[i].IsDebuggerStatement()) {
470 breakLocation->setType(
471 protocol::Debugger::BreakLocation::TypeEnum::DebuggerStatement);
472 }
473 (*locations)->addItem(std::move(breakLocation));
459 } 474 }
460 return Response::OK(); 475 return Response::OK();
461 } 476 }
462 477
463 Response V8DebuggerAgentImpl::continueToLocation( 478 Response V8DebuggerAgentImpl::continueToLocation(
464 std::unique_ptr<protocol::Debugger::Location> location) { 479 std::unique_ptr<protocol::Debugger::Location> location) {
465 if (!enabled()) return Response::Error(kDebuggerNotEnabled); 480 if (!enabled()) return Response::Error(kDebuggerNotEnabled);
466 if (!m_continueToLocationBreakpointId.isEmpty()) { 481 if (!m_continueToLocationBreakpointId.isEmpty()) {
467 m_debugger->removeBreakpoint(m_continueToLocationBreakpointId); 482 m_debugger->removeBreakpoint(m_continueToLocationBreakpointId);
468 m_continueToLocationBreakpointId = ""; 483 m_continueToLocationBreakpointId = "";
(...skipping 821 matching lines...) Expand 10 before | Expand all | Expand 10 after
1290 void V8DebuggerAgentImpl::reset() { 1305 void V8DebuggerAgentImpl::reset() {
1291 if (!enabled()) return; 1306 if (!enabled()) return;
1292 m_scheduledDebuggerStep = NoStep; 1307 m_scheduledDebuggerStep = NoStep;
1293 m_blackboxedPositions.clear(); 1308 m_blackboxedPositions.clear();
1294 resetBlackboxedStateCache(); 1309 resetBlackboxedStateCache();
1295 m_scripts.clear(); 1310 m_scripts.clear();
1296 m_breakpointIdToDebuggerBreakpointIds.clear(); 1311 m_breakpointIdToDebuggerBreakpointIds.clear();
1297 } 1312 }
1298 1313
1299 } // namespace v8_inspector 1314 } // namespace v8_inspector
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698