| 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 5fc480346a29332414bbd150039dfcabea0385ee..54d1455aa3868711a0ca12e734f51cc992496b17 100644
|
| --- a/content/browser/tracing/tracing_controller_impl.cc
|
| +++ b/content/browser/tracing/tracing_controller_impl.cc
|
| @@ -193,13 +193,8 @@ TracingControllerImpl::TracingControllerImpl()
|
| 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) {
|
| - base::trace_event::MemoryDumpManager::GetInstance()->Initialize(
|
| - this /* delegate */, true /* is_coordinator */);
|
| -
|
| // Deliberately leaked, like this class.
|
| base::FileTracing::SetProvider(new FileTracingProviderImpl);
|
| }
|
| @@ -536,20 +531,6 @@ void TracingControllerImpl::RemoveTraceMessageFilter(
|
| base::trace_event::TraceLogStatus()));
|
| }
|
| }
|
| - if (pending_memory_dump_ack_count_ > 0) {
|
| - DCHECK(!queued_memory_dump_requests_.empty());
|
| - TraceMessageFilterSet::const_iterator it =
|
| - pending_memory_dump_filters_.find(trace_message_filter);
|
| - if (it != pending_memory_dump_filters_.end()) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&TracingControllerImpl::OnProcessMemoryDumpResponse,
|
| - base::Unretained(this),
|
| - base::RetainedRef(trace_message_filter),
|
| - queued_memory_dump_requests_.front().args.dump_guid,
|
| - false /* success */));
|
| - }
|
| - }
|
| trace_message_filters_.erase(trace_message_filter);
|
| }
|
|
|
| @@ -896,87 +877,6 @@ void TracingControllerImpl::AddFilteredMetadata(
|
| sink->AddMetadata(std::move(filtered_metadata));
|
| }
|
|
|
| -void TracingControllerImpl::RequestGlobalMemoryDump(
|
| - const base::trace_event::MemoryDumpRequestArgs& args,
|
| - const base::trace_event::MemoryDumpCallback& callback) {
|
| - if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&TracingControllerImpl::RequestGlobalMemoryDump,
|
| - base::Unretained(this), args, callback));
|
| - return;
|
| - }
|
| -
|
| - bool another_dump_already_in_progress = !queued_memory_dump_requests_.empty();
|
| -
|
| - // If this is a periodic memory dump request and there already is another
|
| - // request in the queue with the same level of detail, there's no point in
|
| - // enqueuing this request.
|
| - if (another_dump_already_in_progress &&
|
| - args.dump_type == base::trace_event::MemoryDumpType::PERIODIC_INTERVAL) {
|
| - for (const auto& request : queued_memory_dump_requests_) {
|
| - if (request.args.level_of_detail == args.level_of_detail) {
|
| - VLOG(1) << base::trace_event::MemoryDumpManager::kLogPrefix << " ("
|
| - << base::trace_event::MemoryDumpTypeToString(args.dump_type)
|
| - << ") skipped because another dump request with the same "
|
| - "level of detail ("
|
| - << base::trace_event::MemoryDumpLevelOfDetailToString(
|
| - args.level_of_detail)
|
| - << ") is already in the queue";
|
| - if (!callback.is_null())
|
| - callback.Run(args.dump_guid, false /* success */);
|
| - return;
|
| - }
|
| - }
|
| - }
|
| -
|
| - queued_memory_dump_requests_.emplace_back(args, callback);
|
| -
|
| - // If another dump is already in progress, this dump will automatically be
|
| - // scheduled when the other dump finishes.
|
| - if (another_dump_already_in_progress)
|
| - return;
|
| -
|
| - PerformNextQueuedGlobalMemoryDump();
|
| -}
|
| -
|
| -void TracingControllerImpl::PerformNextQueuedGlobalMemoryDump() {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| - DCHECK(!queued_memory_dump_requests_.empty());
|
| - const base::trace_event::MemoryDumpRequestArgs& args =
|
| - queued_memory_dump_requests_.front().args;
|
| -
|
| - // Count myself (local trace) in pending_memory_dump_ack_count_, acked by
|
| - // OnBrowserProcessMemoryDumpDone().
|
| - pending_memory_dump_ack_count_ = trace_message_filters_.size() + 1;
|
| - pending_memory_dump_filters_.clear();
|
| - failed_memory_dump_count_ = 0;
|
| -
|
| - MemoryDumpManagerDelegate::CreateProcessDump(
|
| - args, base::Bind(&TracingControllerImpl::OnBrowserProcessMemoryDumpDone,
|
| - base::Unretained(this)));
|
| -
|
| - // If there are no child processes we are just done.
|
| - if (pending_memory_dump_ack_count_ == 1)
|
| - return;
|
| -
|
| - pending_memory_dump_filters_ = trace_message_filters_;
|
| -
|
| - for (const scoped_refptr<TraceMessageFilter>& tmf : trace_message_filters_)
|
| - tmf->SendProcessMemoryDumpRequest(args);
|
| -}
|
| -
|
| -TracingControllerImpl::QueuedMemoryDumpRequest::QueuedMemoryDumpRequest(
|
| - const base::trace_event::MemoryDumpRequestArgs& args,
|
| - const base::trace_event::MemoryDumpCallback& callback)
|
| - : args(args), callback(callback) {}
|
| -
|
| -TracingControllerImpl::QueuedMemoryDumpRequest::~QueuedMemoryDumpRequest() {}
|
| -
|
| -uint64_t TracingControllerImpl::GetTracingProcessId() const {
|
| - return ChildProcessHost::kBrowserTracingProcessId;
|
| -}
|
| -
|
| void TracingControllerImpl::AddTraceMessageFilterObserver(
|
| TraceMessageFilterObserver* observer) {
|
| DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| @@ -995,76 +895,4 @@ void TracingControllerImpl::RemoveTraceMessageFilterObserver(
|
| observer->OnTraceMessageFilterRemoved(filter.get());
|
| }
|
|
|
| -void TracingControllerImpl::OnProcessMemoryDumpResponse(
|
| - TraceMessageFilter* trace_message_filter,
|
| - uint64_t dump_guid,
|
| - bool success) {
|
| - if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&TracingControllerImpl::OnProcessMemoryDumpResponse,
|
| - base::Unretained(this),
|
| - base::RetainedRef(trace_message_filter), dump_guid,
|
| - success));
|
| - return;
|
| - }
|
| -
|
| - TraceMessageFilterSet::iterator it =
|
| - pending_memory_dump_filters_.find(trace_message_filter);
|
| -
|
| - DCHECK(!queued_memory_dump_requests_.empty());
|
| - if (queued_memory_dump_requests_.front().args.dump_guid != dump_guid ||
|
| - it == pending_memory_dump_filters_.end()) {
|
| - DLOG(WARNING) << "Received unexpected memory dump response: " << dump_guid;
|
| - return;
|
| - }
|
| -
|
| - DCHECK_GT(pending_memory_dump_ack_count_, 0);
|
| - --pending_memory_dump_ack_count_;
|
| - pending_memory_dump_filters_.erase(it);
|
| - if (!success) {
|
| - ++failed_memory_dump_count_;
|
| - VLOG(1) << base::trace_event::MemoryDumpManager::kLogPrefix
|
| - << " failed because of NACK from child "
|
| - << trace_message_filter->peer_pid();
|
| - }
|
| - FinalizeGlobalMemoryDumpIfAllProcessesReplied();
|
| -}
|
| -
|
| -void TracingControllerImpl::OnBrowserProcessMemoryDumpDone(uint64_t dump_guid,
|
| - bool success) {
|
| - DCHECK_GT(pending_memory_dump_ack_count_, 0);
|
| - --pending_memory_dump_ack_count_;
|
| - if (!success) {
|
| - ++failed_memory_dump_count_;
|
| - VLOG(1) << base::trace_event::MemoryDumpManager::kLogPrefix
|
| - << " aborted on the current process";
|
| - }
|
| - FinalizeGlobalMemoryDumpIfAllProcessesReplied();
|
| -}
|
| -
|
| -void TracingControllerImpl::FinalizeGlobalMemoryDumpIfAllProcessesReplied() {
|
| - if (pending_memory_dump_ack_count_ > 0)
|
| - return;
|
| -
|
| - DCHECK(!queued_memory_dump_requests_.empty());
|
| - {
|
| - const auto& callback = queued_memory_dump_requests_.front().callback;
|
| - if (!callback.is_null()) {
|
| - const bool global_success = failed_memory_dump_count_ == 0;
|
| - callback.Run(queued_memory_dump_requests_.front().args.dump_guid,
|
| - global_success);
|
| - }
|
| - }
|
| - queued_memory_dump_requests_.pop_front();
|
| -
|
| - // Schedule the next queued dump (if applicable).
|
| - if (!queued_memory_dump_requests_.empty()) {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE,
|
| - base::Bind(&TracingControllerImpl::PerformNextQueuedGlobalMemoryDump,
|
| - base::Unretained(this)));
|
| - }
|
| -}
|
| -
|
| } // namespace content
|
|
|