| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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 #include "content/browser/tracing/tracing_controller_impl.h" | 4 #include "content/browser/tracing/tracing_controller_impl.h" |
| 5 | 5 |
| 6 #include "base/bind.h" | 6 #include "base/bind.h" |
| 7 #include "base/cpu.h" | 7 #include "base/cpu.h" |
| 8 #include "base/files/file_util.h" | 8 #include "base/files/file_util.h" |
| 9 #include "base/json/string_escape.h" | 9 #include "base/json/string_escape.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 #endif | 245 #endif |
| 246 } | 246 } |
| 247 | 247 |
| 248 // TraceLog may have been enabled in startup tracing before threads are ready. | 248 // TraceLog may have been enabled in startup tracing before threads are ready. |
| 249 if (TraceLog::GetInstance()->IsEnabled()) | 249 if (TraceLog::GetInstance()->IsEnabled()) |
| 250 return true; | 250 return true; |
| 251 return StartAgentTracing(trace_config); | 251 return StartAgentTracing(trace_config); |
| 252 } | 252 } |
| 253 | 253 |
| 254 void TracingControllerImpl::OnStartAgentTracingDone( | 254 void TracingControllerImpl::OnStartAgentTracingDone( |
| 255 const TraceConfig& trace_config, | 255 const TraceConfig& trace_config) { |
| 256 const StartTracingDoneCallback& callback) { | |
| 257 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 256 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 258 | 257 |
| 259 TRACE_EVENT_API_ADD_METADATA_EVENT("IsTimeTicksHighResolution", "value", | 258 TRACE_EVENT_API_ADD_METADATA_EVENT("IsTimeTicksHighResolution", "value", |
| 260 base::TimeTicks::IsHighResolution()); | 259 base::TimeTicks::IsHighResolution()); |
| 261 TRACE_EVENT_API_ADD_METADATA_EVENT("TraceConfig", "value", | 260 TRACE_EVENT_API_ADD_METADATA_EVENT("TraceConfig", "value", |
| 262 trace_config.AsConvertableToTraceFormat()); | 261 trace_config.AsConvertableToTraceFormat()); |
| 263 | 262 |
| 264 // Notify all child processes. | 263 // Notify all child processes. |
| 265 for (TraceMessageFilterSet::iterator it = trace_message_filters_.begin(); | 264 for (TraceMessageFilterSet::iterator it = trace_message_filters_.begin(); |
| 266 it != trace_message_filters_.end(); ++it) { | 265 it != trace_message_filters_.end(); ++it) { |
| 267 it->get()->SendBeginTracing(trace_config); | 266 it->get()->SendBeginTracing(trace_config); |
| 268 } | 267 } |
| 269 | 268 |
| 270 if (!callback.is_null()) | 269 if (!start_tracing_done_callback_.is_null()) { |
| 271 callback.Run(); | 270 start_tracing_done_callback_.Run(); |
| 272 | 271 start_tracing_done_callback_.Reset(); |
| 273 start_tracing_done_callback_.Reset(); | 272 } |
| 274 } | 273 } |
| 275 | 274 |
| 276 bool TracingControllerImpl::StopTracing( | 275 bool TracingControllerImpl::StopTracing( |
| 277 const scoped_refptr<TraceDataSink>& trace_data_sink) { | 276 const scoped_refptr<TraceDataSink>& trace_data_sink) { |
| 278 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 277 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 279 | 278 |
| 280 if (trace_data_sink) { | 279 if (trace_data_sink) { |
| 281 if (TraceLog::GetInstance()->GetCurrentTraceConfig() | 280 if (TraceLog::GetInstance()->GetCurrentTraceConfig() |
| 282 .IsArgumentFilterEnabled()) { | 281 .IsArgumentFilterEnabled()) { |
| 283 scoped_ptr<TracingDelegate> delegate( | 282 scoped_ptr<TracingDelegate> delegate( |
| (...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 876 std::string TracingControllerImpl::GetTraceEventLabel() { | 875 std::string TracingControllerImpl::GetTraceEventLabel() { |
| 877 return kChromeTraceLabel; | 876 return kChromeTraceLabel; |
| 878 } | 877 } |
| 879 | 878 |
| 880 bool TracingControllerImpl::StartAgentTracing( | 879 bool TracingControllerImpl::StartAgentTracing( |
| 881 const base::trace_event::TraceConfig& trace_config) { | 880 const base::trace_event::TraceConfig& trace_config) { |
| 882 DCHECK_CURRENTLY_ON(BrowserThread::UI); | 881 DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| 883 | 882 |
| 884 base::Closure on_start_tracing_done_callback = | 883 base::Closure on_start_tracing_done_callback = |
| 885 base::Bind(&TracingControllerImpl::OnStartAgentTracingDone, | 884 base::Bind(&TracingControllerImpl::OnStartAgentTracingDone, |
| 886 base::Unretained(this), | 885 base::Unretained(this), trace_config); |
| 887 trace_config, start_tracing_done_callback_); | |
| 888 if (!BrowserThread::PostTask( | 886 if (!BrowserThread::PostTask( |
| 889 BrowserThread::FILE, FROM_HERE, | 887 BrowserThread::FILE, FROM_HERE, |
| 890 base::Bind(&TracingControllerImpl::SetEnabledOnFileThread, | 888 base::Bind(&TracingControllerImpl::SetEnabledOnFileThread, |
| 891 base::Unretained(this), trace_config, | 889 base::Unretained(this), trace_config, |
| 892 base::trace_event::TraceLog::RECORDING_MODE, | 890 base::trace_event::TraceLog::RECORDING_MODE, |
| 893 on_start_tracing_done_callback))) { | 891 on_start_tracing_done_callback))) { |
| 894 // BrowserThread::PostTask fails if the threads haven't been created yet, | 892 // BrowserThread::PostTask fails if the threads haven't been created yet, |
| 895 // so it should be safe to just use TraceLog::SetEnabled directly. | 893 // so it should be safe to just use TraceLog::SetEnabled directly. |
| 896 base::trace_event::TraceLog::GetInstance()->SetEnabled( | 894 base::trace_event::TraceLog::GetInstance()->SetEnabled( |
| 897 trace_config, base::trace_event::TraceLog::RECORDING_MODE); | 895 trace_config, base::trace_event::TraceLog::RECORDING_MODE); |
| (...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1125 is_monitoring_ = is_monitoring; | 1123 is_monitoring_ = is_monitoring; |
| 1126 #if !defined(OS_ANDROID) | 1124 #if !defined(OS_ANDROID) |
| 1127 for (std::set<TracingUI*>::iterator it = tracing_uis_.begin(); | 1125 for (std::set<TracingUI*>::iterator it = tracing_uis_.begin(); |
| 1128 it != tracing_uis_.end(); it++) { | 1126 it != tracing_uis_.end(); it++) { |
| 1129 (*it)->OnMonitoringStateChanged(is_monitoring); | 1127 (*it)->OnMonitoringStateChanged(is_monitoring); |
| 1130 } | 1128 } |
| 1131 #endif | 1129 #endif |
| 1132 } | 1130 } |
| 1133 | 1131 |
| 1134 } // namespace content | 1132 } // namespace content |
| OLD | NEW |