1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef V8AsyncCallTracker_h
#define V8AsyncCallTracker_h
#include "bindings/core/v8/ScriptState.h"
#include "core/inspector/InspectorDebuggerAgent.h"
#include "platform/heap/Handle.h"
#include "wtf/Forward.h"
#include "wtf/HashMap.h"
#include "wtf/Noncopyable.h"
namespace blink {
class InspectorDebuggerAgent;
class ScriptState;
class V8AsyncCallTracker final : public NoBaseWillBeGarbageCollectedFinalized<V8AsyncCallTracker>, public ScriptState::Observer, public InspectorDebuggerAgent::AsyncCallTrackingListener {
WTF_MAKE_NONCOPYABLE(V8AsyncCallTracker);
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(V8AsyncCallTracker);
public:
static PassOwnPtrWillBeRawPtr<V8AsyncCallTracker> create(InspectorDebuggerAgent* debuggerAgent)
{
return adoptPtrWillBeNoop(new V8AsyncCallTracker(debuggerAgent));
}
~V8AsyncCallTracker();
void trace(Visitor*);
// InspectorDebuggerAgent::AsyncCallTrackingListener implementation:
void asyncCallTrackingStateChanged(bool tracking) override;
void resetAsyncCallChains() override;
void didReceiveV8AsyncTaskEvent(ScriptState*, const String& eventType, const String& eventName, int id);
// ScriptState::Observer implementation:
void willDisposeScriptState(ScriptState*) override;
private:
explicit V8AsyncCallTracker(InspectorDebuggerAgent*);
void didEnqueueV8AsyncTask(ScriptState*, const String& eventName, int id);
void willHandleV8AsyncTask(ScriptState*, const String& eventName, int id);
class V8ContextAsyncCallChains;
using V8ContextAsyncChainMap = WillBeHeapHashMap<ScriptState*, OwnPtrWillBeMember<V8ContextAsyncCallChains> >;
V8ContextAsyncChainMap m_contextAsyncCallChainMap;
RawPtrWillBeMember<InspectorDebuggerAgent> m_debuggerAgent;
};
} // namespace blink
#endif // V8AsyncCallTracker_h
|