1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "config.h"
6 #include "core/inspector/ScriptAsyncCallStack.h"
7
8 namespace blink {
9
10 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(ScriptAsyncCallStack);
11
create(const String & description,PassRefPtrWillBeRawPtr<ScriptCallStack> callStack,PassRefPtrWillBeRawPtr<ScriptAsyncCallStack> asyncStackTrace)12 PassRefPtrWillBeRawPtr<ScriptAsyncCallStack> ScriptAsyncCallStack::create(const String& description, PassRefPtrWillBeRawPtr<ScriptCallStack> callStack, PassRefPtrWillBeRawPtr<ScriptAsyncCallStack> asyncStackTrace)
13 {
14 return adoptRefWillBeNoop(new ScriptAsyncCallStack(description, callStack, asyncStackTrace));
15 }
16
ScriptAsyncCallStack(const String & description,PassRefPtrWillBeRawPtr<ScriptCallStack> callStack,PassRefPtrWillBeRawPtr<ScriptAsyncCallStack> asyncStackTrace)17 ScriptAsyncCallStack::ScriptAsyncCallStack(const String& description, PassRefPtrWillBeRawPtr<ScriptCallStack> callStack, PassRefPtrWillBeRawPtr<ScriptAsyncCallStack> asyncStackTrace)
18 : m_description(description)
19 , m_callStack(callStack)
20 , m_asyncStackTrace(asyncStackTrace)
21 {
22 ASSERT(m_callStack);
23 }
24
buildInspectorObject() const25 PassRefPtr<TypeBuilder::Console::AsyncStackTrace> ScriptAsyncCallStack::buildInspectorObject() const
26 {
27 RefPtr<TypeBuilder::Console::AsyncStackTrace> result = TypeBuilder::Console::AsyncStackTrace::create()
28 .setCallFrames(m_callStack->buildInspectorArray())
29 .release();
30 result->setDescription(m_description);
31 if (m_asyncStackTrace)
32 result->setAsyncStackTrace(m_asyncStackTrace->buildInspectorObject());
33 return result.release();
34 }
35
trace(Visitor * visitor)36 void ScriptAsyncCallStack::trace(Visitor* visitor)
37 {
38 visitor->trace(m_callStack);
39 visitor->trace(m_asyncStackTrace);
40 }
41
42 } // namespace blink
43