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

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, 4 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 353 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 *errorString = "No object with passed objectId"; 364 *errorString = "No object with passed objectId";
365 return; 365 return;
366 } 366 }
367 EventTarget* target = InjectedScriptHost::eventTargetFromV8Value(state->isol ate(), value); 367 EventTarget* target = InjectedScriptHost::eventTargetFromV8Value(state->isol ate(), value);
368 if (!target) { 368 if (!target) {
369 *errorString = "No event target with passed objectId"; 369 *errorString = "No event target with passed objectId";
370 return; 370 return;
371 } 371 }
372 372
373 listenersArray = TypeBuilder::Array<TypeBuilder::DOMDebugger::EventListener> ::create(); 373 listenersArray = TypeBuilder::Array<TypeBuilder::DOMDebugger::EventListener> ::create();
374 Vector<EventListenerInfo> eventInformation; 374 WillBeHeapVector<EventListenerInfo> eventInformation;
375 EventListenerInfo::getEventListeners(target, eventInformation, false); 375 EventListenerInfo::getEventListeners(target, eventInformation, false);
376 if (eventInformation.isEmpty()) 376 if (eventInformation.isEmpty())
377 return; 377 return;
378 378
379 String objectGroup = injectedScript.objectIdToObjectGroupName(objectId); 379 String objectGroup = injectedScript.objectIdToObjectGroupName(objectId);
380 RegisteredEventListenerIterator iterator(eventInformation); 380 RegisteredEventListenerIterator iterator(eventInformation);
381 while (const RegisteredEventListener* listener = iterator.nextRegisteredEven tListener()) { 381 while (const RegisteredEventListener* listener = iterator.nextRegisteredEven tListener()) {
382 const EventListenerInfo& info = iterator.currentEventListenerInfo(); 382 const EventListenerInfo& info = iterator.currentEventListenerInfo();
383 RefPtr<TypeBuilder::DOMDebugger::EventListener> listenerObject = buildOb jectForEventListener(*listener, info.eventType, info.eventTarget, objectGroup); 383 RefPtr<TypeBuilder::DOMDebugger::EventListener> listenerObject = buildOb jectForEventListener(*listener, info.eventType, info.eventTarget, objectGroup);
384 if (listenerObject) 384 if (listenerObject)
385 listenersArray->addItem(listenerObject); 385 listenersArray->addItem(listenerObject);
386 } 386 }
387 } 387 }
388 388
389 PassRefPtr<TypeBuilder::DOMDebugger::EventListener> InspectorDOMDebuggerAgent::b uildObjectForEventListener(const RegisteredEventListener& registeredEventListene r, const AtomicString& eventType, EventTarget* target, const String& objectGroup Id) 389 PassRefPtr<TypeBuilder::DOMDebugger::EventListener> InspectorDOMDebuggerAgent::b uildObjectForEventListener(const RegisteredEventListener& registeredEventListene r, const AtomicString& eventType, EventTarget* target, const String& objectGroup Id)
390 { 390 {
391 RefPtr<EventListener> eventListener = registeredEventListener.listener; 391 EventListener* eventListener = registeredEventListener.listener.get();
392 RefPtrWillBeRawPtr<EventListener> protect(eventListener);
392 String scriptId; 393 String scriptId;
393 int lineNumber; 394 int lineNumber;
394 int columnNumber; 395 int columnNumber;
395 ExecutionContext* context = target->executionContext(); 396 ExecutionContext* context = target->executionContext();
396 if (!context) 397 if (!context)
397 return nullptr; 398 return nullptr;
398 if (!eventListenerHandlerLocation(context, eventListener.get(), scriptId, li neNumber, columnNumber)) 399 if (!eventListenerHandlerLocation(context, eventListener, scriptId, lineNumb er, columnNumber))
399 return nullptr; 400 return nullptr;
400 401
401 RefPtr<TypeBuilder::Debugger::Location> location = TypeBuilder::Debugger::Lo cation::create() 402 RefPtr<TypeBuilder::Debugger::Location> location = TypeBuilder::Debugger::Lo cation::create()
402 .setScriptId(scriptId) 403 .setScriptId(scriptId)
403 .setLineNumber(lineNumber); 404 .setLineNumber(lineNumber);
404 location->setColumnNumber(columnNumber); 405 location->setColumnNumber(columnNumber);
405 RefPtr<TypeBuilder::DOMDebugger::EventListener> value = TypeBuilder::DOMDebu gger::EventListener::create() 406 RefPtr<TypeBuilder::DOMDebugger::EventListener> value = TypeBuilder::DOMDebu gger::EventListener::create()
406 .setType(eventType) 407 .setType(eventType)
407 .setUseCapture(registeredEventListener.useCapture) 408 .setUseCapture(registeredEventListener.useCapture)
408 .setLocation(location); 409 .setLocation(location);
409 if (!objectGroupId.isEmpty()) 410 if (!objectGroupId.isEmpty())
410 value->setHandler(eventHandlerObject(context, eventListener.get(), m_inj ectedScriptManager, &objectGroupId)); 411 value->setHandler(eventHandlerObject(context, eventListener, m_injectedS criptManager, &objectGroupId));
411 return value.release(); 412 return value.release();
412 } 413 }
413 414
414 void InspectorDOMDebuggerAgent::willInsertDOMNode(Node* parent) 415 void InspectorDOMDebuggerAgent::willInsertDOMNode(Node* parent)
415 { 416 {
416 if (hasBreakpoint(parent, SubtreeModified)) { 417 if (hasBreakpoint(parent, SubtreeModified)) {
417 RefPtr<JSONObject> eventData = JSONObject::create(); 418 RefPtr<JSONObject> eventData = JSONObject::create();
418 descriptionForDOMEvent(parent, SubtreeModified, true, eventData.get()); 419 descriptionForDOMEvent(parent, SubtreeModified, true, eventData.get());
419 m_debuggerAgent->breakProgram(InspectorFrontend::Debugger::Reason::DOM, eventData.release()); 420 m_debuggerAgent->breakProgram(InspectorFrontend::Debugger::Reason::DOM, eventData.release());
420 } 421 }
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
681 eventData->setString("url", url); 682 eventData->setString("url", url);
682 m_debuggerAgent->breakProgram(InspectorFrontend::Debugger::Reason::XHR, even tData.release()); 683 m_debuggerAgent->breakProgram(InspectorFrontend::Debugger::Reason::XHR, even tData.release());
683 } 684 }
684 685
685 void InspectorDOMDebuggerAgent::clear() 686 void InspectorDOMDebuggerAgent::clear()
686 { 687 {
687 m_domBreakpoints.clear(); 688 m_domBreakpoints.clear();
688 } 689 }
689 690
690 } // namespace blink 691 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698