Home | History | Annotate | Download | only in devtools
      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   void OnTraceDataCollected(const std::string& trace_fragment);
     34   void OnTraceComplete();
     35 
     36  private:
     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 OnCategoriesReceived(scoped_refptr<DevToolsProtocol::Command> command,
     49                             const std::set<std::string>& category_set);
     50 
     51   base::debug::TraceOptions TraceOptionsFromString(const std::string& options);
     52 
     53   void SetupTimer(double usage_reporting_interval);
     54 
     55   void DisableRecording(bool abort);
     56 
     57   scoped_ptr<base::Timer> buffer_usage_poll_timer_;
     58   Target target_;
     59   bool is_recording_;
     60 
     61   static const char* kDefaultCategories;
     62   static const double kDefaultReportingInterval;
     63   static const double kMinimumReportingInterval;
     64 
     65   base::WeakPtrFactory<DevToolsTracingHandler> weak_factory_;
     66 
     67   DISALLOW_COPY_AND_ASSIGN(DevToolsTracingHandler);
     68 };
     69 
     70 }  // namespace content
     71 
     72 #endif  // CONTENT_BROWSER_DEVTOOLS_DEVTOOLS_TRACING_HANDLER_H_
     73