• 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,
26                                  bool* message_was_ok) OVERRIDE;
27 
28   void SendBeginTracing(const std::string& category_filter_str,
29                         base::debug::TraceLog::Options options);
30   void SendEndTracing();
31   void SendEnableMonitoring(const std::string& category_filter_str,
32                             base::debug::TraceLog::Options options);
33   void SendDisableMonitoring();
34   void SendCaptureMonitoringSnapshot();
35   void SendGetTraceBufferPercentFull();
36   void SendSetWatchEvent(const std::string& category_name,
37                          const std::string& event_name);
38   void SendCancelWatchEvent();
39 
40  protected:
41   virtual ~TraceMessageFilter();
42 
43  private:
44   // Message handlers.
45   void OnChildSupportsTracing();
46   void OnEndTracingAck(const std::vector<std::string>& known_categories);
47   void OnCaptureMonitoringSnapshotAcked();
48   void OnWatchEventMatched();
49   void OnTraceBufferPercentFullReply(float percent_full);
50   void OnTraceDataCollected(const std::string& data);
51   void OnMonitoringTraceDataCollected(const std::string& data);
52 
53   // ChildTraceMessageFilter exists:
54   bool has_child_;
55 
56   // Awaiting ack for previously sent SendEndTracing
57   bool is_awaiting_end_ack_;
58   // Awaiting ack for previously sent SendCaptureMonitoringSnapshot
59   bool is_awaiting_capture_monitoring_snapshot_ack_;
60   // Awaiting ack for previously sent SendGetTraceBufferPercentFull
61   bool is_awaiting_buffer_percent_full_ack_;
62 
63   DISALLOW_COPY_AND_ASSIGN(TraceMessageFilter);
64 };
65 
66 }  // namespace content
67 
68 #endif  // CONTENT_BROWSER_TRACING_TRACE_MESSAGE_FILTER_H_
69