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

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

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