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 base::debug::CategoryFilter& category_filter_str, 28 const base::debug::TraceOptions& options); 29 void SendEndTracing(); 30 void SendEnableMonitoring(const base::debug::CategoryFilter& category_filter, 31 const base::debug::TraceOptions& 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