Changeset 76581 in webkit
- Timestamp:
- Jan 25, 2011 1:44:30 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r76578 r76581 1 2011-01-24 Pavel Podivilov <podivilov@chromium.org> 2 3 Reviewed by Pavel Feldman. 4 5 Web Inspector: debugger and browser debugger agents should manage sticky breakpoints independently. 6 https://bugs.webkit.org/show_bug.cgi?id=52999 7 8 * inspector/Inspector.idl: 9 * inspector/InspectorAgent.cpp: 10 (WebCore::InspectorAgent::didCommitLoad): 11 (WebCore::InspectorAgent::enableDebugger): 12 (WebCore::InspectorAgent::inspectedURLWithoutFragment): 13 * inspector/InspectorAgent.h: 14 * inspector/InspectorBrowserDebuggerAgent.cpp: 15 (WebCore::InspectorBrowserDebuggerAgent::setAllBrowserBreakpoints): 16 (WebCore::InspectorBrowserDebuggerAgent::inspectedURLChanged): 17 (WebCore::InspectorBrowserDebuggerAgent::restoreStickyBreakpoint): 18 * inspector/InspectorBrowserDebuggerAgent.h: 19 * inspector/InspectorDebuggerAgent.cpp: 20 (WebCore::InspectorDebuggerAgent::InspectorDebuggerAgent): 21 (WebCore::InspectorDebuggerAgent::setAllJavaScriptBreakpoints): 22 (WebCore::InspectorDebuggerAgent::inspectedURLChanged): 23 (WebCore::InspectorDebuggerAgent::restoreBreakpoints): 24 * inspector/InspectorDebuggerAgent.h: 25 * inspector/InspectorState.cpp: 26 (WebCore::InspectorState::InspectorState): 27 * inspector/InspectorState.h: 28 * inspector/front-end/BreakpointManager.js: 29 (WebInspector.BreakpointManager): 30 (WebInspector.BreakpointManager.prototype._projectChanged): 31 (WebInspector.BreakpointManager.prototype._saveBreakpoints): 32 (WebInspector.BreakpointManager.prototype._pushBreakpointsToBackend): 33 1 34 2011-01-25 Carlos Garcia Campos <cgarcia@igalia.com> 2 35 -
trunk/Source/WebCore/inspector/Inspector.idl
r76509 r76581 243 243 [domain=Inspector] void disableDebugger(in boolean always); 244 244 245 [domain=Inspector] void setAllBrowserBreakpoints(in Object breakpoints);246 247 245 [notify, domain=Debugger] void debuggerWasEnabled(); 248 246 [notify, domain=Debugger] void debuggerWasDisabled(); … … 254 252 [domain=Debugger] void deactivateBreakpoints(); 255 253 254 [domain=Debugger] void setAllJavaScriptBreakpoints(in Object breakpoints); 256 255 [domain=Debugger] void setBreakpoint(in Object breakpoint, out String breakpointId, out long actualLineNumber, out long actualColumnNumber); 257 256 [domain=Debugger] void removeBreakpoint(in String breakpointId); 258 257 258 [domain=BrowserDebugger] void setAllBrowserBreakpoints(in Object breakpoints); 259 259 [domain=BrowserDebugger] void setDOMBreakpoint(in long nodeId, in long type); 260 260 [domain=BrowserDebugger] void removeDOMBreakpoint(in long nodeId, in long type); -
trunk/Source/WebCore/inspector/InspectorAgent.cpp
r76459 r76581 645 645 #if ENABLE(JAVASCRIPT_DEBUGGER) 646 646 if (m_debuggerAgent) { 647 m_debuggerAgent->clearForPageNavigation(); 647 KURL url = inspectedURLWithoutFragment(); 648 m_debuggerAgent->inspectedURLChanged(url); 648 649 if (m_browserDebuggerAgent) 649 m_browserDebuggerAgent->inspectedURLChanged( inspectedURL());650 m_browserDebuggerAgent->inspectedURLChanged(url); 650 651 } 651 652 #endif … … 1053 1054 m_debuggerAgent = InspectorDebuggerAgent::create(this, m_frontend.get()); 1054 1055 m_browserDebuggerAgent = InspectorBrowserDebuggerAgent::create(this); 1055 m_browserDebuggerAgent->inspectedURLChanged(inspectedURL());1056 1056 1057 1057 m_frontend->debuggerWasEnabled(); … … 1391 1391 } 1392 1392 1393 KURL InspectorAgent::inspectedURLWithoutFragment() const 1394 { 1395 KURL url = inspectedURL(); 1396 url.removeFragmentIdentifier(); 1397 return url; 1398 } 1399 1393 1400 void InspectorAgent::reloadPage() 1394 1401 { -
trunk/Source/WebCore/inspector/InspectorAgent.h
r76459 r76581 129 129 Page* inspectedPage() const { return m_inspectedPage; } 130 130 KURL inspectedURL() const; 131 KURL inspectedURLWithoutFragment() const; 131 132 void reloadPage(); 132 133 -
trunk/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp
r76509 r76581 72 72 } 73 73 74 void InspectorBrowserDebuggerAgent::inspectedURLChanged(const KURL& url) 74 void InspectorBrowserDebuggerAgent::setAllBrowserBreakpoints(PassRefPtr<InspectorObject> breakpoints) 75 { 76 m_inspectorAgent->state()->setObject(InspectorState::browserBreakpoints, breakpoints); 77 inspectedURLChanged(m_inspectorAgent->inspectedURLWithoutFragment()); 78 } 79 80 void InspectorBrowserDebuggerAgent::inspectedURLChanged(const String& url) 75 81 { 76 82 m_eventListenerBreakpoints.clear(); … … 79 85 80 86 RefPtr<InspectorObject> allBreakpoints = m_inspectorAgent->state()->getObject(InspectorState::browserBreakpoints); 81 KURL urlCopy = url; 82 urlCopy.removeFragmentIdentifier(); 83 RefPtr<InspectorArray> breakpoints = allBreakpoints->getArray(urlCopy); 87 RefPtr<InspectorArray> breakpoints = allBreakpoints->getArray(url); 84 88 if (!breakpoints) 85 89 return; … … 90 94 void InspectorBrowserDebuggerAgent::restoreStickyBreakpoint(PassRefPtr<InspectorObject> breakpoint) 91 95 { 92 DEFINE_STATIC_LOCAL(String, eventListenerBreakpointType, ("EventListener"));93 DEFINE_STATIC_LOCAL(String, javaScriptBreakpointType, ("JS"));94 DEFINE_STATIC_LOCAL(String, xhrBreakpointType, ("XHR"));95 96 96 if (!breakpoint) 97 97 return; … … 106 106 return; 107 107 108 if (type == eventListener BreakpointType) {108 if (type == eventListenerNativeBreakpointType) { 109 109 if (!enabled) 110 110 return; … … 113 113 return; 114 114 setEventListenerBreakpoint(eventName); 115 } else if (type == javaScriptBreakpointType && m_inspectorAgent->debuggerAgent()) { 116 String url; 117 if (!condition->getString("url", &url)) 118 return; 119 double lineNumber; 120 if (!condition->getNumber("lineNumber", &lineNumber)) 121 return; 122 double columnNumber; 123 if (!condition->getNumber("columnNumber", &columnNumber)) 124 return; 125 String javaScriptCondition; 126 if (!condition->getString("condition", &javaScriptCondition)) 127 return; 128 m_inspectorAgent->debuggerAgent()->setStickyBreakpoint(url, ScriptBreakpoint(long(lineNumber), long(columnNumber), javaScriptCondition, enabled)); 129 } else if (type == xhrBreakpointType) { 115 } else if (type == xhrNativeBreakpointType) { 130 116 if (!enabled) 131 117 return; -
trunk/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.h
r76459 r76581 47 47 class InspectorAgent; 48 48 class InspectorObject; 49 class KURL;50 49 class Node; 51 50 … … 60 59 virtual ~InspectorBrowserDebuggerAgent(); 61 60 62 void inspectedURLChanged(const KURL&); 61 void setAllBrowserBreakpoints(PassRefPtr<InspectorObject>); 62 void inspectedURLChanged(const String& url); 63 63 64 64 // BrowserDebugger API for InspectorFrontend -
trunk/Source/WebCore/inspector/InspectorDebuggerAgent.cpp
r76512 r76581 35 35 #include "InjectedScriptHost.h" 36 36 #include "InspectorFrontend.h" 37 #include "InspectorState.h" 37 38 #include "InspectorValues.h" 38 39 #include "PlatformString.h" … … 56 57 , m_pausedScriptState(0) 57 58 , m_javaScriptPauseScheduled(false) 59 , m_breakpointsRestored(false) 58 60 { 59 61 } … … 78 80 { 79 81 ScriptDebugServer::shared().deactivateBreakpoints(); 82 } 83 84 void InspectorDebuggerAgent::setAllJavaScriptBreakpoints(PassRefPtr<InspectorObject> breakpoints) 85 { 86 m_inspectorAgent->state()->setObject(InspectorState::javaScriptBreakpoints, breakpoints); 87 if (!m_breakpointsRestored) { 88 restoreBreakpoints(m_inspectorAgent->inspectedURLWithoutFragment()); 89 m_breakpointsRestored = true; 90 } 91 } 92 93 void InspectorDebuggerAgent::inspectedURLChanged(const String& url) 94 { 95 m_scriptIDToContent.clear(); 96 m_urlToSourceIDs.clear(); 97 restoreBreakpoints(url); 98 } 99 100 void InspectorDebuggerAgent::restoreBreakpoints(const String& inspectedURL) 101 { 102 m_stickyBreakpoints.clear(); 103 104 RefPtr<InspectorObject> allBreakpoints = m_inspectorAgent->state()->getObject(InspectorState::javaScriptBreakpoints); 105 RefPtr<InspectorArray> breakpoints = allBreakpoints->getArray(inspectedURL); 106 if (!breakpoints) 107 return; 108 for (unsigned i = 0; i < breakpoints->length(); ++i) { 109 RefPtr<InspectorObject> breakpoint = breakpoints->get(i)->asObject(); 110 if (!breakpoint) 111 continue; 112 String url; 113 if (!breakpoint->getString("url", &url)) 114 continue; 115 double lineNumber; 116 if (!breakpoint->getNumber("lineNumber", &lineNumber)) 117 continue; 118 double columnNumber; 119 if (!breakpoint->getNumber("columnNumber", &columnNumber)) 120 return; 121 String condition; 122 if (!breakpoint->getString("condition", &condition)) 123 continue; 124 bool enabled; 125 if (!breakpoint->getBoolean("enabled", &enabled)) 126 continue; 127 ScriptBreakpoint scriptBreakpoint((long) lineNumber, (long) columnNumber, condition, enabled); 128 setStickyBreakpoint(url, scriptBreakpoint); 129 } 80 130 } 81 131 … … 214 264 } 215 265 216 void InspectorDebuggerAgent::clearForPageNavigation()217 {218 m_scriptIDToContent.clear();219 m_urlToSourceIDs.clear();220 m_stickyBreakpoints.clear();221 }222 223 266 PassRefPtr<InspectorValue> InspectorDebuggerAgent::currentCallFrames() 224 267 { -
trunk/Source/WebCore/inspector/InspectorDebuggerAgent.h
r76509 r76581 63 63 static bool isDebuggerAlwaysEnabled(); 64 64 65 void setAllJavaScriptBreakpoints(PassRefPtr<InspectorObject>); 66 void inspectedURLChanged(const String& url); 67 65 68 // Part of the protocol. 66 69 void activateBreakpoints(); … … 83 86 void getCompletionsOnCallFrame(PassRefPtr<InspectorObject> callFrameId, const String& expression, bool includeInspectorCommandLineAPI, RefPtr<InspectorValue>* result); 84 87 85 void clearForPageNavigation();86 87 88 private: 88 89 InspectorDebuggerAgent(InspectorAgent*, InspectorFrontend*); … … 95 96 virtual void didContinue(); 96 97 98 void restoreBreakpoints(const String& inspectedURL); 97 99 void restoreBreakpoint(const String& sourceID, const ScriptBreakpoint&); 98 100 … … 110 112 RefPtr<InspectorObject> m_breakProgramDetails; 111 113 bool m_javaScriptPauseScheduled; 114 bool m_breakpointsRestored; 112 115 }; 113 116 -
trunk/Source/WebCore/inspector/InspectorState.cpp
r76348 r76581 43 43 registerBoolean(timelineProfilerEnabled, false); 44 44 registerBoolean(searchingForNode, false); 45 registerObject(javaScriptBreakpoints); 45 46 registerObject(browserBreakpoints); 46 47 registerBoolean(consoleMessagesEnabled, false); -
trunk/Source/WebCore/inspector/InspectorState.h
r76348 r76581 50 50 consoleMessagesEnabled, 51 51 userInitiatedProfiling, 52 javaScriptBreakpoints, 52 53 browserBreakpoints, 53 54 resourceAgentEnabled, -
trunk/Source/WebCore/inspector/front-end/BreakpointManager.js
r76509 r76581 35 35 for (var projectId in breakpoints) 36 36 this._stickyBreakpoints[projectId] = this._validateBreakpoints(breakpoints[projectId]); 37 InspectorBackend.setAllBrowserBreakpoints(this._stickyBreakpoints);38 37 39 38 this._breakpoints = {}; … … 245 244 else if (breakpoint.type === WebInspector.BreakpointManager.BreakpointTypes.XHR) 246 245 this._createXHRBreakpoint(breakpoint.condition.url, breakpoint.enabled, true); 246 } 247 248 if (!this._breakpointsPushedToFrontend) { 249 this._pushBreakpointsToBackend(); 250 this._breakpointsPushedToFrontend = true; 247 251 } 248 252 }, … … 304 308 305 309 this._stickyBreakpoints[WebInspector.settings.projectId] = breakpoints; 306 InspectorBackend.setAllBrowserBreakpoints(this._stickyBreakpoints); 310 this._pushBreakpointsToBackend(); 311 }, 312 313 _pushBreakpointsToBackend: function() 314 { 315 var allJavaScriptBreakpoints = {}; 316 var allBrowserBreakpoints = {}; 317 for (var projectId in this._stickyBreakpoints) { 318 var breakpoints = this._stickyBreakpoints[projectId]; 319 var javaScriptBreakpoints = []; 320 var browserBreakpoints = []; 321 for (var i = 0; i < breakpoints.length; ++i) { 322 if (breakpoints[i].type == WebInspector.BreakpointManager.BreakpointTypes.JS) { 323 var data = {}; 324 data.enabled = breakpoints[i].enabled; 325 for (var p in breakpoints[i].condition) 326 data[p] = breakpoints[i].condition[p]; 327 javaScriptBreakpoints.push(data); 328 } else 329 browserBreakpoints.push(breakpoints[i]); 330 } 331 if (javaScriptBreakpoints.length) 332 allJavaScriptBreakpoints[projectId] = javaScriptBreakpoints; 333 if (browserBreakpoints.length) 334 allBrowserBreakpoints[projectId] = browserBreakpoints; 335 } 336 InspectorBackend.setAllJavaScriptBreakpoints(allJavaScriptBreakpoints); 337 InspectorBackend.setAllBrowserBreakpoints(allBrowserBreakpoints); 307 338 }, 308 339
Note: See TracChangeset
for help on using the changeset viewer.