| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2010 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2010-2011 Google Inc. All rights reserved. | 3 * Copyright (C) 2010-2011 Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * | 8 * |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 namespace WebCore { | 56 namespace WebCore { |
| 57 | 57 |
| 58 namespace DebuggerAgentState { | 58 namespace DebuggerAgentState { |
| 59 static const char debuggerEnabled[] = "debuggerEnabled"; | 59 static const char debuggerEnabled[] = "debuggerEnabled"; |
| 60 static const char javaScriptBreakpoints[] = "javaScriptBreakopints"; | 60 static const char javaScriptBreakpoints[] = "javaScriptBreakopints"; |
| 61 static const char pauseOnExceptionsState[] = "pauseOnExceptionsState"; | 61 static const char pauseOnExceptionsState[] = "pauseOnExceptionsState"; |
| 62 }; | 62 }; |
| 63 | 63 |
| 64 const char* InspectorDebuggerAgent::backtraceObjectGroup = "backtrace"; | 64 const char* InspectorDebuggerAgent::backtraceObjectGroup = "backtrace"; |
| 65 | 65 |
| 66 static String generateBreakpointId(const String& scriptId, int lineNumber, int c
olumnNumber, InspectorDebuggerAgent::BreakpointSource source) |
| 67 { |
| 68 return scriptId + ':' + String::number(lineNumber) + ':' + String::number(co
lumnNumber) + |
| 69 (source == InspectorDebuggerAgent::UserBreakpointSource ? String() : Str
ing(":debug")); |
| 70 } |
| 71 |
| 66 InspectorDebuggerAgent::InspectorDebuggerAgent(InstrumentingAgents* instrumentin
gAgents, InspectorCompositeState* inspectorState, InjectedScriptManager* injecte
dScriptManager) | 72 InspectorDebuggerAgent::InspectorDebuggerAgent(InstrumentingAgents* instrumentin
gAgents, InspectorCompositeState* inspectorState, InjectedScriptManager* injecte
dScriptManager) |
| 67 : InspectorBaseAgent<InspectorDebuggerAgent>("Debugger", instrumentingAgents
, inspectorState) | 73 : InspectorBaseAgent<InspectorDebuggerAgent>("Debugger", instrumentingAgents
, inspectorState) |
| 68 , m_injectedScriptManager(injectedScriptManager) | 74 , m_injectedScriptManager(injectedScriptManager) |
| 69 , m_frontend(0) | 75 , m_frontend(0) |
| 70 , m_pausedScriptState(0) | 76 , m_pausedScriptState(0) |
| 71 , m_javaScriptPauseScheduled(false) | 77 , m_javaScriptPauseScheduled(false) |
| 72 , m_listener(0) | 78 , m_listener(0) |
| 73 { | 79 { |
| 74 // FIXME: make breakReason optional so that there was no need to init it wit
h "other". | 80 // FIXME: make breakReason optional so that there was no need to init it wit
h "other". |
| 75 clearBreakDetails(); | 81 clearBreakDetails(); |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 return; | 242 return; |
| 237 } | 243 } |
| 238 | 244 |
| 239 breakpointsCookie->setObject(breakpointId, buildObjectForBreakpointCookie(ur
l, lineNumber, columnNumber, condition, isRegex)); | 245 breakpointsCookie->setObject(breakpointId, buildObjectForBreakpointCookie(ur
l, lineNumber, columnNumber, condition, isRegex)); |
| 240 m_state->setObject(DebuggerAgentState::javaScriptBreakpoints, breakpointsCoo
kie); | 246 m_state->setObject(DebuggerAgentState::javaScriptBreakpoints, breakpointsCoo
kie); |
| 241 | 247 |
| 242 ScriptBreakpoint breakpoint(lineNumber, columnNumber, condition); | 248 ScriptBreakpoint breakpoint(lineNumber, columnNumber, condition); |
| 243 for (ScriptsMap::iterator it = m_scripts.begin(); it != m_scripts.end(); ++i
t) { | 249 for (ScriptsMap::iterator it = m_scripts.begin(); it != m_scripts.end(); ++i
t) { |
| 244 if (!matches(it->value.url, url, isRegex)) | 250 if (!matches(it->value.url, url, isRegex)) |
| 245 continue; | 251 continue; |
| 246 RefPtr<TypeBuilder::Debugger::Location> location = resolveBreakpoint(bre
akpointId, it->key, breakpoint); | 252 RefPtr<TypeBuilder::Debugger::Location> location = resolveBreakpoint(bre
akpointId, it->key, breakpoint, UserBreakpointSource); |
| 247 if (location) | 253 if (location) |
| 248 locations->addItem(location); | 254 locations->addItem(location); |
| 249 } | 255 } |
| 250 *outBreakpointId = breakpointId; | 256 *outBreakpointId = breakpointId; |
| 251 } | 257 } |
| 252 | 258 |
| 253 static bool parseLocation(ErrorString* errorString, RefPtr<InspectorObject> loca
tion, String* scriptId, int* lineNumber, int* columnNumber) | 259 static bool parseLocation(ErrorString* errorString, RefPtr<InspectorObject> loca
tion, String* scriptId, int* lineNumber, int* columnNumber) |
| 254 { | 260 { |
| 255 if (!location->getString("scriptId", scriptId) || !location->getNumber("line
Number", lineNumber)) { | 261 if (!location->getString("scriptId", scriptId) || !location->getNumber("line
Number", lineNumber)) { |
| 256 // FIXME: replace with input validation. | 262 // FIXME: replace with input validation. |
| 257 *errorString = "scriptId and lineNumber are required."; | 263 *errorString = "scriptId and lineNumber are required."; |
| 258 return false; | 264 return false; |
| 259 } | 265 } |
| 260 *columnNumber = 0; | 266 *columnNumber = 0; |
| 261 location->getNumber("columnNumber", columnNumber); | 267 location->getNumber("columnNumber", columnNumber); |
| 262 return true; | 268 return true; |
| 263 } | 269 } |
| 264 | 270 |
| 265 void InspectorDebuggerAgent::setBreakpoint(ErrorString* errorString, const RefPt
r<InspectorObject>& location, const String* const optionalCondition, TypeBuilder
::Debugger::BreakpointId* outBreakpointId, RefPtr<TypeBuilder::Debugger::Locatio
n>& actualLocation) | 271 void InspectorDebuggerAgent::setBreakpoint(ErrorString* errorString, const RefPt
r<InspectorObject>& location, const String* const optionalCondition, TypeBuilder
::Debugger::BreakpointId* outBreakpointId, RefPtr<TypeBuilder::Debugger::Locatio
n>& actualLocation) |
| 266 { | 272 { |
| 267 String scriptId; | 273 String scriptId; |
| 268 int lineNumber; | 274 int lineNumber; |
| 269 int columnNumber; | 275 int columnNumber; |
| 270 | 276 |
| 271 if (!parseLocation(errorString, location, &scriptId, &lineNumber, &columnNum
ber)) | 277 if (!parseLocation(errorString, location, &scriptId, &lineNumber, &columnNum
ber)) |
| 272 return; | 278 return; |
| 273 | 279 |
| 274 String condition = optionalCondition ? *optionalCondition : emptyString(); | 280 String condition = optionalCondition ? *optionalCondition : emptyString(); |
| 275 | 281 |
| 276 String breakpointId = scriptId + ':' + String::number(lineNumber) + ':' + St
ring::number(columnNumber); | 282 String breakpointId = generateBreakpointId(scriptId, lineNumber, columnNumbe
r, UserBreakpointSource); |
| 277 if (m_breakpointIdToDebugServerBreakpointIds.find(breakpointId) != m_breakpo
intIdToDebugServerBreakpointIds.end()) { | 283 if (m_breakpointIdToDebugServerBreakpointIds.find(breakpointId) != m_breakpo
intIdToDebugServerBreakpointIds.end()) { |
| 278 *errorString = "Breakpoint at specified location already exists."; | 284 *errorString = "Breakpoint at specified location already exists."; |
| 279 return; | 285 return; |
| 280 } | 286 } |
| 281 ScriptBreakpoint breakpoint(lineNumber, columnNumber, condition); | 287 ScriptBreakpoint breakpoint(lineNumber, columnNumber, condition); |
| 282 actualLocation = resolveBreakpoint(breakpointId, scriptId, breakpoint); | 288 actualLocation = resolveBreakpoint(breakpointId, scriptId, breakpoint, UserB
reakpointSource); |
| 283 if (actualLocation) | 289 if (actualLocation) |
| 284 *outBreakpointId = breakpointId; | 290 *outBreakpointId = breakpointId; |
| 285 else | 291 else |
| 286 *errorString = "Could not resolve breakpoint"; | 292 *errorString = "Could not resolve breakpoint"; |
| 287 } | 293 } |
| 288 | 294 |
| 289 void InspectorDebuggerAgent::removeBreakpoint(ErrorString*, const String& breakp
ointId) | 295 void InspectorDebuggerAgent::removeBreakpoint(ErrorString*, const String& breakp
ointId) |
| 290 { | 296 { |
| 291 RefPtr<InspectorObject> breakpointsCookie = m_state->getObject(DebuggerAgent
State::javaScriptBreakpoints); | 297 RefPtr<InspectorObject> breakpointsCookie = m_state->getObject(DebuggerAgent
State::javaScriptBreakpoints); |
| 292 breakpointsCookie->remove(breakpointId); | 298 breakpointsCookie->remove(breakpointId); |
| 293 m_state->setObject(DebuggerAgentState::javaScriptBreakpoints, breakpointsCoo
kie); | 299 m_state->setObject(DebuggerAgentState::javaScriptBreakpoints, breakpointsCoo
kie); |
| 294 | 300 |
| 301 removeBreakpoint(breakpointId); |
| 302 } |
| 303 |
| 304 void InspectorDebuggerAgent::removeBreakpoint(const String& breakpointId) |
| 305 { |
| 295 BreakpointIdToDebugServerBreakpointIdsMap::iterator debugServerBreakpointIds
Iterator = m_breakpointIdToDebugServerBreakpointIds.find(breakpointId); | 306 BreakpointIdToDebugServerBreakpointIdsMap::iterator debugServerBreakpointIds
Iterator = m_breakpointIdToDebugServerBreakpointIds.find(breakpointId); |
| 296 if (debugServerBreakpointIdsIterator == m_breakpointIdToDebugServerBreakpoin
tIds.end()) | 307 if (debugServerBreakpointIdsIterator == m_breakpointIdToDebugServerBreakpoin
tIds.end()) |
| 297 return; | 308 return; |
| 298 for (size_t i = 0; i < debugServerBreakpointIdsIterator->value.size(); ++i)
{ | 309 for (size_t i = 0; i < debugServerBreakpointIdsIterator->value.size(); ++i)
{ |
| 299 scriptDebugServer().removeBreakpoint(debugServerBreakpointIdsIterator->v
alue[i]); | 310 const String& debugServerBreakpointId = debugServerBreakpointIdsIterator
->value[i]; |
| 300 m_serverBreakpointIdToBreakpointId.remove(debugServerBreakpointIdsIterat
or->value[i]); | 311 scriptDebugServer().removeBreakpoint(debugServerBreakpointId); |
| 312 m_serverBreakpoints.remove(debugServerBreakpointId); |
| 301 } | 313 } |
| 302 m_breakpointIdToDebugServerBreakpointIds.remove(debugServerBreakpointIdsIter
ator); | 314 m_breakpointIdToDebugServerBreakpointIds.remove(debugServerBreakpointIdsIter
ator); |
| 303 } | 315 } |
| 304 | 316 |
| 305 void InspectorDebuggerAgent::continueToLocation(ErrorString* errorString, const
RefPtr<InspectorObject>& location) | 317 void InspectorDebuggerAgent::continueToLocation(ErrorString* errorString, const
RefPtr<InspectorObject>& location) |
| 306 { | 318 { |
| 307 if (!m_continueToLocationBreakpointId.isEmpty()) { | 319 if (!m_continueToLocationBreakpointId.isEmpty()) { |
| 308 scriptDebugServer().removeBreakpoint(m_continueToLocationBreakpointId); | 320 scriptDebugServer().removeBreakpoint(m_continueToLocationBreakpointId); |
| 309 m_continueToLocationBreakpointId = ""; | 321 m_continueToLocationBreakpointId = ""; |
| 310 } | 322 } |
| 311 | 323 |
| 312 String scriptId; | 324 String scriptId; |
| 313 int lineNumber; | 325 int lineNumber; |
| 314 int columnNumber; | 326 int columnNumber; |
| 315 | 327 |
| 316 if (!parseLocation(errorString, location, &scriptId, &lineNumber, &columnNum
ber)) | 328 if (!parseLocation(errorString, location, &scriptId, &lineNumber, &columnNum
ber)) |
| 317 return; | 329 return; |
| 318 | 330 |
| 319 ScriptBreakpoint breakpoint(lineNumber, columnNumber, ""); | 331 ScriptBreakpoint breakpoint(lineNumber, columnNumber, ""); |
| 320 m_continueToLocationBreakpointId = scriptDebugServer().setBreakpoint(scriptI
d, breakpoint, &lineNumber, &columnNumber); | 332 m_continueToLocationBreakpointId = scriptDebugServer().setBreakpoint(scriptI
d, breakpoint, &lineNumber, &columnNumber); |
| 321 resume(errorString); | 333 resume(errorString); |
| 322 } | 334 } |
| 323 | 335 |
| 324 PassRefPtr<TypeBuilder::Debugger::Location> InspectorDebuggerAgent::resolveBreak
point(const String& breakpointId, const String& scriptId, const ScriptBreakpoint
& breakpoint) | 336 PassRefPtr<TypeBuilder::Debugger::Location> InspectorDebuggerAgent::resolveBreak
point(const String& breakpointId, const String& scriptId, const ScriptBreakpoint
& breakpoint, BreakpointSource source) |
| 325 { | 337 { |
| 326 ScriptsMap::iterator scriptIterator = m_scripts.find(scriptId); | 338 ScriptsMap::iterator scriptIterator = m_scripts.find(scriptId); |
| 327 if (scriptIterator == m_scripts.end()) | 339 if (scriptIterator == m_scripts.end()) |
| 328 return 0; | 340 return 0; |
| 329 Script& script = scriptIterator->value; | 341 Script& script = scriptIterator->value; |
| 330 if (breakpoint.lineNumber < script.startLine || script.endLine < breakpoint.
lineNumber) | 342 if (breakpoint.lineNumber < script.startLine || script.endLine < breakpoint.
lineNumber) |
| 331 return 0; | 343 return 0; |
| 332 | 344 |
| 333 int actualLineNumber; | 345 int actualLineNumber; |
| 334 int actualColumnNumber; | 346 int actualColumnNumber; |
| 335 String debugServerBreakpointId = scriptDebugServer().setBreakpoint(scriptId,
breakpoint, &actualLineNumber, &actualColumnNumber); | 347 String debugServerBreakpointId = scriptDebugServer().setBreakpoint(scriptId,
breakpoint, &actualLineNumber, &actualColumnNumber); |
| 336 if (debugServerBreakpointId.isEmpty()) | 348 if (debugServerBreakpointId.isEmpty()) |
| 337 return 0; | 349 return 0; |
| 338 | 350 |
| 339 m_serverBreakpointIdToBreakpointId.set(debugServerBreakpointId, breakpointId
); | 351 m_serverBreakpoints.set(debugServerBreakpointId, std::make_pair(breakpointId
, source)); |
| 340 | 352 |
| 341 BreakpointIdToDebugServerBreakpointIdsMap::iterator debugServerBreakpointIds
Iterator = m_breakpointIdToDebugServerBreakpointIds.find(breakpointId); | 353 BreakpointIdToDebugServerBreakpointIdsMap::iterator debugServerBreakpointIds
Iterator = m_breakpointIdToDebugServerBreakpointIds.find(breakpointId); |
| 342 if (debugServerBreakpointIdsIterator == m_breakpointIdToDebugServerBreakpoin
tIds.end()) | 354 if (debugServerBreakpointIdsIterator == m_breakpointIdToDebugServerBreakpoin
tIds.end()) |
| 343 debugServerBreakpointIdsIterator = m_breakpointIdToDebugServerBreakpoint
Ids.set(breakpointId, Vector<String>()).iterator; | 355 debugServerBreakpointIdsIterator = m_breakpointIdToDebugServerBreakpoint
Ids.set(breakpointId, Vector<String>()).iterator; |
| 344 debugServerBreakpointIdsIterator->value.append(debugServerBreakpointId); | 356 debugServerBreakpointIdsIterator->value.append(debugServerBreakpointId); |
| 345 | 357 |
| 346 RefPtr<TypeBuilder::Debugger::Location> location = TypeBuilder::Debugger::Lo
cation::create() | 358 RefPtr<TypeBuilder::Debugger::Location> location = TypeBuilder::Debugger::Lo
cation::create() |
| 347 .setScriptId(scriptId) | 359 .setScriptId(scriptId) |
| 348 .setLineNumber(actualLineNumber); | 360 .setLineNumber(actualLineNumber); |
| 349 location->setColumnNumber(actualColumnNumber); | 361 location->setColumnNumber(actualColumnNumber); |
| (...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 687 bool isRegex; | 699 bool isRegex; |
| 688 breakpointObject->getBoolean("isRegex", &isRegex); | 700 breakpointObject->getBoolean("isRegex", &isRegex); |
| 689 String url; | 701 String url; |
| 690 breakpointObject->getString("url", &url); | 702 breakpointObject->getString("url", &url); |
| 691 if (!matches(scriptURL, url, isRegex)) | 703 if (!matches(scriptURL, url, isRegex)) |
| 692 continue; | 704 continue; |
| 693 ScriptBreakpoint breakpoint; | 705 ScriptBreakpoint breakpoint; |
| 694 breakpointObject->getNumber("lineNumber", &breakpoint.lineNumber); | 706 breakpointObject->getNumber("lineNumber", &breakpoint.lineNumber); |
| 695 breakpointObject->getNumber("columnNumber", &breakpoint.columnNumber); | 707 breakpointObject->getNumber("columnNumber", &breakpoint.columnNumber); |
| 696 breakpointObject->getString("condition", &breakpoint.condition); | 708 breakpointObject->getString("condition", &breakpoint.condition); |
| 697 RefPtr<TypeBuilder::Debugger::Location> location = resolveBreakpoint(it-
>key, scriptId, breakpoint); | 709 RefPtr<TypeBuilder::Debugger::Location> location = resolveBreakpoint(it-
>key, scriptId, breakpoint, UserBreakpointSource); |
| 698 if (location) | 710 if (location) |
| 699 m_frontend->breakpointResolved(it->key, location); | 711 m_frontend->breakpointResolved(it->key, location); |
| 700 } | 712 } |
| 701 } | 713 } |
| 702 | 714 |
| 703 void InspectorDebuggerAgent::failedToParseSource(const String& url, const String
& data, int firstLine, int errorLine, const String& errorMessage) | 715 void InspectorDebuggerAgent::failedToParseSource(const String& url, const String
& data, int firstLine, int errorLine, const String& errorMessage) |
| 704 { | 716 { |
| 705 m_frontend->scriptFailedToParse(url, data, firstLine, errorLine, errorMessag
e); | 717 m_frontend->scriptFailedToParse(url, data, firstLine, errorLine, errorMessag
e); |
| 706 } | 718 } |
| 707 | 719 |
| 708 void InspectorDebuggerAgent::didPause(ScriptState* scriptState, const ScriptValu
e& callFrames, const ScriptValue& exception, const Vector<String>& hitBreakpoint
s) | 720 void InspectorDebuggerAgent::didPause(ScriptState* scriptState, const ScriptValu
e& callFrames, const ScriptValue& exception, const Vector<String>& hitBreakpoint
s) |
| 709 { | 721 { |
| 710 ASSERT(scriptState && !m_pausedScriptState); | 722 ASSERT(scriptState && !m_pausedScriptState); |
| 711 m_pausedScriptState = scriptState; | 723 m_pausedScriptState = scriptState; |
| 712 m_currentCallStack = callFrames; | 724 m_currentCallStack = callFrames; |
| 713 | 725 |
| 714 if (!exception.hasNoValue()) { | 726 if (!exception.hasNoValue()) { |
| 715 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptF
or(scriptState); | 727 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptF
or(scriptState); |
| 716 if (!injectedScript.hasNoValue()) { | 728 if (!injectedScript.hasNoValue()) { |
| 717 m_breakReason = InspectorFrontend::Debugger::Reason::Exception; | 729 m_breakReason = InspectorFrontend::Debugger::Reason::Exception; |
| 718 m_breakAuxData = injectedScript.wrapObject(exception, "backtrace")->
openAccessors(); | 730 m_breakAuxData = injectedScript.wrapObject(exception, "backtrace")->
openAccessors(); |
| 719 // m_breakAuxData might be null after this. | 731 // m_breakAuxData might be null after this. |
| 720 } | 732 } |
| 721 } | 733 } |
| 722 | 734 |
| 723 RefPtr<Array<String> > hitBreakpointIds = Array<String>::create(); | 735 RefPtr<Array<String> > hitBreakpointIds = Array<String>::create(); |
| 724 | 736 |
| 725 for (Vector<String>::const_iterator i = hitBreakpoints.begin(); i != hitBrea
kpoints.end(); ++i) { | 737 for (Vector<String>::const_iterator i = hitBreakpoints.begin(); i != hitBrea
kpoints.end(); ++i) { |
| 726 DebugServerBreakpointIdToBreakpointIdMap::iterator breakpointIterator =
m_serverBreakpointIdToBreakpointId.find(*i); | 738 DebugServerBreakpointToBreakpointIdAndSourceMap::iterator breakpointIter
ator = m_serverBreakpoints.find(*i); |
| 727 if (breakpointIterator != m_serverBreakpointIdToBreakpointId.end()) | 739 if (breakpointIterator != m_serverBreakpoints.end()) { |
| 728 hitBreakpointIds->addItem(breakpointIterator->value); | 740 const String& localId = breakpointIterator->value.first; |
| 741 hitBreakpointIds->addItem(localId); |
| 742 |
| 743 BreakpointSource source = breakpointIterator->value.second; |
| 744 if (m_breakReason == InspectorFrontend::Debugger::Reason::Other && s
ource == DebugCommandBreakpointSource) |
| 745 m_breakReason = InspectorFrontend::Debugger::Reason::DebugComman
d; |
| 746 } |
| 729 } | 747 } |
| 730 | 748 |
| 731 m_frontend->paused(currentCallFrames(), m_breakReason, m_breakAuxData, hitBr
eakpointIds); | 749 m_frontend->paused(currentCallFrames(), m_breakReason, m_breakAuxData, hitBr
eakpointIds); |
| 732 m_javaScriptPauseScheduled = false; | 750 m_javaScriptPauseScheduled = false; |
| 733 | 751 |
| 734 if (!m_continueToLocationBreakpointId.isEmpty()) { | 752 if (!m_continueToLocationBreakpointId.isEmpty()) { |
| 735 scriptDebugServer().removeBreakpoint(m_continueToLocationBreakpointId); | 753 scriptDebugServer().removeBreakpoint(m_continueToLocationBreakpointId); |
| 736 m_continueToLocationBreakpointId = ""; | 754 m_continueToLocationBreakpointId = ""; |
| 737 } | 755 } |
| 738 if (m_listener) | 756 if (m_listener) |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 798 } | 816 } |
| 799 | 817 |
| 800 void ScriptDebugListener::Script::reportMemoryUsage(MemoryObjectInfo* memoryObje
ctInfo) const | 818 void ScriptDebugListener::Script::reportMemoryUsage(MemoryObjectInfo* memoryObje
ctInfo) const |
| 801 { | 819 { |
| 802 MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::InspectorDe
buggerAgent); | 820 MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::InspectorDe
buggerAgent); |
| 803 info.addMember(url, "url"); | 821 info.addMember(url, "url"); |
| 804 info.addMember(source, "source"); | 822 info.addMember(source, "source"); |
| 805 info.addMember(sourceMappingURL, "sourceMappingURL"); | 823 info.addMember(sourceMappingURL, "sourceMappingURL"); |
| 806 } | 824 } |
| 807 | 825 |
| 826 void InspectorDebuggerAgent::setBreakpoint(const String& scriptId, int lineNumbe
r, int columnNumber, BreakpointSource source) |
| 827 { |
| 828 String breakpointId = generateBreakpointId(scriptId, lineNumber, columnNumbe
r, source); |
| 829 ScriptBreakpoint breakpoint(lineNumber, columnNumber, String()); |
| 830 resolveBreakpoint(breakpointId, scriptId, breakpoint, source); |
| 831 } |
| 832 |
| 833 void InspectorDebuggerAgent::removeBreakpoint(const String& scriptId, int lineNu
mber, int columnNumber, BreakpointSource source) |
| 834 { |
| 835 removeBreakpoint(generateBreakpointId(scriptId, lineNumber, columnNumber, so
urce)); |
| 836 } |
| 837 |
| 808 void InspectorDebuggerAgent::reset() | 838 void InspectorDebuggerAgent::reset() |
| 809 { | 839 { |
| 810 m_scripts.clear(); | 840 m_scripts.clear(); |
| 811 m_breakpointIdToDebugServerBreakpointIds.clear(); | 841 m_breakpointIdToDebugServerBreakpointIds.clear(); |
| 812 if (m_frontend) | 842 if (m_frontend) |
| 813 m_frontend->globalObjectCleared(); | 843 m_frontend->globalObjectCleared(); |
| 814 } | 844 } |
| 815 | 845 |
| 816 } // namespace WebCore | 846 } // namespace WebCore |
| 817 | 847 |
| OLD | NEW |