diff options
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.h')
-rw-r--r-- | chromium/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.h | 149 |
1 files changed, 84 insertions, 65 deletions
diff --git a/chromium/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.h b/chromium/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.h index 718a0c24e93..ea959df9cf8 100644 --- a/chromium/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.h +++ b/chromium/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.h @@ -30,15 +30,15 @@ #ifndef InspectorDebuggerAgent_h #define InspectorDebuggerAgent_h -#include "InspectorFrontend.h" #include "bindings/v8/ScriptState.h" +#include "core/InspectorFrontend.h" +#include "core/frame/ConsoleTypes.h" #include "core/inspector/AsyncCallStackTracker.h" #include "core/inspector/ConsoleAPITypes.h" #include "core/inspector/InjectedScript.h" #include "core/inspector/InspectorBaseAgent.h" #include "core/inspector/ScriptBreakpoint.h" #include "core/inspector/ScriptDebugListener.h" -#include "core/frame/ConsoleTypes.h" #include "wtf/Forward.h" #include "wtf/HashMap.h" #include "wtf/PassRefPtr.h" @@ -48,16 +48,26 @@ namespace WebCore { class Document; +class Event; +class EventListener; +class EventTarget; +class FormData; +class HTTPHeaderMap; class InjectedScriptManager; class InspectorFrontend; class InstrumentingAgents; +class JavaScriptCallFrame; class JSONObject; +class KURL; +class MutationObserver; class ScriptArguments; class ScriptCallStack; class ScriptDebugServer; +class ScriptRegexp; class ScriptSourceCode; class ScriptValue; -class ScriptRegexp; +class ThreadableLoaderClient; +class XMLHttpRequest; typedef String ErrorString; @@ -74,60 +84,61 @@ public: virtual ~InspectorDebuggerAgent(); - virtual void canSetScriptSource(ErrorString*, bool* result) { *result = true; } + virtual void canSetScriptSource(ErrorString*, bool* result) OVERRIDE FINAL { *result = true; } - virtual void setFrontend(InspectorFrontend*); - virtual void clearFrontend(); - virtual void restore(); + virtual void init() OVERRIDE FINAL; + virtual void setFrontend(InspectorFrontend*) OVERRIDE FINAL; + virtual void clearFrontend() OVERRIDE FINAL; + virtual void restore() OVERRIDE FINAL; bool isPaused(); bool runningNestedMessageLoop(); - void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String&, PassRefPtr<ScriptCallStack>, unsigned long); - void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String&, ScriptState*, PassRefPtr<ScriptArguments>, unsigned long); + void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String&, PassRefPtrWillBeRawPtr<ScriptCallStack>, unsigned long); + void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String&, ScriptState*, PassRefPtrWillBeRawPtr<ScriptArguments>, unsigned long); - String preprocessEventListener(Frame*, const String& source, const String& url, const String& functionName); - PassOwnPtr<ScriptSourceCode> preprocess(Frame*, const ScriptSourceCode&); + String preprocessEventListener(LocalFrame*, const String& source, const String& url, const String& functionName); + PassOwnPtr<ScriptSourceCode> preprocess(LocalFrame*, const ScriptSourceCode&); // Part of the protocol. - virtual void enable(ErrorString*); - virtual void disable(ErrorString*); - virtual void setBreakpointsActive(ErrorString*, bool active); - virtual void setSkipAllPauses(ErrorString*, bool skipped, const bool* untilReload); - - virtual void setBreakpointByUrl(ErrorString*, int lineNumber, const String* optionalURL, const String* optionalURLRegex, const int* optionalColumnNumber, const String* optionalCondition, const bool* isAntiBreakpoint, TypeBuilder::Debugger::BreakpointId*, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::Location> >& locations); - virtual void setBreakpoint(ErrorString*, const RefPtr<JSONObject>& location, const String* optionalCondition, TypeBuilder::Debugger::BreakpointId*, RefPtr<TypeBuilder::Debugger::Location>& actualLocation); - virtual void removeBreakpoint(ErrorString*, const String& breakpointId); - virtual void continueToLocation(ErrorString*, const RefPtr<JSONObject>& location, const bool* interstateLocationOpt); - virtual void getStepInPositions(ErrorString*, const String& callFrameId, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::Location> >& positions); - virtual void getBacktrace(ErrorString*, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::CallFrame> >&, RefPtr<TypeBuilder::Debugger::StackTrace>&); - - virtual void searchInContent(ErrorString*, const String& scriptId, const String& query, const bool* optionalCaseSensitive, const bool* optionalIsRegex, RefPtr<TypeBuilder::Array<TypeBuilder::Page::SearchMatch> >&); - virtual void setScriptSource(ErrorString*, RefPtr<TypeBuilder::Debugger::SetScriptSourceError>&, const String& scriptId, const String& newContent, const bool* preview, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::CallFrame> >& newCallFrames, RefPtr<JSONObject>& result, RefPtr<TypeBuilder::Debugger::StackTrace>& asyncStackTrace); - virtual void restartFrame(ErrorString*, const String& callFrameId, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::CallFrame> >& newCallFrames, RefPtr<JSONObject>& result, RefPtr<TypeBuilder::Debugger::StackTrace>& asyncStackTrace); - virtual void getScriptSource(ErrorString*, const String& scriptId, String* scriptSource); - virtual void getFunctionDetails(ErrorString*, const String& functionId, RefPtr<TypeBuilder::Debugger::FunctionDetails>&); - virtual void pause(ErrorString*); - virtual void resume(ErrorString*); - virtual void stepOver(ErrorString*, const String* callFrameId); - virtual void stepInto(ErrorString*); - virtual void stepOut(ErrorString*, const String* callFrameId); - virtual void setPauseOnExceptions(ErrorString*, const String& pauseState); + virtual void enable(ErrorString*) OVERRIDE FINAL; + virtual void disable(ErrorString*) OVERRIDE FINAL; + virtual void setBreakpointsActive(ErrorString*, bool active) OVERRIDE FINAL; + virtual void setSkipAllPauses(ErrorString*, bool skipped, const bool* untilReload) OVERRIDE FINAL; + + virtual void setBreakpointByUrl(ErrorString*, int lineNumber, const String* optionalURL, const String* optionalURLRegex, const int* optionalColumnNumber, const String* optionalCondition, const bool* isAntiBreakpoint, TypeBuilder::Debugger::BreakpointId*, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::Location> >& locations) OVERRIDE FINAL; + virtual void setBreakpoint(ErrorString*, const RefPtr<JSONObject>& location, const String* optionalCondition, TypeBuilder::Debugger::BreakpointId*, RefPtr<TypeBuilder::Debugger::Location>& actualLocation) OVERRIDE FINAL; + virtual void removeBreakpoint(ErrorString*, const String& breakpointId) OVERRIDE FINAL; + virtual void continueToLocation(ErrorString*, const RefPtr<JSONObject>& location, const bool* interstateLocationOpt) OVERRIDE FINAL; + virtual void getStepInPositions(ErrorString*, const String& callFrameId, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::Location> >& positions) OVERRIDE FINAL; + virtual void getBacktrace(ErrorString*, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::CallFrame> >&, RefPtr<TypeBuilder::Debugger::StackTrace>&) OVERRIDE FINAL; + + virtual void searchInContent(ErrorString*, const String& scriptId, const String& query, const bool* optionalCaseSensitive, const bool* optionalIsRegex, RefPtr<TypeBuilder::Array<TypeBuilder::Page::SearchMatch> >&) OVERRIDE FINAL; + virtual void setScriptSource(ErrorString*, RefPtr<TypeBuilder::Debugger::SetScriptSourceError>&, const String& scriptId, const String& newContent, const bool* preview, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::CallFrame> >& newCallFrames, RefPtr<JSONObject>& result, RefPtr<TypeBuilder::Debugger::StackTrace>& asyncStackTrace) OVERRIDE FINAL; + virtual void restartFrame(ErrorString*, const String& callFrameId, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::CallFrame> >& newCallFrames, RefPtr<JSONObject>& result, RefPtr<TypeBuilder::Debugger::StackTrace>& asyncStackTrace) OVERRIDE FINAL; + virtual void getScriptSource(ErrorString*, const String& scriptId, String* scriptSource) OVERRIDE FINAL; + virtual void getFunctionDetails(ErrorString*, const String& functionId, RefPtr<TypeBuilder::Debugger::FunctionDetails>&) OVERRIDE FINAL; + virtual void pause(ErrorString*) OVERRIDE FINAL; + virtual void resume(ErrorString*) OVERRIDE FINAL; + virtual void stepOver(ErrorString*) OVERRIDE FINAL; + virtual void stepInto(ErrorString*) OVERRIDE FINAL; + virtual void stepOut(ErrorString*) OVERRIDE FINAL; + virtual void setPauseOnExceptions(ErrorString*, const String& pauseState) OVERRIDE FINAL; virtual void evaluateOnCallFrame(ErrorString*, - const String& callFrameId, - const String& expression, - const String* objectGroup, - const bool* includeCommandLineAPI, - const bool* doNotPauseOnExceptionsAndMuteConsole, - const bool* returnByValue, - const bool* generatePreview, - RefPtr<TypeBuilder::Runtime::RemoteObject>& result, - TypeBuilder::OptOutput<bool>* wasThrown); - void compileScript(ErrorString*, const String& expression, const String& sourceURL, TypeBuilder::OptOutput<TypeBuilder::Debugger::ScriptId>*, TypeBuilder::OptOutput<String>* syntaxErrorMessage); - void runScript(ErrorString*, const TypeBuilder::Debugger::ScriptId&, const int* executionContextId, const String* objectGroup, const bool* doNotPauseOnExceptionsAndMuteConsole, RefPtr<TypeBuilder::Runtime::RemoteObject>& result, TypeBuilder::OptOutput<bool>* wasThrown); - virtual void setOverlayMessage(ErrorString*, const String*); - virtual void setVariableValue(ErrorString*, int in_scopeNumber, const String& in_variableName, const RefPtr<JSONObject>& in_newValue, const String* in_callFrame, const String* in_functionObjectId); - virtual void skipStackFrames(ErrorString*, const String* pattern); - virtual void setAsyncCallStackDepth(ErrorString*, int depth); + const String& callFrameId, + const String& expression, + const String* objectGroup, + const bool* includeCommandLineAPI, + const bool* doNotPauseOnExceptionsAndMuteConsole, + const bool* returnByValue, + const bool* generatePreview, + RefPtr<TypeBuilder::Runtime::RemoteObject>& result, + TypeBuilder::OptOutput<bool>* wasThrown) OVERRIDE FINAL; + virtual void compileScript(ErrorString*, const String& expression, const String& sourceURL, const int* executionContextId, TypeBuilder::OptOutput<TypeBuilder::Debugger::ScriptId>*, RefPtr<TypeBuilder::Debugger::ExceptionDetails>&) OVERRIDE; + virtual void runScript(ErrorString*, const TypeBuilder::Debugger::ScriptId&, const int* executionContextId, const String* objectGroup, const bool* doNotPauseOnExceptionsAndMuteConsole, RefPtr<TypeBuilder::Runtime::RemoteObject>& result, RefPtr<TypeBuilder::Debugger::ExceptionDetails>&) OVERRIDE; + virtual void setOverlayMessage(ErrorString*, const String*) OVERRIDE; + virtual void setVariableValue(ErrorString*, int in_scopeNumber, const String& in_variableName, const RefPtr<JSONObject>& in_newValue, const String* in_callFrame, const String* in_functionObjectId) OVERRIDE FINAL; + virtual void skipStackFrames(ErrorString*, const String* pattern) OVERRIDE FINAL; + virtual void setAsyncCallStackDepth(ErrorString*, int depth) OVERRIDE FINAL; void schedulePauseOnNextStatement(InspectorFrontend::Debugger::Reason::Enum breakReason, PassRefPtr<JSONObject> data); void didInstallTimer(ExecutionContext*, int timerId, int timeout, bool singleShot); @@ -138,10 +149,18 @@ public: void didCancelAnimationFrame(Document*, int callbackId); bool willFireAnimationFrame(Document*, int callbackId); void didFireAnimationFrame(); + void didEnqueueEvent(EventTarget*, Event*); + void didRemoveEvent(EventTarget*, Event*); + void willHandleEvent(EventTarget*, Event*, EventListener*, bool useCapture); void didHandleEvent(); + void willLoadXHR(XMLHttpRequest*, ThreadableLoaderClient*, const AtomicString& method, const KURL&, bool async, FormData* body, const HTTPHeaderMap& headers, bool includeCrendentials); + void didEnqueueMutationRecord(ExecutionContext*, MutationObserver*); + void didClearAllMutationRecords(ExecutionContext*, MutationObserver*); + void willDeliverMutationRecords(ExecutionContext*, MutationObserver*); + void didDeliverMutationRecords(); bool canBreakProgram(); void breakProgram(InspectorFrontend::Debugger::Reason::Enum breakReason, PassRefPtr<JSONObject> data); - virtual void scriptExecutionBlockedByCSP(const String& directiveText); + void scriptExecutionBlockedByCSP(const String& directiveText); class Listener { public: @@ -153,17 +172,15 @@ public: }; void setListener(Listener* listener) { m_listener = listener; } + bool enabled(); + virtual ScriptDebugServer& scriptDebugServer() = 0; void setBreakpoint(const String& scriptId, int lineNumber, int columnNumber, BreakpointSource, const String& condition = String()); void removeBreakpoint(const String& scriptId, int lineNumber, int columnNumber, BreakpointSource); - SkipPauseRequest shouldSkipExceptionPause(RefPtr<JavaScriptCallFrame>& topFrame); - SkipPauseRequest shouldSkipBreakpointPause(RefPtr<JavaScriptCallFrame>& topFrame); - SkipPauseRequest shouldSkipStepPause(RefPtr<JavaScriptCallFrame>& topFrame); - protected: - InspectorDebuggerAgent(InstrumentingAgents*, InspectorCompositeState*, InjectedScriptManager*); + explicit InspectorDebuggerAgent(InjectedScriptManager*); virtual void startListeningScriptDebugServer() = 0; virtual void stopListeningScriptDebugServer() = 0; @@ -174,22 +191,23 @@ protected: virtual void enable(); virtual void disable(); - virtual void didPause(ScriptState*, const ScriptValue& callFrames, const ScriptValue& exception, const Vector<String>& hitBreakpoints); - virtual void didContinue(); + virtual SkipPauseRequest didPause(ScriptState*, const ScriptValue& callFrames, const ScriptValue& exception, const Vector<String>& hitBreakpoints) OVERRIDE FINAL; + virtual void didContinue() OVERRIDE FINAL; void reset(); void pageDidCommitLoad(); private: + SkipPauseRequest shouldSkipExceptionPause(); + SkipPauseRequest shouldSkipStepPause(); + void cancelPauseOnNextStatement(); void addMessageToConsole(MessageSource, MessageType); - bool enabled(); - PassRefPtr<TypeBuilder::Array<TypeBuilder::Debugger::CallFrame> > currentCallFrames(); PassRefPtr<TypeBuilder::Debugger::StackTrace> currentAsyncStackTrace(); - virtual void didParseSource(const String& scriptId, const Script&); - virtual void failedToParseSource(const String& url, const String& data, int firstLine, int errorLine, const String& errorMessage); + virtual void didParseSource(const String& scriptId, const Script&) OVERRIDE FINAL; + virtual void failedToParseSource(const String& url, const String& data, int firstLine, int errorLine, const String& errorMessage) OVERRIDE FINAL; void setPauseOnExceptionsImpl(ErrorString*, int); @@ -203,15 +221,13 @@ private: String scriptURL(JavaScriptCallFrame*); - ScriptValue resolveCallFrame(ErrorString*, const String* callFrameId); - typedef HashMap<String, Script> ScriptsMap; typedef HashMap<String, Vector<String> > BreakpointIdToDebugServerBreakpointIdsMap; typedef HashMap<String, std::pair<String, BreakpointSource> > DebugServerBreakpointToBreakpointIdAndSourceMap; InjectedScriptManager* m_injectedScriptManager; InspectorFrontend::Debugger* m_frontend; - ScriptState* m_pausedScriptState; + RefPtr<ScriptState> m_pausedScriptState; ScriptValue m_currentCallStack; ScriptsMap m_scripts; BreakpointIdToDebugServerBreakpointIdsMap m_breakpointIdToDebugServerBreakpointIds; @@ -220,9 +236,12 @@ private: InspectorFrontend::Debugger::Reason::Enum m_breakReason; RefPtr<JSONObject> m_breakAuxData; bool m_javaScriptPauseScheduled; + bool m_debuggerStepScheduled; + bool m_pausingOnNativeEvent; Listener* m_listener; - int m_skipStepInCount; + int m_skippedStepInCount; + int m_minFrameCountForSkip; bool m_skipAllPauses; OwnPtr<ScriptRegexp> m_cachedSkipStackRegExp; AsyncCallStackTracker m_asyncCallStackTracker; |