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

Side by Side Diff: services/resource_coordinator/public/cpp/memory/memory_dump_manager_delegate_impl.cc

Issue 2694083005: memory-infra: Finish moving memory_infra from TracingController (Closed)
Patch Set: review Created 3 years, 10 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
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 "services/resource_coordinator/public/cpp/memory/memory_dump_manager_de legate_impl.h" 5 #include "services/resource_coordinator/public/cpp/memory/memory_dump_manager_de legate_impl.h"
6 6
7 #include "base/bind.h"
8 #include "base/bind_helpers.h"
9 #include "base/single_thread_task_runner.h"
7 #include "base/trace_event/memory_dump_request_args.h" 10 #include "base/trace_event/memory_dump_request_args.h"
8 #include "mojo/public/cpp/bindings/interface_request.h" 11 #include "mojo/public/cpp/bindings/interface_request.h"
9 #include "services/resource_coordinator/public/cpp/memory/coordinator.h" 12 #include "services/resource_coordinator/public/cpp/memory/coordinator.h"
10 #include "services/resource_coordinator/public/interfaces/memory/memory_instrume ntation.mojom.h" 13 #include "services/resource_coordinator/public/interfaces/memory/memory_instrume ntation.mojom.h"
11 #include "services/service_manager/public/cpp/interface_provider.h" 14 #include "services/service_manager/public/cpp/interface_provider.h"
12 15
13 namespace memory_instrumentation { 16 namespace memory_instrumentation {
14 17
15 MemoryDumpManagerDelegateImpl::MemoryDumpManagerDelegateImpl( 18 MemoryDumpManagerDelegateImpl::MemoryDumpManagerDelegateImpl(
16 service_manager::InterfaceProvider* interface_provider) 19 service_manager::InterfaceProvider* interface_provider)
17 : is_coordinator_(false), binding_(this) { 20 : is_coordinator_(false), binding_(this), task_runner_(nullptr) {
18 interface_provider->GetInterface(mojo::MakeRequest(&coordinator_)); 21 interface_provider->GetInterface(mojo::MakeRequest(&coordinator_));
19 coordinator_->RegisterProcessLocalDumpManager( 22 coordinator_->RegisterProcessLocalDumpManager(
20 binding_.CreateInterfacePtrAndBind()); 23 binding_.CreateInterfacePtrAndBind());
21 } 24 }
22 25
23 MemoryDumpManagerDelegateImpl::MemoryDumpManagerDelegateImpl( 26 MemoryDumpManagerDelegateImpl::MemoryDumpManagerDelegateImpl(
24 Coordinator* coordinator) 27 Coordinator* coordinator,
25 : is_coordinator_(true), binding_(this) { 28 base::SingleThreadTaskRunner* task_runner)
29 : is_coordinator_(true), binding_(this), task_runner_(task_runner) {
30 DCHECK(task_runner_);
26 coordinator->BindCoordinatorRequest(mojo::MakeRequest(&coordinator_)); 31 coordinator->BindCoordinatorRequest(mojo::MakeRequest(&coordinator_));
27 coordinator_->RegisterProcessLocalDumpManager( 32 coordinator_->RegisterProcessLocalDumpManager(
28 binding_.CreateInterfacePtrAndBind()); 33 binding_.CreateInterfacePtrAndBind());
29 } 34 }
30 35
31 MemoryDumpManagerDelegateImpl::~MemoryDumpManagerDelegateImpl() {} 36 MemoryDumpManagerDelegateImpl::~MemoryDumpManagerDelegateImpl() {}
32 37
33 bool MemoryDumpManagerDelegateImpl::IsCoordinator() const { 38 bool MemoryDumpManagerDelegateImpl::IsCoordinator() const {
34 return is_coordinator_; 39 return is_coordinator_;
35 } 40 }
36 41
37 void MemoryDumpManagerDelegateImpl::RequestProcessMemoryDump( 42 void MemoryDumpManagerDelegateImpl::RequestProcessMemoryDump(
38 const base::trace_event::MemoryDumpRequestArgs& args, 43 const base::trace_event::MemoryDumpRequestArgs& args,
39 const RequestProcessMemoryDumpCallback& callback) { 44 const RequestProcessMemoryDumpCallback& callback) {
40 MemoryDumpManagerDelegate::CreateProcessDump(args, callback); 45 MemoryDumpManagerDelegate::CreateProcessDump(args, callback);
41 } 46 }
42 47
43 void MemoryDumpManagerDelegateImpl::RequestGlobalMemoryDump( 48 void MemoryDumpManagerDelegateImpl::RequestGlobalMemoryDump(
44 const base::trace_event::MemoryDumpRequestArgs& args, 49 const base::trace_event::MemoryDumpRequestArgs& args,
45 const base::trace_event::MemoryDumpCallback& callback) { 50 const base::trace_event::MemoryDumpCallback& callback) {
46 coordinator_->RequestGlobalMemoryDump(args, callback); 51 if (task_runner_ && !task_runner_->RunsTasksOnCurrentThread()) {
52 task_runner_->PostTask(
53 FROM_HERE,
54 base::Bind(&mojom::Coordinator::RequestGlobalMemoryDump,
55 base::Unretained(coordinator_.get()), args, callback));
56 } else {
57 coordinator_->RequestGlobalMemoryDump(args, callback);
58 }
47 } 59 }
48 60
49 } // namespace memory_instrumentation 61 } // namespace memory_instrumentation
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698