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

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

Issue 1124083003: Revert of DevTools: respond with error when Debugger command is sent to disabled debugger agent (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 7 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 | Annotate | Revision Log
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 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 { 139 {
140 if (m_domAgent->enabled() && m_debuggerAgent->enabled()) 140 if (m_domAgent->enabled() && m_debuggerAgent->enabled())
141 m_instrumentingAgents->setInspectorDOMDebuggerAgent(this); 141 m_instrumentingAgents->setInspectorDOMDebuggerAgent(this);
142 } 142 }
143 143
144 void InspectorDOMDebuggerAgent::domAgentWasDisabled() 144 void InspectorDOMDebuggerAgent::domAgentWasDisabled()
145 { 145 {
146 disable(nullptr); 146 disable(nullptr);
147 } 147 }
148 148
149 bool InspectorDOMDebuggerAgent::checkEnabled(ErrorString* errorString)
150 {
151 if (!m_domAgent->enabled()) {
152 *errorString = "DOM domain required by DOMDebugger is not enabled";
153 return false;
154 }
155 if (!m_debuggerAgent->enabled()) {
156 *errorString = "Debugger domain required by DOMDebugger is not enabled";
157 return false;
158 }
159 return true;
160 }
161
162 void InspectorDOMDebuggerAgent::disable(ErrorString*) 149 void InspectorDOMDebuggerAgent::disable(ErrorString*)
163 { 150 {
164 m_instrumentingAgents->setInspectorDOMDebuggerAgent(nullptr); 151 m_instrumentingAgents->setInspectorDOMDebuggerAgent(nullptr);
165 clear(); 152 clear();
166 } 153 }
167 154
168 void InspectorDOMDebuggerAgent::discardAgent() 155 void InspectorDOMDebuggerAgent::discardAgent()
169 { 156 {
170 m_debuggerAgent->setListener(nullptr); 157 m_debuggerAgent->setListener(nullptr);
171 m_debuggerAgent = nullptr; 158 m_debuggerAgent = nullptr;
(...skipping 17 matching lines...) Expand all
189 if (it != object->end()) 176 if (it != object->end())
190 return it->value->asObject(); 177 return it->value->asObject();
191 178
192 RefPtr<JSONObject> result = JSONObject::create(); 179 RefPtr<JSONObject> result = JSONObject::create();
193 object->setObject(propertyName, result); 180 object->setObject(propertyName, result);
194 return result.release(); 181 return result.release();
195 } 182 }
196 183
197 void InspectorDOMDebuggerAgent::setBreakpoint(ErrorString* error, const String& eventName, const String* targetName) 184 void InspectorDOMDebuggerAgent::setBreakpoint(ErrorString* error, const String& eventName, const String* targetName)
198 { 185 {
199 if (!checkEnabled(error))
200 return;
201 if (eventName.isEmpty()) { 186 if (eventName.isEmpty()) {
202 *error = "Event name is empty"; 187 *error = "Event name is empty";
203 return; 188 return;
204 } 189 }
205 190
191 // Backward compatibility. Some extensions expect that DOMDebuggerAgent is a lways enabled.
192 // See https://stackoverflow.com/questions/25764336/chrome-extension-domdebu gger-api-does-not-work-anymore
193 if (!m_domAgent->enabled())
194 m_domAgent->enable(error);
195
196 if (error->length())
197 return;
198
206 RefPtr<JSONObject> eventListenerBreakpoints = m_state->getObject(DOMDebugger AgentState::eventListenerBreakpoints); 199 RefPtr<JSONObject> eventListenerBreakpoints = m_state->getObject(DOMDebugger AgentState::eventListenerBreakpoints);
207 RefPtr<JSONObject> breakpointsByTarget = ensurePropertyObject(eventListenerB reakpoints.get(), eventName); 200 RefPtr<JSONObject> breakpointsByTarget = ensurePropertyObject(eventListenerB reakpoints.get(), eventName);
208 if (!targetName || targetName->isEmpty()) 201 if (!targetName || targetName->isEmpty())
209 breakpointsByTarget->setBoolean(DOMDebuggerAgentState::eventTargetAny, t rue); 202 breakpointsByTarget->setBoolean(DOMDebuggerAgentState::eventTargetAny, t rue);
210 else 203 else
211 breakpointsByTarget->setBoolean(targetName->lower(), true); 204 breakpointsByTarget->setBoolean(targetName->lower(), true);
212 m_state->setObject(DOMDebuggerAgentState::eventListenerBreakpoints, eventLis tenerBreakpoints.release()); 205 m_state->setObject(DOMDebuggerAgentState::eventListenerBreakpoints, eventLis tenerBreakpoints.release());
213 } 206 }
214 207
215 void InspectorDOMDebuggerAgent::removeEventListenerBreakpoint(ErrorString* error , const String& eventName, const String* targetName) 208 void InspectorDOMDebuggerAgent::removeEventListenerBreakpoint(ErrorString* error , const String& eventName, const String* targetName)
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 case SubtreeModified: return "subtree-modified"; 286 case SubtreeModified: return "subtree-modified";
294 case AttributeModified: return "attribute-modified"; 287 case AttributeModified: return "attribute-modified";
295 case NodeRemoved: return "node-removed"; 288 case NodeRemoved: return "node-removed";
296 default: break; 289 default: break;
297 } 290 }
298 return ""; 291 return "";
299 } 292 }
300 293
301 void InspectorDOMDebuggerAgent::setDOMBreakpoint(ErrorString* errorString, int n odeId, const String& typeString) 294 void InspectorDOMDebuggerAgent::setDOMBreakpoint(ErrorString* errorString, int n odeId, const String& typeString)
302 { 295 {
303 if (!checkEnabled(errorString))
304 return;
305 Node* node = m_domAgent->assertNode(errorString, nodeId); 296 Node* node = m_domAgent->assertNode(errorString, nodeId);
306 if (!node) 297 if (!node)
307 return; 298 return;
308 299
309 int type = domTypeForName(errorString, typeString); 300 int type = domTypeForName(errorString, typeString);
310 if (type == -1) 301 if (type == -1)
311 return; 302 return;
312 303
313 uint32_t rootBit = 1 << type; 304 uint32_t rootBit = 1 << type;
314 m_domBreakpoints.set(node, m_domBreakpoints.get(node) | rootBit); 305 m_domBreakpoints.set(node, m_domBreakpoints.get(node) | rootBit);
315 if (rootBit & inheritableDOMBreakpointTypesMask) { 306 if (rootBit & inheritableDOMBreakpointTypesMask) {
316 for (Node* child = InspectorDOMAgent::innerFirstChild(node); child; chil d = InspectorDOMAgent::innerNextSibling(child)) 307 for (Node* child = InspectorDOMAgent::innerFirstChild(node); child; chil d = InspectorDOMAgent::innerNextSibling(child))
317 updateSubtreeBreakpoints(child, rootBit, true); 308 updateSubtreeBreakpoints(child, rootBit, true);
318 } 309 }
319 } 310 }
320 311
321 void InspectorDOMDebuggerAgent::removeDOMBreakpoint(ErrorString* errorString, in t nodeId, const String& typeString) 312 void InspectorDOMDebuggerAgent::removeDOMBreakpoint(ErrorString* errorString, in t nodeId, const String& typeString)
322 { 313 {
323 if (!checkEnabled(errorString))
324 return;
325 Node* node = m_domAgent->assertNode(errorString, nodeId); 314 Node* node = m_domAgent->assertNode(errorString, nodeId);
326 if (!node) 315 if (!node)
327 return; 316 return;
328 int type = domTypeForName(errorString, typeString); 317 int type = domTypeForName(errorString, typeString);
329 if (type == -1) 318 if (type == -1)
330 return; 319 return;
331 320
332 uint32_t rootBit = 1 << type; 321 uint32_t rootBit = 1 << type;
333 uint32_t mask = m_domBreakpoints.get(node) & ~rootBit; 322 uint32_t mask = m_domBreakpoints.get(node) & ~rootBit;
334 if (mask) 323 if (mask)
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 } 599 }
611 600
612 void InspectorDOMDebuggerAgent::didFireWebGLErrorOrWarning(const String& message ) 601 void InspectorDOMDebuggerAgent::didFireWebGLErrorOrWarning(const String& message )
613 { 602 {
614 if (message.findIgnoringCase("error") != WTF::kNotFound) 603 if (message.findIgnoringCase("error") != WTF::kNotFound)
615 didFireWebGLError(String()); 604 didFireWebGLError(String());
616 else 605 else
617 didFireWebGLWarning(); 606 didFireWebGLWarning();
618 } 607 }
619 608
620 void InspectorDOMDebuggerAgent::setXHRBreakpoint(ErrorString* errorString, const String& url) 609 void InspectorDOMDebuggerAgent::setXHRBreakpoint(ErrorString*, const String& url )
621 { 610 {
622 if (!checkEnabled(errorString))
623 return;
624 if (url.isEmpty()) { 611 if (url.isEmpty()) {
625 m_state->setBoolean(DOMDebuggerAgentState::pauseOnAllXHRs, true); 612 m_state->setBoolean(DOMDebuggerAgentState::pauseOnAllXHRs, true);
626 return; 613 return;
627 } 614 }
628 615
629 RefPtr<JSONObject> xhrBreakpoints = m_state->getObject(DOMDebuggerAgentState ::xhrBreakpoints); 616 RefPtr<JSONObject> xhrBreakpoints = m_state->getObject(DOMDebuggerAgentState ::xhrBreakpoints);
630 xhrBreakpoints->setBoolean(url, true); 617 xhrBreakpoints->setBoolean(url, true);
631 m_state->setObject(DOMDebuggerAgentState::xhrBreakpoints, xhrBreakpoints.rel ease()); 618 m_state->setObject(DOMDebuggerAgentState::xhrBreakpoints, xhrBreakpoints.rel ease());
632 } 619 }
633 620
634 void InspectorDOMDebuggerAgent::removeXHRBreakpoint(ErrorString* errorString, co nst String& url) 621 void InspectorDOMDebuggerAgent::removeXHRBreakpoint(ErrorString*, const String& url)
635 { 622 {
636 if (url.isEmpty()) { 623 if (url.isEmpty()) {
637 m_state->setBoolean(DOMDebuggerAgentState::pauseOnAllXHRs, false); 624 m_state->setBoolean(DOMDebuggerAgentState::pauseOnAllXHRs, false);
638 return; 625 return;
639 } 626 }
640 627
641 RefPtr<JSONObject> xhrBreakpoints = m_state->getObject(DOMDebuggerAgentState ::xhrBreakpoints); 628 RefPtr<JSONObject> xhrBreakpoints = m_state->getObject(DOMDebuggerAgentState ::xhrBreakpoints);
642 xhrBreakpoints->remove(url); 629 xhrBreakpoints->remove(url);
643 m_state->setObject(DOMDebuggerAgentState::xhrBreakpoints, xhrBreakpoints.rel ease()); 630 m_state->setObject(DOMDebuggerAgentState::xhrBreakpoints, xhrBreakpoints.rel ease());
644 } 631 }
(...skipping 21 matching lines...) Expand all
666 eventData->setString("url", url); 653 eventData->setString("url", url);
667 m_debuggerAgent->breakProgram(InspectorFrontend::Debugger::Reason::XHR, even tData.release()); 654 m_debuggerAgent->breakProgram(InspectorFrontend::Debugger::Reason::XHR, even tData.release());
668 } 655 }
669 656
670 void InspectorDOMDebuggerAgent::clear() 657 void InspectorDOMDebuggerAgent::clear()
671 { 658 {
672 m_domBreakpoints.clear(); 659 m_domBreakpoints.clear();
673 } 660 }
674 661
675 } // namespace blink 662 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/inspector/InspectorDOMDebuggerAgent.h ('k') | Source/core/inspector/InspectorDebuggerAgent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698