• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_TRACING_TRACE_MESSAGE_FILTER_H_
6 #define CONTENT_BROWSER_TRACING_TRACE_MESSAGE_FILTER_H_
7 
8 #include <string>
9 #include <vector>
10 
11 #include "base/debug/trace_event.h"
12 #include "content/public/browser/browser_message_filter.h"
13 
14 namespace content {
15 
16 // This class sends and receives trace messages on the browser process.
17 // See also: tracing_controller.h
18 // See also: child_trace_message_filter.h
19 class TraceMessageFilter : public BrowserMessageFilter {
20  public:
21   TraceMessageFilter();
22 
23   // BrowserMessageFilter implementation.
24   virtual void OnChannelClosing() OVERRIDE;
25   virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE;
26 
27   void SendBeginTracing(const std::string& category_filter_str,
28                         base::debug::TraceLog::Options options);
29   void SendEndTracing();
30   void SendEnableMonitoring(const std::string& category_filter_str,
31                             base::debug::TraceLog::Options options);
32   void SendDisableMonitoring();
33   void SendCaptureMonitoringSnapshot();
34   void SendGetTraceBufferPercentFull();
35   void SendSetWatchEvent(const std::string& category_name,
36                          const std::string& event_name);
37   void SendCancelWatchEvent();
38 
39  protected:
40   virtual ~TraceMessageFilter();
41 
42  private:
43   // Message handlers.
44   void OnChildSupportsTracing();
45   void OnEndTracingAck(const std::vector<std::string>& known_categories);
46   void OnCaptureMonitoringSnapshotAcked();
47   void OnWatchEventMatched();
48   void OnTraceBufferPercentFullReply(float percent_full);
49   void OnTraceDataCollected(const std::string& data);
50   void OnMonitoringTraceDataCollected(const std::string& data);
51 
52   // ChildTraceMessageFilter exists:
53   bool has_child_;
54 
55   // Awaiting ack for previously sent SendEndTracing
56   bool is_awaiting_end_ack_;
57   // Awaiting ack for previously sent SendCaptureMonitoringSnapshot
58   bool is_awaiting_capture_monitoring_snapshot_ack_;
59   // Awaiting ack for previously sent SendGetTraceBufferPercentFull
60   bool is_awaiting_buffer_percent_full_ack_;
61 
62   DISALLOW_COPY_AND_ASSIGN(TraceMessageFilter);
63 };
64 
65 }  // namespace content
66 
67 #endif  // CONTENT_BROWSER_TRACING_TRACE_MESSAGE_FILTER_H_
68