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

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

Issue 1238083002: Oilpan: Move the EventListener hierarchy to Oilpan's heap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 5 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 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698