OLD | NEW |
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 338 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
349 *errorString = "Inspected frame has gone"; | 349 *errorString = "Inspected frame has gone"; |
350 return; | 350 return; |
351 } | 351 } |
352 EventTarget* target = injectedScript.eventTargetForObjectId(objectId); | 352 EventTarget* target = injectedScript.eventTargetForObjectId(objectId); |
353 if (!target) { | 353 if (!target) { |
354 *errorString = "No event target with passed objectId"; | 354 *errorString = "No event target with passed objectId"; |
355 return; | 355 return; |
356 } | 356 } |
357 | 357 |
358 listenersArray = TypeBuilder::Array<TypeBuilder::DOMDebugger::EventListener>
::create(); | 358 listenersArray = TypeBuilder::Array<TypeBuilder::DOMDebugger::EventListener>
::create(); |
359 Vector<EventListenerInfo> eventInformation; | 359 WillBeHeapVector<EventListenerInfo> eventInformation; |
360 EventListenerInfo::getEventListeners(target, eventInformation, false); | 360 EventListenerInfo::getEventListeners(target, eventInformation, false); |
361 if (eventInformation.isEmpty()) | 361 if (eventInformation.isEmpty()) |
362 return; | 362 return; |
363 | 363 |
364 String objectGroup = injectedScript.objectIdToObjectGroupName(objectId); | 364 String objectGroup = injectedScript.objectIdToObjectGroupName(objectId); |
365 RegisteredEventListenerIterator iterator(eventInformation); | 365 RegisteredEventListenerIterator iterator(eventInformation); |
366 while (const RegisteredEventListener* listener = iterator.nextRegisteredEven
tListener()) { | 366 while (const RegisteredEventListener* listener = iterator.nextRegisteredEven
tListener()) { |
367 const EventListenerInfo& info = iterator.currentEventListenerInfo(); | 367 const EventListenerInfo& info = iterator.currentEventListenerInfo(); |
368 RefPtr<TypeBuilder::DOMDebugger::EventListener> listenerObject = buildOb
jectForEventListener(*listener, info.eventType, info.eventTarget, objectGroup); | 368 RefPtr<TypeBuilder::DOMDebugger::EventListener> listenerObject = buildOb
jectForEventListener(*listener, info.eventType, info.eventTarget, objectGroup); |
369 if (listenerObject) | 369 if (listenerObject) |
370 listenersArray->addItem(listenerObject); | 370 listenersArray->addItem(listenerObject); |
371 } | 371 } |
372 } | 372 } |
373 | 373 |
374 PassRefPtr<TypeBuilder::DOMDebugger::EventListener> InspectorDOMDebuggerAgent::b
uildObjectForEventListener(const RegisteredEventListener& registeredEventListene
r, const AtomicString& eventType, EventTarget* target, const String& objectGroup
Id) | 374 PassRefPtr<TypeBuilder::DOMDebugger::EventListener> InspectorDOMDebuggerAgent::b
uildObjectForEventListener(const RegisteredEventListener& registeredEventListene
r, const AtomicString& eventType, EventTarget* target, const String& objectGroup
Id) |
375 { | 375 { |
376 RefPtr<EventListener> eventListener = registeredEventListener.listener; | 376 EventListener* eventListener = registeredEventListener.listener.get(); |
| 377 RefPtrWillBeRawPtr<EventListener> protect(eventListener); |
377 String scriptId; | 378 String scriptId; |
378 int lineNumber; | 379 int lineNumber; |
379 int columnNumber; | 380 int columnNumber; |
380 ExecutionContext* context = target->executionContext(); | 381 ExecutionContext* context = target->executionContext(); |
381 if (!context) | 382 if (!context) |
382 return nullptr; | 383 return nullptr; |
383 if (!eventListenerHandlerLocation(context, eventListener.get(), scriptId, li
neNumber, columnNumber)) | 384 if (!eventListenerHandlerLocation(context, eventListener, scriptId, lineNumb
er, columnNumber)) |
384 return nullptr; | 385 return nullptr; |
385 | 386 |
386 RefPtr<TypeBuilder::Debugger::Location> location = TypeBuilder::Debugger::Lo
cation::create() | 387 RefPtr<TypeBuilder::Debugger::Location> location = TypeBuilder::Debugger::Lo
cation::create() |
387 .setScriptId(scriptId) | 388 .setScriptId(scriptId) |
388 .setLineNumber(lineNumber); | 389 .setLineNumber(lineNumber); |
389 location->setColumnNumber(columnNumber); | 390 location->setColumnNumber(columnNumber); |
390 RefPtr<TypeBuilder::DOMDebugger::EventListener> value = TypeBuilder::DOMDebu
gger::EventListener::create() | 391 RefPtr<TypeBuilder::DOMDebugger::EventListener> value = TypeBuilder::DOMDebu
gger::EventListener::create() |
391 .setType(eventType) | 392 .setType(eventType) |
392 .setUseCapture(registeredEventListener.useCapture) | 393 .setUseCapture(registeredEventListener.useCapture) |
393 .setLocation(location); | 394 .setLocation(location); |
394 if (!objectGroupId.isEmpty()) | 395 if (!objectGroupId.isEmpty()) |
395 value->setHandler(eventHandlerObject(context, eventListener.get(), m_inj
ectedScriptManager, &objectGroupId)); | 396 value->setHandler(eventHandlerObject(context, eventListener, m_injectedS
criptManager, &objectGroupId)); |
396 return value.release(); | 397 return value.release(); |
397 } | 398 } |
398 | 399 |
399 void InspectorDOMDebuggerAgent::willInsertDOMNode(Node* parent) | 400 void InspectorDOMDebuggerAgent::willInsertDOMNode(Node* parent) |
400 { | 401 { |
401 if (hasBreakpoint(parent, SubtreeModified)) { | 402 if (hasBreakpoint(parent, SubtreeModified)) { |
402 RefPtr<JSONObject> eventData = JSONObject::create(); | 403 RefPtr<JSONObject> eventData = JSONObject::create(); |
403 descriptionForDOMEvent(parent, SubtreeModified, true, eventData.get()); | 404 descriptionForDOMEvent(parent, SubtreeModified, true, eventData.get()); |
404 m_debuggerAgent->breakProgram(InspectorFrontend::Debugger::Reason::DOM,
eventData.release()); | 405 m_debuggerAgent->breakProgram(InspectorFrontend::Debugger::Reason::DOM,
eventData.release()); |
405 } | 406 } |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
666 eventData->setString("url", url); | 667 eventData->setString("url", url); |
667 m_debuggerAgent->breakProgram(InspectorFrontend::Debugger::Reason::XHR, even
tData.release()); | 668 m_debuggerAgent->breakProgram(InspectorFrontend::Debugger::Reason::XHR, even
tData.release()); |
668 } | 669 } |
669 | 670 |
670 void InspectorDOMDebuggerAgent::clear() | 671 void InspectorDOMDebuggerAgent::clear() |
671 { | 672 { |
672 m_domBreakpoints.clear(); | 673 m_domBreakpoints.clear(); |
673 } | 674 } |
674 | 675 |
675 } // namespace blink | 676 } // namespace blink |
OLD | NEW |