Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(146)

Side by Side Diff: content/browser/trace_message_filter.cc

Issue 9694028: Add a Content API around TracingController. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix linux Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/trace_message_filter.h" 5 #include "content/browser/trace_message_filter.h"
6 6
7 #include "content/browser/trace_controller.h" 7 #include "content/browser/trace_controller_impl.h"
8 #include "content/common/child_process_messages.h" 8 #include "content/common/child_process_messages.h"
9 9
10 using content::BrowserMessageFilter; 10 using content::BrowserMessageFilter;
11 using content::BrowserThread; 11 using content::BrowserThread;
12 using content::TraceControllerImpl;
12 13
13 TraceMessageFilter::TraceMessageFilter() : 14 TraceMessageFilter::TraceMessageFilter() :
14 has_child_(false), 15 has_child_(false),
15 is_awaiting_end_ack_(false), 16 is_awaiting_end_ack_(false),
16 is_awaiting_bpf_ack_(false) { 17 is_awaiting_bpf_ack_(false) {
17 } 18 }
18 19
19 TraceMessageFilter::~TraceMessageFilter() { 20 TraceMessageFilter::~TraceMessageFilter() {
20 } 21 }
21 22
22 void TraceMessageFilter::OnFilterAdded(IPC::Channel* channel) { 23 void TraceMessageFilter::OnFilterAdded(IPC::Channel* channel) {
23 // Always on IO thread (BrowserMessageFilter guarantee). 24 // Always on IO thread (BrowserMessageFilter guarantee).
24 BrowserMessageFilter::OnFilterAdded(channel); 25 BrowserMessageFilter::OnFilterAdded(channel);
25 } 26 }
26 27
27 void TraceMessageFilter::OnChannelClosing() { 28 void TraceMessageFilter::OnChannelClosing() {
28 // Always on IO thread (BrowserMessageFilter guarantee). 29 // Always on IO thread (BrowserMessageFilter guarantee).
29 BrowserMessageFilter::OnChannelClosing(); 30 BrowserMessageFilter::OnChannelClosing();
30 31
31 if (has_child_) { 32 if (has_child_) {
32 if (is_awaiting_bpf_ack_) 33 if (is_awaiting_bpf_ack_)
33 OnEndTracingAck(std::vector<std::string>()); 34 OnEndTracingAck(std::vector<std::string>());
34 35
35 if (is_awaiting_end_ack_) 36 if (is_awaiting_end_ack_)
36 OnTraceBufferPercentFullReply(0.0f); 37 OnTraceBufferPercentFullReply(0.0f);
37 38
38 TraceController::GetInstance()->RemoveFilter(this); 39 TraceControllerImpl::GetInstance()->RemoveFilter(this);
39 } 40 }
40 } 41 }
41 42
42 bool TraceMessageFilter::OnMessageReceived(const IPC::Message& message, 43 bool TraceMessageFilter::OnMessageReceived(const IPC::Message& message,
43 bool* message_was_ok) { 44 bool* message_was_ok) {
44 // Always on IO thread (BrowserMessageFilter guarantee). 45 // Always on IO thread (BrowserMessageFilter guarantee).
45 bool handled = true; 46 bool handled = true;
46 IPC_BEGIN_MESSAGE_MAP_EX(TraceMessageFilter, message, *message_was_ok) 47 IPC_BEGIN_MESSAGE_MAP_EX(TraceMessageFilter, message, *message_was_ok)
47 IPC_MESSAGE_HANDLER(ChildProcessHostMsg_ChildSupportsTracing, 48 IPC_MESSAGE_HANDLER(ChildProcessHostMsg_ChildSupportsTracing,
48 OnChildSupportsTracing) 49 OnChildSupportsTracing)
(...skipping 26 matching lines...) Expand all
75 76
76 void TraceMessageFilter::SendGetTraceBufferPercentFull() { 77 void TraceMessageFilter::SendGetTraceBufferPercentFull() {
77 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 78 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
78 DCHECK(!is_awaiting_bpf_ack_); 79 DCHECK(!is_awaiting_bpf_ack_);
79 is_awaiting_bpf_ack_ = true; 80 is_awaiting_bpf_ack_ = true;
80 Send(new ChildProcessMsg_GetTraceBufferPercentFull); 81 Send(new ChildProcessMsg_GetTraceBufferPercentFull);
81 } 82 }
82 83
83 void TraceMessageFilter::OnChildSupportsTracing() { 84 void TraceMessageFilter::OnChildSupportsTracing() {
84 has_child_ = true; 85 has_child_ = true;
85 TraceController::GetInstance()->AddFilter(this); 86 TraceControllerImpl::GetInstance()->AddFilter(this);
86 } 87 }
87 88
88 void TraceMessageFilter::OnEndTracingAck( 89 void TraceMessageFilter::OnEndTracingAck(
89 const std::vector<std::string>& known_categories) { 90 const std::vector<std::string>& known_categories) {
90 // is_awaiting_end_ack_ should always be true here, but check in case the 91 // is_awaiting_end_ack_ should always be true here, but check in case the
91 // child process is compromised. 92 // child process is compromised.
92 if (is_awaiting_end_ack_) { 93 if (is_awaiting_end_ack_) {
93 is_awaiting_end_ack_ = false; 94 is_awaiting_end_ack_ = false;
94 TraceController::GetInstance()->OnEndTracingAck(known_categories); 95 TraceControllerImpl::GetInstance()->OnEndTracingAck(known_categories);
95 } 96 }
96 } 97 }
97 98
98 void TraceMessageFilter::OnTraceDataCollected(const std::string& data) { 99 void TraceMessageFilter::OnTraceDataCollected(const std::string& data) {
99 scoped_refptr<base::RefCountedString> data_ptr(new base::RefCountedString()); 100 scoped_refptr<base::RefCountedString> data_ptr(new base::RefCountedString());
100 data_ptr->data() = data; 101 data_ptr->data() = data;
101 TraceController::GetInstance()->OnTraceDataCollected(data_ptr); 102 TraceControllerImpl::GetInstance()->OnTraceDataCollected(data_ptr);
102 } 103 }
103 104
104 void TraceMessageFilter::OnTraceBufferFull() { 105 void TraceMessageFilter::OnTraceBufferFull() {
105 TraceController::GetInstance()->OnTraceBufferFull(); 106 TraceControllerImpl::GetInstance()->OnTraceBufferFull();
106 } 107 }
107 108
108 void TraceMessageFilter::OnTraceBufferPercentFullReply(float percent_full) { 109 void TraceMessageFilter::OnTraceBufferPercentFullReply(float percent_full) {
109 if (is_awaiting_bpf_ack_) { 110 if (is_awaiting_bpf_ack_) {
110 is_awaiting_bpf_ack_ = false; 111 is_awaiting_bpf_ack_ = false;
111 TraceController::GetInstance()->OnTraceBufferPercentFullReply( 112 TraceControllerImpl::GetInstance()->OnTraceBufferPercentFullReply(
112 percent_full); 113 percent_full);
113 } 114 }
114 } 115 }
115 116
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698