Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(285)

Side by Side Diff: Source/WebCore/inspector/InspectorDOMDebuggerAgent.cpp

Issue 9429043: Merge 106347 - Web Inspector: DOMDebugger.setEventListenerBreakpoint should accept regular DOM even… (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1025/
Patch Set: Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 20 matching lines...) Expand all
31 #include "config.h" 31 #include "config.h"
32 32
33 #include "InspectorDOMDebuggerAgent.h" 33 #include "InspectorDOMDebuggerAgent.h"
34 34
35 #if ENABLE(INSPECTOR) && ENABLE(JAVASCRIPT_DEBUGGER) 35 #if ENABLE(INSPECTOR) && ENABLE(JAVASCRIPT_DEBUGGER)
36 36
37 #include "HTMLElement.h" 37 #include "HTMLElement.h"
38 #include "InspectorAgent.h" 38 #include "InspectorAgent.h"
39 #include "InspectorDOMAgent.h" 39 #include "InspectorDOMAgent.h"
40 #include "InspectorDebuggerAgent.h" 40 #include "InspectorDebuggerAgent.h"
41 #include "InspectorInstrumentation.h"
41 #include "InspectorState.h" 42 #include "InspectorState.h"
42 #include "InspectorValues.h" 43 #include "InspectorValues.h"
43 #include "InstrumentingAgents.h" 44 #include "InstrumentingAgents.h"
44 #include <wtf/text/WTFString.h> 45 #include <wtf/text/WTFString.h>
45 46
46 namespace { 47 namespace {
47 48
48 enum DOMBreakpointType { 49 enum DOMBreakpointType {
49 SubtreeModified = 0, 50 SubtreeModified = 0,
50 AttributeModified, 51 AttributeModified,
51 NodeRemoved, 52 NodeRemoved,
52 DOMBreakpointTypesCount 53 DOMBreakpointTypesCount
53 }; 54 };
54 55
56 static const char* const listenerEventCategoryType = "listener:";
57 static const char* const instrumentationEventCategoryType = "instrumentation:";
58
55 static const char* const domNativeBreakpointType = "DOM"; 59 static const char* const domNativeBreakpointType = "DOM";
56 static const char* const eventListenerNativeBreakpointType = "EventListener"; 60 static const char* const eventListenerNativeBreakpointType = "EventListener";
57 static const char* const xhrNativeBreakpointType = "XHR"; 61 static const char* const xhrNativeBreakpointType = "XHR";
58 62
59 const uint32_t inheritableDOMBreakpointTypesMask = (1 << SubtreeModified); 63 const uint32_t inheritableDOMBreakpointTypesMask = (1 << SubtreeModified);
60 const int domBreakpointDerivedTypeShift = 16; 64 const int domBreakpointDerivedTypeShift = 16;
61 65
62 } 66 }
63 67
64 namespace WebCore { 68 namespace WebCore {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 m_debuggerAgent = 0; 121 m_debuggerAgent = 0;
118 } 122 }
119 123
120 void InspectorDOMDebuggerAgent::discardBindings() 124 void InspectorDOMDebuggerAgent::discardBindings()
121 { 125 {
122 m_domBreakpoints.clear(); 126 m_domBreakpoints.clear();
123 } 127 }
124 128
125 void InspectorDOMDebuggerAgent::setEventListenerBreakpoint(ErrorString* error, c onst String& eventName) 129 void InspectorDOMDebuggerAgent::setEventListenerBreakpoint(ErrorString* error, c onst String& eventName)
126 { 130 {
131 setBreakpoint(error, String(listenerEventCategoryType) + eventName);
132 }
133
134 void InspectorDOMDebuggerAgent::setInstrumentationBreakpoint(ErrorString* error, const String& eventName)
135 {
136 setBreakpoint(error, String(instrumentationEventCategoryType) + eventName);
137 }
138
139 void InspectorDOMDebuggerAgent::setBreakpoint(ErrorString* error, const String& eventName)
140 {
127 if (eventName.isEmpty()) { 141 if (eventName.isEmpty()) {
128 *error = "Event name is empty"; 142 *error = "Event name is empty";
129 return; 143 return;
130 } 144 }
131 145
132 RefPtr<InspectorObject> eventListenerBreakpoints = m_state->getObject(DOMDeb uggerAgentState::eventListenerBreakpoints); 146 RefPtr<InspectorObject> eventListenerBreakpoints = m_state->getObject(DOMDeb uggerAgentState::eventListenerBreakpoints);
133 eventListenerBreakpoints->setBoolean(eventName, true); 147 eventListenerBreakpoints->setBoolean(eventName, true);
134 m_state->setObject(DOMDebuggerAgentState::eventListenerBreakpoints, eventLis tenerBreakpoints); 148 m_state->setObject(DOMDebuggerAgentState::eventListenerBreakpoints, eventLis tenerBreakpoints);
135 } 149 }
136 150
137 void InspectorDOMDebuggerAgent::removeEventListenerBreakpoint(ErrorString* error , const String& eventName) 151 void InspectorDOMDebuggerAgent::removeEventListenerBreakpoint(ErrorString* error , const String& eventName)
138 { 152 {
153 removeBreakpoint(error, String(listenerEventCategoryType) + eventName);
154 }
155
156 void InspectorDOMDebuggerAgent::removeInstrumentationBreakpoint(ErrorString* err or, const String& eventName)
157 {
158 removeBreakpoint(error, String(instrumentationEventCategoryType) + eventName );
159 }
160
161 void InspectorDOMDebuggerAgent::removeBreakpoint(ErrorString* error, const Strin g& eventName)
162 {
139 if (eventName.isEmpty()) { 163 if (eventName.isEmpty()) {
140 *error = "Event name is empty"; 164 *error = "Event name is empty";
141 return; 165 return;
142 } 166 }
143 167
144 RefPtr<InspectorObject> eventListenerBreakpoints = m_state->getObject(DOMDeb uggerAgentState::eventListenerBreakpoints); 168 RefPtr<InspectorObject> eventListenerBreakpoints = m_state->getObject(DOMDeb uggerAgentState::eventListenerBreakpoints);
145 eventListenerBreakpoints->remove(eventName); 169 eventListenerBreakpoints->remove(eventName);
146 m_state->setObject(DOMDebuggerAgentState::eventListenerBreakpoints, eventLis tenerBreakpoints); 170 m_state->setObject(DOMDebuggerAgentState::eventListenerBreakpoints, eventLis tenerBreakpoints);
147 } 171 }
148 172
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 m_domBreakpoints.remove(node); 350 m_domBreakpoints.remove(node);
327 351
328 uint32_t newRootMask = rootMask & ~newMask; 352 uint32_t newRootMask = rootMask & ~newMask;
329 if (!newRootMask) 353 if (!newRootMask)
330 return; 354 return;
331 355
332 for (Node* child = InspectorDOMAgent::innerFirstChild(node); child; child = InspectorDOMAgent::innerNextSibling(child)) 356 for (Node* child = InspectorDOMAgent::innerFirstChild(node); child; child = InspectorDOMAgent::innerNextSibling(child))
333 updateSubtreeBreakpoints(child, newRootMask, set); 357 updateSubtreeBreakpoints(child, newRootMask, set);
334 } 358 }
335 359
336 void InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded(const String& categor yType, const String& eventName, bool synchronous) 360 void InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded(bool isDOMEvent, cons t String& eventName, bool synchronous)
337 { 361 {
338 String fullEventName = categoryType + ':' + eventName; 362 String fullEventName = (isDOMEvent ? listenerEventCategoryType : instrumenta tionEventCategoryType) + eventName;
339 RefPtr<InspectorObject> eventListenerBreakpoints = m_state->getObject(DOMDeb uggerAgentState::eventListenerBreakpoints); 363 RefPtr<InspectorObject> eventListenerBreakpoints = m_state->getObject(DOMDeb uggerAgentState::eventListenerBreakpoints);
340 if (eventListenerBreakpoints->find(fullEventName) == eventListenerBreakpoint s->end()) 364 if (eventListenerBreakpoints->find(fullEventName) == eventListenerBreakpoint s->end())
341 return; 365 return;
342 366
343 RefPtr<InspectorObject> eventData = InspectorObject::create(); 367 RefPtr<InspectorObject> eventData = InspectorObject::create();
344 eventData->setString("eventName", fullEventName); 368 eventData->setString("eventName", fullEventName);
345 if (synchronous) 369 if (synchronous)
346 m_debuggerAgent->breakProgram(eventListenerNativeBreakpointType, eventDa ta.release()); 370 m_debuggerAgent->breakProgram(eventListenerNativeBreakpointType, eventDa ta.release());
347 else 371 else
348 m_debuggerAgent->schedulePauseOnNextStatement(eventListenerNativeBreakpo intType, eventData.release()); 372 m_debuggerAgent->schedulePauseOnNextStatement(eventListenerNativeBreakpo intType, eventData.release());
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 } 421 }
398 422
399 void InspectorDOMDebuggerAgent::clear() 423 void InspectorDOMDebuggerAgent::clear()
400 { 424 {
401 m_domBreakpoints.clear(); 425 m_domBreakpoints.clear();
402 } 426 }
403 427
404 } // namespace WebCore 428 } // namespace WebCore
405 429
406 #endif // ENABLE(INSPECTOR) && ENABLE(JAVASCRIPT_DEBUGGER) 430 #endif // ENABLE(INSPECTOR) && ENABLE(JAVASCRIPT_DEBUGGER)
OLDNEW
« no previous file with comments | « Source/WebCore/inspector/InspectorDOMDebuggerAgent.h ('k') | Source/WebCore/inspector/InspectorInstrumentation.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698