summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.h')
-rw-r--r--chromium/third_party/WebKit/Source/core/inspector/InspectorDebuggerAgent.h149
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;