[content shell] implement testRunner.overridePreference
[chromium-blink-merge.git] / content / browser / trace_message_filter.h
blob08f4ada926fe11c8a3ec2a8a4ea5453679faa634
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.
5 #ifndef CONTENT_BROWSER_TRACE_MESSAGE_FILTER_H_
6 #define CONTENT_BROWSER_TRACE_MESSAGE_FILTER_H_
8 #include <string>
9 #include <vector>
11 #include "content/public/browser/browser_message_filter.h"
13 namespace content {
15 // This class sends and receives trace messages on the browser process.
16 // See also: trace_controller.h
17 // See also: child_trace_message_filter.h
18 class TraceMessageFilter : public BrowserMessageFilter {
19 public:
20 TraceMessageFilter();
22 // BrowserMessageFilter override.
23 virtual void OnFilterAdded(IPC::Channel* channel) OVERRIDE;
25 // BrowserMessageFilter implementation.
26 virtual void OnChannelClosing() OVERRIDE;
27 virtual bool OnMessageReceived(const IPC::Message& message,
28 bool* message_was_ok) OVERRIDE;
30 void SendBeginTracing(const std::vector<std::string>& included_categories,
31 const std::vector<std::string>& excluded_categories);
32 void SendEndTracing();
33 void SendGetTraceBufferPercentFull();
34 void SendSetWatchEvent(const std::string& category_name,
35 const std::string& event_name);
36 void SendCancelWatchEvent();
38 protected:
39 virtual ~TraceMessageFilter();
41 private:
42 // Message handlers.
43 void OnChildSupportsTracing();
44 void OnEndTracingAck(const std::vector<std::string>& known_categories);
45 void OnTraceNotification(int notification);
46 void OnTraceBufferPercentFullReply(float percent_full);
47 void OnTraceDataCollected(const std::string& data);
49 // ChildTraceMessageFilter exists:
50 bool has_child_;
52 // Awaiting ack for previously sent SendEndTracing
53 bool is_awaiting_end_ack_;
54 // Awaiting ack for previously sent SendGetTraceBufferPercentFull
55 bool is_awaiting_buffer_percent_full_ack_;
57 DISALLOW_COPY_AND_ASSIGN(TraceMessageFilter);
60 } // namespace content
62 #endif // CONTENT_BROWSER_TRACE_MESSAGE_FILTER_H_