| Index: Source/core/inspector/AsyncCallStackTracker.cpp
|
| diff --git a/Source/core/inspector/AsyncCallStackTracker.cpp b/Source/core/inspector/AsyncCallStackTracker.cpp
|
| index 572e56ff0d53233c8541c6d47819f35aeb58d6f5..46c93960eaabaf31e10b23a94b7932a854484e2f 100644
|
| --- a/Source/core/inspector/AsyncCallStackTracker.cpp
|
| +++ b/Source/core/inspector/AsyncCallStackTracker.cpp
|
| @@ -35,7 +35,6 @@
|
| #include "core/dom/ContextLifecycleObserver.h"
|
| #include "core/dom/ExecutionContext.h"
|
| #include "core/events/EventTarget.h"
|
| -#include "core/events/RegisteredEventListener.h"
|
| #include "core/xml/XMLHttpRequest.h"
|
| #include "core/xml/XMLHttpRequestUpload.h"
|
| #include "wtf/text/AtomicStringHash.h"
|
| @@ -56,10 +55,6 @@ namespace WebCore {
|
| class AsyncCallStackTracker::ExecutionContextData FINAL : public ContextLifecycleObserver {
|
| WTF_MAKE_FAST_ALLOCATED;
|
| public:
|
| - typedef std::pair<RegisteredEventListener, RefPtr<AsyncCallChain> > EventListenerAsyncCallChain;
|
| - typedef Vector<EventListenerAsyncCallChain, 1> EventListenerAsyncCallChainVector;
|
| - typedef HashMap<AtomicString, EventListenerAsyncCallChainVector> EventListenerAsyncCallChainVectorHashMap;
|
| -
|
| ExecutionContextData(AsyncCallStackTracker* tracker, ExecutionContext* executionContext)
|
| : ContextLifecycleObserver(executionContext)
|
| , m_tracker(tracker)
|
| @@ -75,60 +70,11 @@ public:
|
| delete self;
|
| }
|
|
|
| - void addEventListenerData(EventTarget* eventTarget, const AtomicString& eventType, const EventListenerAsyncCallChain& item)
|
| - {
|
| - HashMap<EventTarget*, EventListenerAsyncCallChainVectorHashMap>::iterator it = m_eventTargetCallChains.find(eventTarget);
|
| - EventListenerAsyncCallChainVectorHashMap* mapPtr;
|
| - if (it == m_eventTargetCallChains.end())
|
| - mapPtr = &m_eventTargetCallChains.set(eventTarget, EventListenerAsyncCallChainVectorHashMap()).storedValue->value;
|
| - else
|
| - mapPtr = &it->value;
|
| - EventListenerAsyncCallChainVectorHashMap& map = *mapPtr;
|
| - EventListenerAsyncCallChainVectorHashMap::iterator it2 = map.find(eventType);
|
| - if (it2 == map.end())
|
| - map.set(eventType, EventListenerAsyncCallChainVector()).storedValue->value.append(item);
|
| - else
|
| - it2->value.append(item);
|
| - }
|
| -
|
| - void removeEventListenerData(EventTarget* eventTarget, const AtomicString& eventType, const RegisteredEventListener& item)
|
| - {
|
| - findEventListenerData(eventTarget, eventType, item, true);
|
| - }
|
| -
|
| - PassRefPtr<AsyncCallChain> findEventListenerData(EventTarget* eventTarget, const AtomicString& eventType, const RegisteredEventListener& item, bool remove = false)
|
| - {
|
| - HashMap<EventTarget*, EventListenerAsyncCallChainVectorHashMap>::iterator it = m_eventTargetCallChains.find(eventTarget);
|
| - if (it == m_eventTargetCallChains.end())
|
| - return nullptr;
|
| - EventListenerAsyncCallChainVectorHashMap& map = it->value;
|
| - EventListenerAsyncCallChainVectorHashMap::iterator it2 = map.find(eventType);
|
| - if (it2 == map.end())
|
| - return nullptr;
|
| - RefPtr<AsyncCallChain> result;
|
| - EventListenerAsyncCallChainVector& vector = it2->value;
|
| - for (size_t i = 0; i < vector.size(); ++i) {
|
| - if (vector[i].first == item) {
|
| - result = vector[i].second;
|
| - if (remove) {
|
| - vector.remove(i);
|
| - if (vector.isEmpty())
|
| - map.remove(it2);
|
| - if (map.isEmpty())
|
| - m_eventTargetCallChains.remove(it);
|
| - }
|
| - break;
|
| - }
|
| - }
|
| - return result.release();
|
| - }
|
| -
|
| public:
|
| AsyncCallStackTracker* m_tracker;
|
| HashSet<int> m_intervalTimerIds;
|
| HashMap<int, RefPtr<AsyncCallChain> > m_timerCallChains;
|
| HashMap<int, RefPtr<AsyncCallChain> > m_animationFrameCallChains;
|
| - HashMap<EventTarget*, EventListenerAsyncCallChainVectorHashMap> m_eventTargetCallChains;
|
| HashMap<EventTarget*, RefPtr<AsyncCallChain> > m_xhrCallChains;
|
| HashMap<MutationObserver*, RefPtr<AsyncCallChain> > m_mutationObserverCallChains;
|
| };
|
| @@ -250,56 +196,12 @@ void AsyncCallStackTracker::willFireAnimationFrame(ExecutionContext* context, in
|
| setCurrentAsyncCallChain(nullptr);
|
| }
|
|
|
| -void AsyncCallStackTracker::didAddEventListener(EventTarget* eventTarget, const AtomicString& eventType, EventListener* listener, bool useCapture, const ScriptValue& callFrames)
|
| -{
|
| - ASSERT(eventTarget->executionContext());
|
| - ASSERT(isEnabled());
|
| - if (!validateCallFrames(callFrames) || toXmlHttpRequest(eventTarget))
|
| - return;
|
| -
|
| - StringBuilder description;
|
| - description.append(eventTarget->interfaceName());
|
| - if (!description.isEmpty())
|
| - description.append(".");
|
| - if (listener->isAttribute()) {
|
| - description.append("on");
|
| - description.append(eventType);
|
| - } else {
|
| - description.append("addEventListener(\"");
|
| - description.append(eventType);
|
| - description.append("\")");
|
| - }
|
| -
|
| - ExecutionContextData* data = createContextDataIfNeeded(eventTarget->executionContext());
|
| - data->addEventListenerData(eventTarget, eventType, std::make_pair(RegisteredEventListener(listener, useCapture), createAsyncCallChain(description.toString(), callFrames)));
|
| -}
|
| -
|
| -void AsyncCallStackTracker::didRemoveEventListener(EventTarget* eventTarget, const AtomicString& eventType, EventListener* listener, bool useCapture)
|
| -{
|
| - ASSERT(eventTarget->executionContext());
|
| - ASSERT(isEnabled());
|
| - if (ExecutionContextData* data = m_executionContextDataMap.get(eventTarget->executionContext()))
|
| - data->removeEventListenerData(eventTarget, eventType, RegisteredEventListener(listener, useCapture));
|
| -}
|
| -
|
| -void AsyncCallStackTracker::didRemoveAllEventListeners(EventTarget* eventTarget)
|
| -{
|
| - ASSERT(eventTarget->executionContext());
|
| - ASSERT(isEnabled());
|
| - if (ExecutionContextData* data = m_executionContextDataMap.get(eventTarget->executionContext()))
|
| - data->m_eventTargetCallChains.remove(eventTarget);
|
| -}
|
| -
|
| void AsyncCallStackTracker::willHandleEvent(EventTarget* eventTarget, const AtomicString& eventType, EventListener* listener, bool useCapture)
|
| {
|
| ASSERT(eventTarget->executionContext());
|
| ASSERT(isEnabled());
|
| - if (XMLHttpRequest* xhr = toXmlHttpRequest(eventTarget)) {
|
| + if (XMLHttpRequest* xhr = toXmlHttpRequest(eventTarget))
|
| willHandleXHREvent(xhr, eventTarget, eventType);
|
| - return;
|
| - }
|
| - if (ExecutionContextData* data = m_executionContextDataMap.get(eventTarget->executionContext()))
|
| - setCurrentAsyncCallChain(data->findEventListenerData(eventTarget, eventType, RegisteredEventListener(listener, useCapture)));
|
| else
|
| setCurrentAsyncCallChain(nullptr);
|
| }
|
|
|