[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198
podivilov at chromium.org
podivilov at chromium.org
Sun Feb 20 23:42:39 UTC 2011
The following commit has been merged in the webkit-1.3 branch:
commit 5d1abbf52ab200f3d3a4ca03fdb73eccb8e1e357
Author: podivilov at chromium.org <podivilov at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Mon Jan 24 13:55:59 2011 +0000
2011-01-24 Pavel Podivilov <podivilov at chromium.org>
Reviewed by Yury Semikhatsky.
Web Inspector: set breakpoints by line:column.
https://bugs.webkit.org/show_bug.cgi?id=52615
* CMakeLists.txt:
* GNUmakefile.am:
* WebCore.gypi:
* WebCore.pro:
* WebCore.vcproj/WebCore.vcproj:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/ScriptDebugServer.cpp:
(WebCore::ScriptDebugServer::setBreakpoint):
(WebCore::ScriptDebugServer::removeBreakpoint):
(WebCore::ScriptDebugServer::hasBreakpoint):
(WebCore::ScriptDebugServer::clearBreakpoints):
* bindings/js/ScriptDebugServer.h:
* bindings/v8/DebuggerScript.js:
():
* bindings/v8/ScriptDebugServer.cpp:
(WebCore::ScriptDebugServer::setBreakpoint):
* bindings/v8/ScriptDebugServer.h:
* inspector/Inspector.idl:
* inspector/InspectorBrowserDebuggerAgent.cpp:
(WebCore::InspectorBrowserDebuggerAgent::restoreStickyBreakpoint):
* inspector/InspectorDebuggerAgent.cpp:
(WebCore::InspectorDebuggerAgent::setStickyBreakpoint):
(WebCore::InspectorDebuggerAgent::setBreakpoint):
(WebCore::InspectorDebuggerAgent::restoreBreakpoint):
(WebCore::InspectorDebuggerAgent::didParseSource):
* inspector/InspectorDebuggerAgent.h:
* inspector/ScriptBreakpoint.cpp: Removed.
* inspector/ScriptBreakpoint.h:
(WebCore::ScriptBreakpoint::ScriptBreakpoint):
* inspector/front-end/Breakpoint.js:
(WebInspector.Breakpoint):
(WebInspector.Breakpoint.prototype.get url):
* inspector/front-end/BreakpointManager.js:
(WebInspector.JavaScriptBreakpoint.prototype._serializeToJSON):
* inspector/front-end/DebuggerModel.js:
(WebInspector.DebuggerModel.prototype.continueToLine):
(WebInspector.DebuggerModel.prototype.setBreakpoint):
(WebInspector.DebuggerModel.prototype._breakpointSetOnBackend):
(WebInspector.DebuggerDispatcher.prototype.breakpointResolved):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@76509 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/Source/WebCore/CMakeLists.txt b/Source/WebCore/CMakeLists.txt
index 1128c2e..aa3d6ce 100644
--- a/Source/WebCore/CMakeLists.txt
+++ b/Source/WebCore/CMakeLists.txt
@@ -1179,7 +1179,6 @@ SET(WebCore_SOURCES
inspector/InspectorTimelineAgent.cpp
inspector/InspectorValues.cpp
inspector/ScriptArguments.cpp
- inspector/ScriptBreakpoint.cpp
inspector/ScriptCallFrame.cpp
inspector/ScriptCallStack.cpp
inspector/TimelineRecordFactory.cpp
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index f9e3fcd..8795002 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,50 @@
+2011-01-24 Pavel Podivilov <podivilov at chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: set breakpoints by line:column.
+ https://bugs.webkit.org/show_bug.cgi?id=52615
+
+ * CMakeLists.txt:
+ * GNUmakefile.am:
+ * WebCore.gypi:
+ * WebCore.pro:
+ * WebCore.vcproj/WebCore.vcproj:
+ * WebCore.xcodeproj/project.pbxproj:
+ * bindings/js/ScriptDebugServer.cpp:
+ (WebCore::ScriptDebugServer::setBreakpoint):
+ (WebCore::ScriptDebugServer::removeBreakpoint):
+ (WebCore::ScriptDebugServer::hasBreakpoint):
+ (WebCore::ScriptDebugServer::clearBreakpoints):
+ * bindings/js/ScriptDebugServer.h:
+ * bindings/v8/DebuggerScript.js:
+ ():
+ * bindings/v8/ScriptDebugServer.cpp:
+ (WebCore::ScriptDebugServer::setBreakpoint):
+ * bindings/v8/ScriptDebugServer.h:
+ * inspector/Inspector.idl:
+ * inspector/InspectorBrowserDebuggerAgent.cpp:
+ (WebCore::InspectorBrowserDebuggerAgent::restoreStickyBreakpoint):
+ * inspector/InspectorDebuggerAgent.cpp:
+ (WebCore::InspectorDebuggerAgent::setStickyBreakpoint):
+ (WebCore::InspectorDebuggerAgent::setBreakpoint):
+ (WebCore::InspectorDebuggerAgent::restoreBreakpoint):
+ (WebCore::InspectorDebuggerAgent::didParseSource):
+ * inspector/InspectorDebuggerAgent.h:
+ * inspector/ScriptBreakpoint.cpp: Removed.
+ * inspector/ScriptBreakpoint.h:
+ (WebCore::ScriptBreakpoint::ScriptBreakpoint):
+ * inspector/front-end/Breakpoint.js:
+ (WebInspector.Breakpoint):
+ (WebInspector.Breakpoint.prototype.get url):
+ * inspector/front-end/BreakpointManager.js:
+ (WebInspector.JavaScriptBreakpoint.prototype._serializeToJSON):
+ * inspector/front-end/DebuggerModel.js:
+ (WebInspector.DebuggerModel.prototype.continueToLine):
+ (WebInspector.DebuggerModel.prototype.setBreakpoint):
+ (WebInspector.DebuggerModel.prototype._breakpointSetOnBackend):
+ (WebInspector.DebuggerDispatcher.prototype.breakpointResolved):
+
2011-01-24 Peter Beverloo <peter at chromium.org>
Reviewed by Pavel Feldman.
diff --git a/Source/WebCore/GNUmakefile.am b/Source/WebCore/GNUmakefile.am
index 3bd9e97..7da56f0 100644
--- a/Source/WebCore/GNUmakefile.am
+++ b/Source/WebCore/GNUmakefile.am
@@ -2007,7 +2007,6 @@ webcore_sources += \
Source/WebCore/inspector/InspectorWorkerResource.h \
Source/WebCore/inspector/ScriptArguments.cpp \
Source/WebCore/inspector/ScriptArguments.h \
- Source/WebCore/inspector/ScriptBreakpoint.cpp \
Source/WebCore/inspector/ScriptBreakpoint.h \
Source/WebCore/inspector/ScriptCallFrame.cpp \
Source/WebCore/inspector/ScriptCallFrame.h \
diff --git a/Source/WebCore/WebCore.gypi b/Source/WebCore/WebCore.gypi
index 35324b9..bc1254a 100644
--- a/Source/WebCore/WebCore.gypi
+++ b/Source/WebCore/WebCore.gypi
@@ -2058,7 +2058,6 @@
'inspector/InspectorValues.cpp',
'inspector/InspectorValues.h',
'inspector/InspectorWorkerResource.h',
- 'inspector/ScriptBreakpoint.cpp',
'inspector/ScriptBreakpoint.h',
'inspector/ScriptArguments.cpp',
'inspector/ScriptArguments.h',
diff --git a/Source/WebCore/WebCore.pro b/Source/WebCore/WebCore.pro
index b26ec4c..cb53f39 100644
--- a/Source/WebCore/WebCore.pro
+++ b/Source/WebCore/WebCore.pro
@@ -1068,7 +1068,6 @@ SOURCES += \
inspector/InspectorTimelineAgent.cpp \
inspector/InspectorValues.cpp \
inspector/ScriptArguments.cpp \
- inspector/ScriptBreakpoint.cpp \
inspector/ScriptCallFrame.cpp \
inspector/ScriptCallStack.cpp \
inspector/TimelineRecordFactory.cpp \
diff --git a/Source/WebCore/WebCore.vcproj/WebCore.vcproj b/Source/WebCore/WebCore.vcproj/WebCore.vcproj
index f2d92bb..6f8a6a4 100755
--- a/Source/WebCore/WebCore.vcproj/WebCore.vcproj
+++ b/Source/WebCore/WebCore.vcproj/WebCore.vcproj
@@ -65298,10 +65298,6 @@
>
</File>
<File
- RelativePath="..\inspector\ScriptBreakpoint.cpp"
- >
- </File>
- <File
RelativePath="..\inspector\ScriptBreakpoint.h"
>
</File>
diff --git a/Source/WebCore/WebCore.xcodeproj/project.pbxproj b/Source/WebCore/WebCore.xcodeproj/project.pbxproj
index dc423d1..921f1a9 100644
--- a/Source/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/Source/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -647,7 +647,6 @@
1CF6BE140E9BB4670025E1CD /* ObjCNodeFilterCondition.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1CF6BE120E9BB4670025E1CD /* ObjCNodeFilterCondition.mm */; };
1CF6BE150E9BB4670025E1CD /* ObjCNodeFilterCondition.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CF6BE130E9BB4670025E1CD /* ObjCNodeFilterCondition.h */; };
1CFAE3230A6D6A3F0032593D /* libobjc.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1CFAE3220A6D6A3F0032593D /* libobjc.dylib */; };
- 200B190911C277D900DCCD3A /* ScriptBreakpoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 200B190811C277D900DCCD3A /* ScriptBreakpoint.cpp */; };
20D629261253690B00081543 /* InspectorInstrumentation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 20D629241253690B00081543 /* InspectorInstrumentation.cpp */; };
20D629271253690B00081543 /* InspectorInstrumentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 20D629251253690B00081543 /* InspectorInstrumentation.h */; };
228C284510D82500009D0D0E /* ScriptWrappable.h in Headers */ = {isa = PBXBuildFile; fileRef = 228C284410D82500009D0D0E /* ScriptWrappable.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -6990,7 +6989,6 @@
1CF6BE120E9BB4670025E1CD /* ObjCNodeFilterCondition.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ObjCNodeFilterCondition.mm; sourceTree = "<group>"; };
1CF6BE130E9BB4670025E1CD /* ObjCNodeFilterCondition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ObjCNodeFilterCondition.h; sourceTree = "<group>"; };
1CFAE3220A6D6A3F0032593D /* libobjc.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libobjc.dylib; path = /usr/lib/libobjc.dylib; sourceTree = "<absolute>"; };
- 200B190811C277D900DCCD3A /* ScriptBreakpoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptBreakpoint.cpp; sourceTree = "<group>"; };
20D629241253690B00081543 /* InspectorInstrumentation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorInstrumentation.cpp; sourceTree = "<group>"; };
20D629251253690B00081543 /* InspectorInstrumentation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorInstrumentation.h; sourceTree = "<group>"; };
228C284410D82500009D0D0E /* ScriptWrappable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptWrappable.h; sourceTree = "<group>"; };
@@ -13035,7 +13033,6 @@
BCC64F5F0DCFB84E0081EF3B /* localizedStrings.js */,
F39BE95912673BF400E0A674 /* ScriptArguments.cpp */,
F39BE95A12673BF400E0A674 /* ScriptArguments.h */,
- 200B190811C277D900DCCD3A /* ScriptBreakpoint.cpp */,
7AFD4A8A1131C2760035B883 /* ScriptBreakpoint.h */,
416E75CA0EDF90C700360E1D /* ScriptCallFrame.cpp */,
416E75C90EDF90C700360E1D /* ScriptCallFrame.h */,
@@ -24616,7 +24613,6 @@
BCEC01BD0C274DAC009F4EC9 /* Screen.cpp in Sources */,
A84D82C211D3474800972990 /* ScriptableDocumentParser.cpp in Sources */,
F39BE95B12673BF400E0A674 /* ScriptArguments.cpp in Sources */,
- 200B190911C277D900DCCD3A /* ScriptBreakpoint.cpp in Sources */,
41F1D2200EF35C2A00DA8753 /* ScriptCachedFrameData.cpp in Sources */,
416E75CC0EDF90C700360E1D /* ScriptCallFrame.cpp in Sources */,
416E75BF0EDF8FD700360E1D /* ScriptCallStack.cpp in Sources */,
diff --git a/Source/WebCore/bindings/js/ScriptDebugServer.cpp b/Source/WebCore/bindings/js/ScriptDebugServer.cpp
index b516f6d..c3a3fa8 100644
--- a/Source/WebCore/bindings/js/ScriptDebugServer.cpp
+++ b/Source/WebCore/bindings/js/ScriptDebugServer.cpp
@@ -138,19 +138,21 @@ bool ScriptDebugServer::hasListenersInterestedInPage(Page* page)
return m_pageListenersMap.contains(page);
}
-String ScriptDebugServer::setBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled, unsigned* actualLineNumber)
+String ScriptDebugServer::setBreakpoint(const String& sourceID, const ScriptBreakpoint& scriptBreakpoint, long* actualLineNumber, long* actualColumnNumber)
{
intptr_t sourceIDValue = sourceID.toIntPtr();
if (!sourceIDValue)
return "";
- BreakpointsMap::iterator it = m_breakpoints.find(sourceIDValue);
- if (it == m_breakpoints.end())
- it = m_breakpoints.set(sourceIDValue, SourceBreakpoints()).first;
- if (it->second.contains(lineNumber))
+ SourceIdToBreakpointsMap::iterator it = m_sourceIdToBreakpoints.find(sourceIDValue);
+ if (it == m_sourceIdToBreakpoints.end())
+ it = m_sourceIdToBreakpoints.set(sourceIDValue, LineToBreakpointMap()).first;
+ if (it->second.contains(scriptBreakpoint.lineNumber))
return "";
- it->second.set(lineNumber, ScriptBreakpoint(enabled, condition));
- *actualLineNumber = lineNumber;
- return makeString(sourceID, ":", String::number(lineNumber));
+ it->second.set(scriptBreakpoint.lineNumber, scriptBreakpoint);
+ *actualLineNumber = scriptBreakpoint.lineNumber;
+ // FIXME(WK53003): implement setting breakpoints by line:column.
+ *actualColumnNumber = 1;
+ return makeString(sourceID, ":", String::number(scriptBreakpoint.lineNumber));
}
void ScriptDebugServer::removeBreakpoint(const String& breakpointId)
@@ -166,8 +168,8 @@ void ScriptDebugServer::removeBreakpoint(const String& breakpointId)
unsigned lineNumber = tokens[1].toUInt(&success);
if (!success)
return;
- BreakpointsMap::iterator it = m_breakpoints.find(sourceIDValue);
- if (it != m_breakpoints.end())
+ SourceIdToBreakpointsMap::iterator it = m_sourceIdToBreakpoints.find(sourceIDValue);
+ if (it != m_sourceIdToBreakpoints.end())
it->second.remove(lineNumber);
}
@@ -176,10 +178,10 @@ bool ScriptDebugServer::hasBreakpoint(intptr_t sourceID, unsigned lineNumber) co
if (!m_breakpointsActivated)
return false;
- BreakpointsMap::const_iterator it = m_breakpoints.find(sourceID);
- if (it == m_breakpoints.end())
+ SourceIdToBreakpointsMap::const_iterator it = m_sourceIdToBreakpoints.find(sourceID);
+ if (it == m_sourceIdToBreakpoints.end())
return false;
- SourceBreakpoints::const_iterator breakIt = it->second.find(lineNumber);
+ LineToBreakpointMap::const_iterator breakIt = it->second.find(lineNumber);
if (breakIt == it->second.end() || !breakIt->second.enabled)
return false;
@@ -198,7 +200,7 @@ bool ScriptDebugServer::hasBreakpoint(intptr_t sourceID, unsigned lineNumber) co
void ScriptDebugServer::clearBreakpoints()
{
- m_breakpoints.clear();
+ m_sourceIdToBreakpoints.clear();
}
void ScriptDebugServer::setBreakpointsActivated(bool activated)
diff --git a/Source/WebCore/bindings/js/ScriptDebugServer.h b/Source/WebCore/bindings/js/ScriptDebugServer.h
index bde4736..622d49b 100644
--- a/Source/WebCore/bindings/js/ScriptDebugServer.h
+++ b/Source/WebCore/bindings/js/ScriptDebugServer.h
@@ -64,7 +64,7 @@ public:
void addListener(ScriptDebugListener*, Page*);
void removeListener(ScriptDebugListener*, Page*);
- String setBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled, unsigned* actualLineNumber);
+ String setBreakpoint(const String& sourceID, const ScriptBreakpoint&, long* actualLineNumber, long* actualColumnNumber);
void removeBreakpoint(const String& breakpointId);
void clearBreakpoints();
void setBreakpointsActivated(bool activated);
@@ -138,7 +138,8 @@ private:
void didRemoveListener(Page*);
typedef HashMap<Page*, ListenerSet*> PageListenersMap;
- typedef HashMap<intptr_t, SourceBreakpoints> BreakpointsMap;
+ typedef HashMap<long, ScriptBreakpoint> LineToBreakpointMap;
+ typedef HashMap<intptr_t, LineToBreakpointMap> SourceIdToBreakpointsMap;
PageListenersMap m_pageListenersMap;
bool m_callingListeners;
@@ -150,7 +151,7 @@ private:
bool m_breakpointsActivated;
JavaScriptCallFrame* m_pauseOnCallFrame;
RefPtr<JavaScriptCallFrame> m_currentCallFrame;
- BreakpointsMap m_breakpoints;
+ SourceIdToBreakpointsMap m_sourceIdToScriptBreakpoints;
Timer<ScriptDebugServer> m_recompileTimer;
};
diff --git a/Source/WebCore/bindings/v8/DebuggerScript.js b/Source/WebCore/bindings/v8/DebuggerScript.js
index eb9de2f..346974a 100644
--- a/Source/WebCore/bindings/v8/DebuggerScript.js
+++ b/Source/WebCore/bindings/v8/DebuggerScript.js
@@ -91,8 +91,9 @@ DebuggerScript._formatScript = function(script)
DebuggerScript.setBreakpoint = function(execState, args)
{
- args.lineNumber = DebuggerScript._webkitToV8LineNumber(args.lineNumber);
- var breakId = Debug.setScriptBreakPointById(args.scriptId, args.lineNumber, 0 /* column */, args.condition);
+ var lineNumber = DebuggerScript._webkitToV8LineNumber(args.lineNumber);
+ var columnNumber = DebuggerScript._webkitToV8LineNumber(args.columnNumber);
+ var breakId = Debug.setScriptBreakPointById(args.scriptId, lineNumber, columnNumber, args.condition);
if (!args.enabled)
Debug.disableScriptBreakPoint(breakId);
@@ -100,6 +101,7 @@ DebuggerScript.setBreakpoint = function(execState, args)
if (!locations.length)
return undefined;
args.lineNumber = DebuggerScript._v8ToWebkitLineNumber(locations[0].line);
+ args.columnNumber = DebuggerScript._v8ToWebkitLineNumber(locations[0].column);
return breakId.toString();
}
diff --git a/Source/WebCore/bindings/v8/ScriptDebugServer.cpp b/Source/WebCore/bindings/v8/ScriptDebugServer.cpp
index 1c70a0e..97c57f4 100644
--- a/Source/WebCore/bindings/v8/ScriptDebugServer.cpp
+++ b/Source/WebCore/bindings/v8/ScriptDebugServer.cpp
@@ -143,7 +143,7 @@ void ScriptDebugServer::removeListener(ScriptDebugListener* listener, Page* page
// FIXME: Remove all breakpoints set by the agent.
}
-String ScriptDebugServer::setBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled, unsigned* actualLineNumber)
+String ScriptDebugServer::setBreakpoint(const String& sourceID, const ScriptBreakpoint& scriptBreakpoint, long* actualLineNumber, long* actualColumnNumber)
{
v8::HandleScope scope;
v8::Local<v8::Context> debuggerContext = v8::Debug::GetDebugContext();
@@ -151,15 +151,17 @@ String ScriptDebugServer::setBreakpoint(const String& sourceID, unsigned lineNum
v8::Local<v8::Object> args = v8::Object::New();
args->Set(v8::String::New("scriptId"), v8String(sourceID));
- args->Set(v8::String::New("lineNumber"), v8::Integer::New(lineNumber));
- args->Set(v8::String::New("condition"), v8String(condition));
- args->Set(v8::String::New("enabled"), v8::Boolean::New(enabled));
+ args->Set(v8::String::New("lineNumber"), v8::Integer::New(scriptBreakpoint.lineNumber));
+ args->Set(v8::String::New("columnNumber"), v8::Integer::New(scriptBreakpoint.columnNumber));
+ args->Set(v8::String::New("condition"), v8String(scriptBreakpoint.condition));
+ args->Set(v8::String::New("enabled"), v8::Boolean::New(scriptBreakpoint.enabled));
v8::Handle<v8::Function> setBreakpointFunction = v8::Local<v8::Function>::Cast(m_debuggerScript.get()->Get(v8::String::New("setBreakpoint")));
v8::Handle<v8::Value> breakpointId = v8::Debug::Call(setBreakpointFunction, args);
if (!breakpointId->IsString())
return "";
*actualLineNumber = args->Get(v8::String::New("lineNumber"))->Int32Value();
+ *actualColumnNumber = args->Get(v8::String::New("columnNumber"))->Int32Value();
return v8StringToWebCoreString(breakpointId->ToString());
}
diff --git a/Source/WebCore/bindings/v8/ScriptDebugServer.h b/Source/WebCore/bindings/v8/ScriptDebugServer.h
index 8fa723f..953ddc3 100644
--- a/Source/WebCore/bindings/v8/ScriptDebugServer.h
+++ b/Source/WebCore/bindings/v8/ScriptDebugServer.h
@@ -56,7 +56,7 @@ public:
void addListener(ScriptDebugListener*, Page*);
void removeListener(ScriptDebugListener*, Page*);
- String setBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled, unsigned* actualLineNumber);
+ String setBreakpoint(const String& sourceID, const ScriptBreakpoint&, long* actualLineNumber, long* actualColumnNumber);
void removeBreakpoint(const String& breakpointId);
void clearBreakpoints();
void setBreakpointsActivated(bool activated);
diff --git a/Source/WebCore/inspector/Inspector.idl b/Source/WebCore/inspector/Inspector.idl
index cf0885f..57f995b 100644
--- a/Source/WebCore/inspector/Inspector.idl
+++ b/Source/WebCore/inspector/Inspector.idl
@@ -253,7 +253,7 @@ module core {
[domain=Debugger] void activateBreakpoints();
[domain=Debugger] void deactivateBreakpoints();
- [domain=Debugger] void setBreakpoint(in String sourceID, in unsigned int lineNumber, in String condition, in boolean enabled, out String breakpointId, out unsigned int actualLineNumber);
+ [domain=Debugger] void setBreakpoint(in Object breakpoint, out String breakpointId, out long actualLineNumber, out long actualColumnNumber);
[domain=Debugger] void removeBreakpoint(in String breakpointId);
[domain=BrowserDebugger] void setDOMBreakpoint(in long nodeId, in long type);
@@ -279,7 +279,7 @@ module core {
[domain=Debugger] void evaluateOnCallFrame(in Object callFrameId, in String expression, in String objectGroup, out Value result);
[domain=Debugger] void getCompletionsOnCallFrame(in Object callFrameId, in String expression, in boolean includeInspectorCommandLineAPI, out Value result);
- [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);
+ [notify, domain=Debugger] void breakpointResolved(out String breakpointId, out Object breakpoint);
#if defined(ENABLE_WORKERS) && ENABLE_WORKERS
[notify, domain=Debugger] void didCreateWorker(out long id, out String url, out boolean isShared);
diff --git a/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp b/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp
index 7ee7e81..e39e5c3 100644
--- a/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp
+++ b/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp
@@ -119,10 +119,13 @@ void InspectorBrowserDebuggerAgent::restoreStickyBreakpoint(PassRefPtr<Inspector
double lineNumber;
if (!condition->getNumber("lineNumber", &lineNumber))
return;
+ double columnNumber;
+ if (!condition->getNumber("columnNumber", &columnNumber))
+ return;
String javaScriptCondition;
if (!condition->getString("condition", &javaScriptCondition))
return;
- m_inspectorAgent->debuggerAgent()->setStickyBreakpoint(url, static_cast<unsigned>(lineNumber), javaScriptCondition, enabled);
+ m_inspectorAgent->debuggerAgent()->setStickyBreakpoint(url, ScriptBreakpoint(long(lineNumber), long(columnNumber), javaScriptCondition, enabled));
} else if (type == xhrBreakpointType) {
if (!enabled)
return;
diff --git a/Source/WebCore/inspector/InspectorDebuggerAgent.cpp b/Source/WebCore/inspector/InspectorDebuggerAgent.cpp
index 2ffaa83..9fbf4e3 100644
--- a/Source/WebCore/inspector/InspectorDebuggerAgent.cpp
+++ b/Source/WebCore/inspector/InspectorDebuggerAgent.cpp
@@ -79,24 +79,40 @@ void InspectorDebuggerAgent::deactivateBreakpoints()
ScriptDebugServer::shared().deactivateBreakpoints();
}
-void InspectorDebuggerAgent::setStickyBreakpoint(const String& url, unsigned lineNumber, const String& condition, bool enabled)
+void InspectorDebuggerAgent::setStickyBreakpoint(const String& url, const ScriptBreakpoint& breakpoint)
{
- HashMap<String, ScriptBreakpoints>::iterator it = m_stickyBreakpoints.find(url);
+ InspectedURLToBreakpointsMap::iterator it = m_stickyBreakpoints.find(url);
if (it == m_stickyBreakpoints.end())
- it = m_stickyBreakpoints.set(url, ScriptBreakpoints()).first;
- it->second.set(lineNumber, Breakpoint(condition, enabled));
+ it = m_stickyBreakpoints.set(url, LocationToBreakpointMap()).first;
+ it->second.set(Location(breakpoint.lineNumber, breakpoint.columnNumber), breakpoint);
URLToSourceIDsMap::iterator urlToSourceIDsIterator = m_urlToSourceIDs.find(url);
if (urlToSourceIDsIterator == m_urlToSourceIDs.end())
return;
const Vector<String>& sourceIDs = urlToSourceIDsIterator->second;
for (size_t i = 0; i < sourceIDs.size(); ++i)
- restoreBreakpoint(sourceIDs[i], lineNumber, condition, enabled);
+ restoreBreakpoint(sourceIDs[i], breakpoint);
}
-void InspectorDebuggerAgent::setBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled, String* breakpointId, unsigned int* actualLineNumber)
+void InspectorDebuggerAgent::setBreakpoint(PassRefPtr<InspectorObject> breakpoint, String* breakpointId, long* actualLineNumber, long* actualColumnNumber)
{
- *breakpointId = ScriptDebugServer::shared().setBreakpoint(sourceID, lineNumber, condition, enabled, actualLineNumber);
+ String sourceID;
+ if (!breakpoint->getString("sourceID", &sourceID))
+ return;
+ double lineNumber;
+ if (!breakpoint->getNumber("lineNumber", &lineNumber))
+ return;
+ double columnNumber;
+ if (!breakpoint->getNumber("columnNumber", &columnNumber))
+ return;
+ String condition;
+ if (!breakpoint->getString("condition", &condition))
+ return;
+ bool enabled;
+ if (!breakpoint->getBoolean("enabled", &enabled))
+ return;
+ ScriptBreakpoint scriptBreakpoint(lineNumber, columnNumber, condition, enabled);
+ *breakpointId = ScriptDebugServer::shared().setBreakpoint(sourceID, scriptBreakpoint, actualLineNumber, actualColumnNumber);
}
void InspectorDebuggerAgent::removeBreakpoint(const String& breakpointId)
@@ -104,12 +120,22 @@ void InspectorDebuggerAgent::removeBreakpoint(const String& breakpointId)
ScriptDebugServer::shared().removeBreakpoint(breakpointId);
}
-void InspectorDebuggerAgent::restoreBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled)
+void InspectorDebuggerAgent::restoreBreakpoint(const String& sourceID, const ScriptBreakpoint& breakpoint)
{
- unsigned actualLineNumber = 0;
- String breakpointId = ScriptDebugServer::shared().setBreakpoint(sourceID, lineNumber, condition, enabled, &actualLineNumber);
- if (!breakpointId.isEmpty())
- m_frontend->breakpointResolved(breakpointId, sourceID, actualLineNumber, condition, enabled, lineNumber);
+ long actualLineNumber = 0, actualColumnNumber = 0;
+ String breakpointId = ScriptDebugServer::shared().setBreakpoint(sourceID, breakpoint, &actualLineNumber, &actualColumnNumber);
+ if (breakpointId.isEmpty())
+ return;
+ RefPtr<InspectorObject> breakpointData = InspectorObject::create();
+ breakpointData->setString("id", breakpointId);
+ breakpointData->setString("sourceID", sourceID);
+ breakpointData->setNumber("lineNumber", actualLineNumber);
+ breakpointData->setNumber("columnNumber", actualColumnNumber);
+ breakpointData->setString("condition", breakpoint.condition);
+ breakpointData->setBoolean("enabled", breakpoint.enabled);
+ breakpointData->setNumber("originalLineNumber", breakpoint.lineNumber);
+ breakpointData->setNumber("originalColumnNumber", breakpoint.columnNumber);
+ m_frontend->breakpointResolved(breakpointId, breakpointData);
}
void InspectorDebuggerAgent::editScriptSource(const String& sourceID, const String& newContent, bool* success, String* result, RefPtr<InspectorValue>* newCallFrames)
@@ -223,15 +249,13 @@ void InspectorDebuggerAgent::didParseSource(const String& sourceID, const String
urlToSourceIDsIterator = m_urlToSourceIDs.set(url, Vector<String>()).first;
urlToSourceIDsIterator->second.append(sourceID);
- HashMap<String, ScriptBreakpoints>::iterator stickyBreakpointsIterator = m_stickyBreakpoints.find(url);
+ InspectedURLToBreakpointsMap::iterator stickyBreakpointsIterator = m_stickyBreakpoints.find(url);
if (stickyBreakpointsIterator == m_stickyBreakpoints.end())
return;
- const ScriptBreakpoints& breakpoints = stickyBreakpointsIterator->second;
- for (ScriptBreakpoints::const_iterator it = breakpoints.begin(); it != breakpoints.end(); ++it) {
- const Breakpoint& breakpoint = it->second;
- restoreBreakpoint(sourceID, it->first, breakpoint.first, breakpoint.second);
- }
+ const LocationToBreakpointMap& breakpoints = stickyBreakpointsIterator->second;
+ for (LocationToBreakpointMap::const_iterator it = breakpoints.begin(); it != breakpoints.end(); ++it)
+ restoreBreakpoint(sourceID, it->second);
}
void InspectorDebuggerAgent::failedToParseSource(const String& url, const String& data, int firstLine, int errorLine, const String& errorMessage)
diff --git a/Source/WebCore/inspector/InspectorDebuggerAgent.h b/Source/WebCore/inspector/InspectorDebuggerAgent.h
index c16b38f..b665cc4 100644
--- a/Source/WebCore/inspector/InspectorDebuggerAgent.h
+++ b/Source/WebCore/inspector/InspectorDebuggerAgent.h
@@ -32,6 +32,7 @@
#if ENABLE(JAVASCRIPT_DEBUGGER) && ENABLE(INSPECTOR)
#include "InjectedScript.h"
+#include "ScriptBreakpoint.h"
#include "ScriptDebugListener.h"
#include "ScriptState.h"
#include <wtf/Forward.h>
@@ -64,8 +65,8 @@ public:
// Part of the protocol.
void activateBreakpoints();
void deactivateBreakpoints();
- void setStickyBreakpoint(const String& url, unsigned lineNumber, const String& condition, bool enabled);
- void setBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled, String* breakpointId, unsigned int* actualLineNumber);
+ void setStickyBreakpoint(const String& url, const WebCore::ScriptBreakpoint&);
+ void setBreakpoint(PassRefPtr<InspectorObject> breakpoint, String* breakpointId, long* actualLineNumber, long* actualColumnNumber);
void removeBreakpoint(const String& breakpointId);
void editScriptSource(const String& sourceID, const String& newContent, bool* success, String* result, RefPtr<InspectorValue>* newCallFrames);
void getScriptSource(const String& sourceID, String* scriptSource);
@@ -93,17 +94,19 @@ private:
virtual void didPause(ScriptState*);
virtual void didContinue();
- void restoreBreakpoint(const String& sourceID, unsigned lineNumber, const String& condition, bool enabled);
+ void restoreBreakpoint(const String& sourceID, const ScriptBreakpoint&);
+
+ typedef HashMap<String, Vector<String> > URLToSourceIDsMap;
+ typedef std::pair<long, long> Location;
+ typedef HashMap<Location, ScriptBreakpoint> LocationToBreakpointMap;
+ typedef HashMap<String, LocationToBreakpointMap> InspectedURLToBreakpointsMap;
InspectorAgent* m_inspectorAgent;
InspectorFrontend* m_frontend;
ScriptState* m_pausedScriptState;
HashMap<String, String> m_scriptIDToContent;
- typedef HashMap<String, Vector<String> > URLToSourceIDsMap;
URLToSourceIDsMap m_urlToSourceIDs;
- typedef std::pair<String, bool> Breakpoint;
- typedef HashMap<unsigned, Breakpoint> ScriptBreakpoints;
- HashMap<String, ScriptBreakpoints> m_stickyBreakpoints;
+ InspectedURLToBreakpointsMap m_stickyBreakpoints;
RefPtr<InspectorObject> m_breakProgramDetails;
bool m_javaScriptPauseScheduled;
};
diff --git a/Source/WebCore/inspector/ScriptBreakpoint.cpp b/Source/WebCore/inspector/ScriptBreakpoint.cpp
deleted file mode 100644
index b7205a7..0000000
--- a/Source/WebCore/inspector/ScriptBreakpoint.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- * its contributors may be used to endorse or promote products derived
- * from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "ScriptBreakpoint.h"
-
-#if ENABLE(INSPECTOR)
-
-#include "InspectorValues.h"
-
-namespace WebCore {
-
-void ScriptBreakpoint::sourceBreakpointsFromInspectorObject(PassRefPtr<InspectorObject> breakpoints, SourceBreakpoints* sourceBreakpoints)
-{
- for (InspectorObject::iterator it = breakpoints->begin(); it != breakpoints->end(); ++it) {
- bool ok;
- int lineNumber = it->first.toInt(&ok);
- if (!ok)
- continue;
- RefPtr<InspectorObject> breakpoint = it->second->asObject();
- if (!breakpoint)
- continue;
- bool enabled;
- RefPtr<InspectorValue> enabledValue = breakpoint->get("enabled");
- if (!enabledValue || !enabledValue->asBoolean(&enabled))
- continue;
- String condition;
- RefPtr<InspectorValue> conditionValue = breakpoint->get("condition");
- if (!conditionValue || !conditionValue->asString(&condition))
- continue;
- sourceBreakpoints->set(lineNumber, ScriptBreakpoint(enabled, condition));
- }
-}
-
-PassRefPtr<InspectorObject> ScriptBreakpoint::inspectorObjectFromSourceBreakpoints(const SourceBreakpoints& sourceBreakpoints)
-{
- RefPtr<InspectorObject> breakpoints = InspectorObject::create();
- for (SourceBreakpoints::const_iterator it = sourceBreakpoints.begin(); it != sourceBreakpoints.end(); ++it) {
- RefPtr<InspectorObject> breakpoint = InspectorObject::create();
- breakpoint->setBoolean("enabled", it->second.enabled);
- breakpoint->setString("condition", it->second.condition);
- breakpoints->setObject(String::number(it->first), breakpoint);
- }
- return breakpoints.release();
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(INSPECTOR)
diff --git a/Source/WebCore/inspector/ScriptBreakpoint.h b/Source/WebCore/inspector/ScriptBreakpoint.h
index d8ac762..9521ccd 100644
--- a/Source/WebCore/inspector/ScriptBreakpoint.h
+++ b/Source/WebCore/inspector/ScriptBreakpoint.h
@@ -31,19 +31,15 @@
#define ScriptBreakpoint_h
#include "PlatformString.h"
-#include <wtf/HashMap.h>
namespace WebCore {
-class InspectorObject;
-struct ScriptBreakpoint;
-
-typedef HashMap<int, ScriptBreakpoint> SourceBreakpoints;
-
struct ScriptBreakpoint {
- ScriptBreakpoint(bool enabled, const String& condition)
- : enabled(enabled)
+ ScriptBreakpoint(long lineNumber, long columnNumber, const String& condition, bool enabled)
+ : lineNumber(lineNumber)
+ , columnNumber(columnNumber)
, condition(condition)
+ , enabled(enabled)
{
}
@@ -51,13 +47,10 @@ struct ScriptBreakpoint {
{
}
- bool enabled;
+ long lineNumber;
+ long columnNumber;
String condition;
-
-#if ENABLE(INSPECTOR)
- static void sourceBreakpointsFromInspectorObject(PassRefPtr<InspectorObject>, SourceBreakpoints*);
- static PassRefPtr<InspectorObject> inspectorObjectFromSourceBreakpoints(const SourceBreakpoints&);
-#endif
+ bool enabled;
};
} // namespace WebCore
diff --git a/Source/WebCore/inspector/front-end/Breakpoint.js b/Source/WebCore/inspector/front-end/Breakpoint.js
index aa600a7..b8decf0 100644
--- a/Source/WebCore/inspector/front-end/Breakpoint.js
+++ b/Source/WebCore/inspector/front-end/Breakpoint.js
@@ -29,14 +29,14 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-WebInspector.Breakpoint = function(debuggerModel, breakpointId, sourceID, url, line, enabled, condition)
+WebInspector.Breakpoint = function(debuggerModel, breakpointId, data)
{
this.id = breakpointId;
- this.url = url;
- this.line = line;
- this.sourceID = sourceID;
- this._enabled = enabled;
- this._condition = condition || "";
+ this.sourceID = data.sourceID;
+ this.line = data.lineNumber;
+ this.column = data.columnNumber;
+ this._condition = data.condition;
+ this._enabled = data.enabled;
this._debuggerModel = debuggerModel;
}
@@ -59,6 +59,13 @@ WebInspector.Breakpoint.prototype = {
return this._condition;
},
+ get url()
+ {
+ if (!this._url)
+ this._url = this._debuggerModel.scriptForSourceID(this.sourceID).sourceURL;
+ return this._url;
+ },
+
get data()
{
return { id: this.id, url: this.url, sourceID: this.sourceID, lineNumber: this.line, condition: this.condition };
diff --git a/Source/WebCore/inspector/front-end/BreakpointManager.js b/Source/WebCore/inspector/front-end/BreakpointManager.js
index d943d5b..dfd1dfc 100644
--- a/Source/WebCore/inspector/front-end/BreakpointManager.js
+++ b/Source/WebCore/inspector/front-end/BreakpointManager.js
@@ -408,7 +408,7 @@ WebInspector.JavaScriptBreakpoint.prototype = {
_serializeToJSON: function()
{
var type = WebInspector.BreakpointManager.BreakpointTypes.JS;
- return { type: type, condition: { url: this._url, lineNumber: this._lineNumber, condition: this._condition } };
+ return { type: type, condition: { url: this._url, lineNumber: this._lineNumber, columnNumber: 1, condition: this._condition } };
}
}
diff --git a/Source/WebCore/inspector/front-end/DebuggerModel.js b/Source/WebCore/inspector/front-end/DebuggerModel.js
index 717486c..2112fd1 100644
--- a/Source/WebCore/inspector/front-end/DebuggerModel.js
+++ b/Source/WebCore/inspector/front-end/DebuggerModel.js
@@ -64,19 +64,26 @@ WebInspector.DebuggerModel.prototype = {
InspectorBackend.removeBreakpoint(this._continueToLineBreakpointId);
this._continueToLineBreakpointId = breakpointId;
}
- InspectorBackend.setBreakpoint(sourceID, lineNumber, "", true, didSetBreakpoint.bind(this));
+ var breakpoint = { sourceID: sourceID, lineNumber: lineNumber, columnNumber: 1, condition: "", enabled: true };
+ InspectorBackend.setBreakpoint(breakpoint, didSetBreakpoint.bind(this));
if (this._paused)
InspectorBackend.resume();
},
setBreakpoint: function(sourceID, lineNumber, enabled, condition)
{
- function didSetBreakpoint(breakpointId, actualLineNumber)
+ function didSetBreakpoint(breakpointId, actualLineNumber, actualColumnNumber)
{
- if (breakpointId)
- this._breakpointSetOnBackend(breakpointId, sourceID, actualLineNumber, condition, enabled, lineNumber, false);
+ if (!breakpointId)
+ return;
+ breakpoint.originalLineNumber = breakpoint.lineNumber;
+ breakpoint.originalColumnumber = breakpoint.columnNumber;
+ breakpoint.lineNumber = actualLineNumber;
+ breakpoint.columnNumber = actualColumnNumber;
+ this._breakpointSetOnBackend(breakpointId, breakpoint, false);
}
- InspectorBackend.setBreakpoint(sourceID, lineNumber, condition, enabled, didSetBreakpoint.bind(this));
+ var breakpoint = { sourceID: sourceID, lineNumber: lineNumber, columnNumber: 1, condition: condition, enabled: enabled };
+ InspectorBackend.setBreakpoint(breakpoint, didSetBreakpoint.bind(this));
},
removeBreakpoint: function(breakpointId)
@@ -89,18 +96,17 @@ WebInspector.DebuggerModel.prototype = {
breakpoint.dispatchEventToListeners("removed");
},
- _breakpointSetOnBackend: function(breakpointId, sourceID, lineNumber, condition, enabled, originalLineNumber, restored)
+ _breakpointSetOnBackend: function(breakpointId, breakpointData, restored)
{
- var sourceIDAndLine = this._encodeSourceIDAndLine(sourceID, lineNumber);
+ var sourceIDAndLine = this._encodeSourceIDAndLine(breakpointData.sourceID, breakpointData.lineNumber);
if (sourceIDAndLine in this._sourceIDAndLineToBreakpointId) {
InspectorBackend.removeBreakpoint(breakpointId);
return;
}
- var url = this._scripts[sourceID].sourceURL;
- var breakpoint = new WebInspector.Breakpoint(this, breakpointId, sourceID, url, lineNumber, enabled, condition);
+ var breakpoint = new WebInspector.Breakpoint(this, breakpointId, breakpointData);
breakpoint.restored = restored;
- breakpoint.originalLineNumber = originalLineNumber;
+ breakpoint.originalLineNumber = breakpointData.originalLineNumber;
this._breakpoints[breakpointId] = breakpoint;
this._sourceIDAndLineToBreakpointId[sourceIDAndLine] = breakpointId;
this.dispatchEventToListeners(WebInspector.DebuggerModel.Events.BreakpointAdded, breakpoint);
@@ -295,9 +301,9 @@ WebInspector.DebuggerDispatcher.prototype = {
this._debuggerModel._failedToParseScriptSource(sourceURL, source, startingLine, errorLine, errorMessage);
},
- breakpointResolved: function(breakpointId, sourceID, lineNumber, condition, enabled, originalLineNumber)
+ breakpointResolved: function(breakpointId, breakpoint)
{
- this._debuggerModel._breakpointSetOnBackend(breakpointId, sourceID, lineNumber, condition, enabled, originalLineNumber, true);
+ this._debuggerModel._breakpointSetOnBackend(breakpointId, breakpoint, true);
},
didCreateWorker: function()
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list