2011-03-14 Sheriff Bot <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r81026.
        http://trac.webkit.org/changeset/81026
        https://bugs.webkit.org/show_bug.cgi?id=56313

        Breaks gtk 64-bit tests (Requested by podivilov on #webkit).

        * inspector/debugger/xhr-breakpoints-expected.txt: Removed.
        * inspector/debugger/xhr-breakpoints.html: Removed.
        * platform/gtk/Skipped:
        * platform/mac/Skipped:
        * platform/qt/Skipped:
        * platform/win/Skipped:
2011-03-14  Sheriff Bot  <webkit.review.bot@gmail.com>

        Unreviewed, rolling out r81026.
        http://trac.webkit.org/changeset/81026
        https://bugs.webkit.org/show_bug.cgi?id=56313

        Breaks gtk 64-bit tests (Requested by podivilov on #webkit).

        * inspector/InspectorBrowserDebuggerAgent.cpp:
        (WebCore::InspectorBrowserDebuggerAgent::InspectorBrowserDebuggerAgent):
        (WebCore::InspectorBrowserDebuggerAgent::inspectedURLChanged):
        (WebCore::InspectorBrowserDebuggerAgent::restoreStickyBreakpoint):
        (WebCore::InspectorBrowserDebuggerAgent::setXHRBreakpoint):
        (WebCore::InspectorBrowserDebuggerAgent::removeXHRBreakpoint):
        (WebCore::InspectorBrowserDebuggerAgent::willSendXMLHttpRequest):
        (WebCore::InspectorBrowserDebuggerAgent::clear):
        * inspector/InspectorBrowserDebuggerAgent.h:
        * inspector/front-end/BreakpointManager.js:
        (WebInspector.BreakpointManager.prototype.createXHRBreakpoint):
        (WebInspector.BreakpointManager.prototype._createXHRBreakpoint):
        (WebInspector.BreakpointManager.prototype.breakpointViewForEventData):
        (WebInspector.BreakpointManager.prototype._projectChanged):
        (WebInspector.BreakpointManager.prototype._validateBreakpoints):
        (WebInspector.BreakpointManager.prototype._createEventListenerBreakpointId):
        (WebInspector.BreakpointManager.prototype._createXHRBreakpointId):
        (WebInspector.XHRBreakpoint):
        (WebInspector.XHRBreakpoint.prototype._enable):
        (WebInspector.XHRBreakpoint.prototype._disable):
        (WebInspector.XHRBreakpoint.prototype._serializeToJSON):
        (WebInspector.XHRBreakpointView):
        (WebInspector.XHRBreakpointView.prototype.compareTo):
        (WebInspector.XHRBreakpointView.prototype.populateEditElement):
        (WebInspector.XHRBreakpointView.prototype.populateLabelElement):
        (WebInspector.XHRBreakpointView.prototype.populateStatusMessageElement):
        * inspector/front-end/BreakpointsSidebarPane.js:
        (WebInspector.XHRBreakpointsSidebarPane.addButtonClicked):
        (WebInspector.XHRBreakpointsSidebarPane):
        (WebInspector.XHRBreakpointsSidebarPane.prototype.addBreakpointItem):
        (WebInspector.XHRBreakpointsSidebarPane.prototype._startEditingBreakpoint):
        (WebInspector.XHRBreakpointsSidebarPane.prototype._hideEditBreakpointDialog):
        * inspector/front-end/CallStackSidebarPane.js:
        (WebInspector.CallStackSidebarPane.prototype.update):
        * inspector/front-end/ScriptsPanel.js:
        (WebInspector.ScriptsPanel):
        (WebInspector.ScriptsPanel.prototype._debuggerPaused):
        (WebInspector.ScriptsPanel.prototype._clearInterface):
        * inspector/front-end/Settings.js:
        (WebInspector.Settings):
        * inspector/front-end/inspector.js:
        (WebInspector.resetFocusElement):
        (WebInspector.createXHRBreakpointsSidebarPane.breakpointAdded):
        (WebInspector.createXHRBreakpointsSidebarPane):
        (WebInspector.set attached):

git-svn-id: svn://svn.chromium.org/blink/trunk@81030 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent b5263104
2011-03-14 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r81026.
http://trac.webkit.org/changeset/81026
https://bugs.webkit.org/show_bug.cgi?id=56313
Breaks gtk 64-bit tests (Requested by podivilov on #webkit).
* inspector/debugger/xhr-breakpoints-expected.txt: Removed.
* inspector/debugger/xhr-breakpoints.html: Removed.
* platform/gtk/Skipped:
* platform/mac/Skipped:
* platform/qt/Skipped:
* platform/win/Skipped:
2011-03-14 Mikhail Naganov <mnaganov@chromium.org> 2011-03-14 Mikhail Naganov <mnaganov@chromium.org>
Reviewed by Pavel Feldman. Reviewed by Pavel Feldman.
Tests XHR breakpoints.
Debugger was enabled.
Running: testXHRBreakpoint
Script execution paused.
Call stack:
0) sendRequest (xhr-breakpoints.html:11)
1) (:1)
Script execution resumed.
Running: testPauseOnAnyXHR
Debugger was disabled.
<html>
<head>
<script src="../../http/tests/inspector/inspector-test.js"></script>
<script src="../../http/tests/inspector/debugger-test.js"></script>
<script>
function sendRequest(url)
{
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.send()
}
function test()
{
var pane = WebInspector.panels.scripts.sidebarPanes.xhrBreakpoints;
InspectorTest.runDebuggerTestSuite([
function testXHRBreakpoint(next)
{
pane._setBreakpoint("foo", true);
InspectorTest.waitUntilPaused(step1);
InspectorTest.evaluateInPageWithTimeout("sendRequest('/foo?a=b')");
function step1(callFrames)
{
InspectorTest.captureStackTrace(callFrames);
InspectorTest.resumeExecution(step2);
}
function step2()
{
InspectorTest.evaluateInPage("sendRequest('/bar?a=b')", step3);
}
function step3()
{
pane._removeBreakpoint("foo");
InspectorTest.evaluateInPage("sendRequest('/foo?a=b')", next);
}
},
function testPauseOnAnyXHR(next)
{
pane._setBreakpoint("");
InspectorTest.evaluateInPage("sendRequest('/foo?a=b')", pausedFoo);
function pausedFoo(callFrames)
{
function resumed()
{
InspectorTest.evaluateInPage("sendRequest('/bar?a=b')", pausedBar);
}
InspectorTest.resumeExecution(resumed);
}
function pausedBar(callFrames)
{
function resumed()
{
pane._removeBreakpoint("");
InspectorTest.evaluateInPage("sendRequest('/baz?a=b')", next);
}
InspectorTest.resumeExecution(resumed);
}
}
]);
}
</script>
</head>
<body onload="runTest()">
<p>
Tests XHR breakpoints.
</p>
</body>
</html>
...@@ -1183,7 +1183,6 @@ sputnik/Unicode/Unicode_510/S7.6_A5.3_T2.html ...@@ -1183,7 +1183,6 @@ sputnik/Unicode/Unicode_510/S7.6_A5.3_T2.html
# https://bugs.webkit.org/show_bug.cgi?id=43332 # https://bugs.webkit.org/show_bug.cgi?id=43332
inspector/debugger/dom-breakpoints.html inspector/debugger/dom-breakpoints.html
inspector/debugger/xhr-breakpoints.html
# https://bugs.webkit.org/show_bug.cgi?id=40300 # https://bugs.webkit.org/show_bug.cgi?id=40300
inspector/debugger/live-edit.html inspector/debugger/live-edit.html
......
...@@ -233,7 +233,6 @@ animations/play-state.html ...@@ -233,7 +233,6 @@ animations/play-state.html
# https://bugs.webkit.org/show_bug.cgi?id=43332 # https://bugs.webkit.org/show_bug.cgi?id=43332
inspector/debugger/dom-breakpoints.html inspector/debugger/dom-breakpoints.html
inspector/debugger/xhr-breakpoints.html
# https://bugs.webkit.org/show_bug.cgi?id=40300 # https://bugs.webkit.org/show_bug.cgi?id=40300
inspector/debugger/live-edit.html inspector/debugger/live-edit.html
......
...@@ -104,7 +104,6 @@ fast/text/hyphens.html ...@@ -104,7 +104,6 @@ fast/text/hyphens.html
# https://bugs.webkit.org/show_bug.cgi?id=43332 # https://bugs.webkit.org/show_bug.cgi?id=43332
inspector/debugger/dom-breakpoints.html inspector/debugger/dom-breakpoints.html
inspector/debugger/xhr-breakpoints.html
# https://bugs.webkit.org/show_bug.cgi?id=40300 # https://bugs.webkit.org/show_bug.cgi?id=40300
inspector/debugger/live-edit.html inspector/debugger/live-edit.html
......
...@@ -1092,7 +1092,6 @@ http/tests/appcache/origin-quota.html ...@@ -1092,7 +1092,6 @@ http/tests/appcache/origin-quota.html
# https://bugs.webkit.org/show_bug.cgi?id=43332 # https://bugs.webkit.org/show_bug.cgi?id=43332
inspector/debugger/dom-breakpoints.html inspector/debugger/dom-breakpoints.html
inspector/debugger/xhr-breakpoints.html
# https://bugs.webkit.org/show_bug.cgi?id=40300 # https://bugs.webkit.org/show_bug.cgi?id=40300
inspector/debugger/live-edit.html inspector/debugger/live-edit.html
......
2011-03-14 Sheriff Bot <webkit.review.bot@gmail.com>
Unreviewed, rolling out r81026.
http://trac.webkit.org/changeset/81026
https://bugs.webkit.org/show_bug.cgi?id=56313
Breaks gtk 64-bit tests (Requested by podivilov on #webkit).
* inspector/InspectorBrowserDebuggerAgent.cpp:
(WebCore::InspectorBrowserDebuggerAgent::InspectorBrowserDebuggerAgent):
(WebCore::InspectorBrowserDebuggerAgent::inspectedURLChanged):
(WebCore::InspectorBrowserDebuggerAgent::restoreStickyBreakpoint):
(WebCore::InspectorBrowserDebuggerAgent::setXHRBreakpoint):
(WebCore::InspectorBrowserDebuggerAgent::removeXHRBreakpoint):
(WebCore::InspectorBrowserDebuggerAgent::willSendXMLHttpRequest):
(WebCore::InspectorBrowserDebuggerAgent::clear):
* inspector/InspectorBrowserDebuggerAgent.h:
* inspector/front-end/BreakpointManager.js:
(WebInspector.BreakpointManager.prototype.createXHRBreakpoint):
(WebInspector.BreakpointManager.prototype._createXHRBreakpoint):
(WebInspector.BreakpointManager.prototype.breakpointViewForEventData):
(WebInspector.BreakpointManager.prototype._projectChanged):
(WebInspector.BreakpointManager.prototype._validateBreakpoints):
(WebInspector.BreakpointManager.prototype._createEventListenerBreakpointId):
(WebInspector.BreakpointManager.prototype._createXHRBreakpointId):
(WebInspector.XHRBreakpoint):
(WebInspector.XHRBreakpoint.prototype._enable):
(WebInspector.XHRBreakpoint.prototype._disable):
(WebInspector.XHRBreakpoint.prototype._serializeToJSON):
(WebInspector.XHRBreakpointView):
(WebInspector.XHRBreakpointView.prototype.compareTo):
(WebInspector.XHRBreakpointView.prototype.populateEditElement):
(WebInspector.XHRBreakpointView.prototype.populateLabelElement):
(WebInspector.XHRBreakpointView.prototype.populateStatusMessageElement):
* inspector/front-end/BreakpointsSidebarPane.js:
(WebInspector.XHRBreakpointsSidebarPane.addButtonClicked):
(WebInspector.XHRBreakpointsSidebarPane):
(WebInspector.XHRBreakpointsSidebarPane.prototype.addBreakpointItem):
(WebInspector.XHRBreakpointsSidebarPane.prototype._startEditingBreakpoint):
(WebInspector.XHRBreakpointsSidebarPane.prototype._hideEditBreakpointDialog):
* inspector/front-end/CallStackSidebarPane.js:
(WebInspector.CallStackSidebarPane.prototype.update):
* inspector/front-end/ScriptsPanel.js:
(WebInspector.ScriptsPanel):
(WebInspector.ScriptsPanel.prototype._debuggerPaused):
(WebInspector.ScriptsPanel.prototype._clearInterface):
* inspector/front-end/Settings.js:
(WebInspector.Settings):
* inspector/front-end/inspector.js:
(WebInspector.resetFocusElement):
(WebInspector.createXHRBreakpointsSidebarPane.breakpointAdded):
(WebInspector.createXHRBreakpointsSidebarPane):
(WebInspector.set attached):
2011-03-14 Mikhail Naganov <mnaganov@chromium.org> 2011-03-14 Mikhail Naganov <mnaganov@chromium.org>
Reviewed by Pavel Feldman. Reviewed by Pavel Feldman.
......
...@@ -65,8 +65,6 @@ namespace WebCore { ...@@ -65,8 +65,6 @@ namespace WebCore {
namespace BrowserDebuggerAgentState { namespace BrowserDebuggerAgentState {
static const char browserBreakpoints[] = "browserBreakpoints"; static const char browserBreakpoints[] = "browserBreakpoints";
static const char pauseOnAllXHRs[] = "pauseOnAllXHRs";
static const char xhrBreakpoints[] = "xhrBreakpoints";
} }
PassOwnPtr<InspectorBrowserDebuggerAgent> InspectorBrowserDebuggerAgent::create(InstrumentingAgents* instrumentingAgents, InspectorState* inspectorState, InspectorDOMAgent* domAgent, InspectorDebuggerAgent* debuggerAgent, InspectorAgent* inspectorAgent) PassOwnPtr<InspectorBrowserDebuggerAgent> InspectorBrowserDebuggerAgent::create(InstrumentingAgents* instrumentingAgents, InspectorState* inspectorState, InspectorDOMAgent* domAgent, InspectorDebuggerAgent* debuggerAgent, InspectorAgent* inspectorAgent)
...@@ -80,6 +78,7 @@ InspectorBrowserDebuggerAgent::InspectorBrowserDebuggerAgent(InstrumentingAgents ...@@ -80,6 +78,7 @@ InspectorBrowserDebuggerAgent::InspectorBrowserDebuggerAgent(InstrumentingAgents
, m_domAgent(domAgent) , m_domAgent(domAgent)
, m_debuggerAgent(debuggerAgent) , m_debuggerAgent(debuggerAgent)
, m_inspectorAgent(inspectorAgent) , m_inspectorAgent(inspectorAgent)
, m_hasXHRBreakpointWithEmptyURL(false)
{ {
m_debuggerAgent->setListener(this); m_debuggerAgent->setListener(this);
} }
...@@ -129,6 +128,8 @@ void InspectorBrowserDebuggerAgent::setAllBrowserBreakpoints(ErrorString*, PassR ...@@ -129,6 +128,8 @@ void InspectorBrowserDebuggerAgent::setAllBrowserBreakpoints(ErrorString*, PassR
void InspectorBrowserDebuggerAgent::inspectedURLChanged(const String& url) void InspectorBrowserDebuggerAgent::inspectedURLChanged(const String& url)
{ {
m_eventListenerBreakpoints.clear(); m_eventListenerBreakpoints.clear();
m_XHRBreakpoints.clear();
m_hasXHRBreakpointWithEmptyURL = false;
RefPtr<InspectorObject> allBreakpoints = m_inspectorState->getObject(BrowserDebuggerAgentState::browserBreakpoints); RefPtr<InspectorObject> allBreakpoints = m_inspectorState->getObject(BrowserDebuggerAgentState::browserBreakpoints);
RefPtr<InspectorArray> breakpoints = allBreakpoints->getArray(url); RefPtr<InspectorArray> breakpoints = allBreakpoints->getArray(url);
...@@ -160,6 +161,13 @@ void InspectorBrowserDebuggerAgent::restoreStickyBreakpoint(PassRefPtr<Inspector ...@@ -160,6 +161,13 @@ void InspectorBrowserDebuggerAgent::restoreStickyBreakpoint(PassRefPtr<Inspector
if (!condition->getString("eventName", &eventName)) if (!condition->getString("eventName", &eventName))
return; return;
setEventListenerBreakpoint(&error, eventName); setEventListenerBreakpoint(&error, eventName);
} else if (type == xhrNativeBreakpointType) {
if (!enabled)
return;
String url;
if (!condition->getString("url", &url))
return;
setXHRBreakpoint(&error, url);
} }
} }
...@@ -362,26 +370,18 @@ void InspectorBrowserDebuggerAgent::pauseOnNativeEventIfNeeded(const String& cat ...@@ -362,26 +370,18 @@ void InspectorBrowserDebuggerAgent::pauseOnNativeEventIfNeeded(const String& cat
void InspectorBrowserDebuggerAgent::setXHRBreakpoint(ErrorString*, const String& url) void InspectorBrowserDebuggerAgent::setXHRBreakpoint(ErrorString*, const String& url)
{ {
if (url.isEmpty()) { if (url.isEmpty())
m_inspectorState->setBoolean(BrowserDebuggerAgentState::pauseOnAllXHRs, true); m_hasXHRBreakpointWithEmptyURL = true;
return; else
} m_XHRBreakpoints.add(url);
RefPtr<InspectorObject> xhrBreakpoints = m_inspectorState->getObject(BrowserDebuggerAgentState::xhrBreakpoints);
xhrBreakpoints->setBoolean(url, true);
m_inspectorState->setObject(BrowserDebuggerAgentState::xhrBreakpoints, xhrBreakpoints);
} }
void InspectorBrowserDebuggerAgent::removeXHRBreakpoint(ErrorString*, const String& url) void InspectorBrowserDebuggerAgent::removeXHRBreakpoint(ErrorString*, const String& url)
{ {
if (url.isEmpty()) { if (url.isEmpty())
m_inspectorState->setBoolean(BrowserDebuggerAgentState::pauseOnAllXHRs, false); m_hasXHRBreakpointWithEmptyURL = false;
return; else
} m_XHRBreakpoints.remove(url);
RefPtr<InspectorObject> xhrBreakpoints = m_inspectorState->getObject(BrowserDebuggerAgentState::xhrBreakpoints);
xhrBreakpoints->remove(url);
m_inspectorState->setObject(BrowserDebuggerAgentState::xhrBreakpoints, xhrBreakpoints);
} }
void InspectorBrowserDebuggerAgent::willSendXMLHttpRequest(const String& url) void InspectorBrowserDebuggerAgent::willSendXMLHttpRequest(const String& url)
...@@ -391,13 +391,12 @@ void InspectorBrowserDebuggerAgent::willSendXMLHttpRequest(const String& url) ...@@ -391,13 +391,12 @@ void InspectorBrowserDebuggerAgent::willSendXMLHttpRequest(const String& url)
return; return;
String breakpointURL; String breakpointURL;
if (m_inspectorState->getBoolean(BrowserDebuggerAgentState::pauseOnAllXHRs)) if (m_hasXHRBreakpointWithEmptyURL)
breakpointURL = ""; breakpointURL = "";
else { else {
RefPtr<InspectorObject> xhrBreakpoints = m_inspectorState->getObject(BrowserDebuggerAgentState::xhrBreakpoints); for (HashSet<String>::iterator it = m_XHRBreakpoints.begin(); it != m_XHRBreakpoints.end(); ++it) {
for (InspectorObject::iterator it = xhrBreakpoints->begin(); it != xhrBreakpoints->end(); ++it) { if (url.contains(*it)) {
if (url.contains(it->first)) { breakpointURL = *it;
breakpointURL = it->first;
break; break;
} }
} }
...@@ -417,6 +416,8 @@ void InspectorBrowserDebuggerAgent::clear() ...@@ -417,6 +416,8 @@ void InspectorBrowserDebuggerAgent::clear()
{ {
m_domBreakpoints.clear(); m_domBreakpoints.clear();
m_eventListenerBreakpoints.clear(); m_eventListenerBreakpoints.clear();
m_XHRBreakpoints.clear();
m_hasXHRBreakpointWithEmptyURL = false;
} }
} // namespace WebCore } // namespace WebCore
......
...@@ -109,6 +109,8 @@ private: ...@@ -109,6 +109,8 @@ private:
InspectorAgent* m_inspectorAgent; InspectorAgent* m_inspectorAgent;
HashMap<Node*, uint32_t> m_domBreakpoints; HashMap<Node*, uint32_t> m_domBreakpoints;
HashSet<String> m_eventListenerBreakpoints; HashSet<String> m_eventListenerBreakpoints;
HashSet<String> m_XHRBreakpoints;
bool m_hasXHRBreakpointWithEmptyURL;
}; };
} // namespace WebCore } // namespace WebCore
......
...@@ -52,6 +52,7 @@ WebInspector.BreakpointManager.BreakpointTypes = { ...@@ -52,6 +52,7 @@ WebInspector.BreakpointManager.BreakpointTypes = {
WebInspector.BreakpointManager.Events = { WebInspector.BreakpointManager.Events = {
DOMBreakpointAdded: "dom-breakpoint-added", DOMBreakpointAdded: "dom-breakpoint-added",
EventListenerBreakpointAdded: "event-listener-breakpoint-added", EventListenerBreakpointAdded: "event-listener-breakpoint-added",
XHRBreakpointAdded: "xhr-breakpoint-added",
ProjectChanged: "project-changed" ProjectChanged: "project-changed"
} }
...@@ -98,14 +99,22 @@ WebInspector.BreakpointManager.prototype = { ...@@ -98,14 +99,22 @@ WebInspector.BreakpointManager.prototype = {
this.dispatchEventToListeners(WebInspector.BreakpointManager.Events.EventListenerBreakpointAdded, breakpoint.view); this.dispatchEventToListeners(WebInspector.BreakpointManager.Events.EventListenerBreakpointAdded, breakpoint.view);
}, },
setXHRBreakpoint: function(url) createXHRBreakpoint: function(url)
{ {
BrowserDebuggerAgent.setXHRBreakpoint(url); this._createXHRBreakpoint(url, true, false);
}, },
removeXHRBreakpoint: function(url) _createXHRBreakpoint: function(url, enabled, restored)
{ {
BrowserDebuggerAgent.removeXHRBreakpoint(url); var breakpointId = this._createXHRBreakpointId(url);
if (breakpointId in this._breakpoints)
return;
var breakpoint = new WebInspector.XHRBreakpoint(url);
this._setBreakpoint(breakpointId, breakpoint, enabled, restored);
breakpoint.view = new WebInspector.XHRBreakpointView(this, breakpointId, enabled, url);
this.dispatchEventToListeners(WebInspector.BreakpointManager.Events.XHRBreakpointAdded, breakpoint.view);
}, },
_setBreakpoint: function(breakpointId, breakpoint, enabled, restored) _setBreakpoint: function(breakpointId, breakpoint, enabled, restored)
...@@ -148,6 +157,8 @@ WebInspector.BreakpointManager.prototype = { ...@@ -148,6 +157,8 @@ WebInspector.BreakpointManager.prototype = {
breakpointId = this._createDOMBreakpointId(eventData.nodeId, eventData.type); breakpointId = this._createDOMBreakpointId(eventData.nodeId, eventData.type);
else if (eventData.breakpointType === WebInspector.BreakpointManager.BreakpointTypes.EventListener) else if (eventData.breakpointType === WebInspector.BreakpointManager.BreakpointTypes.EventListener)
breakpointId = this._createEventListenerBreakpointId(eventData.eventName); breakpointId = this._createEventListenerBreakpointId(eventData.eventName);
else if (eventData.breakpointType === WebInspector.BreakpointManager.BreakpointTypes.XHR)
breakpointId = this._createXHRBreakpointId(eventData.breakpointURL);
else else
return; return;
...@@ -191,6 +202,8 @@ WebInspector.BreakpointManager.prototype = { ...@@ -191,6 +202,8 @@ WebInspector.BreakpointManager.prototype = {
var breakpoint = breakpoints[i]; var breakpoint = breakpoints[i];
if (breakpoint.type === WebInspector.BreakpointManager.BreakpointTypes.EventListener) if (breakpoint.type === WebInspector.BreakpointManager.BreakpointTypes.EventListener)
this._createEventListenerBreakpoint(breakpoint.condition.eventName, breakpoint.enabled, true); this._createEventListenerBreakpoint(breakpoint.condition.eventName, breakpoint.enabled, true);
else if (breakpoint.type === WebInspector.BreakpointManager.BreakpointTypes.XHR)
this._createXHRBreakpoint(breakpoint.condition.url, breakpoint.enabled, true);
} }
if (!this._breakpointsPushedToFrontend) { if (!this._breakpointsPushedToFrontend) {
...@@ -279,9 +292,12 @@ WebInspector.BreakpointManager.prototype = { ...@@ -279,9 +292,12 @@ WebInspector.BreakpointManager.prototype = {
if (typeof condition.eventName !== "string") if (typeof condition.eventName !== "string")
continue; continue;
id += condition.eventName; id += condition.eventName;
} else if (breakpoint.type === WebInspector.BreakpointManager.BreakpointTypes.XHR) {
if (typeof condition.url !== "string")
continue;
id += condition.url;
} else } else
continue; continue;
if (id in breakpointsSet) if (id in breakpointsSet)
continue; continue;
breakpointsSet[id] = true; breakpointsSet[id] = true;
...@@ -298,6 +314,11 @@ WebInspector.BreakpointManager.prototype = { ...@@ -298,6 +314,11 @@ WebInspector.BreakpointManager.prototype = {
_createEventListenerBreakpointId: function(eventName) _createEventListenerBreakpointId: function(eventName)
{ {
return "eventListner:" + eventName; return "eventListner:" + eventName;
},
_createXHRBreakpointId: function(url)
{
return "xhr:" + url;
} }
} }
...@@ -351,6 +372,30 @@ WebInspector.EventListenerBreakpoint.prototype = { ...@@ -351,6 +372,30 @@ WebInspector.EventListenerBreakpoint.prototype = {
} }
} }
WebInspector.XHRBreakpoint = function(url)
{
this._url = url;
}
WebInspector.XHRBreakpoint.prototype = {
_enable: function()
{
BrowserDebuggerAgent.setXHRBreakpoint(this._url);
},
_disable: function()
{
BrowserDebuggerAgent.removeXHRBreakpoint(this._url);
},
_serializeToJSON: function()
{
var type = WebInspector.BreakpointManager.BreakpointTypes.XHR;
return { type: type, condition: { url: this._url } };
}
}
WebInspector.NativeBreakpointView = function(manager, id, enabled) WebInspector.NativeBreakpointView = function(manager, id, enabled)
{ {
...@@ -533,6 +578,43 @@ WebInspector.EventListenerBreakpointView.prototype = { ...@@ -533,6 +578,43 @@ WebInspector.EventListenerBreakpointView.prototype = {
WebInspector.EventListenerBreakpointView.prototype.__proto__ = WebInspector.NativeBreakpointView.prototype; WebInspector.EventListenerBreakpointView.prototype.__proto__ = WebInspector.NativeBreakpointView.prototype;
WebInspector.XHRBreakpointView = function(manager, id, enabled, url)
{
WebInspector.NativeBreakpointView.call(this, manager, id, enabled);
this._url = url;
}
WebInspector.XHRBreakpointView.prototype = {
compareTo: function(other)
{
return this._compare(this._url, other._url);
},
populateEditElement: function(element)
{
element.textContent = this._url;
},
populateLabelElement: function(element)
{
var label;
if (!this._url.length)
label = WebInspector.UIString("Any XHR");
else
label = WebInspector.UIString("URL contains \"%s\"", this._url);
element.appendChild(document.createTextNode(label));
element.addStyleClass("cursor-auto");
},
populateStatusMessageElement: function(element)
{
var status = WebInspector.UIString("Paused on a XMLHttpRequest.");
element.appendChild(document.createTextNode(status));
}
}
WebInspector.XHRBreakpointView.prototype.__proto__ = WebInspector.NativeBreakpointView.prototype;
WebInspector.DOMBreakpointTypes = { WebInspector.DOMBreakpointTypes = {
SubtreeModified: 0, SubtreeModified: 0,
AttributeModified: 1, AttributeModified: 1,
......
...@@ -276,177 +276,61 @@ WebInspector.XHRBreakpointsSidebarPane = function() ...@@ -276,177 +276,61 @@ WebInspector.XHRBreakpointsSidebarPane = function()
{ {
WebInspector.NativeBreakpointsSidebarPane.call(this, WebInspector.UIString("XHR Breakpoints")); WebInspector.NativeBreakpointsSidebarPane.call(this, WebInspector.UIString("XHR Breakpoints"));
this._breakpointElements = {}; function addButtonClicked(event)
{
event.stopPropagation();
this._startEditingBreakpoint(null);
}
var addButton = document.createElement("button"); var addButton = document.createElement("button");
addButton.className = "add"; addButton.className = "add";
addButton.addEventListener("click", this._addButtonClicked.bind(this), false); addButton.addEventListener("click", addButtonClicked.bind(this), false);
this.titleElement.appendChild(addButton); this.titleElement.appendChild(addButton);
this._restoreBreakpoints();
} }
WebInspector.XHRBreakpointsSidebarPane.prototype = { WebInspector.XHRBreakpointsSidebarPane.prototype = {
_addButtonClicked: function(event) addBreakpointItem: function(breakpointItem)
{
event.stopPropagation();
this.expanded = true;
var inputElement = document.createElement("span");
inputElement.className = "breakpoint-condition editing";
this._addListElement(inputElement, this.listElement.firstChild);
function finishEditing(accept, e, text)
{
this._removeListElement(inputElement);
if (accept) {
this._setBreakpoint(text, true);
this._saveBreakpoints();
}
}
WebInspector.startEditing(inputElement, {
commitHandler: finishEditing.bind(this, true),
cancelHandler: finishEditing.bind(this, false)
});
},
_setBreakpoint: function(url, enabled)
{ {
if (url in this._breakpointElements) WebInspector.NativeBreakpointsSidebarPane.prototype.addBreakpointItem.call(this, breakpointItem);
return; breakpointItem._labelElement.addEventListener("dblclick", this._startEditingBreakpoint.bind(this, breakpointItem), false);
var element = document.createElement("li");
element._url = url;
element.addEventListener("contextmenu", this._contextMenu.bind(this, url), true);
var checkboxElement = document.createElement("input");
checkboxElement.className = "checkbox-elem";
checkboxElement.type = "checkbox";
checkboxElement.checked = enabled;
checkboxElement.addEventListener("click", this._checkboxClicked.bind(this, url), false);
element._checkboxElement = checkboxElement;
element.appendChild(checkboxElement);
var labelElement = document.createElement("span");
if (!url)
labelElement.textContent = WebInspector.UIString("Any XHR");
else
labelElement.textContent = WebInspector.UIString("URL contains \"%s\"", url);
labelElement.addStyleClass("cursor-auto");
labelElement.addEventListener("dblclick", this._labelClicked.bind(this, url), false);
element.appendChild(labelElement);
var currentElement = this.listElement.firstChild;
while (currentElement) {
if (currentElement._url && currentElement._url < element._url)
break;
currentElement = currentElement.nextSibling;
}
this._addListElement(element, currentElement);
this._breakpointElements[url] = element;
if (enabled)
WebInspector.breakpointManager.setXHRBreakpoint(url);
}, },
_removeBreakpoint: function(url) _startEditingBreakpoint: function(breakpointItem)
{ {
var element = this._breakpointElements[url]; if (this._editingBreakpoint)
if (!element)
return; return;
this._editingBreakpoint = true;
this._removeListElement(element); if (!this.expanded)
delete this._breakpointElements[url]; this.expanded = true;
if (element._checkboxElement.checked)
WebInspector.breakpointManager.removeXHRBreakpoint(url);
},
_contextMenu: function(url, event)
{
var contextMenu = new WebInspector.ContextMenu();
function removeBreakpoint()
{
this._removeBreakpoint(url);
this._saveBreakpoints();
}
contextMenu.appendItem(WebInspector.UIString("Remove Breakpoint"), removeBreakpoint.bind(this));
contextMenu.show(event);
},
_checkboxClicked: function(url, event)
{
if (event.target.checked)
WebInspector.breakpointManager.setXHRBreakpoint(url);
else
WebInspector.breakpointManager.removeXHRBreakpoint(url);
this._saveBreakpoints();
},
_labelClicked: function(url)
{
var element = this._breakpointElements[url];
var inputElement = document.createElement("span"); var inputElement = document.createElement("span");
inputElement.className = "breakpoint-condition editing"; inputElement.className = "breakpoint-condition editing";
inputElement.textContent = url; if (breakpointItem) {
this.listElement.insertBefore(inputElement, element); breakpointItem.populateEditElement(inputElement);
element.addStyleClass("hidden"); this.listElement.insertBefore(inputElement, breakpointItem.element);
breakpointItem.element.addStyleClass("hidden");
function finishEditing(accept, e, text) } else
{ this._addListElement(inputElement, this.listElement.firstChild);
this._removeListElement(inputElement);
if (accept) {
this._removeBreakpoint(url);
this._setBreakpoint(text, element._checkboxElement.checked);
this._saveBreakpoints();
} else
element.removeStyleClass("hidden");
}
var commitHandler = this._hideEditBreakpointDialog.bind(this, inputElement, true, breakpointItem);
var cancelHandler = this._hideEditBreakpointDialog.bind(this, inputElement, false, breakpointItem);
WebInspector.startEditing(inputElement, { WebInspector.startEditing(inputElement, {
commitHandler: finishEditing.bind(this, true), commitHandler: commitHandler,
cancelHandler: finishEditing.bind(this, false) cancelHandler: cancelHandler
}); });
}, },
highlightBreakpoint: function(url) _hideEditBreakpointDialog: function(inputElement, accept, breakpointItem)
{
var element = this._breakpointElements[url];
if (!element)
return;
this.expanded = true;
element.addStyleClass("breakpoint-hit");
this._highlightedElement = element;
},
clearBreakpointHighlight: function()
{
if (this._highlightedElement) {
this._highlightedElement.removeStyleClass("breakpoint-hit");
delete this._highlightedElement;
}
},
_saveBreakpoints: function()
{
var breakpoints = [];
for (var url in this._breakpointElements)
breakpoints.push({ url: url, enabled: this._breakpointElements[url]._checkboxElement.checked });
WebInspector.settings.xhrBreakpoints = breakpoints;
},
_restoreBreakpoints: function()
{
var breakpoints = WebInspector.settings.xhrBreakpoints;
for (var i = 0; i < breakpoints.length; ++i) {
var breakpoint = breakpoints[i];
if (breakpoint && typeof breakpoint.url === "string")
this._setBreakpoint(breakpoint.url, breakpoint.enabled);
}
},
_projectChanged: function()
{ {
this._removeListElement(inputElement);
this._editingBreakpoint = false;
if (accept) {
if (breakpointItem)
breakpointItem.remove();
WebInspector.breakpointManager.createXHRBreakpoint(inputElement.textContent.toLowerCase());
} else if (breakpointItem)
breakpointItem.element.removeStyleClass("hidden");
} }
} }
......
...@@ -87,12 +87,8 @@ WebInspector.CallStackSidebarPane.prototype = { ...@@ -87,12 +87,8 @@ WebInspector.CallStackSidebarPane.prototype = {
if (details.breakpoint) if (details.breakpoint)
this._scriptBreakpointHit(); this._scriptBreakpointHit();
else if (details.eventType === WebInspector.DebuggerEventTypes.NativeBreakpoint) { else if (details.eventType === WebInspector.DebuggerEventTypes.NativeBreakpoint)
if (details.eventData.breakpointType === WebInspector.BreakpointManager.BreakpointTypes.XHR) this._nativeBreakpointHit(details.eventData);
this._xhrBreakpointHit();
else
this._nativeBreakpointHit(details.eventData);
}
}, },
set selectedCallFrame(x) set selectedCallFrame(x)
...@@ -190,14 +186,6 @@ WebInspector.CallStackSidebarPane.prototype = { ...@@ -190,14 +186,6 @@ WebInspector.CallStackSidebarPane.prototype = {
this.bodyElement.appendChild(statusMessageElement); this.bodyElement.appendChild(statusMessageElement);
}, },
_xhrBreakpointHit: function()
{
var statusMessageElement = document.createElement("div");
statusMessageElement.className = "info";
statusMessageElement.textContent = WebInspector.UIString("Paused on a XMLHttpRequest.");
this.bodyElement.appendChild(statusMessageElement);
},
_nativeBreakpointHit: function(eventData) _nativeBreakpointHit: function(eventData)
{ {
var breakpoint = WebInspector.breakpointManager.breakpointViewForEventData(eventData); var breakpoint = WebInspector.breakpointManager.breakpointViewForEventData(eventData);
......
...@@ -145,7 +145,7 @@ WebInspector.ScriptsPanel = function() ...@@ -145,7 +145,7 @@ WebInspector.ScriptsPanel = function()
this.sidebarPanes.jsBreakpoints = new WebInspector.JavaScriptBreakpointsSidebarPane(this._presentationModel); this.sidebarPanes.jsBreakpoints = new WebInspector.JavaScriptBreakpointsSidebarPane(this._presentationModel);
if (Preferences.nativeInstrumentationEnabled) { if (Preferences.nativeInstrumentationEnabled) {
this.sidebarPanes.domBreakpoints = WebInspector.createDOMBreakpointsSidebarPane(); this.sidebarPanes.domBreakpoints = WebInspector.createDOMBreakpointsSidebarPane();
this.sidebarPanes.xhrBreakpoints = new WebInspector.XHRBreakpointsSidebarPane(); this.sidebarPanes.xhrBreakpoints = WebInspector.createXHRBreakpointsSidebarPane();
this.sidebarPanes.eventListenerBreakpoints = new WebInspector.EventListenerBreakpointsSidebarPane(); this.sidebarPanes.eventListenerBreakpoints = new WebInspector.EventListenerBreakpointsSidebarPane();
} }
...@@ -421,8 +421,7 @@ WebInspector.ScriptsPanel.prototype = { ...@@ -421,8 +421,7 @@ WebInspector.ScriptsPanel.prototype = {
_debuggerPaused: function(event) _debuggerPaused: function(event)
{ {
var details = event.data; var callFrames = event.data.callFrames;
var callFrames = details.callFrames;
this._paused = true; this._paused = true;
this._waitingToPause = false; this._waitingToPause = false;
...@@ -435,13 +434,8 @@ WebInspector.ScriptsPanel.prototype = { ...@@ -435,13 +434,8 @@ WebInspector.ScriptsPanel.prototype = {
this.sidebarPanes.callstack.update(event.data); this.sidebarPanes.callstack.update(event.data);
this.sidebarPanes.callstack.selectedCallFrame = callFrames[0]; this.sidebarPanes.callstack.selectedCallFrame = callFrames[0];
if (details.eventType === WebInspector.DebuggerEventTypes.NativeBreakpoint) { var sourceLocation = this._presentationModel.selectedCallFrame.sourceLocation;
if (details.eventData.breakpointType === WebInspector.BreakpointManager.BreakpointTypes.XHR) this.sidebarPanes.jsBreakpoints.highlightBreakpoint(sourceLocation.sourceFileId, sourceLocation.lineNumber);
this.sidebarPanes.xhrBreakpoints.highlightBreakpoint(details.eventData.breakpointURL);
} else {
var sourceLocation = this._presentationModel.selectedCallFrame.sourceLocation;
this.sidebarPanes.jsBreakpoints.highlightBreakpoint(sourceLocation.sourceFileId, sourceLocation.lineNumber);
}
window.focus(); window.focus();
InspectorFrontendHost.bringToFront(); InspectorFrontendHost.bringToFront();
...@@ -803,7 +797,6 @@ WebInspector.ScriptsPanel.prototype = { ...@@ -803,7 +797,6 @@ WebInspector.ScriptsPanel.prototype = {
this.sidebarPanes.callstack.update(null); this.sidebarPanes.callstack.update(null);
this.sidebarPanes.scopechain.update(null); this.sidebarPanes.scopechain.update(null);
this.sidebarPanes.jsBreakpoints.clearBreakpointHighlight(); this.sidebarPanes.jsBreakpoints.clearBreakpointHighlight();
this.sidebarPanes.xhrBreakpoints.clearBreakpointHighlight();
this._clearCurrentExecutionLine(); this._clearCurrentExecutionLine();
this._updateDebuggerButtons(); this._updateDebuggerButtons();
......
...@@ -72,7 +72,6 @@ WebInspector.Settings = function() ...@@ -72,7 +72,6 @@ WebInspector.Settings = function()
this.installApplicationSetting("showUserAgentStyles", true); this.installApplicationSetting("showUserAgentStyles", true);
this.installApplicationSetting("watchExpressions", []); this.installApplicationSetting("watchExpressions", []);
this.installApplicationSetting("breakpoints", []); this.installApplicationSetting("breakpoints", []);
this.installApplicationSetting("xhrBreakpoints", []);
this.installProjectSetting("nativeBreakpoints", []); this.installProjectSetting("nativeBreakpoints", []);
} }
......
...@@ -141,7 +141,7 @@ var WebInspector = { ...@@ -141,7 +141,7 @@ var WebInspector = {
resetFocusElement: function() resetFocusElement: function()
{ {
this.currentFocusElement = null; this.currentFocusElement = null;
this._previousFocusElement = null; this._previousFocusElement = null;
}, },
get currentPanel() get currentPanel()
...@@ -182,6 +182,17 @@ var WebInspector = { ...@@ -182,6 +182,17 @@ var WebInspector = {
return pane; return pane;
}, },
createXHRBreakpointsSidebarPane: function()
{
var pane = new WebInspector.XHRBreakpointsSidebarPane();
function breakpointAdded(event)
{
pane.addBreakpointItem(new WebInspector.BreakpointItem(event.data));
}
WebInspector.breakpointManager.addEventListener(WebInspector.BreakpointManager.Events.XHRBreakpointAdded, breakpointAdded);
return pane;
},
_createPanels: function() _createPanels: function()
{ {
var hiddenPanels = (InspectorFrontendHost.hiddenPanels() || "").split(','); var hiddenPanels = (InspectorFrontendHost.hiddenPanels() || "").split(',');
...@@ -228,7 +239,7 @@ var WebInspector = { ...@@ -228,7 +239,7 @@ var WebInspector = {
dockToggleButton.title = WebInspector.UIString("Dock to main window."); dockToggleButton.title = WebInspector.UIString("Dock to main window.");
} }
// This may be called before onLoadedDone, hence the bulk of inspector objects may // This may be called before onLoadedDone, hence the bulk of inspector objects may
// not be created yet. // not be created yet.
if (WebInspector.searchController) if (WebInspector.searchController)
WebInspector.searchController.updateSearchLabel(); WebInspector.searchController.updateSearchLabel();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment