diff options
author | Ben Murdoch <benm@google.com> | 2011-05-24 11:24:40 +0100 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2011-06-02 09:53:15 +0100 |
commit | 81bc750723a18f21cd17d1b173cd2a4dda9cea6e (patch) | |
tree | 7a9e5ed86ff429fd347a25153107221543909b19 /Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp | |
parent | 94088a6d336c1dd80a1e734af51e96abcbb689a7 (diff) | |
download | external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.zip external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.tar.gz external_webkit-81bc750723a18f21cd17d1b173cd2a4dda9cea6e.tar.bz2 |
Merge WebKit at r80534: Intial merge by Git
Change-Id: Ia7a83357124c9e1cdb1debf55d9661ec0bd09a61
Diffstat (limited to 'Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp')
-rw-r--r-- | Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp | 102 |
1 files changed, 73 insertions, 29 deletions
diff --git a/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp b/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp index 5fe9937..0cba775 100644 --- a/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp +++ b/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp @@ -35,10 +35,11 @@ #if ENABLE(INSPECTOR) && ENABLE(JAVASCRIPT_DEBUGGER) #include "HTMLElement.h" -#include "InspectorAgent.h" #include "InspectorDOMAgent.h" #include "InspectorDebuggerAgent.h" #include "InspectorState.h" +#include "InspectorValues.h" +#include "InstrumentingAgents.h" #include <wtf/text/CString.h> namespace { @@ -65,26 +66,61 @@ namespace BrowserDebuggerAgentState { static const char browserBreakpoints[] = "browserBreakpoints"; } -PassOwnPtr<InspectorBrowserDebuggerAgent> InspectorBrowserDebuggerAgent::create(InspectorAgent* inspectorAgent, bool eraseStickyBreakpoints) +PassOwnPtr<InspectorBrowserDebuggerAgent> InspectorBrowserDebuggerAgent::create(InstrumentingAgents* instrumentingAgents, InspectorState* inspectorState, InspectorDOMAgent* domAgent, InspectorDebuggerAgent* debuggerAgent, InspectorAgent* inspectorAgent) { - return adoptPtr(new InspectorBrowserDebuggerAgent(inspectorAgent, eraseStickyBreakpoints)); + return adoptPtr(new InspectorBrowserDebuggerAgent(instrumentingAgents, inspectorState, domAgent, debuggerAgent, inspectorAgent)); } -InspectorBrowserDebuggerAgent::InspectorBrowserDebuggerAgent(InspectorAgent* inspectorAgent, bool eraseStickyBreakpoints) - : m_inspectorAgent(inspectorAgent) +InspectorBrowserDebuggerAgent::InspectorBrowserDebuggerAgent(InstrumentingAgents* instrumentingAgents, InspectorState* inspectorState, InspectorDOMAgent* domAgent, InspectorDebuggerAgent* debuggerAgent, InspectorAgent* inspectorAgent) + : m_instrumentingAgents(instrumentingAgents) + , m_inspectorState(inspectorState) + , m_domAgent(domAgent) + , m_debuggerAgent(debuggerAgent) + , m_inspectorAgent(inspectorAgent) , m_hasXHRBreakpointWithEmptyURL(false) { - if (eraseStickyBreakpoints) - inspectorAgent->state()->setObject(BrowserDebuggerAgentState::browserBreakpoints, InspectorObject::create()); + m_debuggerAgent->setListener(this); } InspectorBrowserDebuggerAgent::~InspectorBrowserDebuggerAgent() { + m_debuggerAgent->setListener(0); + ASSERT(!m_instrumentingAgents->inspectorBrowserDebuggerAgent()); } -void InspectorBrowserDebuggerAgent::setAllBrowserBreakpoints(PassRefPtr<InspectorObject> breakpoints) +// Browser debugger agent enabled only when JS debugger is enabled. +void InspectorBrowserDebuggerAgent::debuggerWasEnabled() { - m_inspectorAgent->state()->setObject(BrowserDebuggerAgentState::browserBreakpoints, breakpoints); + m_instrumentingAgents->setInspectorBrowserDebuggerAgent(this); +} + +void InspectorBrowserDebuggerAgent::debuggerWasDisabled() +{ + disable(); +} + +void InspectorBrowserDebuggerAgent::disable() +{ + m_instrumentingAgents->setInspectorBrowserDebuggerAgent(0); + clear(); +} + +void InspectorBrowserDebuggerAgent::setFrontend(InspectorFrontend*) +{ + // Erase sticky breakpoints. If we are restoring from a cookie setFrontend msut be called + // before the state is loaded from the cookie. + m_inspectorState->setObject(BrowserDebuggerAgentState::browserBreakpoints, InspectorObject::create()); +} + +void InspectorBrowserDebuggerAgent::clearFrontend() +{ + disable(); +} + +void InspectorBrowserDebuggerAgent::setAllBrowserBreakpoints(ErrorString*, PassRefPtr<InspectorObject> breakpoints) +{ + m_inspectorState->setObject(BrowserDebuggerAgentState::browserBreakpoints, breakpoints); + // FIXME: remove this call to inspector agent and dependency on the inspector agent. inspectedURLChanged(m_inspectorAgent->inspectedURLWithoutFragment()); } @@ -94,7 +130,7 @@ void InspectorBrowserDebuggerAgent::inspectedURLChanged(const String& url) m_XHRBreakpoints.clear(); m_hasXHRBreakpointWithEmptyURL = false; - RefPtr<InspectorObject> allBreakpoints = m_inspectorAgent->state()->getObject(BrowserDebuggerAgentState::browserBreakpoints); + RefPtr<InspectorObject> allBreakpoints = m_inspectorState->getObject(BrowserDebuggerAgentState::browserBreakpoints); RefPtr<InspectorArray> breakpoints = allBreakpoints->getArray(url); if (!breakpoints) return; @@ -116,20 +152,21 @@ void InspectorBrowserDebuggerAgent::restoreStickyBreakpoint(PassRefPtr<Inspector if (!condition) return; + ErrorString error; if (type == eventListenerNativeBreakpointType) { if (!enabled) return; String eventName; if (!condition->getString("eventName", &eventName)) return; - setEventListenerBreakpoint(eventName); + setEventListenerBreakpoint(&error, eventName); } else if (type == xhrNativeBreakpointType) { if (!enabled) return; String url; if (!condition->getString("url", &url)) return; - setXHRBreakpoint(url); + setXHRBreakpoint(&error, url); } } @@ -138,12 +175,12 @@ void InspectorBrowserDebuggerAgent::discardBindings() m_domBreakpoints.clear(); } -void InspectorBrowserDebuggerAgent::setEventListenerBreakpoint(const String& eventName) +void InspectorBrowserDebuggerAgent::setEventListenerBreakpoint(ErrorString*, const String& eventName) { m_eventListenerBreakpoints.add(eventName); } -void InspectorBrowserDebuggerAgent::removeEventListenerBreakpoint(const String& eventName) +void InspectorBrowserDebuggerAgent::removeEventListenerBreakpoint(ErrorString*, const String& eventName) { m_eventListenerBreakpoints.remove(eventName); } @@ -176,9 +213,9 @@ void InspectorBrowserDebuggerAgent::didRemoveDOMNode(Node* node) } } -void InspectorBrowserDebuggerAgent::setDOMBreakpoint(long nodeId, long type) +void InspectorBrowserDebuggerAgent::setDOMBreakpoint(ErrorString*, long nodeId, long type) { - Node* node = m_inspectorAgent->domAgent()->nodeForId(nodeId); + Node* node = m_domAgent->nodeForId(nodeId); if (!node) return; @@ -190,9 +227,9 @@ void InspectorBrowserDebuggerAgent::setDOMBreakpoint(long nodeId, long type) } } -void InspectorBrowserDebuggerAgent::removeDOMBreakpoint(long nodeId, long type) +void InspectorBrowserDebuggerAgent::removeDOMBreakpoint(ErrorString*, long nodeId, long type) { - Node* node = m_inspectorAgent->domAgent()->nodeForId(nodeId); + Node* node = m_domAgent->nodeForId(nodeId); if (!node) return; @@ -211,7 +248,7 @@ void InspectorBrowserDebuggerAgent::removeDOMBreakpoint(long nodeId, long type) void InspectorBrowserDebuggerAgent::willInsertDOMNode(Node*, Node* parent) { - InspectorDebuggerAgent* debuggerAgent = m_inspectorAgent->debuggerAgent(); + InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent; if (!debuggerAgent) return; @@ -225,7 +262,7 @@ void InspectorBrowserDebuggerAgent::willInsertDOMNode(Node*, Node* parent) void InspectorBrowserDebuggerAgent::willRemoveDOMNode(Node* node) { - InspectorDebuggerAgent* debuggerAgent = m_inspectorAgent->debuggerAgent(); + InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent; if (!debuggerAgent) return; @@ -244,7 +281,7 @@ void InspectorBrowserDebuggerAgent::willRemoveDOMNode(Node* node) void InspectorBrowserDebuggerAgent::willModifyDOMAttr(Element* element) { - InspectorDebuggerAgent* debuggerAgent = m_inspectorAgent->debuggerAgent(); + InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent; if (!debuggerAgent) return; @@ -264,9 +301,8 @@ void InspectorBrowserDebuggerAgent::descriptionForDOMEvent(Node* target, long br if ((1 << breakpointType) & inheritableDOMBreakpointTypesMask) { // For inheritable breakpoint types, target node isn't always the same as the node that owns a breakpoint. // Target node may be unknown to frontend, so we need to push it first. - long targetNodeId = m_inspectorAgent->domAgent()->pushNodePathToFrontend(target); - ASSERT(targetNodeId); - description->setNumber("targetNodeId", targetNodeId); + RefPtr<InspectorObject> targetNodeObject = m_domAgent->resolveNode(target, ""); + description->setObject("targetNode", targetNodeObject); // Find breakpoint owner node. if (!insertion) @@ -281,7 +317,7 @@ void InspectorBrowserDebuggerAgent::descriptionForDOMEvent(Node* target, long br description->setBoolean("insertion", insertion); } - long breakpointOwnerNodeId = m_inspectorAgent->domAgent()->pushNodePathToFrontend(breakpointOwner); + long breakpointOwnerNodeId = m_domAgent->boundNodeId(breakpointOwner); ASSERT(breakpointOwnerNodeId); description->setNumber("nodeId", breakpointOwnerNodeId); description->setNumber("type", breakpointType); @@ -314,7 +350,7 @@ void InspectorBrowserDebuggerAgent::updateSubtreeBreakpoints(Node* node, uint32_ void InspectorBrowserDebuggerAgent::pauseOnNativeEventIfNeeded(const String& categoryType, const String& eventName, bool synchronous) { - InspectorDebuggerAgent* debuggerAgent = m_inspectorAgent->debuggerAgent(); + InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent; if (!debuggerAgent) return; @@ -331,7 +367,7 @@ void InspectorBrowserDebuggerAgent::pauseOnNativeEventIfNeeded(const String& cat debuggerAgent->schedulePauseOnNextStatement(NativeBreakpointDebuggerEventType, eventData.release()); } -void InspectorBrowserDebuggerAgent::setXHRBreakpoint(const String& url) +void InspectorBrowserDebuggerAgent::setXHRBreakpoint(ErrorString*, const String& url) { if (url.isEmpty()) m_hasXHRBreakpointWithEmptyURL = true; @@ -339,7 +375,7 @@ void InspectorBrowserDebuggerAgent::setXHRBreakpoint(const String& url) m_XHRBreakpoints.add(url); } -void InspectorBrowserDebuggerAgent::removeXHRBreakpoint(const String& url) +void InspectorBrowserDebuggerAgent::removeXHRBreakpoint(ErrorString*, const String& url) { if (url.isEmpty()) m_hasXHRBreakpointWithEmptyURL = false; @@ -349,7 +385,7 @@ void InspectorBrowserDebuggerAgent::removeXHRBreakpoint(const String& url) void InspectorBrowserDebuggerAgent::willSendXMLHttpRequest(const String& url) { - InspectorDebuggerAgent* debuggerAgent = m_inspectorAgent->debuggerAgent(); + InspectorDebuggerAgent* debuggerAgent = m_debuggerAgent; if (!debuggerAgent) return; @@ -375,6 +411,14 @@ void InspectorBrowserDebuggerAgent::willSendXMLHttpRequest(const String& url) debuggerAgent->breakProgram(NativeBreakpointDebuggerEventType, eventData.release()); } +void InspectorBrowserDebuggerAgent::clear() +{ + m_domBreakpoints.clear(); + m_eventListenerBreakpoints.clear(); + m_XHRBreakpoints.clear(); + m_hasXHRBreakpointWithEmptyURL = false; +} + } // namespace WebCore #endif // ENABLE(INSPECTOR) && ENABLE(JAVASCRIPT_DEBUGGER) |