15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2010 Apple Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2010-2011 Google Inc. All rights reserved. 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * its contributors may be used to endorse or promote products derived 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * from this software without specific prior written permission. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef InspectorDebuggerAgent_h 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define InspectorDebuggerAgent_h 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "InspectorFrontend.h" 3453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "bindings/v8/ScriptState.h" 3553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/ConsoleAPITypes.h" 3653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/InjectedScript.h" 3753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/InspectorBaseAgent.h" 3853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/ScriptBreakpoint.h" 3953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/inspector/ScriptDebugListener.h" 4053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/page/ConsoleTypes.h" 41591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/Forward.h" 42591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/HashMap.h" 43591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/PassRefPtr.h" 44591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/Vector.h" 45591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "wtf/text/StringHash.h" 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore { 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class InjectedScriptManager; 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class InspectorFrontend; 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class InstrumentingAgents; 52591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdochclass JSONObject; 535267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class ScriptArguments; 545267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class ScriptCallStack; 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class ScriptDebugServer; 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class ScriptValue; 57f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles)class RegularExpression; 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)typedef String ErrorString; 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class InspectorDebuggerAgent : public InspectorBaseAgent<InspectorDebuggerAgent>, public ScriptDebugListener, public InspectorBackendDispatcher::DebuggerCommandHandler { 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WTF_MAKE_NONCOPYABLE(InspectorDebuggerAgent); WTF_MAKE_FAST_ALLOCATED; 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 645267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) enum BreakpointSource { 655267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) UserBreakpointSource, 66521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) DebugCommandBreakpointSource, 67521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) MonitorCommandBreakpointSource 685267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) }; 695267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static const char* backtraceObjectGroup; 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual ~InspectorDebuggerAgent(); 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 7453e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) virtual void canSetScriptSource(ErrorString*, bool* result) { *result = true; } 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void setFrontend(InspectorFrontend*); 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void clearFrontend(); 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void restore(); 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool isPaused(); 81926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) bool runningNestedMessageLoop(); 825267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String&, PassRefPtr<ScriptCallStack>, unsigned long); 835267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) void addMessageToConsole(MessageSource, MessageType, MessageLevel, const String&, ScriptState*, PassRefPtr<ScriptArguments>, unsigned long); 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Part of the protocol. 86926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) virtual void enable(ErrorString*); 87926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) virtual void disable(ErrorString*); 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void setBreakpointsActive(ErrorString*, bool active); 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 90e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch 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); 91591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch virtual void setBreakpoint(ErrorString*, const RefPtr<JSONObject>& location, const String* optionalCondition, TypeBuilder::Debugger::BreakpointId*, RefPtr<TypeBuilder::Debugger::Location>& actualLocation); 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void removeBreakpoint(ErrorString*, const String& breakpointId); 93e69819bd8e388ea4ad1636a19aa6b2eed4952191Ben Murdoch virtual void continueToLocation(ErrorString*, const RefPtr<JSONObject>& location, const bool* interstateLocationOpt); 947757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch virtual void getStepInPositions(ErrorString*, const String& callFrameId, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::Location> >& positions); 957757ec2eadfa2dd8ac2aeed0a4399e9b07ec38cbBen Murdoch virtual void getBacktrace(ErrorString*, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::CallFrame> >&); 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void searchInContent(ErrorString*, const String& scriptId, const String& query, const bool* optionalCaseSensitive, const bool* optionalIsRegex, RefPtr<TypeBuilder::Array<TypeBuilder::Page::SearchMatch> >&); 98591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch 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); 99591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch virtual void restartFrame(ErrorString*, const String& callFrameId, RefPtr<TypeBuilder::Array<TypeBuilder::Debugger::CallFrame> >& newCallFrames, RefPtr<JSONObject>& result); 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void getScriptSource(ErrorString*, const String& scriptId, String* scriptSource); 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void getFunctionDetails(ErrorString*, const String& functionId, RefPtr<TypeBuilder::Debugger::FunctionDetails>&); 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void pause(ErrorString*); 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void resume(ErrorString*); 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void stepOver(ErrorString*); 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void stepInto(ErrorString*); 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void stepOut(ErrorString*); 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void setPauseOnExceptions(ErrorString*, const String& pauseState); 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void evaluateOnCallFrame(ErrorString*, 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const String& callFrameId, 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const String& expression, 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const String* objectGroup, 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const bool* includeCommandLineAPI, 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const bool* doNotPauseOnExceptionsAndMuteConsole, 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const bool* returnByValue, 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const bool* generatePreview, 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) RefPtr<TypeBuilder::Runtime::RemoteObject>& result, 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) TypeBuilder::OptOutput<bool>* wasThrown); 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void compileScript(ErrorString*, const String& expression, const String& sourceURL, TypeBuilder::OptOutput<TypeBuilder::Debugger::ScriptId>*, TypeBuilder::OptOutput<String>* syntaxErrorMessage); 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 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); 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void setOverlayMessage(ErrorString*, const String*); 121591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch virtual void setVariableValue(ErrorString*, int in_scopeNumber, const String& in_variableName, const RefPtr<JSONObject>& in_newValue, const String* in_callFrame, const String* in_functionObjectId); 122f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) virtual void skipStackFrames(ErrorString*, const String* pattern); 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 124591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch void schedulePauseOnNextStatement(InspectorFrontend::Debugger::Reason::Enum breakReason, PassRefPtr<JSONObject> data); 12593ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) void didFireTimer(); 12693ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) void didHandleEvent(); 127521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) bool canBreakProgram(); 128591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch void breakProgram(InspectorFrontend::Debugger::Reason::Enum breakReason, PassRefPtr<JSONObject> data); 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void scriptExecutionBlockedByCSP(const String& directiveText); 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) class Listener { 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) public: 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual ~Listener() { } 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void debuggerWasEnabled() = 0; 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void debuggerWasDisabled() = 0; 136926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) virtual void stepInto() = 0; 137926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) virtual void didPause() = 0; 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setListener(Listener* listener) { m_listener = listener; } 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual ScriptDebugServer& scriptDebugServer() = 0; 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 143521d96ec04ace82590870fb04353ec4f82bb150fTorne (Richard Coles) void setBreakpoint(const String& scriptId, int lineNumber, int columnNumber, BreakpointSource, const String& condition = String()); 1445267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) void removeBreakpoint(const String& scriptId, int lineNumber, int columnNumber, BreakpointSource); 1455267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) 146f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) SkipPauseRequest shouldSkipExceptionPause(RefPtr<JavaScriptCallFrame>& topFrame); 147f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) SkipPauseRequest shouldSkipBreakpointPause(RefPtr<JavaScriptCallFrame>& topFrame); 148f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) SkipPauseRequest shouldSkipStepPause(RefPtr<JavaScriptCallFrame>& topFrame); 149f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)protected: 151926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) InspectorDebuggerAgent(InstrumentingAgents*, InspectorCompositeState*, InjectedScriptManager*); 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void startListeningScriptDebugServer() = 0; 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void stopListeningScriptDebugServer() = 0; 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void muteConsole() = 0; 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void unmuteConsole() = 0; 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InjectedScriptManager* injectedScriptManager() { return m_injectedScriptManager; } 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual InjectedScript injectedScriptForEval(ErrorString*, const int* executionContextId) = 0; 1595267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) virtual void addConsoleMessage(MessageSource, MessageLevel, const String& message, const String& sourceURL) = 0; 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 161926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) virtual void enable(); 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void disable(); 1635267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) virtual void didPause(ScriptState*, const ScriptValue& callFrames, const ScriptValue& exception, const Vector<String>& hitBreakpoints); 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void didContinue(); 165926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) void reset(); 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private: 16893ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) void cancelPauseOnNextStatement(); 1695267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) void addMessageToConsole(MessageSource, MessageType); 17093ac45cfc74041c8ae536ce58a9534d46db2024eTorne (Richard Coles) 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool enabled(); 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PassRefPtr<TypeBuilder::Array<TypeBuilder::Debugger::CallFrame> > currentCallFrames(); 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void didParseSource(const String& scriptId, const Script&); 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) virtual void failedToParseSource(const String& url, const String& data, int firstLine, int errorLine, const String& errorMessage); 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setPauseOnExceptionsImpl(ErrorString*, int); 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1805267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) PassRefPtr<TypeBuilder::Debugger::Location> resolveBreakpoint(const String& breakpointId, const String& scriptId, const ScriptBreakpoint&, BreakpointSource); 1815267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) void removeBreakpoint(const String& breakpointId); 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void clear(); 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool assertPaused(ErrorString*); 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void clearBreakDetails(); 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String sourceMapURLForScript(const Script&); 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 188f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) String scriptURL(JavaScriptCallFrame*); 189f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) typedef HashMap<String, Script> ScriptsMap; 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) typedef HashMap<String, Vector<String> > BreakpointIdToDebugServerBreakpointIdsMap; 1925267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) typedef HashMap<String, std::pair<String, BreakpointSource> > DebugServerBreakpointToBreakpointIdAndSourceMap; 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InjectedScriptManager* m_injectedScriptManager; 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorFrontend::Debugger* m_frontend; 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ScriptState* m_pausedScriptState; 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ScriptValue m_currentCallStack; 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ScriptsMap m_scripts; 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) BreakpointIdToDebugServerBreakpointIdsMap m_breakpointIdToDebugServerBreakpointIds; 2005267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) DebugServerBreakpointToBreakpointIdAndSourceMap m_serverBreakpoints; 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String m_continueToLocationBreakpointId; 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) InspectorFrontend::Debugger::Reason::Enum m_breakReason; 203591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch RefPtr<JSONObject> m_breakAuxData; 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool m_javaScriptPauseScheduled; 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Listener* m_listener; 206f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) 207f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) int m_skipStepInCount; 208f5e4ad553afbc08dd2e729bb77e937a9a94d5827Torne (Richard Coles) OwnPtr<RegularExpression> m_cachedSkipStackRegExp; 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace WebCore 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // !defined(InspectorDebuggerAgent_h) 215