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

Unified Diff: Source/core/inspector/TraceEventDispatcher.cpp

Issue 307943002: Oilpan: Prepare moving InspectorController and InspectorAgents to oilpan. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/inspector/TraceEventDispatcher.h ('k') | Source/core/inspector/WorkerConsoleAgent.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/inspector/TraceEventDispatcher.cpp
diff --git a/Source/core/inspector/TraceEventDispatcher.cpp b/Source/core/inspector/TraceEventDispatcher.cpp
index 5d17d2f7789c078ef186d2517358a3172cacddb9..110cbcbbcf1432443563fe458bf7417985952b25 100644
--- a/Source/core/inspector/TraceEventDispatcher.cpp
+++ b/Source/core/inspector/TraceEventDispatcher.cpp
@@ -46,7 +46,7 @@ void TraceEventDispatcher::dispatchEventOnAnyThread(char phase, const unsigned c
TraceEventDispatcher* self = instance();
{
MutexLocker locker(self->m_mutex);
- if (self->m_handlers.find(std::make_pair(name, phase)) == self->m_handlers.end())
+ if (self->m_listeners->find(std::make_pair(name, phase)) == self->m_listeners->end())
return;
}
self->enqueueEvent(TraceEvent(timestamp, phase, name, id, currentThread(), numArgs, argNames, argTypes, argValues));
@@ -87,52 +87,52 @@ void TraceEventDispatcher::processBackgroundEvents()
}
for (size_t eventIndex = 0, size = events.size(); eventIndex < size; ++eventIndex) {
const TraceEvent& event = events[eventIndex];
- HandlersMap::iterator it = m_handlers.find(std::make_pair(event.name(), event.phase()));
- if (it == m_handlers.end())
+ ListenersMap::iterator it = m_listeners->find(std::make_pair(event.name(), event.phase()));
+ if (it == m_listeners->end())
continue;
- Vector<BoundTraceEventHandler>& handlers = it->value;
- for (size_t handlerIndex = 0; handlerIndex < handlers.size(); ++handlerIndex)
- (handlers[handlerIndex].instance->*(handlers[handlerIndex].method))(event);
+ WillBeHeapVector<OwnPtrWillBeMember<TraceEventListener> >& listeners = *it->value.get();
+ for (size_t listenerIndex = 0; listenerIndex < listeners.size(); ++listenerIndex)
+ listeners[listenerIndex]->call(event);
}
}
-void TraceEventDispatcher::innerAddListener(const char* name, char phase, TraceEventTargetBase* instance, TraceEventHandlerMethod method, InspectorClient* client)
+void TraceEventDispatcher::addListener(const char* name, char phase, PassOwnPtrWillBeRawPtr<TraceEventListener> listener, InspectorClient* client)
{
static const char CategoryFilter[] = "-*," TRACE_DISABLED_BY_DEFAULT("devtools.timeline") "," TRACE_DISABLED_BY_DEFAULT("devtools.timeline.frame");
ASSERT(isMainThread());
MutexLocker locker(m_mutex);
- if (m_handlers.isEmpty())
+ if (m_listeners->isEmpty())
client->setTraceEventCallback(CategoryFilter, dispatchEventOnAnyThread);
- HandlersMap::iterator it = m_handlers.find(std::make_pair(name, phase));
- if (it == m_handlers.end())
- m_handlers.add(std::make_pair(name, phase), Vector<BoundTraceEventHandler>()).storedValue->value.append(BoundTraceEventHandler(instance, method));
+ ListenersMap::iterator it = m_listeners->find(std::make_pair(name, phase));
+ if (it == m_listeners->end())
+ m_listeners->add(std::make_pair(name, phase), adoptPtrWillBeNoop(new WillBeHeapVector<OwnPtrWillBeMember<TraceEventListener> >())).storedValue->value->append(listener);
else
- it->value.append(BoundTraceEventHandler(instance, method));
+ it->value->append(listener);
}
-void TraceEventDispatcher::removeAllListeners(TraceEventTargetBase* instance, InspectorClient* client)
+void TraceEventDispatcher::removeAllListeners(void* eventTarget, InspectorClient* client)
{
ASSERT(isMainThread());
processBackgroundEvents();
{
MutexLocker locker(m_mutex);
- HandlersMap remainingHandlers;
- for (HandlersMap::iterator it = m_handlers.begin(); it != m_handlers.end(); ++it) {
- Vector<BoundTraceEventHandler>& handlers = it->value;
- for (size_t j = 0; j < handlers.size();) {
- if (handlers[j].instance == instance)
- handlers.remove(j);
+ ListenersMap remainingListeners;
+ for (ListenersMap::iterator it = m_listeners->begin(); it != m_listeners->end(); ++it) {
+ WillBeHeapVector<OwnPtrWillBeMember<TraceEventListener> >& listeners = *it->value.get();
+ for (size_t j = 0; j < listeners.size();) {
+ if (listeners[j]->target() == eventTarget)
+ listeners.remove(j);
else
++j;
}
- if (!handlers.isEmpty())
- remainingHandlers.add(it->key, it->value);
+ if (!listeners.isEmpty())
+ remainingListeners.add(it->key, it->value.release());
}
- m_handlers.swap(remainingHandlers);
+ m_listeners->swap(remainingListeners);
}
- if (m_handlers.isEmpty())
+ if (m_listeners->isEmpty())
client->resetTraceEventCallback();
}
« no previous file with comments | « Source/core/inspector/TraceEventDispatcher.h ('k') | Source/core/inspector/WorkerConsoleAgent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698