| Index: content/browser/tracing/tracing_controller_impl.cc
|
| diff --git a/content/browser/tracing/tracing_controller_impl.cc b/content/browser/tracing/tracing_controller_impl.cc
|
| index 9476d0820780b2747705fe723e374ab19f6fde84..527e64c8f44ce4cd812aa431cfd8f1a107ce6cd7 100644
|
| --- a/content/browser/tracing/tracing_controller_impl.cc
|
| +++ b/content/browser/tracing/tracing_controller_impl.cc
|
| @@ -160,15 +160,13 @@ TracingController* TracingController::GetInstance() {
|
| TracingControllerImpl::TracingControllerImpl()
|
| : pending_start_tracing_ack_count_(0),
|
| pending_stop_tracing_ack_count_(0),
|
| - pending_capture_monitoring_snapshot_ack_count_(0),
|
| pending_trace_log_status_ack_count_(0),
|
| maximum_trace_buffer_usage_(0),
|
| approximate_event_count_(0),
|
| pending_memory_dump_ack_count_(0),
|
| failed_memory_dump_count_(0),
|
| pending_clock_sync_ack_count_(0),
|
| - is_tracing_(false),
|
| - is_monitoring_(false) {
|
| + is_tracing_(false) {
|
| base::trace_event::MemoryDumpManager::GetInstance()->Initialize(
|
| this /* delegate */, true /* is_coordinator */);
|
|
|
| @@ -388,134 +386,6 @@ void TracingControllerImpl::OnStopTracingDone() {
|
| StopAgentTracing(StopAgentTracingCallback());
|
| }
|
|
|
| -bool TracingControllerImpl::StartMonitoring(
|
| - const TraceConfig& trace_config,
|
| - const StartMonitoringDoneCallback& callback) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| -
|
| - if (!can_start_monitoring())
|
| - return false;
|
| - OnMonitoringStateChanged(true);
|
| -
|
| -#if defined(OS_ANDROID)
|
| - TraceLog::GetInstance()->AddClockSyncMetadataEvent();
|
| -#endif
|
| -
|
| - base::Closure on_start_monitoring_done_callback =
|
| - base::Bind(&TracingControllerImpl::OnStartMonitoringDone,
|
| - base::Unretained(this),
|
| - trace_config, callback);
|
| - if (!BrowserThread::PostTask(
|
| - BrowserThread::FILE, FROM_HERE,
|
| - base::Bind(&TracingControllerImpl::SetEnabledOnFileThread,
|
| - base::Unretained(this), trace_config,
|
| - base::trace_event::TraceLog::MONITORING_MODE,
|
| - on_start_monitoring_done_callback))) {
|
| - // BrowserThread::PostTask fails if the threads haven't been created yet,
|
| - // so it should be safe to just use TraceLog::SetEnabled directly.
|
| - base::trace_event::TraceLog::GetInstance()->SetEnabled(
|
| - trace_config, base::trace_event::TraceLog::MONITORING_MODE);
|
| - BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| - on_start_monitoring_done_callback);
|
| - }
|
| - return true;
|
| -}
|
| -
|
| -void TracingControllerImpl::OnStartMonitoringDone(
|
| - const TraceConfig& trace_config,
|
| - const StartMonitoringDoneCallback& callback) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| -
|
| - // Notify all child processes.
|
| - for (TraceMessageFilterSet::iterator it = trace_message_filters_.begin();
|
| - it != trace_message_filters_.end(); ++it) {
|
| - it->get()->SendStartMonitoring(trace_config);
|
| - }
|
| -
|
| - if (!callback.is_null())
|
| - callback.Run();
|
| -}
|
| -
|
| -bool TracingControllerImpl::StopMonitoring(
|
| - const StopMonitoringDoneCallback& callback) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| -
|
| - if (!can_stop_monitoring())
|
| - return false;
|
| -
|
| - base::Closure on_stop_monitoring_done_callback =
|
| - base::Bind(&TracingControllerImpl::OnStopMonitoringDone,
|
| - base::Unretained(this), callback);
|
| - BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE,
|
| - base::Bind(&TracingControllerImpl::SetDisabledOnFileThread,
|
| - base::Unretained(this),
|
| - on_stop_monitoring_done_callback));
|
| - return true;
|
| -}
|
| -
|
| -void TracingControllerImpl::OnStopMonitoringDone(
|
| - const StopMonitoringDoneCallback& callback) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| -
|
| - OnMonitoringStateChanged(false);
|
| -
|
| - // Notify all child processes.
|
| - for (TraceMessageFilterSet::iterator it = trace_message_filters_.begin();
|
| - it != trace_message_filters_.end(); ++it) {
|
| - it->get()->SendStopMonitoring();
|
| - }
|
| - if (!callback.is_null())
|
| - callback.Run();
|
| -}
|
| -
|
| -void TracingControllerImpl::GetMonitoringStatus(
|
| - bool* out_enabled,
|
| - TraceConfig* out_trace_config) {
|
| - *out_enabled = is_monitoring_;
|
| - *out_trace_config = TraceLog::GetInstance()->GetCurrentTraceConfig();
|
| -}
|
| -
|
| -bool TracingControllerImpl::CaptureMonitoringSnapshot(
|
| - const scoped_refptr<TraceDataSink>& monitoring_data_sink) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| -
|
| - if (!can_stop_monitoring())
|
| - return false;
|
| -
|
| - if (!monitoring_data_sink.get())
|
| - return false;
|
| -
|
| - monitoring_data_sink_ = monitoring_data_sink;
|
| -
|
| - // Count myself in pending_capture_monitoring_snapshot_ack_count_,
|
| - // acked below.
|
| - pending_capture_monitoring_snapshot_ack_count_ =
|
| - trace_message_filters_.size() + 1;
|
| - pending_capture_monitoring_filters_ = trace_message_filters_;
|
| -
|
| - // Handle special case of zero child processes by immediately flushing the
|
| - // trace log. Once the flush has completed the caller will be notified that
|
| - // the capture snapshot has ended.
|
| - if (pending_capture_monitoring_snapshot_ack_count_ == 1) {
|
| - // Flush asynchronously now, because we don't have any children to wait for.
|
| - TraceLog::GetInstance()->FlushButLeaveBufferIntact(
|
| - base::Bind(&TracingControllerImpl::OnLocalMonitoringTraceDataCollected,
|
| - base::Unretained(this)));
|
| - }
|
| -
|
| - // Notify all child processes.
|
| - for (TraceMessageFilterSet::iterator it = trace_message_filters_.begin();
|
| - it != trace_message_filters_.end(); ++it) {
|
| - it->get()->SendCaptureMonitoringSnapshot();
|
| - }
|
| -
|
| -#if defined(OS_ANDROID)
|
| - TraceLog::GetInstance()->AddClockSyncMetadataEvent();
|
| -#endif
|
| -
|
| - return true;
|
| -}
|
| -
|
| bool TracingControllerImpl::GetTraceBufferUsage(
|
| const GetTraceBufferUsageCallback& callback) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| @@ -620,10 +490,6 @@ void TracingControllerImpl::AddTraceMessageFilter(
|
| trace_message_filter->SendBeginTracing(
|
| TraceLog::GetInstance()->GetCurrentTraceConfig());
|
| }
|
| - if (can_stop_monitoring()) {
|
| - trace_message_filter->SendStartMonitoring(
|
| - TraceLog::GetInstance()->GetCurrentTraceConfig());
|
| - }
|
|
|
| FOR_EACH_OBSERVER(TraceMessageFilterObserver, trace_message_filter_observers_,
|
| OnTraceMessageFilterAdded(trace_message_filter));
|
| @@ -658,16 +524,6 @@ void TracingControllerImpl::RemoveTraceMessageFilter(
|
| std::vector<std::string>()));
|
| }
|
| }
|
| - if (pending_capture_monitoring_snapshot_ack_count_ > 0) {
|
| - TraceMessageFilterSet::const_iterator it =
|
| - pending_capture_monitoring_filters_.find(trace_message_filter);
|
| - if (it != pending_capture_monitoring_filters_.end()) {
|
| - BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&TracingControllerImpl::OnCaptureMonitoringSnapshotAcked,
|
| - base::Unretained(this),
|
| - make_scoped_refptr(trace_message_filter)));
|
| - }
|
| - }
|
| if (pending_trace_log_status_ack_count_ > 0) {
|
| TraceMessageFilterSet::const_iterator it =
|
| pending_trace_log_status_filters_.find(trace_message_filter);
|
| @@ -823,44 +679,6 @@ void TracingControllerImpl::OnEndAgentTracingAcked(
|
| OnStopTracingAcked(NULL, category_groups);
|
| }
|
|
|
| -void TracingControllerImpl::OnCaptureMonitoringSnapshotAcked(
|
| - TraceMessageFilter* trace_message_filter) {
|
| - if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| - BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&TracingControllerImpl::OnCaptureMonitoringSnapshotAcked,
|
| - base::Unretained(this),
|
| - make_scoped_refptr(trace_message_filter)));
|
| - return;
|
| - }
|
| -
|
| - if (pending_capture_monitoring_snapshot_ack_count_ == 0)
|
| - return;
|
| -
|
| - if (trace_message_filter &&
|
| - !pending_capture_monitoring_filters_.erase(trace_message_filter)) {
|
| - // The response from the specified message filter has already been received.
|
| - return;
|
| - }
|
| -
|
| - if (--pending_capture_monitoring_snapshot_ack_count_ == 1) {
|
| - // All acks from subprocesses have been received. Now flush the local trace.
|
| - // During or after this call, our OnLocalMonitoringTraceDataCollected
|
| - // will be called with the last of the local trace data.
|
| - TraceLog::GetInstance()->FlushButLeaveBufferIntact(
|
| - base::Bind(&TracingControllerImpl::OnLocalMonitoringTraceDataCollected,
|
| - base::Unretained(this)));
|
| - return;
|
| - }
|
| -
|
| - if (pending_capture_monitoring_snapshot_ack_count_ != 0)
|
| - return;
|
| -
|
| - if (monitoring_data_sink_.get()) {
|
| - monitoring_data_sink_->Close();
|
| - monitoring_data_sink_ = NULL;
|
| - }
|
| -}
|
| -
|
| void TracingControllerImpl::OnTraceDataCollected(
|
| const scoped_refptr<base::RefCountedString>& events_str_ptr) {
|
| // OnTraceDataCollected may be called from any browser thread, either by the
|
| @@ -876,19 +694,6 @@ void TracingControllerImpl::OnTraceDataCollected(
|
| trace_data_sink_->AddTraceChunk(events_str_ptr->data());
|
| }
|
|
|
| -void TracingControllerImpl::OnMonitoringTraceDataCollected(
|
| - const scoped_refptr<base::RefCountedString>& events_str_ptr) {
|
| - if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| - BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&TracingControllerImpl::OnMonitoringTraceDataCollected,
|
| - base::Unretained(this), events_str_ptr));
|
| - return;
|
| - }
|
| -
|
| - if (monitoring_data_sink_.get())
|
| - monitoring_data_sink_->AddTraceChunk(events_str_ptr->data());
|
| -}
|
| -
|
| void TracingControllerImpl::OnLocalTraceDataCollected(
|
| const scoped_refptr<base::RefCountedString>& events_str_ptr,
|
| bool has_more_events) {
|
| @@ -904,19 +709,6 @@ void TracingControllerImpl::OnLocalTraceDataCollected(
|
| OnStopTracingAcked(NULL, category_groups);
|
| }
|
|
|
| -void TracingControllerImpl::OnLocalMonitoringTraceDataCollected(
|
| - const scoped_refptr<base::RefCountedString>& events_str_ptr,
|
| - bool has_more_events) {
|
| - if (events_str_ptr->data().size())
|
| - OnMonitoringTraceDataCollected(events_str_ptr);
|
| -
|
| - if (has_more_events)
|
| - return;
|
| -
|
| - // Simulate an CaptureMonitoringSnapshotAcked for the local trace.
|
| - OnCaptureMonitoringSnapshotAcked(NULL);
|
| -}
|
| -
|
| void TracingControllerImpl::OnTraceLogStatusReply(
|
| TraceMessageFilter* trace_message_filter,
|
| const base::trace_event::TraceLogStatus& status) {
|
| @@ -1212,17 +1004,4 @@ void TracingControllerImpl::FinalizeGlobalMemoryDumpIfAllProcessesReplied() {
|
| pending_memory_dump_guid_ = 0;
|
| }
|
|
|
| -void TracingControllerImpl::OnMonitoringStateChanged(bool is_monitoring) {
|
| - if (is_monitoring_ == is_monitoring)
|
| - return;
|
| -
|
| - is_monitoring_ = is_monitoring;
|
| -#if !defined(OS_ANDROID)
|
| - for (std::set<TracingUI*>::iterator it = tracing_uis_.begin();
|
| - it != tracing_uis_.end(); it++) {
|
| - (*it)->OnMonitoringStateChanged(is_monitoring);
|
| - }
|
| -#endif
|
| -}
|
| -
|
| } // namespace content
|
|
|