Changeset 76509 in webkit
- Timestamp:
- Jan 24, 2011 5:55:59 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 1 deleted
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/CMakeLists.txt
r76467 r76509 1180 1180 inspector/InspectorValues.cpp 1181 1181 inspector/ScriptArguments.cpp 1182 inspector/ScriptBreakpoint.cpp1183 1182 inspector/ScriptCallFrame.cpp 1184 1183 inspector/ScriptCallStack.cpp -
trunk/Source/WebCore/ChangeLog
r76505 r76509 1 2011-01-24 Pavel Podivilov <podivilov@chromium.org> 2 3 Reviewed by Yury Semikhatsky. 4 5 Web Inspector: set breakpoints by line:column. 6 https://bugs.webkit.org/show_bug.cgi?id=52615 7 8 * CMakeLists.txt: 9 * GNUmakefile.am: 10 * WebCore.gypi: 11 * WebCore.pro: 12 * WebCore.vcproj/WebCore.vcproj: 13 * WebCore.xcodeproj/project.pbxproj: 14 * bindings/js/ScriptDebugServer.cpp: 15 (WebCore::ScriptDebugServer::setBreakpoint): 16 (WebCore::ScriptDebugServer::removeBreakpoint): 17 (WebCore::ScriptDebugServer::hasBreakpoint): 18 (WebCore::ScriptDebugServer::clearBreakpoints): 19 * bindings/js/ScriptDebugServer.h: 20 * bindings/v8/DebuggerScript.js: 21 (): 22 * bindings/v8/ScriptDebugServer.cpp: 23 (WebCore::ScriptDebugServer::setBreakpoint): 24 * bindings/v8/ScriptDebugServer.h: 25 * inspector/Inspector.idl: 26 * inspector/InspectorBrowserDebuggerAgent.cpp: 27 (WebCore::InspectorBrowserDebuggerAgent::restoreStickyBreakpoint): 28 * inspector/InspectorDebuggerAgent.cpp: 29 (WebCore::InspectorDebuggerAgent::setStickyBreakpoint): 30 (WebCore::InspectorDebuggerAgent::setBreakpoint): 31 (WebCore::InspectorDebuggerAgent::restoreBreakpoint): 32 (WebCore::InspectorDebuggerAgent::didParseSource): 33 * inspector/InspectorDebuggerAgent.h: 34 * inspector/ScriptBreakpoint.cpp: Removed. 35 * inspector/ScriptBreakpoint.h: 36 (WebCore::ScriptBreakpoint::ScriptBreakpoint): 37 * inspector/front-end/Breakpoint.js: 38 (WebInspector.Breakpoint): 39 (WebInspector.Breakpoint.prototype.get url): 40 * inspector/front-end/BreakpointManager.js: 41 (WebInspector.JavaScriptBreakpoint.prototype._serializeToJSON): 42 * inspector/front-end/DebuggerModel.js: 43 (WebInspector.DebuggerModel.prototype.continueToLine): 44 (WebInspector.DebuggerModel.prototype.setBreakpoint): 45 (WebInspector.DebuggerModel.prototype._breakpointSetOnBackend): 46 (WebInspector.DebuggerDispatcher.prototype.breakpointResolved): 47 1 48 2011-01-24 Peter Beverloo <peter@chromium.org> 2 49 -
trunk/Source/WebCore/GNUmakefile.am
r76493 r76509 2008 2008 Source/WebCore/inspector/ScriptArguments.cpp \ 2009 2009 Source/WebCore/inspector/ScriptArguments.h \ 2010 Source/WebCore/inspector/ScriptBreakpoint.cpp \2011 2010 Source/WebCore/inspector/ScriptBreakpoint.h \ 2012 2011 Source/WebCore/inspector/ScriptCallFrame.cpp \ -
trunk/Source/WebCore/WebCore.gypi
r76497 r76509 2059 2059 'inspector/InspectorValues.h', 2060 2060 'inspector/InspectorWorkerResource.h', 2061 'inspector/ScriptBreakpoint.cpp',2062 2061 'inspector/ScriptBreakpoint.h', 2063 2062 'inspector/ScriptArguments.cpp', -
trunk/Source/WebCore/WebCore.pro
r76496 r76509 1069 1069 inspector/InspectorValues.cpp \ 1070 1070 inspector/ScriptArguments.cpp \ 1071 inspector/ScriptBreakpoint.cpp \1072 1071 inspector/ScriptCallFrame.cpp \ 1073 1072 inspector/ScriptCallStack.cpp \ -
trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj
r76497 r76509 65299 65299 </File> 65300 65300 <File 65301 RelativePath="..\inspector\ScriptBreakpoint.cpp"65302 >65303 </File>65304 <File65305 65301 RelativePath="..\inspector\ScriptBreakpoint.h" 65306 65302 > -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r76493 r76509 648 648 1CF6BE150E9BB4670025E1CD /* ObjCNodeFilterCondition.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CF6BE130E9BB4670025E1CD /* ObjCNodeFilterCondition.h */; }; 649 649 1CFAE3230A6D6A3F0032593D /* libobjc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CFAE3220A6D6A3F0032593D /* libobjc.dylib */; }; 650 200B190911C277D900DCCD3A /* ScriptBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 200B190811C277D900DCCD3A /* ScriptBreakpoint.cpp */; };651 650 20D629261253690B00081543 /* InspectorInstrumentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 20D629241253690B00081543 /* InspectorInstrumentation.cpp */; }; 652 651 20D629271253690B00081543 /* InspectorInstrumentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 20D629251253690B00081543 /* InspectorInstrumentation.h */; }; … … 6991 6990 1CF6BE130E9BB4670025E1CD /* ObjCNodeFilterCondition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjCNodeFilterCondition.h; sourceTree = "<group>"; }; 6992 6991 1CFAE3220A6D6A3F0032593D /* libobjc.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libobjc.dylib; path = /usr/lib/libobjc.dylib; sourceTree = "<absolute>"; }; 6993 200B190811C277D900DCCD3A /* ScriptBreakpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptBreakpoint.cpp; sourceTree = "<group>"; };6994 6992 20D629241253690B00081543 /* InspectorInstrumentation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorInstrumentation.cpp; sourceTree = "<group>"; }; 6995 6993 20D629251253690B00081543 /* InspectorInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorInstrumentation.h; sourceTree = "<group>"; }; … … 13036 13034 F39BE95912673BF400E0A674 /* ScriptArguments.cpp */, 13037 13035 F39BE95A12673BF400E0A674 /* ScriptArguments.h */, 13038 200B190811C277D900DCCD3A /* ScriptBreakpoint.cpp */,13039 13036 7AFD4A8A1131C2760035B883 /* ScriptBreakpoint.h */, 13040 13037 416E75CA0EDF90C700360E1D /* ScriptCallFrame.cpp */, … … 24617 24614 A84D82C211D3474800972990 /* ScriptableDocumentParser.cpp in Sources */, 24618 24615 F39BE95B12673BF400E0A674 /* ScriptArguments.cpp in Sources */, 24619 200B190911C277D900DCCD3A /* ScriptBreakpoint.cpp in Sources */,24620 24616 41F1D2200EF35C2A00DA8753 /* ScriptCachedFrameData.cpp in Sources */, 24621 24617 416E75CC0EDF90C700360E1D /* ScriptCallFrame.cpp in Sources */, -
trunk/Source/WebCore/bindings/js/ScriptDebugServer.cpp
r76129 r76509 139 139 } 140 140 141 String ScriptDebugServer::setBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled, unsigned* actualLineNumber)141 String ScriptDebugServer::setBreakpoint(const String& sourceID, const ScriptBreakpoint& scriptBreakpoint, long* actualLineNumber, long* actualColumnNumber) 142 142 { 143 143 intptr_t sourceIDValue = sourceID.toIntPtr(); 144 144 if (!sourceIDValue) 145 145 return ""; 146 BreakpointsMap::iterator it = m_breakpoints.find(sourceIDValue);147 if (it == m_ breakpoints.end())148 it = m_ breakpoints.set(sourceIDValue, SourceBreakpoints()).first;149 if (it->second.contains( lineNumber))146 SourceIdToBreakpointsMap::iterator it = m_sourceIdToBreakpoints.find(sourceIDValue); 147 if (it == m_sourceIdToBreakpoints.end()) 148 it = m_sourceIdToBreakpoints.set(sourceIDValue, LineToBreakpointMap()).first; 149 if (it->second.contains(scriptBreakpoint.lineNumber)) 150 150 return ""; 151 it->second.set(lineNumber, ScriptBreakpoint(enabled, condition)); 152 *actualLineNumber = lineNumber; 153 return makeString(sourceID, ":", String::number(lineNumber)); 151 it->second.set(scriptBreakpoint.lineNumber, scriptBreakpoint); 152 *actualLineNumber = scriptBreakpoint.lineNumber; 153 // FIXME(WK53003): implement setting breakpoints by line:column. 154 *actualColumnNumber = 1; 155 return makeString(sourceID, ":", String::number(scriptBreakpoint.lineNumber)); 154 156 } 155 157 … … 167 169 if (!success) 168 170 return; 169 BreakpointsMap::iterator it = m_breakpoints.find(sourceIDValue);170 if (it != m_ breakpoints.end())171 SourceIdToBreakpointsMap::iterator it = m_sourceIdToBreakpoints.find(sourceIDValue); 172 if (it != m_sourceIdToBreakpoints.end()) 171 173 it->second.remove(lineNumber); 172 174 } … … 177 179 return false; 178 180 179 BreakpointsMap::const_iterator it = m_breakpoints.find(sourceID);180 if (it == m_ breakpoints.end())181 SourceIdToBreakpointsMap::const_iterator it = m_sourceIdToBreakpoints.find(sourceID); 182 if (it == m_sourceIdToBreakpoints.end()) 181 183 return false; 182 SourceBreakpoints::const_iterator breakIt = it->second.find(lineNumber);184 LineToBreakpointMap::const_iterator breakIt = it->second.find(lineNumber); 183 185 if (breakIt == it->second.end() || !breakIt->second.enabled) 184 186 return false; … … 199 201 void ScriptDebugServer::clearBreakpoints() 200 202 { 201 m_ breakpoints.clear();203 m_sourceIdToBreakpoints.clear(); 202 204 } 203 205 -
trunk/Source/WebCore/bindings/js/ScriptDebugServer.h
r76248 r76509 65 65 void removeListener(ScriptDebugListener*, Page*); 66 66 67 String setBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled, unsigned* actualLineNumber);67 String setBreakpoint(const String& sourceID, const ScriptBreakpoint&, long* actualLineNumber, long* actualColumnNumber); 68 68 void removeBreakpoint(const String& breakpointId); 69 69 void clearBreakpoints(); … … 139 139 140 140 typedef HashMap<Page*, ListenerSet*> PageListenersMap; 141 typedef HashMap<intptr_t, SourceBreakpoints> BreakpointsMap; 141 typedef HashMap<long, ScriptBreakpoint> LineToBreakpointMap; 142 typedef HashMap<intptr_t, LineToBreakpointMap> SourceIdToBreakpointsMap; 142 143 143 144 PageListenersMap m_pageListenersMap; … … 151 152 JavaScriptCallFrame* m_pauseOnCallFrame; 152 153 RefPtr<JavaScriptCallFrame> m_currentCallFrame; 153 BreakpointsMap m_breakpoints;154 SourceIdToBreakpointsMap m_sourceIdToScriptBreakpoints; 154 155 Timer<ScriptDebugServer> m_recompileTimer; 155 156 }; -
trunk/Source/WebCore/bindings/v8/DebuggerScript.js
r76013 r76509 92 92 DebuggerScript.setBreakpoint = function(execState, args) 93 93 { 94 args.lineNumber = DebuggerScript._webkitToV8LineNumber(args.lineNumber); 95 var breakId = Debug.setScriptBreakPointById(args.scriptId, args.lineNumber, 0 /* column */, args.condition); 94 var lineNumber = DebuggerScript._webkitToV8LineNumber(args.lineNumber); 95 var columnNumber = DebuggerScript._webkitToV8LineNumber(args.columnNumber); 96 var breakId = Debug.setScriptBreakPointById(args.scriptId, lineNumber, columnNumber, args.condition); 96 97 if (!args.enabled) 97 98 Debug.disableScriptBreakPoint(breakId); … … 101 102 return undefined; 102 103 args.lineNumber = DebuggerScript._v8ToWebkitLineNumber(locations[0].line); 104 args.columnNumber = DebuggerScript._v8ToWebkitLineNumber(locations[0].column); 103 105 return breakId.toString(); 104 106 } -
trunk/Source/WebCore/bindings/v8/ScriptDebugServer.cpp
r75794 r76509 144 144 } 145 145 146 String ScriptDebugServer::setBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled, unsigned* actualLineNumber)146 String ScriptDebugServer::setBreakpoint(const String& sourceID, const ScriptBreakpoint& scriptBreakpoint, long* actualLineNumber, long* actualColumnNumber) 147 147 { 148 148 v8::HandleScope scope; … … 152 152 v8::Local<v8::Object> args = v8::Object::New(); 153 153 args->Set(v8::String::New("scriptId"), v8String(sourceID)); 154 args->Set(v8::String::New("lineNumber"), v8::Integer::New(lineNumber)); 155 args->Set(v8::String::New("condition"), v8String(condition)); 156 args->Set(v8::String::New("enabled"), v8::Boolean::New(enabled)); 154 args->Set(v8::String::New("lineNumber"), v8::Integer::New(scriptBreakpoint.lineNumber)); 155 args->Set(v8::String::New("columnNumber"), v8::Integer::New(scriptBreakpoint.columnNumber)); 156 args->Set(v8::String::New("condition"), v8String(scriptBreakpoint.condition)); 157 args->Set(v8::String::New("enabled"), v8::Boolean::New(scriptBreakpoint.enabled)); 157 158 158 159 v8::Handle<v8::Function> setBreakpointFunction = v8::Local<v8::Function>::Cast(m_debuggerScript.get()->Get(v8::String::New("setBreakpoint"))); … … 161 162 return ""; 162 163 *actualLineNumber = args->Get(v8::String::New("lineNumber"))->Int32Value(); 164 *actualColumnNumber = args->Get(v8::String::New("columnNumber"))->Int32Value(); 163 165 return v8StringToWebCoreString(breakpointId->ToString()); 164 166 } -
trunk/Source/WebCore/bindings/v8/ScriptDebugServer.h
r76248 r76509 57 57 void removeListener(ScriptDebugListener*, Page*); 58 58 59 String setBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled, unsigned* actualLineNumber);59 String setBreakpoint(const String& sourceID, const ScriptBreakpoint&, long* actualLineNumber, long* actualColumnNumber); 60 60 void removeBreakpoint(const String& breakpointId); 61 61 void clearBreakpoints(); -
trunk/Source/WebCore/inspector/Inspector.idl
r76460 r76509 254 254 [domain=Debugger] void deactivateBreakpoints(); 255 255 256 [domain=Debugger] void setBreakpoint(in String sourceID, in unsigned int lineNumber, in String condition, in boolean enabled, out String breakpointId, out unsigned int actualLineNumber);256 [domain=Debugger] void setBreakpoint(in Object breakpoint, out String breakpointId, out long actualLineNumber, out long actualColumnNumber); 257 257 [domain=Debugger] void removeBreakpoint(in String breakpointId); 258 258 … … 280 280 [domain=Debugger] void getCompletionsOnCallFrame(in Object callFrameId, in String expression, in boolean includeInspectorCommandLineAPI, out Value result); 281 281 282 [notify, domain=Debugger] void breakpointResolved(out String breakpointId, out String sourceID, out unsigned int lineNumber, out String condition, out boolean enabled, out unsigned int originalLineNumber);282 [notify, domain=Debugger] void breakpointResolved(out String breakpointId, out Object breakpoint); 283 283 284 284 #if defined(ENABLE_WORKERS) && ENABLE_WORKERS -
trunk/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp
r76459 r76509 120 120 if (!condition->getNumber("lineNumber", &lineNumber)) 121 121 return; 122 double columnNumber; 123 if (!condition->getNumber("columnNumber", &columnNumber)) 124 return; 122 125 String javaScriptCondition; 123 126 if (!condition->getString("condition", &javaScriptCondition)) 124 127 return; 125 m_inspectorAgent->debuggerAgent()->setStickyBreakpoint(url, static_cast<unsigned>(lineNumber), javaScriptCondition, enabled);128 m_inspectorAgent->debuggerAgent()->setStickyBreakpoint(url, ScriptBreakpoint(long(lineNumber), long(columnNumber), javaScriptCondition, enabled)); 126 129 } else if (type == xhrBreakpointType) { 127 130 if (!enabled) -
trunk/Source/WebCore/inspector/InspectorDebuggerAgent.cpp
r76459 r76509 80 80 } 81 81 82 void InspectorDebuggerAgent::setStickyBreakpoint(const String& url, unsigned lineNumber, const String& condition, bool enabled)83 { 84 HashMap<String, ScriptBreakpoints>::iterator it = m_stickyBreakpoints.find(url);82 void InspectorDebuggerAgent::setStickyBreakpoint(const String& url, const ScriptBreakpoint& breakpoint) 83 { 84 InspectedURLToBreakpointsMap::iterator it = m_stickyBreakpoints.find(url); 85 85 if (it == m_stickyBreakpoints.end()) 86 it = m_stickyBreakpoints.set(url, ScriptBreakpoints()).first;87 it->second.set( lineNumber, Breakpoint(condition, enabled));86 it = m_stickyBreakpoints.set(url, LocationToBreakpointMap()).first; 87 it->second.set(Location(breakpoint.lineNumber, breakpoint.columnNumber), breakpoint); 88 88 89 89 URLToSourceIDsMap::iterator urlToSourceIDsIterator = m_urlToSourceIDs.find(url); … … 92 92 const Vector<String>& sourceIDs = urlToSourceIDsIterator->second; 93 93 for (size_t i = 0; i < sourceIDs.size(); ++i) 94 restoreBreakpoint(sourceIDs[i], lineNumber, condition, enabled); 95 } 96 97 void InspectorDebuggerAgent::setBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled, String* breakpointId, unsigned int* actualLineNumber) 98 { 99 *breakpointId = ScriptDebugServer::shared().setBreakpoint(sourceID, lineNumber, condition, enabled, actualLineNumber); 94 restoreBreakpoint(sourceIDs[i], breakpoint); 95 } 96 97 void InspectorDebuggerAgent::setBreakpoint(PassRefPtr<InspectorObject> breakpoint, String* breakpointId, long* actualLineNumber, long* actualColumnNumber) 98 { 99 String sourceID; 100 if (!breakpoint->getString("sourceID", &sourceID)) 101 return; 102 double lineNumber; 103 if (!breakpoint->getNumber("lineNumber", &lineNumber)) 104 return; 105 double columnNumber; 106 if (!breakpoint->getNumber("columnNumber", &columnNumber)) 107 return; 108 String condition; 109 if (!breakpoint->getString("condition", &condition)) 110 return; 111 bool enabled; 112 if (!breakpoint->getBoolean("enabled", &enabled)) 113 return; 114 ScriptBreakpoint scriptBreakpoint(lineNumber, columnNumber, condition, enabled); 115 *breakpointId = ScriptDebugServer::shared().setBreakpoint(sourceID, scriptBreakpoint, actualLineNumber, actualColumnNumber); 100 116 } 101 117 … … 105 121 } 106 122 107 void InspectorDebuggerAgent::restoreBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled) 108 { 109 unsigned actualLineNumber = 0; 110 String breakpointId = ScriptDebugServer::shared().setBreakpoint(sourceID, lineNumber, condition, enabled, &actualLineNumber); 111 if (!breakpointId.isEmpty()) 112 m_frontend->breakpointResolved(breakpointId, sourceID, actualLineNumber, condition, enabled, lineNumber); 123 void InspectorDebuggerAgent::restoreBreakpoint(const String& sourceID, const ScriptBreakpoint& breakpoint) 124 { 125 long actualLineNumber = 0, actualColumnNumber = 0; 126 String breakpointId = ScriptDebugServer::shared().setBreakpoint(sourceID, breakpoint, &actualLineNumber, &actualColumnNumber); 127 if (breakpointId.isEmpty()) 128 return; 129 RefPtr<InspectorObject> breakpointData = InspectorObject::create(); 130 breakpointData->setString("id", breakpointId); 131 breakpointData->setString("sourceID", sourceID); 132 breakpointData->setNumber("lineNumber", actualLineNumber); 133 breakpointData->setNumber("columnNumber", actualColumnNumber); 134 breakpointData->setString("condition", breakpoint.condition); 135 breakpointData->setBoolean("enabled", breakpoint.enabled); 136 breakpointData->setNumber("originalLineNumber", breakpoint.lineNumber); 137 breakpointData->setNumber("originalColumnNumber", breakpoint.columnNumber); 138 m_frontend->breakpointResolved(breakpointId, breakpointData); 113 139 } 114 140 … … 224 250 urlToSourceIDsIterator->second.append(sourceID); 225 251 226 HashMap<String, ScriptBreakpoints>::iterator stickyBreakpointsIterator = m_stickyBreakpoints.find(url);252 InspectedURLToBreakpointsMap::iterator stickyBreakpointsIterator = m_stickyBreakpoints.find(url); 227 253 if (stickyBreakpointsIterator == m_stickyBreakpoints.end()) 228 254 return; 229 255 230 const ScriptBreakpoints& breakpoints = stickyBreakpointsIterator->second; 231 for (ScriptBreakpoints::const_iterator it = breakpoints.begin(); it != breakpoints.end(); ++it) { 232 const Breakpoint& breakpoint = it->second; 233 restoreBreakpoint(sourceID, it->first, breakpoint.first, breakpoint.second); 234 } 256 const LocationToBreakpointMap& breakpoints = stickyBreakpointsIterator->second; 257 for (LocationToBreakpointMap::const_iterator it = breakpoints.begin(); it != breakpoints.end(); ++it) 258 restoreBreakpoint(sourceID, it->second); 235 259 } 236 260 -
trunk/Source/WebCore/inspector/InspectorDebuggerAgent.h
r76459 r76509 33 33 #if ENABLE(JAVASCRIPT_DEBUGGER) && ENABLE(INSPECTOR) 34 34 #include "InjectedScript.h" 35 #include "ScriptBreakpoint.h" 35 36 #include "ScriptDebugListener.h" 36 37 #include "ScriptState.h" … … 65 66 void activateBreakpoints(); 66 67 void deactivateBreakpoints(); 67 void setStickyBreakpoint(const String& url, unsigned lineNumber, const String& condition, bool enabled);68 void setBreakpoint( const String& sourceID, unsigned lineNumber, const String& condition, bool enabled, String* breakpointId, unsigned int* actualLineNumber);68 void setStickyBreakpoint(const String& url, const WebCore::ScriptBreakpoint&); 69 void setBreakpoint(PassRefPtr<InspectorObject> breakpoint, String* breakpointId, long* actualLineNumber, long* actualColumnNumber); 69 70 void removeBreakpoint(const String& breakpointId); 70 71 void editScriptSource(const String& sourceID, const String& newContent, bool* success, String* result, RefPtr<InspectorValue>* newCallFrames); … … 94 95 virtual void didContinue(); 95 96 96 void restoreBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled); 97 void restoreBreakpoint(const String& sourceID, const ScriptBreakpoint&); 98 99 typedef HashMap<String, Vector<String> > URLToSourceIDsMap; 100 typedef std::pair<long, long> Location; 101 typedef HashMap<Location, ScriptBreakpoint> LocationToBreakpointMap; 102 typedef HashMap<String, LocationToBreakpointMap> InspectedURLToBreakpointsMap; 97 103 98 104 InspectorAgent* m_inspectorAgent; … … 100 106 ScriptState* m_pausedScriptState; 101 107 HashMap<String, String> m_scriptIDToContent; 102 typedef HashMap<String, Vector<String> > URLToSourceIDsMap;103 108 URLToSourceIDsMap m_urlToSourceIDs; 104 typedef std::pair<String, bool> Breakpoint; 105 typedef HashMap<unsigned, Breakpoint> ScriptBreakpoints; 106 HashMap<String, ScriptBreakpoints> m_stickyBreakpoints; 109 InspectedURLToBreakpointsMap m_stickyBreakpoints; 107 110 RefPtr<InspectorObject> m_breakProgramDetails; 108 111 bool m_javaScriptPauseScheduled; -
trunk/Source/WebCore/inspector/ScriptBreakpoint.h
r72666 r76509 32 32 33 33 #include "PlatformString.h" 34 #include <wtf/HashMap.h>35 34 36 35 namespace WebCore { 37 36 38 class InspectorObject;39 struct ScriptBreakpoint;40 41 typedef HashMap<int, ScriptBreakpoint> SourceBreakpoints;42 43 37 struct ScriptBreakpoint { 44 ScriptBreakpoint(bool enabled, const String& condition) 45 : enabled(enabled) 38 ScriptBreakpoint(long lineNumber, long columnNumber, const String& condition, bool enabled) 39 : lineNumber(lineNumber) 40 , columnNumber(columnNumber) 46 41 , condition(condition) 42 , enabled(enabled) 47 43 { 48 44 } … … 52 48 } 53 49 50 long lineNumber; 51 long columnNumber; 52 String condition; 54 53 bool enabled; 55 String condition;56 57 #if ENABLE(INSPECTOR)58 static void sourceBreakpointsFromInspectorObject(PassRefPtr<InspectorObject>, SourceBreakpoints*);59 static PassRefPtr<InspectorObject> inspectorObjectFromSourceBreakpoints(const SourceBreakpoints&);60 #endif61 54 }; 62 55 -
trunk/Source/WebCore/inspector/front-end/Breakpoint.js
r76239 r76509 30 30 */ 31 31 32 WebInspector.Breakpoint = function(debuggerModel, breakpointId, sourceID, url, line, enabled, condition)32 WebInspector.Breakpoint = function(debuggerModel, breakpointId, data) 33 33 { 34 34 this.id = breakpointId; 35 this. url = url;36 this.line = line;37 this. sourceID = sourceID;38 this._ enabled = enabled;39 this._ condition = condition || "";35 this.sourceID = data.sourceID; 36 this.line = data.lineNumber; 37 this.column = data.columnNumber; 38 this._condition = data.condition; 39 this._enabled = data.enabled; 40 40 this._debuggerModel = debuggerModel; 41 41 } … … 60 60 }, 61 61 62 get url() 63 { 64 if (!this._url) 65 this._url = this._debuggerModel.scriptForSourceID(this.sourceID).sourceURL; 66 return this._url; 67 }, 68 62 69 get data() 63 70 { -
trunk/Source/WebCore/inspector/front-end/BreakpointManager.js
r76348 r76509 409 409 { 410 410 var type = WebInspector.BreakpointManager.BreakpointTypes.JS; 411 return { type: type, condition: { url: this._url, lineNumber: this._lineNumber, co ndition: this._condition } };411 return { type: type, condition: { url: this._url, lineNumber: this._lineNumber, columnNumber: 1, condition: this._condition } }; 412 412 } 413 413 } -
trunk/Source/WebCore/inspector/front-end/DebuggerModel.js
r76341 r76509 65 65 this._continueToLineBreakpointId = breakpointId; 66 66 } 67 InspectorBackend.setBreakpoint(sourceID, lineNumber, "", true, didSetBreakpoint.bind(this)); 67 var breakpoint = { sourceID: sourceID, lineNumber: lineNumber, columnNumber: 1, condition: "", enabled: true }; 68 InspectorBackend.setBreakpoint(breakpoint, didSetBreakpoint.bind(this)); 68 69 if (this._paused) 69 70 InspectorBackend.resume(); … … 72 73 setBreakpoint: function(sourceID, lineNumber, enabled, condition) 73 74 { 74 function didSetBreakpoint(breakpointId, actualLineNumber )75 function didSetBreakpoint(breakpointId, actualLineNumber, actualColumnNumber) 75 76 { 76 if (breakpointId) 77 this._breakpointSetOnBackend(breakpointId, sourceID, actualLineNumber, condition, enabled, lineNumber, false); 78 } 79 InspectorBackend.setBreakpoint(sourceID, lineNumber, condition, enabled, didSetBreakpoint.bind(this)); 77 if (!breakpointId) 78 return; 79 breakpoint.originalLineNumber = breakpoint.lineNumber; 80 breakpoint.originalColumnumber = breakpoint.columnNumber; 81 breakpoint.lineNumber = actualLineNumber; 82 breakpoint.columnNumber = actualColumnNumber; 83 this._breakpointSetOnBackend(breakpointId, breakpoint, false); 84 } 85 var breakpoint = { sourceID: sourceID, lineNumber: lineNumber, columnNumber: 1, condition: condition, enabled: enabled }; 86 InspectorBackend.setBreakpoint(breakpoint, didSetBreakpoint.bind(this)); 80 87 }, 81 88 … … 90 97 }, 91 98 92 _breakpointSetOnBackend: function(breakpointId, sourceID, lineNumber, condition, enabled, originalLineNumber, restored)93 { 94 var sourceIDAndLine = this._encodeSourceIDAndLine( sourceID,lineNumber);99 _breakpointSetOnBackend: function(breakpointId, breakpointData, restored) 100 { 101 var sourceIDAndLine = this._encodeSourceIDAndLine(breakpointData.sourceID, breakpointData.lineNumber); 95 102 if (sourceIDAndLine in this._sourceIDAndLineToBreakpointId) { 96 103 InspectorBackend.removeBreakpoint(breakpointId); … … 98 105 } 99 106 100 var url = this._scripts[sourceID].sourceURL; 101 var breakpoint = new WebInspector.Breakpoint(this, breakpointId, sourceID, url, lineNumber, enabled, condition); 107 var breakpoint = new WebInspector.Breakpoint(this, breakpointId, breakpointData); 102 108 breakpoint.restored = restored; 103 breakpoint.originalLineNumber = originalLineNumber;109 breakpoint.originalLineNumber = breakpointData.originalLineNumber; 104 110 this._breakpoints[breakpointId] = breakpoint; 105 111 this._sourceIDAndLineToBreakpointId[sourceIDAndLine] = breakpointId; … … 296 302 }, 297 303 298 breakpointResolved: function(breakpointId, sourceID, lineNumber, condition, enabled, originalLineNumber)299 { 300 this._debuggerModel._breakpointSetOnBackend(breakpointId, sourceID, lineNumber, condition, enabled, originalLineNumber, true);304 breakpointResolved: function(breakpointId, breakpoint) 305 { 306 this._debuggerModel._breakpointSetOnBackend(breakpointId, breakpoint, true); 301 307 }, 302 308
Note: See TracChangeset
for help on using the changeset viewer.