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

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: added DCHECK 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
« no previous file with comments | « src/inspector/v8-debugger-agent-impl.h ('k') | src/inspector/v8-debugger-script.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 bestMatch = nextMatch; 164 bestMatch = nextMatch;
165 } else { 165 } else {
166 bestMatch = nextMatch - offset < offset - prevMatch ? nextMatch : prevMatch; 166 bestMatch = nextMatch - offset < offset - prevMatch ? nextMatch : prevMatch;
167 } 167 }
168 bestMatch += searchRegionOffset; 168 bestMatch += searchRegionOffset;
169 v8::debug::Location hintPosition = script.location(bestMatch); 169 v8::debug::Location hintPosition = script.location(bestMatch);
170 if (hintPosition.IsEmpty()) return; 170 if (hintPosition.IsEmpty()) return;
171 breakpoint->line_number = hintPosition.GetLineNumber(); 171 breakpoint->line_number = hintPosition.GetLineNumber();
172 breakpoint->column_number = hintPosition.GetColumnNumber(); 172 breakpoint->column_number = hintPosition.GetColumnNumber();
173 } 173 }
174
175 String16 breakLocationType(v8::debug::BreakLocationType type) {
176 switch (type) {
177 case v8::debug::kCallBreakLocation:
178 return protocol::Debugger::BreakLocation::TypeEnum::Call;
179 case v8::debug::kReturnBreakLocation:
180 return protocol::Debugger::BreakLocation::TypeEnum::Return;
181 case v8::debug::kDebuggerStatementBreakLocation:
182 return protocol::Debugger::BreakLocation::TypeEnum::DebuggerStatement;
183 case v8::debug::kCommonBreakLocation:
184 return String16();
185 }
186 return String16();
187 }
188
174 } // namespace 189 } // namespace
175 190
176 V8DebuggerAgentImpl::V8DebuggerAgentImpl( 191 V8DebuggerAgentImpl::V8DebuggerAgentImpl(
177 V8InspectorSessionImpl* session, protocol::FrontendChannel* frontendChannel, 192 V8InspectorSessionImpl* session, protocol::FrontendChannel* frontendChannel,
178 protocol::DictionaryValue* state) 193 protocol::DictionaryValue* state)
179 : m_inspector(session->inspector()), 194 : m_inspector(session->inspector()),
180 m_debugger(m_inspector->debugger()), 195 m_debugger(m_inspector->debugger()),
181 m_session(session), 196 m_session(session),
182 m_enabled(false), 197 m_enabled(false),
183 m_state(state), 198 m_state(state),
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after
413 428
414 m_debugger->removeBreakpoint(debuggerBreakpointId); 429 m_debugger->removeBreakpoint(debuggerBreakpointId);
415 m_serverBreakpoints.erase(debuggerBreakpointId); 430 m_serverBreakpoints.erase(debuggerBreakpointId);
416 } 431 }
417 m_breakpointIdToDebuggerBreakpointIds.erase(breakpointId); 432 m_breakpointIdToDebuggerBreakpointIds.erase(breakpointId);
418 } 433 }
419 434
420 Response V8DebuggerAgentImpl::getPossibleBreakpoints( 435 Response V8DebuggerAgentImpl::getPossibleBreakpoints(
421 std::unique_ptr<protocol::Debugger::Location> start, 436 std::unique_ptr<protocol::Debugger::Location> start,
422 Maybe<protocol::Debugger::Location> end, Maybe<bool> restrictToFunction, 437 Maybe<protocol::Debugger::Location> end, Maybe<bool> restrictToFunction,
423 std::unique_ptr<protocol::Array<protocol::Debugger::Location>>* locations) { 438 std::unique_ptr<protocol::Array<protocol::Debugger::BreakLocation>>*
439 locations) {
424 String16 scriptId = start->getScriptId(); 440 String16 scriptId = start->getScriptId();
425 441
426 if (start->getLineNumber() < 0 || start->getColumnNumber(0) < 0) 442 if (start->getLineNumber() < 0 || start->getColumnNumber(0) < 0)
427 return Response::Error( 443 return Response::Error(
428 "start.lineNumber and start.columnNumber should be >= 0"); 444 "start.lineNumber and start.columnNumber should be >= 0");
429 445
430 v8::debug::Location v8Start(start->getLineNumber(), 446 v8::debug::Location v8Start(start->getLineNumber(),
431 start->getColumnNumber(0)); 447 start->getColumnNumber(0));
432 v8::debug::Location v8End; 448 v8::debug::Location v8End;
433 if (end.isJust()) { 449 if (end.isJust()) {
434 if (end.fromJust()->getScriptId() != scriptId) 450 if (end.fromJust()->getScriptId() != scriptId)
435 return Response::Error("Locations should contain the same scriptId"); 451 return Response::Error("Locations should contain the same scriptId");
436 int line = end.fromJust()->getLineNumber(); 452 int line = end.fromJust()->getLineNumber();
437 int column = end.fromJust()->getColumnNumber(0); 453 int column = end.fromJust()->getColumnNumber(0);
438 if (line < 0 || column < 0) 454 if (line < 0 || column < 0)
439 return Response::Error( 455 return Response::Error(
440 "end.lineNumber and end.columnNumber should be >= 0"); 456 "end.lineNumber and end.columnNumber should be >= 0");
441 v8End = v8::debug::Location(line, column); 457 v8End = v8::debug::Location(line, column);
442 } 458 }
443 auto it = m_scripts.find(scriptId); 459 auto it = m_scripts.find(scriptId);
444 if (it == m_scripts.end()) return Response::Error("Script not found"); 460 if (it == m_scripts.end()) return Response::Error("Script not found");
445 461
446 std::vector<v8::debug::Location> v8Locations; 462 std::vector<v8::debug::BreakLocation> v8Locations;
447 if (!it->second->getPossibleBreakpoints( 463 if (!it->second->getPossibleBreakpoints(
448 v8Start, v8End, restrictToFunction.fromMaybe(false), &v8Locations)) 464 v8Start, v8End, restrictToFunction.fromMaybe(false), &v8Locations)) {
449 return Response::InternalError(); 465 return Response::InternalError();
466 }
450 467
451 *locations = protocol::Array<protocol::Debugger::Location>::create(); 468 *locations = protocol::Array<protocol::Debugger::BreakLocation>::create();
452 for (size_t i = 0; i < v8Locations.size(); ++i) { 469 for (size_t i = 0; i < v8Locations.size(); ++i) {
453 (*locations) 470 std::unique_ptr<protocol::Debugger::BreakLocation> breakLocation =
454 ->addItem(protocol::Debugger::Location::create() 471 protocol::Debugger::BreakLocation::create()
455 .setScriptId(scriptId) 472 .setScriptId(scriptId)
456 .setLineNumber(v8Locations[i].GetLineNumber()) 473 .setLineNumber(v8Locations[i].GetLineNumber())
457 .setColumnNumber(v8Locations[i].GetColumnNumber()) 474 .setColumnNumber(v8Locations[i].GetColumnNumber())
458 .build()); 475 .build();
476 if (v8Locations[i].type() != v8::debug::kCommonBreakLocation) {
477 breakLocation->setType(breakLocationType(v8Locations[i].type()));
478 }
479 (*locations)->addItem(std::move(breakLocation));
459 } 480 }
460 return Response::OK(); 481 return Response::OK();
461 } 482 }
462 483
463 Response V8DebuggerAgentImpl::continueToLocation( 484 Response V8DebuggerAgentImpl::continueToLocation(
464 std::unique_ptr<protocol::Debugger::Location> location) { 485 std::unique_ptr<protocol::Debugger::Location> location) {
465 if (!enabled()) return Response::Error(kDebuggerNotEnabled); 486 if (!enabled()) return Response::Error(kDebuggerNotEnabled);
466 if (!m_continueToLocationBreakpointId.isEmpty()) { 487 if (!m_continueToLocationBreakpointId.isEmpty()) {
467 m_debugger->removeBreakpoint(m_continueToLocationBreakpointId); 488 m_debugger->removeBreakpoint(m_continueToLocationBreakpointId);
468 m_continueToLocationBreakpointId = ""; 489 m_continueToLocationBreakpointId = "";
(...skipping 849 matching lines...) Expand 10 before | Expand all | Expand 10 after
1318 void V8DebuggerAgentImpl::reset() { 1339 void V8DebuggerAgentImpl::reset() {
1319 if (!enabled()) return; 1340 if (!enabled()) return;
1320 m_scheduledDebuggerStep = NoStep; 1341 m_scheduledDebuggerStep = NoStep;
1321 m_blackboxedPositions.clear(); 1342 m_blackboxedPositions.clear();
1322 resetBlackboxedStateCache(); 1343 resetBlackboxedStateCache();
1323 m_scripts.clear(); 1344 m_scripts.clear();
1324 m_breakpointIdToDebuggerBreakpointIds.clear(); 1345 m_breakpointIdToDebuggerBreakpointIds.clear();
1325 } 1346 }
1326 1347
1327 } // namespace v8_inspector 1348 } // namespace v8_inspector
OLDNEW
« no previous file with comments | « src/inspector/v8-debugger-agent-impl.h ('k') | src/inspector/v8-debugger-script.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698