[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:48:00 UTC 2011


The following commit has been merged in the webkit-1.3 branch:
commit 8496c91d4a85d95f8acb92fa83c239584bee32ed
Author: podivilov at chromium.org <podivilov at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Jan 25 09:44:30 2011 +0000

    2011-01-24  Pavel Podivilov  <podivilov at chromium.org>
    
            Reviewed by Pavel Feldman.
    
            Web Inspector: debugger and browser debugger agents should manage sticky breakpoints independently.
            https://bugs.webkit.org/show_bug.cgi?id=52999
    
            * inspector/Inspector.idl:
            * inspector/InspectorAgent.cpp:
            (WebCore::InspectorAgent::didCommitLoad):
            (WebCore::InspectorAgent::enableDebugger):
            (WebCore::InspectorAgent::inspectedURLWithoutFragment):
            * inspector/InspectorAgent.h:
            * inspector/InspectorBrowserDebuggerAgent.cpp:
            (WebCore::InspectorBrowserDebuggerAgent::setAllBrowserBreakpoints):
            (WebCore::InspectorBrowserDebuggerAgent::inspectedURLChanged):
            (WebCore::InspectorBrowserDebuggerAgent::restoreStickyBreakpoint):
            * inspector/InspectorBrowserDebuggerAgent.h:
            * inspector/InspectorDebuggerAgent.cpp:
            (WebCore::InspectorDebuggerAgent::InspectorDebuggerAgent):
            (WebCore::InspectorDebuggerAgent::setAllJavaScriptBreakpoints):
            (WebCore::InspectorDebuggerAgent::inspectedURLChanged):
            (WebCore::InspectorDebuggerAgent::restoreBreakpoints):
            * inspector/InspectorDebuggerAgent.h:
            * inspector/InspectorState.cpp:
            (WebCore::InspectorState::InspectorState):
            * inspector/InspectorState.h:
            * inspector/front-end/BreakpointManager.js:
            (WebInspector.BreakpointManager):
            (WebInspector.BreakpointManager.prototype._projectChanged):
            (WebInspector.BreakpointManager.prototype._saveBreakpoints):
            (WebInspector.BreakpointManager.prototype._pushBreakpointsToBackend):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@76581 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index da3c8c9..6b412ab 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,36 @@
+2011-01-24  Pavel Podivilov  <podivilov at chromium.org>
+
+        Reviewed by Pavel Feldman.
+
+        Web Inspector: debugger and browser debugger agents should manage sticky breakpoints independently.
+        https://bugs.webkit.org/show_bug.cgi?id=52999
+
+        * inspector/Inspector.idl:
+        * inspector/InspectorAgent.cpp:
+        (WebCore::InspectorAgent::didCommitLoad):
+        (WebCore::InspectorAgent::enableDebugger):
+        (WebCore::InspectorAgent::inspectedURLWithoutFragment):
+        * inspector/InspectorAgent.h:
+        * inspector/InspectorBrowserDebuggerAgent.cpp:
+        (WebCore::InspectorBrowserDebuggerAgent::setAllBrowserBreakpoints):
+        (WebCore::InspectorBrowserDebuggerAgent::inspectedURLChanged):
+        (WebCore::InspectorBrowserDebuggerAgent::restoreStickyBreakpoint):
+        * inspector/InspectorBrowserDebuggerAgent.h:
+        * inspector/InspectorDebuggerAgent.cpp:
+        (WebCore::InspectorDebuggerAgent::InspectorDebuggerAgent):
+        (WebCore::InspectorDebuggerAgent::setAllJavaScriptBreakpoints):
+        (WebCore::InspectorDebuggerAgent::inspectedURLChanged):
+        (WebCore::InspectorDebuggerAgent::restoreBreakpoints):
+        * inspector/InspectorDebuggerAgent.h:
+        * inspector/InspectorState.cpp:
+        (WebCore::InspectorState::InspectorState):
+        * inspector/InspectorState.h:
+        * inspector/front-end/BreakpointManager.js:
+        (WebInspector.BreakpointManager):
+        (WebInspector.BreakpointManager.prototype._projectChanged):
+        (WebInspector.BreakpointManager.prototype._saveBreakpoints):
+        (WebInspector.BreakpointManager.prototype._pushBreakpointsToBackend):
+
 2011-01-25  Carlos Garcia Campos  <cgarcia at igalia.com>
 
         Reviewed by Martin Robinson.
diff --git a/Source/WebCore/inspector/Inspector.idl b/Source/WebCore/inspector/Inspector.idl
index 57f995b..ad0d8f4 100644
--- a/Source/WebCore/inspector/Inspector.idl
+++ b/Source/WebCore/inspector/Inspector.idl
@@ -242,8 +242,6 @@ module core {
         [domain=Inspector] void enableDebugger(in boolean always);
         [domain=Inspector] void disableDebugger(in boolean always);
 
-        [domain=Inspector] void setAllBrowserBreakpoints(in Object breakpoints);
-
         [notify, domain=Debugger] void debuggerWasEnabled();
         [notify, domain=Debugger] void debuggerWasDisabled();
 
@@ -253,9 +251,11 @@ module core {
         [domain=Debugger] void activateBreakpoints();
         [domain=Debugger] void deactivateBreakpoints();
 
+        [domain=Debugger] void setAllJavaScriptBreakpoints(in Object breakpoints);
         [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 setAllBrowserBreakpoints(in Object breakpoints);
         [domain=BrowserDebugger] void setDOMBreakpoint(in long nodeId, in long type);
         [domain=BrowserDebugger] void removeDOMBreakpoint(in long nodeId, in long type);
         [domain=BrowserDebugger] void setEventListenerBreakpoint(in String eventName);
diff --git a/Source/WebCore/inspector/InspectorAgent.cpp b/Source/WebCore/inspector/InspectorAgent.cpp
index 60c3ff8..e5f26cd 100644
--- a/Source/WebCore/inspector/InspectorAgent.cpp
+++ b/Source/WebCore/inspector/InspectorAgent.cpp
@@ -644,9 +644,10 @@ void InspectorAgent::didCommitLoad(DocumentLoader* loader)
 
 #if ENABLE(JAVASCRIPT_DEBUGGER)
         if (m_debuggerAgent) {
-            m_debuggerAgent->clearForPageNavigation();
+            KURL url = inspectedURLWithoutFragment();
+            m_debuggerAgent->inspectedURLChanged(url);
             if (m_browserDebuggerAgent)
-                m_browserDebuggerAgent->inspectedURLChanged(inspectedURL());
+                m_browserDebuggerAgent->inspectedURLChanged(url);
         }
 #endif
 
@@ -1052,7 +1053,6 @@ void InspectorAgent::enableDebugger(bool always)
 
     m_debuggerAgent = InspectorDebuggerAgent::create(this, m_frontend.get());
     m_browserDebuggerAgent = InspectorBrowserDebuggerAgent::create(this);
-    m_browserDebuggerAgent->inspectedURLChanged(inspectedURL());
 
     m_frontend->debuggerWasEnabled();
 }
@@ -1390,6 +1390,13 @@ KURL InspectorAgent::inspectedURL() const
     return m_inspectedPage->mainFrame()->loader()->url();
 }
 
+KURL InspectorAgent::inspectedURLWithoutFragment() const
+{
+    KURL url = inspectedURL();
+    url.removeFragmentIdentifier();
+    return url;
+}
+
 void InspectorAgent::reloadPage()
 {
     // FIXME: Why do we set the user gesture indicator here?
diff --git a/Source/WebCore/inspector/InspectorAgent.h b/Source/WebCore/inspector/InspectorAgent.h
index b252a20..3ea1410 100644
--- a/Source/WebCore/inspector/InspectorAgent.h
+++ b/Source/WebCore/inspector/InspectorAgent.h
@@ -128,6 +128,7 @@ public:
 
     Page* inspectedPage() const { return m_inspectedPage; }
     KURL inspectedURL() const;
+    KURL inspectedURLWithoutFragment() const;
     void reloadPage();
 
     void restoreInspectorStateFromCookie(const String& inspectorCookie);
diff --git a/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp b/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp
index e39e5c3..66d3cce 100644
--- a/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp
+++ b/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.cpp
@@ -71,16 +71,20 @@ InspectorBrowserDebuggerAgent::~InspectorBrowserDebuggerAgent()
 {
 }
 
-void InspectorBrowserDebuggerAgent::inspectedURLChanged(const KURL& url)
+void InspectorBrowserDebuggerAgent::setAllBrowserBreakpoints(PassRefPtr<InspectorObject> breakpoints)
+{
+    m_inspectorAgent->state()->setObject(InspectorState::browserBreakpoints, breakpoints);
+    inspectedURLChanged(m_inspectorAgent->inspectedURLWithoutFragment());
+}
+
+void InspectorBrowserDebuggerAgent::inspectedURLChanged(const String& url)
 {
     m_eventListenerBreakpoints.clear();
     m_XHRBreakpoints.clear();
     m_hasXHRBreakpointWithEmptyURL = false;
 
     RefPtr<InspectorObject> allBreakpoints = m_inspectorAgent->state()->getObject(InspectorState::browserBreakpoints);
-    KURL urlCopy = url;
-    urlCopy.removeFragmentIdentifier();
-    RefPtr<InspectorArray> breakpoints = allBreakpoints->getArray(urlCopy);
+    RefPtr<InspectorArray> breakpoints = allBreakpoints->getArray(url);
     if (!breakpoints)
         return;
     for (unsigned i = 0; i < breakpoints->length(); ++i)
@@ -89,10 +93,6 @@ void InspectorBrowserDebuggerAgent::inspectedURLChanged(const KURL& url)
 
 void InspectorBrowserDebuggerAgent::restoreStickyBreakpoint(PassRefPtr<InspectorObject> breakpoint)
 {
-    DEFINE_STATIC_LOCAL(String, eventListenerBreakpointType, ("EventListener"));
-    DEFINE_STATIC_LOCAL(String, javaScriptBreakpointType, ("JS"));
-    DEFINE_STATIC_LOCAL(String, xhrBreakpointType, ("XHR"));
-
     if (!breakpoint)
         return;
     String type;
@@ -105,28 +105,14 @@ void InspectorBrowserDebuggerAgent::restoreStickyBreakpoint(PassRefPtr<Inspector
     if (!condition)
         return;
 
-    if (type == eventListenerBreakpointType) {
+    if (type == eventListenerNativeBreakpointType) {
         if (!enabled)
             return;
         String eventName;
         if (!condition->getString("eventName", &eventName))
             return;
         setEventListenerBreakpoint(eventName);
-    } else if (type == javaScriptBreakpointType && m_inspectorAgent->debuggerAgent()) {
-        String url;
-        if (!condition->getString("url", &url))
-            return;
-        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, ScriptBreakpoint(long(lineNumber), long(columnNumber), javaScriptCondition, enabled));
-    } else if (type == xhrBreakpointType) {
+    } else if (type == xhrNativeBreakpointType) {
         if (!enabled)
             return;
         String url;
diff --git a/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.h b/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.h
index 6c893a4..0676c30 100644
--- a/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.h
+++ b/Source/WebCore/inspector/InspectorBrowserDebuggerAgent.h
@@ -46,7 +46,6 @@ namespace WebCore {
 class Element;
 class InspectorAgent;
 class InspectorObject;
-class KURL;
 class Node;
 
 class InspectorBrowserDebuggerAgent {
@@ -59,7 +58,8 @@ public:
 
     virtual ~InspectorBrowserDebuggerAgent();
 
-    void inspectedURLChanged(const KURL&);
+    void setAllBrowserBreakpoints(PassRefPtr<InspectorObject>);
+    void inspectedURLChanged(const String& url);
 
     // BrowserDebugger API for InspectorFrontend
     void setXHRBreakpoint(const String& url);
diff --git a/Source/WebCore/inspector/InspectorDebuggerAgent.cpp b/Source/WebCore/inspector/InspectorDebuggerAgent.cpp
index 57530ee..600e44f 100644
--- a/Source/WebCore/inspector/InspectorDebuggerAgent.cpp
+++ b/Source/WebCore/inspector/InspectorDebuggerAgent.cpp
@@ -34,6 +34,7 @@
 #include "InjectedScript.h"
 #include "InjectedScriptHost.h"
 #include "InspectorFrontend.h"
+#include "InspectorState.h"
 #include "InspectorValues.h"
 #include "PlatformString.h"
 #include "ScriptDebugServer.h"
@@ -55,6 +56,7 @@ InspectorDebuggerAgent::InspectorDebuggerAgent(InspectorAgent* inspectorAgent, I
     , m_frontend(frontend)
     , m_pausedScriptState(0)
     , m_javaScriptPauseScheduled(false)
+    , m_breakpointsRestored(false)
 {
 }
 
@@ -79,6 +81,54 @@ void InspectorDebuggerAgent::deactivateBreakpoints()
     ScriptDebugServer::shared().deactivateBreakpoints();
 }
 
+void InspectorDebuggerAgent::setAllJavaScriptBreakpoints(PassRefPtr<InspectorObject> breakpoints)
+{
+    m_inspectorAgent->state()->setObject(InspectorState::javaScriptBreakpoints, breakpoints);
+    if (!m_breakpointsRestored) {
+        restoreBreakpoints(m_inspectorAgent->inspectedURLWithoutFragment());
+        m_breakpointsRestored = true;
+    }
+}
+
+void InspectorDebuggerAgent::inspectedURLChanged(const String& url)
+{
+    m_scriptIDToContent.clear();
+    m_urlToSourceIDs.clear();
+    restoreBreakpoints(url);
+}
+
+void InspectorDebuggerAgent::restoreBreakpoints(const String& inspectedURL)
+{
+    m_stickyBreakpoints.clear();
+
+    RefPtr<InspectorObject> allBreakpoints = m_inspectorAgent->state()->getObject(InspectorState::javaScriptBreakpoints);
+    RefPtr<InspectorArray> breakpoints = allBreakpoints->getArray(inspectedURL);
+    if (!breakpoints)
+        return;
+    for (unsigned i = 0; i < breakpoints->length(); ++i) {
+        RefPtr<InspectorObject> breakpoint = breakpoints->get(i)->asObject();
+        if (!breakpoint)
+            continue;
+        String url;
+        if (!breakpoint->getString("url", &url))
+            continue;
+        double lineNumber;
+        if (!breakpoint->getNumber("lineNumber", &lineNumber))
+            continue;
+        double columnNumber;
+        if (!breakpoint->getNumber("columnNumber", &columnNumber))
+            return;
+        String condition;
+        if (!breakpoint->getString("condition", &condition))
+            continue;
+        bool enabled;
+        if (!breakpoint->getBoolean("enabled", &enabled))
+            continue;
+        ScriptBreakpoint scriptBreakpoint((long) lineNumber, (long) columnNumber, condition, enabled);
+        setStickyBreakpoint(url, scriptBreakpoint);
+    }
+}
+
 void InspectorDebuggerAgent::setStickyBreakpoint(const String& url, const ScriptBreakpoint& breakpoint)
 {
     InspectedURLToBreakpointsMap::iterator it = m_stickyBreakpoints.find(url);
@@ -213,13 +263,6 @@ void InspectorDebuggerAgent::getCompletionsOnCallFrame(PassRefPtr<InspectorObjec
         injectedScript.getCompletionsOnCallFrame(callFrameId, expression, includeInspectorCommandLineAPI, result);
 }
 
-void InspectorDebuggerAgent::clearForPageNavigation()
-{
-    m_scriptIDToContent.clear();
-    m_urlToSourceIDs.clear();
-    m_stickyBreakpoints.clear();
-}
-
 PassRefPtr<InspectorValue> InspectorDebuggerAgent::currentCallFrames()
 {
     if (!m_pausedScriptState)
diff --git a/Source/WebCore/inspector/InspectorDebuggerAgent.h b/Source/WebCore/inspector/InspectorDebuggerAgent.h
index b665cc4..29f45de 100644
--- a/Source/WebCore/inspector/InspectorDebuggerAgent.h
+++ b/Source/WebCore/inspector/InspectorDebuggerAgent.h
@@ -62,6 +62,9 @@ public:
 
     static bool isDebuggerAlwaysEnabled();
 
+    void setAllJavaScriptBreakpoints(PassRefPtr<InspectorObject>);
+    void inspectedURLChanged(const String& url);
+
     // Part of the protocol.
     void activateBreakpoints();
     void deactivateBreakpoints();
@@ -82,8 +85,6 @@ public:
     void evaluateOnCallFrame(PassRefPtr<InspectorObject> callFrameId, const String& expression, const String& objectGroup, RefPtr<InspectorValue>* result);
     void getCompletionsOnCallFrame(PassRefPtr<InspectorObject> callFrameId, const String& expression, bool includeInspectorCommandLineAPI, RefPtr<InspectorValue>* result);
 
-    void clearForPageNavigation();
-
 private:
     InspectorDebuggerAgent(InspectorAgent*, InspectorFrontend*);
 
@@ -94,6 +95,7 @@ private:
     virtual void didPause(ScriptState*);
     virtual void didContinue();
 
+    void restoreBreakpoints(const String& inspectedURL);
     void restoreBreakpoint(const String& sourceID, const ScriptBreakpoint&);
 
     typedef HashMap<String, Vector<String> > URLToSourceIDsMap;
@@ -109,6 +111,7 @@ private:
     InspectedURLToBreakpointsMap m_stickyBreakpoints;
     RefPtr<InspectorObject> m_breakProgramDetails;
     bool m_javaScriptPauseScheduled;
+    bool m_breakpointsRestored;
 };
 
 } // namespace WebCore
diff --git a/Source/WebCore/inspector/InspectorState.cpp b/Source/WebCore/inspector/InspectorState.cpp
index dba9e4d..c1b6821 100644
--- a/Source/WebCore/inspector/InspectorState.cpp
+++ b/Source/WebCore/inspector/InspectorState.cpp
@@ -42,6 +42,7 @@ InspectorState::InspectorState(InspectorClient* client)
     registerBoolean(userInitiatedProfiling, false);
     registerBoolean(timelineProfilerEnabled, false);
     registerBoolean(searchingForNode, false);
+    registerObject(javaScriptBreakpoints);
     registerObject(browserBreakpoints);
     registerBoolean(consoleMessagesEnabled, false);
     registerBoolean(monitoringXHR, false);
diff --git a/Source/WebCore/inspector/InspectorState.h b/Source/WebCore/inspector/InspectorState.h
index 6e12673..2017332 100644
--- a/Source/WebCore/inspector/InspectorState.h
+++ b/Source/WebCore/inspector/InspectorState.h
@@ -49,6 +49,7 @@ public:
         searchingForNode,
         consoleMessagesEnabled,
         userInitiatedProfiling,
+        javaScriptBreakpoints,
         browserBreakpoints,
         resourceAgentEnabled,
         lastPropertyId
diff --git a/Source/WebCore/inspector/front-end/BreakpointManager.js b/Source/WebCore/inspector/front-end/BreakpointManager.js
index dfd1dfc..169b473 100644
--- a/Source/WebCore/inspector/front-end/BreakpointManager.js
+++ b/Source/WebCore/inspector/front-end/BreakpointManager.js
@@ -34,7 +34,6 @@ WebInspector.BreakpointManager = function()
     var breakpoints = WebInspector.settings.findSettingForAllProjects("nativeBreakpoints");
     for (var projectId in breakpoints)
         this._stickyBreakpoints[projectId] = this._validateBreakpoints(breakpoints[projectId]);
-    InspectorBackend.setAllBrowserBreakpoints(this._stickyBreakpoints);
 
     this._breakpoints = {};
     this._domBreakpointsRestored = false;
@@ -245,6 +244,11 @@ WebInspector.BreakpointManager.prototype = {
             else if (breakpoint.type === WebInspector.BreakpointManager.BreakpointTypes.XHR)
                 this._createXHRBreakpoint(breakpoint.condition.url, breakpoint.enabled, true);
         }
+
+        if (!this._breakpointsPushedToFrontend) {
+            this._pushBreakpointsToBackend();
+            this._breakpointsPushedToFrontend = true;
+        }
     },
 
     restoreDOMBreakpoints: function()
@@ -303,7 +307,34 @@ WebInspector.BreakpointManager.prototype = {
         WebInspector.settings.nativeBreakpoints = breakpoints;
 
         this._stickyBreakpoints[WebInspector.settings.projectId] = breakpoints;
-        InspectorBackend.setAllBrowserBreakpoints(this._stickyBreakpoints);
+        this._pushBreakpointsToBackend();
+    },
+
+    _pushBreakpointsToBackend: function()
+    {
+        var allJavaScriptBreakpoints = {};
+        var allBrowserBreakpoints = {};
+        for (var projectId in this._stickyBreakpoints) {
+            var breakpoints = this._stickyBreakpoints[projectId];
+            var javaScriptBreakpoints = [];
+            var browserBreakpoints = [];
+            for (var i = 0; i < breakpoints.length; ++i) {
+                if (breakpoints[i].type == WebInspector.BreakpointManager.BreakpointTypes.JS) {
+                    var data = {};
+                    data.enabled = breakpoints[i].enabled;
+                    for (var p in breakpoints[i].condition)
+                        data[p] = breakpoints[i].condition[p];
+                    javaScriptBreakpoints.push(data);
+                } else
+                    browserBreakpoints.push(breakpoints[i]);
+            }
+            if (javaScriptBreakpoints.length)
+                allJavaScriptBreakpoints[projectId] = javaScriptBreakpoints;
+            if (browserBreakpoints.length)
+                allBrowserBreakpoints[projectId] = browserBreakpoints;
+        }
+        InspectorBackend.setAllJavaScriptBreakpoints(allJavaScriptBreakpoints);
+        InspectorBackend.setAllBrowserBreakpoints(allBrowserBreakpoints);
     },
 
     _validateBreakpoints: function(persistentBreakpoints)

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list