Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / content / browser / devtools / devtools_tracing_handler.h
1 // Copyright (c) 2012 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 #ifndef CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_TRACING_HANDLER_H_
6 #define CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_TRACING_HANDLER_H_
7
8 #include <set>
9 #include <string>
10
11 #include "base/debug/trace_event.h"
12 #include "base/memory/weak_ptr.h"
13 #include "content/browser/devtools/devtools_protocol.h"
14 #include "content/public/browser/tracing_controller.h"
15
16 namespace base {
17 class RefCountedString;
18 class Timer;
19 }
20
21 namespace content {
22
23 // This class bridges DevTools remote debugging server with the trace
24 // infrastructure.
25 class DevToolsTracingHandler : public DevToolsProtocol::Handler {
26  public:
27   enum Target { Browser, Renderer };
28   explicit DevToolsTracingHandler(Target target);
29   virtual ~DevToolsTracingHandler();
30
31   void OnClientDetached();
32
33  private:
34   void BeginReadingRecordingResult(const base::FilePath& path);
35   void ReadRecordingResult(const scoped_refptr<base::RefCountedString>& result);
36   void OnTraceDataCollected(const std::string& trace_fragment);
37   void OnRecordingEnabled(scoped_refptr<DevToolsProtocol::Command> command);
38   void OnBufferUsage(float usage);
39
40   scoped_refptr<DevToolsProtocol::Response> OnStart(
41       scoped_refptr<DevToolsProtocol::Command> command);
42   scoped_refptr<DevToolsProtocol::Response> OnEnd(
43       scoped_refptr<DevToolsProtocol::Command> command);
44
45   scoped_refptr<DevToolsProtocol::Response> OnGetCategories(
46       scoped_refptr<DevToolsProtocol::Command> command);
47
48   void OnTracingStarted(
49       scoped_refptr<DevToolsProtocol::Notification> notification);
50
51   void OnTracingStopped(
52       scoped_refptr<DevToolsProtocol::Notification> notification);
53
54   void OnCategoriesReceived(scoped_refptr<DevToolsProtocol::Command> command,
55                             const std::set<std::string>& category_set);
56
57   base::debug::TraceOptions TraceOptionsFromString(const std::string& options);
58
59   void SetupTimer(double usage_reporting_interval);
60
61   void DisableRecording(
62       const TracingController::TracingFileResultCallback& callback =
63           TracingController::TracingFileResultCallback());
64
65   base::WeakPtrFactory<DevToolsTracingHandler> weak_factory_;
66   scoped_ptr<base::Timer> buffer_usage_poll_timer_;
67   Target target_;
68   bool is_recording_;
69
70   static const char* kDefaultCategories;
71   static const double kDefaultReportingInterval;
72   static const double kMinimumReportingInterval;
73
74   DISALLOW_COPY_AND_ASSIGN(DevToolsTracingHandler);
75 };
76
77 }  // namespace content
78
79 #endif  // CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_TRACING_HANDLER_H_