Chromium Code Reviews| 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/files/file_util.h" | 7 #include "base/files/file_util.h" |
| 8 #include "base/json/string_escape.h" | 8 #include "base/json/string_escape.h" |
| 9 #include "base/macros.h" | 9 #include "base/macros.h" |
| 10 #include "base/strings/string_number_conversions.h" | 10 #include "base/strings/string_number_conversions.h" |
| 11 #include "base/trace_event/trace_event.h" | 11 #include "base/trace_event/trace_event.h" |
| 12 #include "components/tracing/process_metrics_memory_dump_manager.h" | |
| 12 #include "content/browser/tracing/file_tracing_provider_impl.h" | 13 #include "content/browser/tracing/file_tracing_provider_impl.h" |
| 13 #include "content/browser/tracing/power_tracing_agent.h" | 14 #include "content/browser/tracing/power_tracing_agent.h" |
| 14 #include "content/browser/tracing/trace_message_filter.h" | 15 #include "content/browser/tracing/trace_message_filter.h" |
| 15 #include "content/browser/tracing/tracing_ui.h" | 16 #include "content/browser/tracing/tracing_ui.h" |
| 16 #include "content/common/child_process_messages.h" | 17 #include "content/common/child_process_messages.h" |
| 17 #include "content/public/browser/browser_message_filter.h" | 18 #include "content/public/browser/browser_message_filter.h" |
| 18 #include "content/public/common/child_process_host.h" | 19 #include "content/public/common/child_process_host.h" |
| 19 #include "content/public/common/content_switches.h" | 20 #include "content/public/common/content_switches.h" |
| 20 | 21 |
| 21 #if defined(OS_CHROMEOS) | 22 #if defined(OS_CHROMEOS) |
| (...skipping 460 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 482 void TracingControllerImpl::AddTraceMessageFilter( | 483 void TracingControllerImpl::AddTraceMessageFilter( |
| 483 TraceMessageFilter* trace_message_filter) { | 484 TraceMessageFilter* trace_message_filter) { |
| 484 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { | 485 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
| 485 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 486 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| 486 base::Bind(&TracingControllerImpl::AddTraceMessageFilter, | 487 base::Bind(&TracingControllerImpl::AddTraceMessageFilter, |
| 487 base::Unretained(this), | 488 base::Unretained(this), |
| 488 make_scoped_refptr(trace_message_filter))); | 489 make_scoped_refptr(trace_message_filter))); |
| 489 return; | 490 return; |
| 490 } | 491 } |
| 491 | 492 |
| 493 tracing::ProcessMetricsMemoryDumpManager::GetInstance()->RegisterForProcess( | |
| 494 trace_message_filter->peer_pid()); | |
|
Primiano Tucci (use gerrit)
2015/11/17 10:44:13
Shouldn't this be >PeerHandle() ?
ssid
2015/11/17 13:55:06
Done.
| |
| 495 | |
| 492 trace_message_filters_.insert(trace_message_filter); | 496 trace_message_filters_.insert(trace_message_filter); |
| 493 if (can_cancel_watch_event()) { | 497 if (can_cancel_watch_event()) { |
| 494 trace_message_filter->SendSetWatchEvent(watch_category_name_, | 498 trace_message_filter->SendSetWatchEvent(watch_category_name_, |
| 495 watch_event_name_); | 499 watch_event_name_); |
| 496 } | 500 } |
| 497 if (can_disable_recording()) { | 501 if (can_disable_recording()) { |
| 498 trace_message_filter->SendBeginTracing( | 502 trace_message_filter->SendBeginTracing( |
| 499 TraceLog::GetInstance()->GetCurrentTraceConfig()); | 503 TraceLog::GetInstance()->GetCurrentTraceConfig()); |
| 500 } | 504 } |
| 501 if (can_disable_monitoring()) { | 505 if (can_disable_monitoring()) { |
| 502 trace_message_filter->SendEnableMonitoring( | 506 trace_message_filter->SendEnableMonitoring( |
| 503 TraceLog::GetInstance()->GetCurrentTraceConfig()); | 507 TraceLog::GetInstance()->GetCurrentTraceConfig()); |
| 504 } | 508 } |
| 505 | 509 |
| 506 FOR_EACH_OBSERVER(TraceMessageFilterObserver, trace_message_filter_observers_, | 510 FOR_EACH_OBSERVER(TraceMessageFilterObserver, trace_message_filter_observers_, |
| 507 OnTraceMessageFilterAdded(trace_message_filter)); | 511 OnTraceMessageFilterAdded(trace_message_filter)); |
| 508 } | 512 } |
| 509 | 513 |
| 510 void TracingControllerImpl::RemoveTraceMessageFilter( | 514 void TracingControllerImpl::RemoveTraceMessageFilter( |
| 511 TraceMessageFilter* trace_message_filter) { | 515 TraceMessageFilter* trace_message_filter) { |
| 512 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { | 516 if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { |
| 513 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 517 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| 514 base::Bind(&TracingControllerImpl::RemoveTraceMessageFilter, | 518 base::Bind(&TracingControllerImpl::RemoveTraceMessageFilter, |
| 515 base::Unretained(this), | 519 base::Unretained(this), |
| 516 make_scoped_refptr(trace_message_filter))); | 520 make_scoped_refptr(trace_message_filter))); |
| 517 return; | 521 return; |
| 518 } | 522 } |
| 519 | 523 |
| 524 tracing::ProcessMetricsMemoryDumpManager::GetInstance()->UnregisterForProcess( | |
| 525 trace_message_filter->peer_pid()); | |
|
Primiano Tucci (use gerrit)
2015/11/17 10:44:12
ditto
ssid
2015/11/17 13:55:06
Done.
| |
| 526 | |
| 520 // If a filter is removed while a response from that filter is pending then | 527 // If a filter is removed while a response from that filter is pending then |
| 521 // simulate the response. Otherwise the response count will be wrong and the | 528 // simulate the response. Otherwise the response count will be wrong and the |
| 522 // completion callback will never be executed. | 529 // completion callback will never be executed. |
| 523 if (pending_disable_recording_ack_count_ > 0) { | 530 if (pending_disable_recording_ack_count_ > 0) { |
| 524 TraceMessageFilterSet::const_iterator it = | 531 TraceMessageFilterSet::const_iterator it = |
| 525 pending_disable_recording_filters_.find(trace_message_filter); | 532 pending_disable_recording_filters_.find(trace_message_filter); |
| 526 if (it != pending_disable_recording_filters_.end()) { | 533 if (it != pending_disable_recording_filters_.end()) { |
| 527 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 534 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| 528 base::Bind(&TracingControllerImpl::OnDisableRecordingAcked, | 535 base::Bind(&TracingControllerImpl::OnDisableRecordingAcked, |
| 529 base::Unretained(this), | 536 base::Unretained(this), |
| (...skipping 412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 942 is_monitoring_ = is_monitoring; | 949 is_monitoring_ = is_monitoring; |
| 943 #if !defined(OS_ANDROID) | 950 #if !defined(OS_ANDROID) |
| 944 for (std::set<TracingUI*>::iterator it = tracing_uis_.begin(); | 951 for (std::set<TracingUI*>::iterator it = tracing_uis_.begin(); |
| 945 it != tracing_uis_.end(); it++) { | 952 it != tracing_uis_.end(); it++) { |
| 946 (*it)->OnMonitoringStateChanged(is_monitoring); | 953 (*it)->OnMonitoringStateChanged(is_monitoring); |
| 947 } | 954 } |
| 948 #endif | 955 #endif |
| 949 } | 956 } |
| 950 | 957 |
| 951 } // namespace content | 958 } // namespace content |
| OLD | NEW |