Home | History | Annotate | Download | only in tracing
      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 COMPONENTS_TRACING_CHILD_TRACE_MESSAGE_FILTER_H_
      6 #define COMPONENTS_TRACING_CHILD_TRACE_MESSAGE_FILTER_H_
      7 
      8 #include "base/bind.h"
      9 #include "base/memory/ref_counted_memory.h"
     10 #include "ipc/message_filter.h"
     11 
     12 namespace base {
     13 class MessageLoopProxy;
     14 }
     15 
     16 namespace tracing {
     17 
     18 // This class sends and receives trace messages on child processes.
     19 class ChildTraceMessageFilter : public IPC::MessageFilter {
     20  public:
     21   explicit ChildTraceMessageFilter(base::MessageLoopProxy* ipc_message_loop);
     22 
     23   // IPC::MessageFilter implementation.
     24   virtual void OnFilterAdded(IPC::Sender* sender) OVERRIDE;
     25   virtual void OnFilterRemoved() OVERRIDE;
     26   virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
     27 
     28  protected:
     29   virtual ~ChildTraceMessageFilter();
     30 
     31  private:
     32   // Message handlers.
     33   void OnBeginTracing(const std::string& category_filter_str,
     34                       base::TimeTicks browser_time,
     35                       int options);
     36   void OnEndTracing();
     37   void OnEnableMonitoring(const std::string& category_filter_str,
     38                           base::TimeTicks browser_time,
     39                           int options);
     40   void OnDisableMonitoring();
     41   void OnCaptureMonitoringSnapshot();
     42   void OnGetTraceBufferPercentFull();
     43   void OnSetWatchEvent(const std::string& category_name,
     44                        const std::string& event_name);
     45   void OnCancelWatchEvent();
     46   void OnWatchEventMatched();
     47 
     48   // Callback from trace subsystem.
     49   void OnTraceDataCollected(
     50       const scoped_refptr<base::RefCountedString>& events_str_ptr,
     51       bool has_more_events);
     52 
     53   void OnMonitoringTraceDataCollected(
     54       const scoped_refptr<base::RefCountedString>& events_str_ptr,
     55       bool has_more_events);
     56 
     57   IPC::Sender* sender_;
     58   base::MessageLoopProxy* ipc_message_loop_;
     59 
     60   DISALLOW_COPY_AND_ASSIGN(ChildTraceMessageFilter);
     61 };
     62 
     63 }  // namespace tracing
     64 
     65 #endif  // COMPONENTS_TRACING_CHILD_TRACE_MESSAGE_FILTER_H_
     66