Commit 34a297f0 authored by dcheng@chromium.org's avatar dcheng@chromium.org

Revert of DevTools: Expand protocol to allow setting DOM event breakpoints on...

Revert of DevTools: Expand protocol to allow setting DOM event breakpoints on a given event target. (https://codereview.chromium.org/320933003/)

Reason for revert:
event-listener-breakpoints.html always timing out on Mac 10.6 (dbg):
http://build.chromium.org/p/chromium.webkit/builders/WebKit%20Mac10.6%20(dbg)

Original issue's description:
> DevTools: Expand protocol to allow setting DOM event breakpoints on a given event target.
> 
> This will allow debugger to pause on "load", "error" and etc. event breakpoints only
> when they happen on XHR event targets.
> 
> BUG=381470
> R=yurys, pfeldman@chromium.org
> 
> Committed: https://src.chromium.org/viewvc/blink?view=rev&revision=175882

TBR=pfeldman@chromium.org,yurys@chromium.org,aandrey@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=381470

Review URL: https://codereview.chromium.org/322893006

git-svn-id: svn://svn.chromium.org/blink/trunk@175909 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent e587fadc
...@@ -223,7 +223,7 @@ InspectorTest._pausedScript = function(callFrames, reason, auxData, breakpointId ...@@ -223,7 +223,7 @@ InspectorTest._pausedScript = function(callFrames, reason, auxData, breakpointId
{ {
if (!InspectorTest._quiet) if (!InspectorTest._quiet)
InspectorTest.addResult("Script execution paused."); InspectorTest.addResult("Script execution paused.");
InspectorTest._pausedScriptArguments = [WebInspector.DebuggerModel.CallFrame.fromPayloadArray(WebInspector.targetManager.activeTarget(), callFrames), reason, breakpointIds, asyncStackTrace, auxData]; InspectorTest._pausedScriptArguments = [WebInspector.DebuggerModel.CallFrame.fromPayloadArray(WebInspector.targetManager.activeTarget(), callFrames), reason, breakpointIds, asyncStackTrace];
if (InspectorTest._waitUntilPausedCallback) { if (InspectorTest._waitUntilPausedCallback) {
var callback = InspectorTest._waitUntilPausedCallback; var callback = InspectorTest._waitUntilPausedCallback;
delete InspectorTest._waitUntilPausedCallback; delete InspectorTest._waitUntilPausedCallback;
......
...@@ -8,7 +8,6 @@ Call stack: ...@@ -8,7 +8,6 @@ Call stack:
0) testElementClicked (event-listener-breakpoints.html:7) 0) testElementClicked (event-listener-breakpoints.html:7)
1) addListenerAndClick (event-listener-breakpoints.html:16) 1) addListenerAndClick (event-listener-breakpoints.html:16)
2) (:1) 2) (:1)
Event target: Node
Script execution resumed. Script execution resumed.
Running: testTimerFiredBreakpoint Running: testTimerFiredBreakpoint
...@@ -17,10 +16,3 @@ Call stack: ...@@ -17,10 +16,3 @@ Call stack:
0) timerFired (event-listener-breakpoints.html:19) 0) timerFired (event-listener-breakpoints.html:19)
Script execution resumed. Script execution resumed.
Running: testLoadBreakpointOnXHR
Script execution paused.
Call stack:
0) loadCallback (event-listener-breakpoints.html:42)
Event target: XMLHttpRequest
Script execution resumed.
...@@ -21,29 +21,6 @@ function timerFired() ...@@ -21,29 +21,6 @@ function timerFired()
return 0; return 0;
} }
function addLoadListeners()
{
var xhr = new XMLHttpRequest();
xhr.onload = loadCallback;
xhr.onerror = loadCallback;
xhr.open("GET", "http://localhost/", true);
var img = new Image();
img.onload = sendXHR;
img.onerror = sendXHR;
img.src = "foo/bar/dummy";
function sendXHR()
{
xhr.send();
}
}
function loadCallback()
{
return 0;
}
function test() function test()
{ {
WebInspector.inspectorView.showPanel("sources"); WebInspector.inspectorView.showPanel("sources");
...@@ -55,17 +32,16 @@ function test() ...@@ -55,17 +32,16 @@ function test()
InspectorTest.waitUntilPaused(paused); InspectorTest.waitUntilPaused(paused);
InspectorTest.evaluateInPageWithTimeout("addListenerAndClick()"); InspectorTest.evaluateInPageWithTimeout("addListenerAndClick()");
function paused(callFrames, reason, breakpointIds, asyncStackTrace, auxData) function paused(callFrames)
{ {
InspectorTest.captureStackTrace(callFrames); InspectorTest.captureStackTrace(callFrames);
printEventTargetName(auxData);
pane._removeBreakpoint("listener:click"); pane._removeBreakpoint("listener:click");
InspectorTest.resumeExecution(resumed); InspectorTest.resumeExecution(resumed);
} }
function resumed() function resumed()
{ {
InspectorTest.evaluateInPage("addListenerAndClick()", next); InspectorTest.evaluateInPage("addListenerAndClick())", next);
} }
}, },
...@@ -81,39 +57,8 @@ function test() ...@@ -81,39 +57,8 @@ function test()
pane._removeBreakpoint("instrumentation:timerFired"); pane._removeBreakpoint("instrumentation:timerFired");
InspectorTest.resumeExecution(next); InspectorTest.resumeExecution(next);
} }
},
function testLoadBreakpointOnXHR(next)
{
DOMDebuggerAgent.setEventListenerBreakpoint("load", "xmlHTTPrequest"); // test case-insensitive match
DOMDebuggerAgent.setEventListenerBreakpoint("error", "XMLHttpRequest");
InspectorTest.waitUntilPaused(paused);
InspectorTest.evaluateInPageWithTimeout("addLoadListeners()");
function paused(callFrames, reason, breakpointIds, asyncStackTrace, auxData)
{
InspectorTest.captureStackTrace(callFrames);
printEventTargetName(auxData);
DOMDebuggerAgent.removeEventListenerBreakpoint("load", "XMLHttpRequest");
DOMDebuggerAgent.removeEventListenerBreakpoint("error", "xmlHTTPrequest");
InspectorTest.resumeExecution(resumed);
}
function resumed()
{
InspectorTest.evaluateInPage("addLoadListeners()", next);
}
} }
]); ]);
function printEventTargetName(auxData)
{
var targetName = auxData && auxData.targetName;
if (targetName)
InspectorTest.addResult("Event target: " + targetName);
else
InspectorTest.addResult("FAIL: No event target name received!");
}
} }
</script> </script>
......
...@@ -69,7 +69,6 @@ static const char webglErrorNameProperty[] = "webglErrorName"; ...@@ -69,7 +69,6 @@ static const char webglErrorNameProperty[] = "webglErrorName";
namespace DOMDebuggerAgentState { namespace DOMDebuggerAgentState {
static const char eventListenerBreakpoints[] = "eventListenerBreakpoints"; static const char eventListenerBreakpoints[] = "eventListenerBreakpoints";
static const char eventTargetAny[] = "*";
static const char pauseOnAllXHRs[] = "pauseOnAllXHRs"; static const char pauseOnAllXHRs[] = "pauseOnAllXHRs";
static const char xhrBreakpoints[] = "xhrBreakpoints"; static const char xhrBreakpoints[] = "xhrBreakpoints";
} }
...@@ -154,28 +153,17 @@ void InspectorDOMDebuggerAgent::discardAgent() ...@@ -154,28 +153,17 @@ void InspectorDOMDebuggerAgent::discardAgent()
m_debuggerAgent = 0; m_debuggerAgent = 0;
} }
void InspectorDOMDebuggerAgent::setEventListenerBreakpoint(ErrorString* error, const String& eventName, const String* targetName) void InspectorDOMDebuggerAgent::setEventListenerBreakpoint(ErrorString* error, const String& eventName)
{ {
setBreakpoint(error, String(listenerEventCategoryType) + eventName, targetName); setBreakpoint(error, String(listenerEventCategoryType) + eventName);
} }
void InspectorDOMDebuggerAgent::setInstrumentationBreakpoint(ErrorString* error, const String& eventName) void InspectorDOMDebuggerAgent::setInstrumentationBreakpoint(ErrorString* error, const String& eventName)
{ {
setBreakpoint(error, String(instrumentationEventCategoryType) + eventName, 0); setBreakpoint(error, String(instrumentationEventCategoryType) + eventName);
} }
static PassRefPtr<JSONObject> ensurePropertyObject(JSONObject* object, const String& propertyName) void InspectorDOMDebuggerAgent::setBreakpoint(ErrorString* error, const String& eventName)
{
JSONObject::iterator it = object->find(propertyName);
if (it != object->end())
return it->value->asObject();
RefPtr<JSONObject> result = JSONObject::create();
object->setObject(propertyName, result);
return result.release();
}
void InspectorDOMDebuggerAgent::setBreakpoint(ErrorString* error, const String& eventName, const String* targetName)
{ {
if (eventName.isEmpty()) { if (eventName.isEmpty()) {
*error = "Event name is empty"; *error = "Event name is empty";
...@@ -183,25 +171,21 @@ void InspectorDOMDebuggerAgent::setBreakpoint(ErrorString* error, const String& ...@@ -183,25 +171,21 @@ void InspectorDOMDebuggerAgent::setBreakpoint(ErrorString* error, const String&
} }
RefPtr<JSONObject> eventListenerBreakpoints = m_state->getObject(DOMDebuggerAgentState::eventListenerBreakpoints); RefPtr<JSONObject> eventListenerBreakpoints = m_state->getObject(DOMDebuggerAgentState::eventListenerBreakpoints);
RefPtr<JSONObject> breakpointsByTarget = ensurePropertyObject(eventListenerBreakpoints.get(), eventName); eventListenerBreakpoints->setBoolean(eventName, true);
if (!targetName || targetName->isEmpty()) m_state->setObject(DOMDebuggerAgentState::eventListenerBreakpoints, eventListenerBreakpoints);
breakpointsByTarget->setBoolean(DOMDebuggerAgentState::eventTargetAny, true);
else
breakpointsByTarget->setBoolean(targetName->lower(), true);
m_state->setObject(DOMDebuggerAgentState::eventListenerBreakpoints, eventListenerBreakpoints.release());
} }
void InspectorDOMDebuggerAgent::removeEventListenerBreakpoint(ErrorString* error, const String& eventName, const String* targetName) void InspectorDOMDebuggerAgent::removeEventListenerBreakpoint(ErrorString* error, const String& eventName)
{ {
removeBreakpoint(error, String(listenerEventCategoryType) + eventName, targetName); removeBreakpoint(error, String(listenerEventCategoryType) + eventName);
} }
void InspectorDOMDebuggerAgent::removeInstrumentationBreakpoint(ErrorString* error, const String& eventName) void InspectorDOMDebuggerAgent::removeInstrumentationBreakpoint(ErrorString* error, const String& eventName)
{ {
removeBreakpoint(error, String(instrumentationEventCategoryType) + eventName, 0); removeBreakpoint(error, String(instrumentationEventCategoryType) + eventName);
} }
void InspectorDOMDebuggerAgent::removeBreakpoint(ErrorString* error, const String& eventName, const String* targetName) void InspectorDOMDebuggerAgent::removeBreakpoint(ErrorString* error, const String& eventName)
{ {
if (eventName.isEmpty()) { if (eventName.isEmpty()) {
*error = "Event name is empty"; *error = "Event name is empty";
...@@ -209,12 +193,8 @@ void InspectorDOMDebuggerAgent::removeBreakpoint(ErrorString* error, const Strin ...@@ -209,12 +193,8 @@ void InspectorDOMDebuggerAgent::removeBreakpoint(ErrorString* error, const Strin
} }
RefPtr<JSONObject> eventListenerBreakpoints = m_state->getObject(DOMDebuggerAgentState::eventListenerBreakpoints); RefPtr<JSONObject> eventListenerBreakpoints = m_state->getObject(DOMDebuggerAgentState::eventListenerBreakpoints);
RefPtr<JSONObject> breakpointsByTarget = ensurePropertyObject(eventListenerBreakpoints.get(), eventName); eventListenerBreakpoints->remove(eventName);
if (!targetName || targetName->isEmpty()) m_state->setObject(DOMDebuggerAgentState::eventListenerBreakpoints, eventListenerBreakpoints);
breakpointsByTarget->remove(DOMDebuggerAgentState::eventTargetAny);
else
breakpointsByTarget->remove(targetName->lower());
m_state->setObject(DOMDebuggerAgentState::eventListenerBreakpoints, eventListenerBreakpoints.release());
} }
void InspectorDOMDebuggerAgent::didInvalidateStyleAttr(Node* node) void InspectorDOMDebuggerAgent::didInvalidateStyleAttr(Node* node)
...@@ -417,75 +397,65 @@ void InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded(PassRefPtr<JSONObject ...@@ -417,75 +397,65 @@ void InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded(PassRefPtr<JSONObject
m_debuggerAgent->schedulePauseOnNextStatement(InspectorFrontend::Debugger::Reason::EventListener, eventData); m_debuggerAgent->schedulePauseOnNextStatement(InspectorFrontend::Debugger::Reason::EventListener, eventData);
} }
PassRefPtr<JSONObject> InspectorDOMDebuggerAgent::preparePauseOnNativeEventData(const String& eventName, const AtomicString* targetName) PassRefPtr<JSONObject> InspectorDOMDebuggerAgent::preparePauseOnNativeEventData(bool isDOMEvent, const String& eventName)
{ {
String fullEventName = (targetName ? listenerEventCategoryType : instrumentationEventCategoryType) + eventName; String fullEventName = (isDOMEvent ? listenerEventCategoryType : instrumentationEventCategoryType) + eventName;
if (m_pauseInNextEventListener) { if (m_pauseInNextEventListener)
m_pauseInNextEventListener = false; m_pauseInNextEventListener = false;
} else { else {
RefPtr<JSONObject> eventListenerBreakpoints = m_state->getObject(DOMDebuggerAgentState::eventListenerBreakpoints); RefPtr<JSONObject> eventListenerBreakpoints = m_state->getObject(DOMDebuggerAgentState::eventListenerBreakpoints);
JSONObject::iterator it = eventListenerBreakpoints->find(fullEventName); if (eventListenerBreakpoints->find(fullEventName) == eventListenerBreakpoints->end())
if (it == eventListenerBreakpoints->end())
return nullptr;
bool match = false;
RefPtr<JSONObject> breakpointsByTarget = it->value->asObject();
breakpointsByTarget->getBoolean(DOMDebuggerAgentState::eventTargetAny, &match);
if (!match && targetName)
breakpointsByTarget->getBoolean(targetName->lower(), &match);
if (!match)
return nullptr; return nullptr;
} }
RefPtr<JSONObject> eventData = JSONObject::create(); RefPtr<JSONObject> eventData = JSONObject::create();
eventData->setString("eventName", fullEventName); eventData->setString("eventName", fullEventName);
if (targetName)
eventData->setString("targetName", *targetName);
return eventData.release(); return eventData.release();
} }
void InspectorDOMDebuggerAgent::didInstallTimer(ExecutionContext*, int, int, bool) void InspectorDOMDebuggerAgent::didInstallTimer(ExecutionContext*, int, int, bool)
{ {
pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(setTimerEventName, 0), true); pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(false, setTimerEventName), true);
} }
void InspectorDOMDebuggerAgent::didRemoveTimer(ExecutionContext*, int) void InspectorDOMDebuggerAgent::didRemoveTimer(ExecutionContext*, int)
{ {
pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(clearTimerEventName, 0), true); pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(false, clearTimerEventName), true);
} }
void InspectorDOMDebuggerAgent::willFireTimer(ExecutionContext*, int) void InspectorDOMDebuggerAgent::willFireTimer(ExecutionContext*, int)
{ {
pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(timerFiredEventName, 0), false); pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(false, timerFiredEventName), false);
} }
void InspectorDOMDebuggerAgent::didRequestAnimationFrame(Document*, int) void InspectorDOMDebuggerAgent::didRequestAnimationFrame(Document*, int)
{ {
pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(requestAnimationFrameEventName, 0), true); pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(false, requestAnimationFrameEventName), true);
} }
void InspectorDOMDebuggerAgent::didCancelAnimationFrame(Document*, int) void InspectorDOMDebuggerAgent::didCancelAnimationFrame(Document*, int)
{ {
pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(cancelAnimationFrameEventName, 0), true); pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(false, cancelAnimationFrameEventName), true);
} }
void InspectorDOMDebuggerAgent::willFireAnimationFrame(Document*, int) void InspectorDOMDebuggerAgent::willFireAnimationFrame(Document*, int)
{ {
pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(animationFrameFiredEventName, 0), false); pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(false, animationFrameFiredEventName), false);
} }
void InspectorDOMDebuggerAgent::willHandleEvent(EventTarget* target, const AtomicString& eventType, EventListener*, bool) void InspectorDOMDebuggerAgent::willHandleEvent(EventTarget*, const AtomicString& eventType, EventListener*, bool)
{ {
pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(eventType, &target->interfaceName()), false); pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(true, eventType), false);
} }
void InspectorDOMDebuggerAgent::willExecuteCustomElementCallback(Element*) void InspectorDOMDebuggerAgent::willExecuteCustomElementCallback(Element*)
{ {
pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(customElementCallbackName, 0), false); pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(false, customElementCallbackName), false);
} }
void InspectorDOMDebuggerAgent::didFireWebGLError(const String& errorName) void InspectorDOMDebuggerAgent::didFireWebGLError(const String& errorName)
{ {
RefPtr<JSONObject> eventData = preparePauseOnNativeEventData(webglErrorFiredEventName, 0); RefPtr<JSONObject> eventData = preparePauseOnNativeEventData(false, webglErrorFiredEventName);
if (!eventData) if (!eventData)
return; return;
if (!errorName.isEmpty()) if (!errorName.isEmpty())
...@@ -495,7 +465,7 @@ void InspectorDOMDebuggerAgent::didFireWebGLError(const String& errorName) ...@@ -495,7 +465,7 @@ void InspectorDOMDebuggerAgent::didFireWebGLError(const String& errorName)
void InspectorDOMDebuggerAgent::didFireWebGLWarning() void InspectorDOMDebuggerAgent::didFireWebGLWarning()
{ {
pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(webglWarningFiredEventName, 0), m_debuggerAgent->canBreakProgram()); pauseOnNativeEventIfNeeded(preparePauseOnNativeEventData(false, webglWarningFiredEventName), m_debuggerAgent->canBreakProgram());
} }
void InspectorDOMDebuggerAgent::didFireWebGLErrorOrWarning(const String& message) void InspectorDOMDebuggerAgent::didFireWebGLErrorOrWarning(const String& message)
...@@ -515,7 +485,7 @@ void InspectorDOMDebuggerAgent::setXHRBreakpoint(ErrorString*, const String& url ...@@ -515,7 +485,7 @@ void InspectorDOMDebuggerAgent::setXHRBreakpoint(ErrorString*, const String& url
RefPtr<JSONObject> xhrBreakpoints = m_state->getObject(DOMDebuggerAgentState::xhrBreakpoints); RefPtr<JSONObject> xhrBreakpoints = m_state->getObject(DOMDebuggerAgentState::xhrBreakpoints);
xhrBreakpoints->setBoolean(url, true); xhrBreakpoints->setBoolean(url, true);
m_state->setObject(DOMDebuggerAgentState::xhrBreakpoints, xhrBreakpoints.release()); m_state->setObject(DOMDebuggerAgentState::xhrBreakpoints, xhrBreakpoints);
} }
void InspectorDOMDebuggerAgent::removeXHRBreakpoint(ErrorString*, const String& url) void InspectorDOMDebuggerAgent::removeXHRBreakpoint(ErrorString*, const String& url)
...@@ -527,7 +497,7 @@ void InspectorDOMDebuggerAgent::removeXHRBreakpoint(ErrorString*, const String& ...@@ -527,7 +497,7 @@ void InspectorDOMDebuggerAgent::removeXHRBreakpoint(ErrorString*, const String&
RefPtr<JSONObject> xhrBreakpoints = m_state->getObject(DOMDebuggerAgentState::xhrBreakpoints); RefPtr<JSONObject> xhrBreakpoints = m_state->getObject(DOMDebuggerAgentState::xhrBreakpoints);
xhrBreakpoints->remove(url); xhrBreakpoints->remove(url);
m_state->setObject(DOMDebuggerAgentState::xhrBreakpoints, xhrBreakpoints.release()); m_state->setObject(DOMDebuggerAgentState::xhrBreakpoints, xhrBreakpoints);
} }
void InspectorDOMDebuggerAgent::willSendXMLHttpRequest(const String& url) void InspectorDOMDebuggerAgent::willSendXMLHttpRequest(const String& url)
......
...@@ -68,8 +68,8 @@ public: ...@@ -68,8 +68,8 @@ public:
// DOMDebugger API for InspectorFrontend // DOMDebugger API for InspectorFrontend
virtual void setXHRBreakpoint(ErrorString*, const String& url) OVERRIDE; virtual void setXHRBreakpoint(ErrorString*, const String& url) OVERRIDE;
virtual void removeXHRBreakpoint(ErrorString*, const String& url) OVERRIDE; virtual void removeXHRBreakpoint(ErrorString*, const String& url) OVERRIDE;
virtual void setEventListenerBreakpoint(ErrorString*, const String& eventName, const String* targetName) OVERRIDE; virtual void setEventListenerBreakpoint(ErrorString*, const String& eventName) OVERRIDE;
virtual void removeEventListenerBreakpoint(ErrorString*, const String& eventName, const String* targetName) OVERRIDE; virtual void removeEventListenerBreakpoint(ErrorString*, const String& eventName) OVERRIDE;
virtual void setInstrumentationBreakpoint(ErrorString*, const String& eventName) OVERRIDE; virtual void setInstrumentationBreakpoint(ErrorString*, const String& eventName) OVERRIDE;
virtual void removeInstrumentationBreakpoint(ErrorString*, const String& eventName) OVERRIDE; virtual void removeInstrumentationBreakpoint(ErrorString*, const String& eventName) OVERRIDE;
virtual void setDOMBreakpoint(ErrorString*, int nodeId, const String& type) OVERRIDE; virtual void setDOMBreakpoint(ErrorString*, int nodeId, const String& type) OVERRIDE;
...@@ -104,7 +104,7 @@ private: ...@@ -104,7 +104,7 @@ private:
InspectorDOMDebuggerAgent(InspectorDOMAgent*, InspectorDebuggerAgent*); InspectorDOMDebuggerAgent(InspectorDOMAgent*, InspectorDebuggerAgent*);
void pauseOnNativeEventIfNeeded(PassRefPtr<JSONObject> eventData, bool synchronous); void pauseOnNativeEventIfNeeded(PassRefPtr<JSONObject> eventData, bool synchronous);
PassRefPtr<JSONObject> preparePauseOnNativeEventData(const String& eventName, const AtomicString* targetName); PassRefPtr<JSONObject> preparePauseOnNativeEventData(bool isDOMEvent, const String& eventName);
// InspectorDOMAgent::Listener implementation. // InspectorDOMAgent::Listener implementation.
virtual void domAgentWasEnabled() OVERRIDE; virtual void domAgentWasEnabled() OVERRIDE;
...@@ -120,8 +120,8 @@ private: ...@@ -120,8 +120,8 @@ private:
void descriptionForDOMEvent(Node* target, int breakpointType, bool insertion, JSONObject* description); void descriptionForDOMEvent(Node* target, int breakpointType, bool insertion, JSONObject* description);
void updateSubtreeBreakpoints(Node*, uint32_t rootMask, bool set); void updateSubtreeBreakpoints(Node*, uint32_t rootMask, bool set);
bool hasBreakpoint(Node*, int type); bool hasBreakpoint(Node*, int type);
void setBreakpoint(ErrorString*, const String& eventName, const String* targetName); void setBreakpoint(ErrorString*, const String& eventName);
void removeBreakpoint(ErrorString*, const String& eventName, const String* targetName); void removeBreakpoint(ErrorString*, const String& eventName);
void clear(); void clear();
......
...@@ -3348,16 +3348,14 @@ ...@@ -3348,16 +3348,14 @@
{ {
"name": "setEventListenerBreakpoint", "name": "setEventListenerBreakpoint",
"parameters": [ "parameters": [
{ "name": "eventName", "type": "string", "description": "DOM Event name to stop on (any DOM event will do)." }, { "name": "eventName", "type": "string", "description": "DOM Event name to stop on (any DOM event will do)." }
{ "name": "targetName", "type": "string", "optional": true, "description": "EventTarget interface name to stop on. If equal to <code>\"*\"</code> or not provided, will stop on any EventTarget.", "hidden": true }
], ],
"description": "Sets breakpoint on particular DOM event." "description": "Sets breakpoint on particular DOM event."
}, },
{ {
"name": "removeEventListenerBreakpoint", "name": "removeEventListenerBreakpoint",
"parameters": [ "parameters": [
{ "name": "eventName", "type": "string", "description": "Event name." }, { "name": "eventName", "type": "string", "description": "Event name." }
{ "name": "targetName", "type": "string", "optional": true, "description": "EventTarget interface name.", "hidden": true }
], ],
"description": "Removes breakpoint on particular DOM event." "description": "Removes breakpoint on particular DOM event."
}, },
......
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