1/*
2 * Copyright 2014 The Chromium Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
5 */
6
7#ifndef InspectorTracingAgent_h
8#define InspectorTracingAgent_h
9
10#include "core/InspectorFrontend.h"
11#include "core/inspector/InspectorBaseAgent.h"
12#include "wtf/PassOwnPtr.h"
13#include "wtf/text/WTFString.h"
14
15namespace blink {
16
17class InspectorClient;
18class InspectorWorkerAgent;
19
20class InspectorTracingAgent FINAL
21    : public InspectorBaseAgent<InspectorTracingAgent>
22    , public InspectorBackendDispatcher::TracingCommandHandler {
23    WTF_MAKE_NONCOPYABLE(InspectorTracingAgent);
24public:
25    static PassOwnPtrWillBeRawPtr<InspectorTracingAgent> create(InspectorClient* client, InspectorWorkerAgent* workerAgent)
26    {
27        return adoptPtrWillBeNoop(new InspectorTracingAgent(client, workerAgent));
28    }
29
30    // Base agent methods.
31    virtual void restore() OVERRIDE;
32    virtual void setFrontend(InspectorFrontend*) OVERRIDE;
33
34    // Protocol method implementations.
35    virtual void start(ErrorString*, const String& categoryFilter, const String&, const double*) OVERRIDE;
36    virtual void end(ErrorString*);
37
38    // Methods for other agents to use.
39    void setLayerTreeId(int);
40
41private:
42    InspectorTracingAgent(InspectorClient*, InspectorWorkerAgent*);
43
44    void emitMetadataEvents();
45    String sessionId();
46
47    int m_layerTreeId;
48    InspectorClient* m_client;
49    InspectorFrontend::Tracing* m_frontend;
50    InspectorWorkerAgent* m_workerAgent;
51};
52
53}
54
55#endif // InspectorTracingAgent_h
56