Chromium Code Reviews| 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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 42 #include "core/inspector/InspectorPageAgent.h" | 42 #include "core/inspector/InspectorPageAgent.h" |
| 43 #include "core/inspector/InspectorState.h" | 43 #include "core/inspector/InspectorState.h" |
| 44 #include "core/inspector/InstrumentingAgents.h" | 44 #include "core/inspector/InstrumentingAgents.h" |
| 45 #include "core/inspector/ScriptArguments.h" | 45 #include "core/inspector/ScriptArguments.h" |
| 46 #include "core/inspector/ScriptCallStack.h" | 46 #include "core/inspector/ScriptCallStack.h" |
| 47 #include "core/platform/text/RegularExpression.h" | 47 #include "core/platform/text/RegularExpression.h" |
| 48 #include "platform/JSONValues.h" | 48 #include "platform/JSONValues.h" |
| 49 #include "wtf/text/WTFString.h" | 49 #include "wtf/text/WTFString.h" |
| 50 | 50 |
| 51 using WebCore::TypeBuilder::Array; | 51 using WebCore::TypeBuilder::Array; |
| 52 using WebCore::TypeBuilder::Debugger::BreakpointId; | |
| 53 using WebCore::TypeBuilder::Debugger::CallFrame; | |
| 52 using WebCore::TypeBuilder::Debugger::FunctionDetails; | 54 using WebCore::TypeBuilder::Debugger::FunctionDetails; |
| 55 using WebCore::TypeBuilder::Debugger::Location; | |
| 53 using WebCore::TypeBuilder::Debugger::ScriptId; | 56 using WebCore::TypeBuilder::Debugger::ScriptId; |
| 54 using WebCore::TypeBuilder::Runtime::RemoteObject; | 57 using WebCore::TypeBuilder::Runtime::RemoteObject; |
| 55 | 58 |
| 56 namespace WebCore { | 59 namespace WebCore { |
| 57 | 60 |
| 58 namespace DebuggerAgentState { | 61 namespace DebuggerAgentState { |
| 59 static const char debuggerEnabled[] = "debuggerEnabled"; | 62 static const char debuggerEnabled[] = "debuggerEnabled"; |
| 60 static const char javaScriptBreakpoints[] = "javaScriptBreakopints"; | 63 static const char javaScriptBreakpoints[] = "javaScriptBreakopints"; |
| 61 static const char pauseOnExceptionsState[] = "pauseOnExceptionsState"; | 64 static const char pauseOnExceptionsState[] = "pauseOnExceptionsState"; |
| 62 | 65 |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 288 | 291 |
| 289 static bool matches(const String& url, const String& pattern, bool isRegex) | 292 static bool matches(const String& url, const String& pattern, bool isRegex) |
| 290 { | 293 { |
| 291 if (isRegex) { | 294 if (isRegex) { |
| 292 RegularExpression regex(pattern, TextCaseSensitive); | 295 RegularExpression regex(pattern, TextCaseSensitive); |
| 293 return regex.match(url) != -1; | 296 return regex.match(url) != -1; |
| 294 } | 297 } |
| 295 return url == pattern; | 298 return url == pattern; |
| 296 } | 299 } |
| 297 | 300 |
| 298 void InspectorDebuggerAgent::setBreakpointByUrl(ErrorString* errorString, int li neNumber, const String* const optionalURL, const String* const optionalURLRegex, const int* const optionalColumnNumber, const String* const optionalCondition, c onst bool* isAntiBreakpoint, TypeBuilder::Debugger::BreakpointId* outBreakpointI d, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::Location> >& locations) | 301 void InspectorDebuggerAgent::setBreakpointByUrl(ErrorString* errorString, int li neNumber, const String* const optionalURL, const String* const optionalURLRegex, const int* const optionalColumnNumber, const String* const optionalCondition, c onst bool* isAntiBreakpoint, BreakpointId* outBreakpointId, RefPtr<Array<Locatio n> >& locations) |
| 299 { | 302 { |
| 300 locations = Array<TypeBuilder::Debugger::Location>::create(); | 303 locations = Array<Location>::create(); |
| 301 if (!optionalURL == !optionalURLRegex) { | 304 if (!optionalURL == !optionalURLRegex) { |
| 302 *errorString = "Either url or urlRegex must be specified."; | 305 *errorString = "Either url or urlRegex must be specified."; |
| 303 return; | 306 return; |
| 304 } | 307 } |
| 305 | 308 |
| 306 bool isAntiBreakpointValue = isAntiBreakpoint && *isAntiBreakpoint; | 309 bool isAntiBreakpointValue = isAntiBreakpoint && *isAntiBreakpoint; |
| 307 | 310 |
| 308 String url = optionalURL ? *optionalURL : *optionalURLRegex; | 311 String url = optionalURL ? *optionalURL : *optionalURLRegex; |
| 309 int columnNumber; | 312 int columnNumber; |
| 310 if (optionalColumnNumber) { | 313 if (optionalColumnNumber) { |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 327 } | 330 } |
| 328 | 331 |
| 329 breakpointsCookie->setObject(breakpointId, buildObjectForBreakpointCookie(ur l, lineNumber, columnNumber, condition, isRegex, isAntiBreakpointValue)); | 332 breakpointsCookie->setObject(breakpointId, buildObjectForBreakpointCookie(ur l, lineNumber, columnNumber, condition, isRegex, isAntiBreakpointValue)); |
| 330 m_state->setObject(DebuggerAgentState::javaScriptBreakpoints, breakpointsCoo kie); | 333 m_state->setObject(DebuggerAgentState::javaScriptBreakpoints, breakpointsCoo kie); |
| 331 | 334 |
| 332 if (!isAntiBreakpointValue) { | 335 if (!isAntiBreakpointValue) { |
| 333 ScriptBreakpoint breakpoint(lineNumber, columnNumber, condition); | 336 ScriptBreakpoint breakpoint(lineNumber, columnNumber, condition); |
| 334 for (ScriptsMap::iterator it = m_scripts.begin(); it != m_scripts.end(); ++it) { | 337 for (ScriptsMap::iterator it = m_scripts.begin(); it != m_scripts.end(); ++it) { |
| 335 if (!matches(it->value.url, url, isRegex)) | 338 if (!matches(it->value.url, url, isRegex)) |
| 336 continue; | 339 continue; |
| 337 RefPtr<TypeBuilder::Debugger::Location> location = resolveBreakpoint (breakpointId, it->key, breakpoint, UserBreakpointSource); | 340 RefPtr<Location> location = resolveBreakpoint(breakpointId, it->key, breakpoint, UserBreakpointSource); |
| 338 if (location) | 341 if (location) |
| 339 locations->addItem(location); | 342 locations->addItem(location); |
| 340 } | 343 } |
| 341 } | 344 } |
| 342 *outBreakpointId = breakpointId; | 345 *outBreakpointId = breakpointId; |
| 343 } | 346 } |
| 344 | 347 |
| 345 static bool parseLocation(ErrorString* errorString, PassRefPtr<JSONObject> locat ion, String* scriptId, int* lineNumber, int* columnNumber) | 348 static bool parseLocation(ErrorString* errorString, PassRefPtr<JSONObject> locat ion, String* scriptId, int* lineNumber, int* columnNumber) |
| 346 { | 349 { |
| 347 if (!location->getString("scriptId", scriptId) || !location->getNumber("line Number", lineNumber)) { | 350 if (!location->getString("scriptId", scriptId) || !location->getNumber("line Number", lineNumber)) { |
| 348 // FIXME: replace with input validation. | 351 // FIXME: replace with input validation. |
| 349 *errorString = "scriptId and lineNumber are required."; | 352 *errorString = "scriptId and lineNumber are required."; |
| 350 return false; | 353 return false; |
| 351 } | 354 } |
| 352 *columnNumber = 0; | 355 *columnNumber = 0; |
| 353 location->getNumber("columnNumber", columnNumber); | 356 location->getNumber("columnNumber", columnNumber); |
| 354 return true; | 357 return true; |
| 355 } | 358 } |
| 356 | 359 |
| 357 void InspectorDebuggerAgent::setBreakpoint(ErrorString* errorString, const RefPt r<JSONObject>& location, const String* const optionalCondition, TypeBuilder::Deb ugger::BreakpointId* outBreakpointId, RefPtr<TypeBuilder::Debugger::Location>& a ctualLocation) | 360 void InspectorDebuggerAgent::setBreakpoint(ErrorString* errorString, const RefPt r<JSONObject>& location, const String* const optionalCondition, BreakpointId* ou tBreakpointId, RefPtr<Location>& actualLocation) |
| 358 { | 361 { |
| 359 String scriptId; | 362 String scriptId; |
| 360 int lineNumber; | 363 int lineNumber; |
| 361 int columnNumber; | 364 int columnNumber; |
| 362 | 365 |
| 363 if (!parseLocation(errorString, location, &scriptId, &lineNumber, &columnNum ber)) | 366 if (!parseLocation(errorString, location, &scriptId, &lineNumber, &columnNum ber)) |
| 364 return; | 367 return; |
| 365 | 368 |
| 366 String condition = optionalCondition ? *optionalCondition : emptyString(); | 369 String condition = optionalCondition ? *optionalCondition : emptyString(); |
| 367 | 370 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 420 int columnNumber; | 423 int columnNumber; |
| 421 | 424 |
| 422 if (!parseLocation(errorString, location, &scriptId, &lineNumber, &columnNum ber)) | 425 if (!parseLocation(errorString, location, &scriptId, &lineNumber, &columnNum ber)) |
| 423 return; | 426 return; |
| 424 | 427 |
| 425 ScriptBreakpoint breakpoint(lineNumber, columnNumber, ""); | 428 ScriptBreakpoint breakpoint(lineNumber, columnNumber, ""); |
| 426 m_continueToLocationBreakpointId = scriptDebugServer().setBreakpoint(scriptI d, breakpoint, &lineNumber, &columnNumber, interstateLocation); | 429 m_continueToLocationBreakpointId = scriptDebugServer().setBreakpoint(scriptI d, breakpoint, &lineNumber, &columnNumber, interstateLocation); |
| 427 resume(errorString); | 430 resume(errorString); |
| 428 } | 431 } |
| 429 | 432 |
| 430 void InspectorDebuggerAgent::getStepInPositions(ErrorString* errorString, const String& callFrameId, RefPtr<Array<TypeBuilder::Debugger::Location> >& positions) | 433 void InspectorDebuggerAgent::getStepInPositions(ErrorString* errorString, const String& callFrameId, RefPtr<Array<Location> >& positions) |
| 431 { | 434 { |
| 432 if (!isPaused() || m_currentCallStack.isNull()) { | 435 if (!isPaused() || m_currentCallStack.isNull()) { |
| 433 *errorString = "Attempt to access callframe when debugger is not on paus e"; | 436 *errorString = "Attempt to access callframe when debugger is not on paus e"; |
| 434 return; | 437 return; |
| 435 } | 438 } |
| 436 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForOb jectId(callFrameId); | 439 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForOb jectId(callFrameId); |
| 437 if (injectedScript.hasNoValue()) { | 440 if (injectedScript.hasNoValue()) { |
| 438 *errorString = "Inspected frame has gone"; | 441 *errorString = "Inspected frame has gone"; |
| 439 return; | 442 return; |
| 440 } | 443 } |
| 441 | 444 |
| 442 injectedScript.getStepInPositions(errorString, m_currentCallStack, callFrame Id, positions); | 445 injectedScript.getStepInPositions(errorString, m_currentCallStack, callFrame Id, positions); |
| 443 } | 446 } |
| 444 | 447 |
| 445 void InspectorDebuggerAgent::getBacktrace(ErrorString* errorString, RefPtr<Array <TypeBuilder::Debugger::CallFrame> >& callFrames) | 448 void InspectorDebuggerAgent::getBacktrace(ErrorString* errorString, RefPtr<Array <CallFrame> >& callFrames) |
|
loislo
2013/11/20 01:39:18
please move these changes into another patch.
aandrey
2013/11/20 15:20:02
Extracted to https://codereview.chromium.org/77173
| |
| 446 { | 449 { |
| 447 if (!assertPaused(errorString)) | 450 if (!assertPaused(errorString)) |
| 448 return; | 451 return; |
| 449 scriptDebugServer().updateCallStack(&m_currentCallStack); | 452 scriptDebugServer().updateCallStack(&m_currentCallStack); |
| 450 callFrames = currentCallFrames(); | 453 callFrames = currentCallFrames(); |
| 451 } | 454 } |
| 452 | 455 |
| 453 String InspectorDebuggerAgent::scriptURL(JavaScriptCallFrame* frame) | 456 String InspectorDebuggerAgent::scriptURL(JavaScriptCallFrame* frame) |
| 454 { | 457 { |
| 455 String scriptIdString = String::number(frame->sourceID()); | 458 String scriptIdString = String::number(frame->sourceID()); |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 532 if (m_skipStepInCount > 0) { | 535 if (m_skipStepInCount > 0) { |
| 533 --m_skipStepInCount; | 536 --m_skipStepInCount; |
| 534 return ScriptDebugListener::StepInto; | 537 return ScriptDebugListener::StepInto; |
| 535 } | 538 } |
| 536 return ScriptDebugListener::StepOut; | 539 return ScriptDebugListener::StepOut; |
| 537 } | 540 } |
| 538 } | 541 } |
| 539 return ScriptDebugListener::NoSkip; | 542 return ScriptDebugListener::NoSkip; |
| 540 } | 543 } |
| 541 | 544 |
| 542 PassRefPtr<TypeBuilder::Debugger::Location> InspectorDebuggerAgent::resolveBreak point(const String& breakpointId, const String& scriptId, const ScriptBreakpoint & breakpoint, BreakpointSource source) | 545 PassRefPtr<Location> InspectorDebuggerAgent::resolveBreakpoint(const String& bre akpointId, const String& scriptId, const ScriptBreakpoint& breakpoint, Breakpoin tSource source) |
| 543 { | 546 { |
| 544 ScriptsMap::iterator scriptIterator = m_scripts.find(scriptId); | 547 ScriptsMap::iterator scriptIterator = m_scripts.find(scriptId); |
| 545 if (scriptIterator == m_scripts.end()) | 548 if (scriptIterator == m_scripts.end()) |
| 546 return 0; | 549 return 0; |
| 547 Script& script = scriptIterator->value; | 550 Script& script = scriptIterator->value; |
| 548 if (breakpoint.lineNumber < script.startLine || script.endLine < breakpoint. lineNumber) | 551 if (breakpoint.lineNumber < script.startLine || script.endLine < breakpoint. lineNumber) |
| 549 return 0; | 552 return 0; |
| 550 | 553 |
| 551 int actualLineNumber; | 554 int actualLineNumber; |
| 552 int actualColumnNumber; | 555 int actualColumnNumber; |
| 553 String debugServerBreakpointId = scriptDebugServer().setBreakpoint(scriptId, breakpoint, &actualLineNumber, &actualColumnNumber, false); | 556 String debugServerBreakpointId = scriptDebugServer().setBreakpoint(scriptId, breakpoint, &actualLineNumber, &actualColumnNumber, false); |
| 554 if (debugServerBreakpointId.isEmpty()) | 557 if (debugServerBreakpointId.isEmpty()) |
| 555 return 0; | 558 return 0; |
| 556 | 559 |
| 557 m_serverBreakpoints.set(debugServerBreakpointId, std::make_pair(breakpointId , source)); | 560 m_serverBreakpoints.set(debugServerBreakpointId, std::make_pair(breakpointId , source)); |
| 558 | 561 |
| 559 BreakpointIdToDebugServerBreakpointIdsMap::iterator debugServerBreakpointIds Iterator = m_breakpointIdToDebugServerBreakpointIds.find(breakpointId); | 562 BreakpointIdToDebugServerBreakpointIdsMap::iterator debugServerBreakpointIds Iterator = m_breakpointIdToDebugServerBreakpointIds.find(breakpointId); |
| 560 if (debugServerBreakpointIdsIterator == m_breakpointIdToDebugServerBreakpoin tIds.end()) | 563 if (debugServerBreakpointIdsIterator == m_breakpointIdToDebugServerBreakpoin tIds.end()) |
| 561 debugServerBreakpointIdsIterator = m_breakpointIdToDebugServerBreakpoint Ids.set(breakpointId, Vector<String>()).iterator; | 564 debugServerBreakpointIdsIterator = m_breakpointIdToDebugServerBreakpoint Ids.set(breakpointId, Vector<String>()).iterator; |
| 562 debugServerBreakpointIdsIterator->value.append(debugServerBreakpointId); | 565 debugServerBreakpointIdsIterator->value.append(debugServerBreakpointId); |
| 563 | 566 |
| 564 RefPtr<TypeBuilder::Debugger::Location> location = TypeBuilder::Debugger::Lo cation::create() | 567 RefPtr<Location> location = Location::create() |
| 565 .setScriptId(scriptId) | 568 .setScriptId(scriptId) |
| 566 .setLineNumber(actualLineNumber); | 569 .setLineNumber(actualLineNumber); |
| 567 location->setColumnNumber(actualColumnNumber); | 570 location->setColumnNumber(actualColumnNumber); |
| 568 return location; | 571 return location; |
| 569 } | 572 } |
| 570 | 573 |
| 571 static PassRefPtr<JSONObject> scriptToInspectorObject(ScriptObject scriptObject) | 574 static PassRefPtr<JSONObject> scriptToInspectorObject(ScriptObject scriptObject) |
| 572 { | 575 { |
| 573 if (scriptObject.hasNoValue()) | 576 if (scriptObject.hasNoValue()) |
| 574 return 0; | 577 return 0; |
| 575 RefPtr<JSONValue> value = scriptObject.toJSONValue(scriptObject.scriptState( )); | 578 RefPtr<JSONValue> value = scriptObject.toJSONValue(scriptObject.scriptState( )); |
| 576 if (!value) | 579 if (!value) |
| 577 return 0; | 580 return 0; |
| 578 return value->asObject(); | 581 return value->asObject(); |
| 579 } | 582 } |
| 580 | 583 |
| 581 void InspectorDebuggerAgent::searchInContent(ErrorString* error, const String& s criptId, const String& query, const bool* const optionalCaseSensitive, const boo l* const optionalIsRegex, RefPtr<Array<WebCore::TypeBuilder::Page::SearchMatch> >& results) | 584 void InspectorDebuggerAgent::searchInContent(ErrorString* error, const String& s criptId, const String& query, const bool* const optionalCaseSensitive, const boo l* const optionalIsRegex, RefPtr<Array<WebCore::TypeBuilder::Page::SearchMatch> >& results) |
| 582 { | 585 { |
| 583 bool isRegex = optionalIsRegex ? *optionalIsRegex : false; | 586 bool isRegex = optionalIsRegex ? *optionalIsRegex : false; |
| 584 bool caseSensitive = optionalCaseSensitive ? *optionalCaseSensitive : false; | 587 bool caseSensitive = optionalCaseSensitive ? *optionalCaseSensitive : false; |
| 585 | 588 |
| 586 ScriptsMap::iterator it = m_scripts.find(scriptId); | 589 ScriptsMap::iterator it = m_scripts.find(scriptId); |
| 587 if (it != m_scripts.end()) | 590 if (it != m_scripts.end()) |
| 588 results = ContentSearchUtils::searchInTextByLines(it->value.source, quer y, caseSensitive, isRegex); | 591 results = ContentSearchUtils::searchInTextByLines(it->value.source, quer y, caseSensitive, isRegex); |
| 589 else | 592 else |
| 590 *error = "No script for id: " + scriptId; | 593 *error = "No script for id: " + scriptId; |
| 591 } | 594 } |
| 592 | 595 |
| 593 void InspectorDebuggerAgent::setScriptSource(ErrorString* error, RefPtr<TypeBuil der::Debugger::SetScriptSourceError>& errorData, const String& scriptId, const S tring& newContent, const bool* const preview, RefPtr<Array<TypeBuilder::Debugger ::CallFrame> >& newCallFrames, RefPtr<JSONObject>& result) | 596 void InspectorDebuggerAgent::setScriptSource(ErrorString* error, RefPtr<TypeBuil der::Debugger::SetScriptSourceError>& errorData, const String& scriptId, const S tring& newContent, const bool* const preview, RefPtr<Array<CallFrame> >& newCall Frames, RefPtr<JSONObject>& result) |
| 594 { | 597 { |
| 595 bool previewOnly = preview && *preview; | 598 bool previewOnly = preview && *preview; |
| 596 ScriptObject resultObject; | 599 ScriptObject resultObject; |
| 597 if (!scriptDebugServer().setScriptSource(scriptId, newContent, previewOnly, error, errorData, &m_currentCallStack, &resultObject)) | 600 if (!scriptDebugServer().setScriptSource(scriptId, newContent, previewOnly, error, errorData, &m_currentCallStack, &resultObject)) |
| 598 return; | 601 return; |
| 599 newCallFrames = currentCallFrames(); | 602 newCallFrames = currentCallFrames(); |
| 600 RefPtr<JSONObject> object = scriptToInspectorObject(resultObject); | 603 RefPtr<JSONObject> object = scriptToInspectorObject(resultObject); |
| 601 if (object) | 604 if (object) |
| 602 result = object; | 605 result = object; |
| 603 } | 606 } |
| 604 void InspectorDebuggerAgent::restartFrame(ErrorString* errorString, const String & callFrameId, RefPtr<Array<TypeBuilder::Debugger::CallFrame> >& newCallFrames, RefPtr<JSONObject>& result) | 607 void InspectorDebuggerAgent::restartFrame(ErrorString* errorString, const String & callFrameId, RefPtr<Array<CallFrame> >& newCallFrames, RefPtr<JSONObject>& res ult) |
| 605 { | 608 { |
| 606 if (!isPaused() || m_currentCallStack.isNull()) { | 609 if (!isPaused() || m_currentCallStack.isNull()) { |
| 607 *errorString = "Attempt to access callframe when debugger is not on paus e"; | 610 *errorString = "Attempt to access callframe when debugger is not on paus e"; |
| 608 return; | 611 return; |
| 609 } | 612 } |
| 610 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForOb jectId(callFrameId); | 613 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForOb jectId(callFrameId); |
| 611 if (injectedScript.hasNoValue()) { | 614 if (injectedScript.hasNoValue()) { |
| 612 *errorString = "Inspected frame has gone"; | 615 *errorString = "Inspected frame has gone"; |
| 613 return; | 616 return; |
| 614 } | 617 } |
| 615 | 618 |
| 616 injectedScript.restartFrame(errorString, m_currentCallStack, callFrameId, &r esult); | 619 injectedScript.restartFrame(errorString, m_currentCallStack, callFrameId, &r esult); |
| 617 scriptDebugServer().updateCallStack(&m_currentCallStack); | 620 scriptDebugServer().updateCallStack(&m_currentCallStack); |
| 618 newCallFrames = currentCallFrames(); | 621 newCallFrames = currentCallFrames(); |
| 619 } | 622 } |
| 620 | 623 |
| 621 void InspectorDebuggerAgent::getScriptSource(ErrorString* error, const String& s criptId, String* scriptSource) | 624 void InspectorDebuggerAgent::getScriptSource(ErrorString* error, const String& s criptId, String* scriptSource) |
| 622 { | 625 { |
| 623 ScriptsMap::iterator it = m_scripts.find(scriptId); | 626 ScriptsMap::iterator it = m_scripts.find(scriptId); |
| 624 if (it != m_scripts.end()) | 627 if (it != m_scripts.end()) |
| 625 *scriptSource = it->value.source; | 628 *scriptSource = it->value.source; |
| 626 else | 629 else |
| 627 *error = "No script for id: " + scriptId; | 630 *error = "No script for id: " + scriptId; |
| 628 } | 631 } |
| 629 | 632 |
| 630 void InspectorDebuggerAgent::getFunctionDetails(ErrorString* errorString, const String& functionId, RefPtr<TypeBuilder::Debugger::FunctionDetails>& details) | 633 void InspectorDebuggerAgent::getFunctionDetails(ErrorString* errorString, const String& functionId, RefPtr<FunctionDetails>& details) |
| 631 { | 634 { |
| 632 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForOb jectId(functionId); | 635 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForOb jectId(functionId); |
| 633 if (injectedScript.hasNoValue()) { | 636 if (injectedScript.hasNoValue()) { |
| 634 *errorString = "Function object id is obsolete"; | 637 *errorString = "Function object id is obsolete"; |
| 635 return; | 638 return; |
| 636 } | 639 } |
| 637 injectedScript.getFunctionDetails(errorString, functionId, &details); | 640 injectedScript.getFunctionDetails(errorString, functionId, &details); |
| 638 } | 641 } |
| 639 | 642 |
| 640 void InspectorDebuggerAgent::schedulePauseOnNextStatement(InspectorFrontend::Deb ugger::Reason::Enum breakReason, PassRefPtr<JSONObject> data) | 643 void InspectorDebuggerAgent::schedulePauseOnNextStatement(InspectorFrontend::Deb ugger::Reason::Enum breakReason, PassRefPtr<JSONObject> data) |
| 641 { | 644 { |
| 642 if (m_javaScriptPauseScheduled) | 645 if (m_javaScriptPauseScheduled) |
| 643 return; | 646 return; |
| 644 m_breakReason = breakReason; | 647 m_breakReason = breakReason; |
| 645 m_breakAuxData = data; | 648 m_breakAuxData = data; |
| 646 scriptDebugServer().setPauseOnNextStatement(true); | 649 scriptDebugServer().setPauseOnNextStatement(true); |
| 647 } | 650 } |
| 648 | 651 |
| 649 void InspectorDebuggerAgent::cancelPauseOnNextStatement() | 652 void InspectorDebuggerAgent::cancelPauseOnNextStatement() |
| 650 { | 653 { |
| 651 if (m_javaScriptPauseScheduled) | 654 if (m_javaScriptPauseScheduled) |
| 652 return; | 655 return; |
| 653 clearBreakDetails(); | 656 clearBreakDetails(); |
| 654 scriptDebugServer().setPauseOnNextStatement(false); | 657 scriptDebugServer().setPauseOnNextStatement(false); |
| 655 } | 658 } |
| 656 | 659 |
| 660 void InspectorDebuggerAgent::requestAsyncCallFramesIfNeeded() | |
| 661 { | |
| 662 if (m_asyncCallStackTracker.isEnabled()) | |
| 663 scriptDebugServer().requestAsyncCallFrames(); | |
| 664 } | |
| 665 | |
| 666 void InspectorDebuggerAgent::didRequestAsyncCallFrames(ScriptValue callFrames) | |
| 667 { | |
| 668 m_asyncCallStackTracker.didRequestAsyncCallFrames(callFrames); | |
| 669 } | |
| 670 | |
| 671 void InspectorDebuggerAgent::didInstallTimer(ExecutionContext*, int timerId, int timeout, bool singleShot) | |
| 672 { | |
| 673 m_asyncCallStackTracker.didInstallTimer(timerId, singleShot); | |
| 674 requestAsyncCallFramesIfNeeded(); | |
| 675 } | |
| 676 | |
| 677 void InspectorDebuggerAgent::didRemoveTimer(ExecutionContext*, int timerId) | |
| 678 { | |
| 679 m_asyncCallStackTracker.didRemoveTimer(timerId); | |
| 680 } | |
| 681 | |
| 682 bool InspectorDebuggerAgent::willFireTimer(ExecutionContext*, int timerId) | |
| 683 { | |
| 684 m_asyncCallStackTracker.willFireTimer(timerId); | |
| 685 return true; | |
| 686 } | |
| 687 | |
| 657 void InspectorDebuggerAgent::didFireTimer() | 688 void InspectorDebuggerAgent::didFireTimer() |
| 658 { | 689 { |
| 690 m_asyncCallStackTracker.didAsyncCall(); | |
| 659 cancelPauseOnNextStatement(); | 691 cancelPauseOnNextStatement(); |
| 660 } | 692 } |
| 661 | 693 |
| 694 void InspectorDebuggerAgent::didRequestAnimationFrame(Document*, int callbackId) | |
| 695 { | |
| 696 m_asyncCallStackTracker.didRequestAnimationFrame(callbackId); | |
| 697 requestAsyncCallFramesIfNeeded(); | |
| 698 } | |
| 699 | |
| 700 void InspectorDebuggerAgent::didCancelAnimationFrame(Document*, int callbackId) | |
| 701 { | |
| 702 m_asyncCallStackTracker.didCancelAnimationFrame(callbackId); | |
| 703 } | |
| 704 | |
| 705 bool InspectorDebuggerAgent::willFireAnimationFrame(Document*, int callbackId) | |
| 706 { | |
| 707 m_asyncCallStackTracker.willFireAnimationFrame(callbackId); | |
| 708 return true; | |
| 709 } | |
| 710 | |
| 711 void InspectorDebuggerAgent::didFireAnimationFrame() | |
| 712 { | |
| 713 m_asyncCallStackTracker.didAsyncCall(); | |
| 714 } | |
| 715 | |
| 662 void InspectorDebuggerAgent::didHandleEvent() | 716 void InspectorDebuggerAgent::didHandleEvent() |
| 663 { | 717 { |
| 664 cancelPauseOnNextStatement(); | 718 cancelPauseOnNextStatement(); |
| 665 } | 719 } |
| 666 | 720 |
| 667 void InspectorDebuggerAgent::pause(ErrorString*) | 721 void InspectorDebuggerAgent::pause(ErrorString*) |
| 668 { | 722 { |
| 669 if (m_javaScriptPauseScheduled) | 723 if (m_javaScriptPauseScheduled) |
| 670 return; | 724 return; |
| 671 clearBreakDetails(); | 725 clearBreakDetails(); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 747 | 801 |
| 748 void InspectorDebuggerAgent::setPauseOnExceptionsImpl(ErrorString* errorString, int pauseState) | 802 void InspectorDebuggerAgent::setPauseOnExceptionsImpl(ErrorString* errorString, int pauseState) |
| 749 { | 803 { |
| 750 scriptDebugServer().setPauseOnExceptionsState(static_cast<ScriptDebugServer: :PauseOnExceptionsState>(pauseState)); | 804 scriptDebugServer().setPauseOnExceptionsState(static_cast<ScriptDebugServer: :PauseOnExceptionsState>(pauseState)); |
| 751 if (scriptDebugServer().pauseOnExceptionsState() != pauseState) | 805 if (scriptDebugServer().pauseOnExceptionsState() != pauseState) |
| 752 *errorString = "Internal error. Could not change pause on exceptions sta te"; | 806 *errorString = "Internal error. Could not change pause on exceptions sta te"; |
| 753 else | 807 else |
| 754 m_state->setLong(DebuggerAgentState::pauseOnExceptionsState, pauseState) ; | 808 m_state->setLong(DebuggerAgentState::pauseOnExceptionsState, pauseState) ; |
| 755 } | 809 } |
| 756 | 810 |
| 757 void InspectorDebuggerAgent::evaluateOnCallFrame(ErrorString* errorString, const String& callFrameId, const String& expression, const String* const objectGroup, const bool* const includeCommandLineAPI, const bool* const doNotPauseOnExceptio nsAndMuteConsole, const bool* const returnByValue, const bool* generatePreview, RefPtr<TypeBuilder::Runtime::RemoteObject>& result, TypeBuilder::OptOutput<bool> * wasThrown) | 811 void InspectorDebuggerAgent::evaluateOnCallFrame(ErrorString* errorString, const String& callFrameId, const String& expression, const String* const objectGroup, const bool* const includeCommandLineAPI, const bool* const doNotPauseOnExceptio nsAndMuteConsole, const bool* const returnByValue, const bool* generatePreview, RefPtr<RemoteObject>& result, TypeBuilder::OptOutput<bool>* wasThrown) |
| 758 { | 812 { |
| 759 if (!isPaused() || m_currentCallStack.isNull()) { | 813 if (!isPaused() || m_currentCallStack.isNull()) { |
| 760 *errorString = "Attempt to access callframe when debugger is not on paus e"; | 814 *errorString = "Attempt to access callframe when debugger is not on paus e"; |
| 761 return; | 815 return; |
| 762 } | 816 } |
| 763 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForOb jectId(callFrameId); | 817 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptForOb jectId(callFrameId); |
| 764 if (injectedScript.hasNoValue()) { | 818 if (injectedScript.hasNoValue()) { |
| 765 *errorString = "Inspected frame has gone"; | 819 *errorString = "Inspected frame has gone"; |
| 766 return; | 820 return; |
| 767 } | 821 } |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 794 String exceptionMessage; | 848 String exceptionMessage; |
| 795 scriptDebugServer().compileScript(injectedScript.scriptState(), expression, sourceURL, &scriptIdValue, &exceptionMessage); | 849 scriptDebugServer().compileScript(injectedScript.scriptState(), expression, sourceURL, &scriptIdValue, &exceptionMessage); |
| 796 if (!scriptIdValue && !exceptionMessage) { | 850 if (!scriptIdValue && !exceptionMessage) { |
| 797 *errorString = "Script compilation failed"; | 851 *errorString = "Script compilation failed"; |
| 798 return; | 852 return; |
| 799 } | 853 } |
| 800 *syntaxErrorMessage = exceptionMessage; | 854 *syntaxErrorMessage = exceptionMessage; |
| 801 *scriptId = scriptIdValue; | 855 *scriptId = scriptIdValue; |
| 802 } | 856 } |
| 803 | 857 |
| 804 void InspectorDebuggerAgent::runScript(ErrorString* errorString, const ScriptId& scriptId, const int* executionContextId, const String* const objectGroup, const bool* const doNotPauseOnExceptionsAndMuteConsole, RefPtr<TypeBuilder::Runtime:: RemoteObject>& result, TypeBuilder::OptOutput<bool>* wasThrown) | 858 void InspectorDebuggerAgent::runScript(ErrorString* errorString, const ScriptId& scriptId, const int* executionContextId, const String* const objectGroup, const bool* const doNotPauseOnExceptionsAndMuteConsole, RefPtr<RemoteObject>& result, TypeBuilder::OptOutput<bool>* wasThrown) |
| 805 { | 859 { |
| 806 InjectedScript injectedScript = injectedScriptForEval(errorString, execution ContextId); | 860 InjectedScript injectedScript = injectedScriptForEval(errorString, execution ContextId); |
| 807 if (injectedScript.hasNoValue()) { | 861 if (injectedScript.hasNoValue()) { |
| 808 *errorString = "Inspected frame has gone"; | 862 *errorString = "Inspected frame has gone"; |
| 809 return; | 863 return; |
| 810 } | 864 } |
| 811 | 865 |
| 812 ScriptDebugServer::PauseOnExceptionsState previousPauseOnExceptionsState = s criptDebugServer().pauseOnExceptionsState(); | 866 ScriptDebugServer::PauseOnExceptionsState previousPauseOnExceptionsState = s criptDebugServer().pauseOnExceptionsState(); |
| 813 if (doNotPauseOnExceptionsAndMuteConsole && *doNotPauseOnExceptionsAndMuteCo nsole) { | 867 if (doNotPauseOnExceptionsAndMuteConsole && *doNotPauseOnExceptionsAndMuteCo nsole) { |
| 814 if (previousPauseOnExceptionsState != ScriptDebugServer::DontPauseOnExce ptions) | 868 if (previousPauseOnExceptionsState != ScriptDebugServer::DontPauseOnExce ptions) |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 876 compiled = compileSkipCallFramePattern(patternValue); | 930 compiled = compileSkipCallFramePattern(patternValue); |
| 877 if (!compiled) { | 931 if (!compiled) { |
| 878 *errorString = "Invalid regular expression"; | 932 *errorString = "Invalid regular expression"; |
| 879 return; | 933 return; |
| 880 } | 934 } |
| 881 } | 935 } |
| 882 m_state->setString(DebuggerAgentState::skipStackPattern, patternValue); | 936 m_state->setString(DebuggerAgentState::skipStackPattern, patternValue); |
| 883 m_cachedSkipStackRegExp = compiled.release(); | 937 m_cachedSkipStackRegExp = compiled.release(); |
| 884 } | 938 } |
| 885 | 939 |
| 940 void InspectorDebuggerAgent::enableAsyncCallStacks(ErrorString*, int depth) | |
| 941 { | |
| 942 m_asyncCallStackTracker.setMaxAsyncCallStackDepth(depth); | |
| 943 } | |
| 944 | |
| 886 void InspectorDebuggerAgent::scriptExecutionBlockedByCSP(const String& directive Text) | 945 void InspectorDebuggerAgent::scriptExecutionBlockedByCSP(const String& directive Text) |
| 887 { | 946 { |
| 888 if (scriptDebugServer().pauseOnExceptionsState() != ScriptDebugServer::DontP auseOnExceptions) { | 947 if (scriptDebugServer().pauseOnExceptionsState() != ScriptDebugServer::DontP auseOnExceptions) { |
| 889 RefPtr<JSONObject> directive = JSONObject::create(); | 948 RefPtr<JSONObject> directive = JSONObject::create(); |
| 890 directive->setString("directiveText", directiveText); | 949 directive->setString("directiveText", directiveText); |
| 891 breakProgram(InspectorFrontend::Debugger::Reason::CSPViolation, directiv e.release()); | 950 breakProgram(InspectorFrontend::Debugger::Reason::CSPViolation, directiv e.release()); |
| 892 } | 951 } |
| 893 } | 952 } |
| 894 | 953 |
| 895 PassRefPtr<Array<TypeBuilder::Debugger::CallFrame> > InspectorDebuggerAgent::cur rentCallFrames() | 954 PassRefPtr<Array<CallFrame> > InspectorDebuggerAgent::currentCallFrames() |
| 896 { | 955 { |
| 897 if (!m_pausedScriptState) | 956 if (!m_pausedScriptState) |
| 898 return Array<TypeBuilder::Debugger::CallFrame>::create(); | 957 return Array<CallFrame>::create(); |
| 899 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptFor(m _pausedScriptState); | 958 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptFor(m _pausedScriptState); |
| 900 if (injectedScript.hasNoValue()) { | 959 if (injectedScript.hasNoValue()) { |
| 901 ASSERT_NOT_REACHED(); | 960 ASSERT_NOT_REACHED(); |
| 902 return Array<TypeBuilder::Debugger::CallFrame>::create(); | 961 return Array<CallFrame>::create(); |
| 903 } | 962 } |
| 904 return injectedScript.wrapCallFrames(m_currentCallStack); | 963 RefPtr<Array<CallFrame> > result = injectedScript.wrapCallFrames(m_currentCa llStack); |
| 964 if (!result->length()) | |
| 965 return result.release(); | |
| 966 RefPtr<Array<CallFrame> > lastCallFrames = result; | |
| 967 AsyncCallStackIterator asyncCallStacks = m_asyncCallStackTracker.currentAsyn cCallStack(); | |
| 968 while (asyncCallStacks.hasNext()) { | |
| 969 RefPtr<CallFrame> last = CallFrame::runtimeCast(lastCallFrames->asArray( )->get(lastCallFrames->length() - 1)); | |
|
yurys
2013/11/20 01:23:43
Wouldn't lastCallFrames->get(lastCallFrames->lengt
aandrey
2013/11/20 15:20:02
Nope. TypeBuilder::Array::get is protected as well
| |
| 970 lastCallFrames = injectedScript.wrapCallFrames(asyncCallStacks.next()); | |
| 971 if (!lastCallFrames->length()) | |
| 972 break; | |
| 973 last->setAsyncCallFrames(lastCallFrames); | |
| 974 } | |
| 975 return result.release(); | |
| 905 } | 976 } |
| 906 | 977 |
| 907 String InspectorDebuggerAgent::sourceMapURLForScript(const Script& script) | 978 String InspectorDebuggerAgent::sourceMapURLForScript(const Script& script) |
| 908 { | 979 { |
| 909 bool deprecated; | 980 bool deprecated; |
| 910 String sourceMapURL = ContentSearchUtils::findSourceMapURL(script.source, Co ntentSearchUtils::JavaScriptMagicComment, &deprecated); | 981 String sourceMapURL = ContentSearchUtils::findSourceMapURL(script.source, Co ntentSearchUtils::JavaScriptMagicComment, &deprecated); |
| 911 if (!sourceMapURL.isEmpty()) { | 982 if (!sourceMapURL.isEmpty()) { |
| 912 // FIXME: add deprecated console message here. | 983 // FIXME: add deprecated console message here. |
| 913 return sourceMapURL; | 984 return sourceMapURL; |
| 914 } | 985 } |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 956 bool isRegex; | 1027 bool isRegex; |
| 957 breakpointObject->getBoolean(DebuggerAgentState::isRegex, &isRegex); | 1028 breakpointObject->getBoolean(DebuggerAgentState::isRegex, &isRegex); |
| 958 String url; | 1029 String url; |
| 959 breakpointObject->getString(DebuggerAgentState::url, &url); | 1030 breakpointObject->getString(DebuggerAgentState::url, &url); |
| 960 if (!matches(scriptURL, url, isRegex)) | 1031 if (!matches(scriptURL, url, isRegex)) |
| 961 continue; | 1032 continue; |
| 962 ScriptBreakpoint breakpoint; | 1033 ScriptBreakpoint breakpoint; |
| 963 breakpointObject->getNumber(DebuggerAgentState::lineNumber, &breakpoint. lineNumber); | 1034 breakpointObject->getNumber(DebuggerAgentState::lineNumber, &breakpoint. lineNumber); |
| 964 breakpointObject->getNumber(DebuggerAgentState::columnNumber, &breakpoin t.columnNumber); | 1035 breakpointObject->getNumber(DebuggerAgentState::columnNumber, &breakpoin t.columnNumber); |
| 965 breakpointObject->getString(DebuggerAgentState::condition, &breakpoint.c ondition); | 1036 breakpointObject->getString(DebuggerAgentState::condition, &breakpoint.c ondition); |
| 966 RefPtr<TypeBuilder::Debugger::Location> location = resolveBreakpoint(it- >key, scriptId, breakpoint, UserBreakpointSource); | 1037 RefPtr<Location> location = resolveBreakpoint(it->key, scriptId, breakpo int, UserBreakpointSource); |
| 967 if (location) | 1038 if (location) |
| 968 m_frontend->breakpointResolved(it->key, location); | 1039 m_frontend->breakpointResolved(it->key, location); |
| 969 } | 1040 } |
| 970 } | 1041 } |
| 971 | 1042 |
| 972 void InspectorDebuggerAgent::failedToParseSource(const String& url, const String & data, int firstLine, int errorLine, const String& errorMessage) | 1043 void InspectorDebuggerAgent::failedToParseSource(const String& url, const String & data, int firstLine, int errorLine, const String& errorMessage) |
| 973 { | 1044 { |
| 974 m_frontend->scriptFailedToParse(url, data, firstLine, errorLine, errorMessag e); | 1045 m_frontend->scriptFailedToParse(url, data, firstLine, errorLine, errorMessag e); |
| 975 } | 1046 } |
| 976 | 1047 |
| 977 void InspectorDebuggerAgent::didPause(ScriptState* scriptState, const ScriptValu e& callFrames, const ScriptValue& exception, const Vector<String>& hitBreakpoint s) | 1048 void InspectorDebuggerAgent::didPause(ScriptState* scriptState, const ScriptValu e& callFrames, const ScriptValue& exception, const Vector<String>& hitBreakpoint s) |
| 978 { | 1049 { |
| 979 ASSERT(scriptState && !m_pausedScriptState); | 1050 ASSERT(scriptState && !m_pausedScriptState); |
| 980 m_pausedScriptState = scriptState; | 1051 m_pausedScriptState = scriptState; |
| 981 m_currentCallStack = callFrames; | 1052 m_currentCallStack = callFrames; |
| 982 | 1053 |
| 983 m_skipStepInCount = numberOfStepsBeforeStepOut; | 1054 m_skipStepInCount = numberOfStepsBeforeStepOut; |
| 984 | 1055 |
| 985 if (!exception.hasNoValue()) { | 1056 if (!exception.hasNoValue()) { |
| 986 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptF or(scriptState); | 1057 InjectedScript injectedScript = m_injectedScriptManager->injectedScriptF or(scriptState); |
| 987 if (!injectedScript.hasNoValue()) { | 1058 if (!injectedScript.hasNoValue()) { |
| 988 m_breakReason = InspectorFrontend::Debugger::Reason::Exception; | 1059 m_breakReason = InspectorFrontend::Debugger::Reason::Exception; |
| 989 m_breakAuxData = injectedScript.wrapObject(exception, "backtrace")-> openAccessors(); | 1060 m_breakAuxData = injectedScript.wrapObject(exception, InspectorDebug gerAgent::backtraceObjectGroup)->openAccessors(); |
| 990 // m_breakAuxData might be null after this. | 1061 // m_breakAuxData might be null after this. |
| 991 } | 1062 } |
| 992 } | 1063 } |
| 993 | 1064 |
| 994 RefPtr<Array<String> > hitBreakpointIds = Array<String>::create(); | 1065 RefPtr<Array<String> > hitBreakpointIds = Array<String>::create(); |
| 995 | 1066 |
| 996 for (Vector<String>::const_iterator i = hitBreakpoints.begin(); i != hitBrea kpoints.end(); ++i) { | 1067 for (Vector<String>::const_iterator i = hitBreakpoints.begin(); i != hitBrea kpoints.end(); ++i) { |
| 997 DebugServerBreakpointToBreakpointIdAndSourceMap::iterator breakpointIter ator = m_serverBreakpoints.find(*i); | 1068 DebugServerBreakpointToBreakpointIdAndSourceMap::iterator breakpointIter ator = m_serverBreakpoints.find(*i); |
| 998 if (breakpointIterator != m_serverBreakpoints.end()) { | 1069 if (breakpointIterator != m_serverBreakpoints.end()) { |
| 999 const String& localId = breakpointIterator->value.first; | 1070 const String& localId = breakpointIterator->value.first; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1037 m_breakAuxData = data; | 1108 m_breakAuxData = data; |
| 1038 scriptDebugServer().breakProgram(); | 1109 scriptDebugServer().breakProgram(); |
| 1039 } | 1110 } |
| 1040 | 1111 |
| 1041 void InspectorDebuggerAgent::clear() | 1112 void InspectorDebuggerAgent::clear() |
| 1042 { | 1113 { |
| 1043 m_pausedScriptState = 0; | 1114 m_pausedScriptState = 0; |
| 1044 m_currentCallStack = ScriptValue(); | 1115 m_currentCallStack = ScriptValue(); |
| 1045 m_scripts.clear(); | 1116 m_scripts.clear(); |
| 1046 m_breakpointIdToDebugServerBreakpointIds.clear(); | 1117 m_breakpointIdToDebugServerBreakpointIds.clear(); |
| 1118 m_asyncCallStackTracker.clear(); | |
| 1047 m_continueToLocationBreakpointId = String(); | 1119 m_continueToLocationBreakpointId = String(); |
| 1048 clearBreakDetails(); | 1120 clearBreakDetails(); |
| 1049 m_javaScriptPauseScheduled = false; | 1121 m_javaScriptPauseScheduled = false; |
| 1050 ErrorString error; | 1122 ErrorString error; |
| 1051 setOverlayMessage(&error, 0); | 1123 setOverlayMessage(&error, 0); |
| 1052 } | 1124 } |
| 1053 | 1125 |
| 1054 bool InspectorDebuggerAgent::assertPaused(ErrorString* errorString) | 1126 bool InspectorDebuggerAgent::assertPaused(ErrorString* errorString) |
| 1055 { | 1127 { |
| 1056 if (!m_pausedScriptState) { | 1128 if (!m_pausedScriptState) { |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 1075 | 1147 |
| 1076 void InspectorDebuggerAgent::removeBreakpoint(const String& scriptId, int lineNu mber, int columnNumber, BreakpointSource source) | 1148 void InspectorDebuggerAgent::removeBreakpoint(const String& scriptId, int lineNu mber, int columnNumber, BreakpointSource source) |
| 1077 { | 1149 { |
| 1078 removeBreakpoint(generateBreakpointId(scriptId, lineNumber, columnNumber, so urce)); | 1150 removeBreakpoint(generateBreakpointId(scriptId, lineNumber, columnNumber, so urce)); |
| 1079 } | 1151 } |
| 1080 | 1152 |
| 1081 void InspectorDebuggerAgent::reset() | 1153 void InspectorDebuggerAgent::reset() |
| 1082 { | 1154 { |
| 1083 m_scripts.clear(); | 1155 m_scripts.clear(); |
| 1084 m_breakpointIdToDebugServerBreakpointIds.clear(); | 1156 m_breakpointIdToDebugServerBreakpointIds.clear(); |
| 1157 m_asyncCallStackTracker.clear(); | |
| 1085 if (m_frontend) | 1158 if (m_frontend) |
| 1086 m_frontend->globalObjectCleared(); | 1159 m_frontend->globalObjectCleared(); |
| 1087 } | 1160 } |
| 1088 | 1161 |
| 1089 } // namespace WebCore | 1162 } // namespace WebCore |
| 1090 | 1163 |
| OLD | NEW |