Commit 095c5c02 authored by tzik's avatar tzik Committed by Commit Bot

Migrate ResourceCoordinator to OnceCallback

This removes 'use_once_callback = false' flag from BUILD.gn from
services/resource_coordinator, and fixes all implementations of the
interface.

Bug: 714018, 729950
Change-Id: I203b0957fdc12da1829339f79d84210446ebad7e
Reviewed-on: https://chromium-review.googlesource.com/997064
Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarErik Chen <erikchen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#550156}
parent 7cf2167e
...@@ -72,7 +72,7 @@ void HeapProfilingService::GetProfiledPids(GetProfiledPidsCallback callback) { ...@@ -72,7 +72,7 @@ void HeapProfilingService::GetProfiledPids(GetProfiledPidsCallback callback) {
void HeapProfilingService::DumpProcessesForTracing( void HeapProfilingService::DumpProcessesForTracing(
bool strip_path_from_mapped_files, bool strip_path_from_mapped_files,
const DumpProcessesForTracingCallback& callback) { DumpProcessesForTracingCallback callback) {
if (!helper_) { if (!helper_) {
context()->connector()->BindInterface( context()->connector()->BindInterface(
resource_coordinator::mojom::kServiceName, &helper_); resource_coordinator::mojom::kServiceName, &helper_);
...@@ -88,16 +88,17 @@ void HeapProfilingService::DumpProcessesForTracing( ...@@ -88,16 +88,17 @@ void HeapProfilingService::DumpProcessesForTracing(
// Need a memory map to make sense of the dump. The dump will be triggered // Need a memory map to make sense of the dump. The dump will be triggered
// in the memory map global dump callback. // in the memory map global dump callback.
helper_->GetVmRegionsForHeapProfiler( helper_->GetVmRegionsForHeapProfiler(
pids, base::Bind(&HeapProfilingService:: pids,
OnGetVmRegionsCompleteForDumpProcessesForTracing, base::BindOnce(&HeapProfilingService::
weak_factory_.GetWeakPtr(), OnGetVmRegionsCompleteForDumpProcessesForTracing,
strip_path_from_mapped_files, callback)); weak_factory_.GetWeakPtr(), strip_path_from_mapped_files,
std::move(callback)));
} }
} }
void HeapProfilingService::OnGetVmRegionsCompleteForDumpProcessesForTracing( void HeapProfilingService::OnGetVmRegionsCompleteForDumpProcessesForTracing(
bool strip_path_from_mapped_files, bool strip_path_from_mapped_files,
const DumpProcessesForTracingCallback& callback, DumpProcessesForTracingCallback callback,
VmRegions vm_regions) { VmRegions vm_regions) {
connection_manager_.DumpProcessesForTracing( connection_manager_.DumpProcessesForTracing(
keep_small_allocations_, strip_path_from_mapped_files, keep_small_allocations_, strip_path_from_mapped_files,
......
...@@ -54,7 +54,7 @@ class HeapProfilingService ...@@ -54,7 +54,7 @@ class HeapProfilingService
// HeapProfiler implementation. // HeapProfiler implementation.
void DumpProcessesForTracing( void DumpProcessesForTracing(
bool strip_path_from_mapped_files, bool strip_path_from_mapped_files,
const DumpProcessesForTracingCallback& callback) override; DumpProcessesForTracingCallback callback) override;
private: private:
void OnProfilingServiceRequest(mojom::ProfilingServiceRequest request); void OnProfilingServiceRequest(mojom::ProfilingServiceRequest request);
...@@ -63,7 +63,7 @@ class HeapProfilingService ...@@ -63,7 +63,7 @@ class HeapProfilingService
void OnGetVmRegionsCompleteForDumpProcessesForTracing( void OnGetVmRegionsCompleteForDumpProcessesForTracing(
bool strip_path_from_mapped_files, bool strip_path_from_mapped_files,
const DumpProcessesForTracingCallback& callback, DumpProcessesForTracingCallback callback,
VmRegions vm_regions); VmRegions vm_regions);
service_manager::BinderRegistry registry_; service_manager::BinderRegistry registry_;
......
...@@ -117,9 +117,8 @@ class CoordinationUnitInterface : public CoordinationUnitBase, ...@@ -117,9 +117,8 @@ class CoordinationUnitInterface : public CoordinationUnitBase,
void Bind(MojoRequestClass request) { binding_.Bind(std::move(request)); } void Bind(MojoRequestClass request) { binding_.Bind(std::move(request)); }
void GetID( void GetID(typename MojoInterfaceClass::GetIDCallback callback) override {
const typename MojoInterfaceClass::GetIDCallback& callback) override { std::move(callback).Run(id_);
callback.Run(id_);
} }
void AddBinding(MojoRequestClass request) override { void AddBinding(MojoRequestClass request) override {
bindings_.AddBinding(this, std::move(request)); bindings_.AddBinding(this, std::move(request));
......
...@@ -20,7 +20,7 @@ CoordinationUnitIntrospectorImpl::CoordinationUnitIntrospectorImpl() = default; ...@@ -20,7 +20,7 @@ CoordinationUnitIntrospectorImpl::CoordinationUnitIntrospectorImpl() = default;
CoordinationUnitIntrospectorImpl::~CoordinationUnitIntrospectorImpl() = default; CoordinationUnitIntrospectorImpl::~CoordinationUnitIntrospectorImpl() = default;
void CoordinationUnitIntrospectorImpl::GetProcessToURLMap( void CoordinationUnitIntrospectorImpl::GetProcessToURLMap(
const GetProcessToURLMapCallback& callback) { GetProcessToURLMapCallback callback) {
std::vector<resource_coordinator::mojom::ProcessInfoPtr> process_infos; std::vector<resource_coordinator::mojom::ProcessInfoPtr> process_infos;
std::vector<ProcessCoordinationUnitImpl*> process_cus = std::vector<ProcessCoordinationUnitImpl*> process_cus =
ProcessCoordinationUnitImpl::GetAllProcessCoordinationUnits(); ProcessCoordinationUnitImpl::GetAllProcessCoordinationUnits();
...@@ -59,7 +59,7 @@ void CoordinationUnitIntrospectorImpl::GetProcessToURLMap( ...@@ -59,7 +59,7 @@ void CoordinationUnitIntrospectorImpl::GetProcessToURLMap(
} }
process_infos.push_back(std::move(process_info)); process_infos.push_back(std::move(process_info));
} }
callback.Run(std::move(process_infos)); std::move(callback).Run(std::move(process_infos));
} }
void CoordinationUnitIntrospectorImpl::BindToInterface( void CoordinationUnitIntrospectorImpl::BindToInterface(
......
...@@ -26,7 +26,7 @@ class CoordinationUnitIntrospectorImpl ...@@ -26,7 +26,7 @@ class CoordinationUnitIntrospectorImpl
const service_manager::BindSourceInfo& source_info); const service_manager::BindSourceInfo& source_info);
// Overridden from mojom::CoordinationUnitIntrospector: // Overridden from mojom::CoordinationUnitIntrospector:
void GetProcessToURLMap(const GetProcessToURLMapCallback& callback) override; void GetProcessToURLMap(GetProcessToURLMapCallback callback) override;
private: private:
mojo::BindingSet<mojom::CoordinationUnitIntrospector> bindings_; mojo::BindingSet<mojom::CoordinationUnitIntrospector> bindings_;
......
...@@ -112,57 +112,60 @@ void CoordinatorImpl::RequestGlobalMemoryDump( ...@@ -112,57 +112,60 @@ void CoordinatorImpl::RequestGlobalMemoryDump(
MemoryDumpType dump_type, MemoryDumpType dump_type,
MemoryDumpLevelOfDetail level_of_detail, MemoryDumpLevelOfDetail level_of_detail,
const std::vector<std::string>& allocator_dump_names, const std::vector<std::string>& allocator_dump_names,
const RequestGlobalMemoryDumpCallback& callback) { RequestGlobalMemoryDumpCallback callback) {
// This merely strips out the |dump_guid| argument. // This merely strips out the |dump_guid| argument.
auto adapter = [](const RequestGlobalMemoryDumpCallback& callback, auto adapter = [](RequestGlobalMemoryDumpCallback callback, bool success,
bool success, uint64_t, uint64_t, mojom::GlobalMemoryDumpPtr global_memory_dump) {
mojom::GlobalMemoryDumpPtr global_memory_dump) { std::move(callback).Run(success, std::move(global_memory_dump));
callback.Run(success, std::move(global_memory_dump));
}; };
QueuedRequest::Args args(dump_type, level_of_detail, allocator_dump_names, QueuedRequest::Args args(dump_type, level_of_detail, allocator_dump_names,
false /* add_to_trace */, base::kNullProcessId); false /* add_to_trace */, base::kNullProcessId);
RequestGlobalMemoryDumpInternal(args, base::BindRepeating(adapter, callback)); RequestGlobalMemoryDumpInternal(args,
base::BindOnce(adapter, std::move(callback)));
} }
void CoordinatorImpl::RequestGlobalMemoryDumpForPid( void CoordinatorImpl::RequestGlobalMemoryDumpForPid(
base::ProcessId pid, base::ProcessId pid,
const RequestGlobalMemoryDumpForPidCallback& callback) { RequestGlobalMemoryDumpForPidCallback callback) {
// Error out early if process id is null to avoid confusing with global // Error out early if process id is null to avoid confusing with global
// dump for all processes case when pid is kNullProcessId. // dump for all processes case when pid is kNullProcessId.
if (pid == base::kNullProcessId) { if (pid == base::kNullProcessId) {
callback.Run(false, nullptr); std::move(callback).Run(false, nullptr);
return; return;
} }
// This merely strips out the |dump_guid| argument; this is not relevant // This merely strips out the |dump_guid| argument; this is not relevant
// as we are not adding to trace. // as we are not adding to trace.
auto adapter = [](const RequestGlobalMemoryDumpForPidCallback& callback, auto adapter = [](RequestGlobalMemoryDumpForPidCallback callback,
bool success, uint64_t, bool success, uint64_t,
mojom::GlobalMemoryDumpPtr global_memory_dump) { mojom::GlobalMemoryDumpPtr global_memory_dump) {
callback.Run(success, std::move(global_memory_dump)); std::move(callback).Run(success, std::move(global_memory_dump));
}; };
QueuedRequest::Args args( QueuedRequest::Args args(
base::trace_event::MemoryDumpType::SUMMARY_ONLY, base::trace_event::MemoryDumpType::SUMMARY_ONLY,
base::trace_event::MemoryDumpLevelOfDetail::BACKGROUND, {}, base::trace_event::MemoryDumpLevelOfDetail::BACKGROUND, {},
false /* add_to_trace */, pid); false /* add_to_trace */, pid);
RequestGlobalMemoryDumpInternal(args, base::BindRepeating(adapter, callback)); RequestGlobalMemoryDumpInternal(args,
base::BindOnce(adapter, std::move(callback)));
} }
void CoordinatorImpl::RequestGlobalMemoryDumpAndAppendToTrace( void CoordinatorImpl::RequestGlobalMemoryDumpAndAppendToTrace(
MemoryDumpType dump_type, MemoryDumpType dump_type,
MemoryDumpLevelOfDetail level_of_detail, MemoryDumpLevelOfDetail level_of_detail,
const RequestGlobalMemoryDumpAndAppendToTraceCallback& callback) { RequestGlobalMemoryDumpAndAppendToTraceCallback callback) {
// This merely strips out the |dump_ptr| argument. // This merely strips out the |dump_ptr| argument.
auto adapter = auto adapter = [](RequestGlobalMemoryDumpAndAppendToTraceCallback callback,
[](const RequestGlobalMemoryDumpAndAppendToTraceCallback& callback, bool success, uint64_t dump_guid,
bool success, uint64_t dump_guid, mojom::GlobalMemoryDumpPtr) {
mojom::GlobalMemoryDumpPtr) { callback.Run(success, dump_guid); }; std::move(callback).Run(success, dump_guid);
};
QueuedRequest::Args args(dump_type, level_of_detail, {}, QueuedRequest::Args args(dump_type, level_of_detail, {},
true /* add_to_trace */, base::kNullProcessId); true /* add_to_trace */, base::kNullProcessId);
RequestGlobalMemoryDumpInternal(args, base::BindRepeating(adapter, callback)); RequestGlobalMemoryDumpInternal(args,
base::BindOnce(adapter, std::move(callback)));
} }
void CoordinatorImpl::RegisterHeapProfiler( void CoordinatorImpl::RegisterHeapProfiler(
...@@ -173,11 +176,11 @@ void CoordinatorImpl::RegisterHeapProfiler( ...@@ -173,11 +176,11 @@ void CoordinatorImpl::RegisterHeapProfiler(
void CoordinatorImpl::GetVmRegionsForHeapProfiler( void CoordinatorImpl::GetVmRegionsForHeapProfiler(
const std::vector<base::ProcessId>& pids, const std::vector<base::ProcessId>& pids,
const GetVmRegionsForHeapProfilerCallback& callback) { GetVmRegionsForHeapProfilerCallback callback) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
uint64_t dump_guid = ++next_dump_id_; uint64_t dump_guid = ++next_dump_id_;
std::unique_ptr<QueuedVmRegionRequest> request = std::unique_ptr<QueuedVmRegionRequest> request =
std::make_unique<QueuedVmRegionRequest>(dump_guid, callback); std::make_unique<QueuedVmRegionRequest>(dump_guid, std::move(callback));
in_progress_vm_region_requests_[dump_guid] = std::move(request); in_progress_vm_region_requests_[dump_guid] = std::move(request);
std::vector<QueuedRequestDispatcher::ClientInfo> clients; std::vector<QueuedRequestDispatcher::ClientInfo> clients;
...@@ -189,8 +192,9 @@ void CoordinatorImpl::GetVmRegionsForHeapProfiler( ...@@ -189,8 +192,9 @@ void CoordinatorImpl::GetVmRegionsForHeapProfiler(
QueuedVmRegionRequest* request_ptr = QueuedVmRegionRequest* request_ptr =
in_progress_vm_region_requests_[dump_guid].get(); in_progress_vm_region_requests_[dump_guid].get();
auto os_callback = base::Bind(&CoordinatorImpl::OnOSMemoryDumpForVMRegions, auto os_callback =
base::Unretained(this), dump_guid); base::BindRepeating(&CoordinatorImpl::OnOSMemoryDumpForVMRegions,
base::Unretained(this), dump_guid);
QueuedRequestDispatcher::SetUpAndDispatchVmRegionRequest(request_ptr, clients, QueuedRequestDispatcher::SetUpAndDispatchVmRegionRequest(request_ptr, clients,
pids, os_callback); pids, os_callback);
FinalizeVmRegionDumpIfAllManagersReplied(dump_guid); FinalizeVmRegionDumpIfAllManagersReplied(dump_guid);
...@@ -202,8 +206,8 @@ void CoordinatorImpl::RegisterClientProcess( ...@@ -202,8 +206,8 @@ void CoordinatorImpl::RegisterClientProcess(
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
mojom::ClientProcess* client_process = client_process_ptr.get(); mojom::ClientProcess* client_process = client_process_ptr.get();
client_process_ptr.set_connection_error_handler( client_process_ptr.set_connection_error_handler(
base::Bind(&CoordinatorImpl::UnregisterClientProcess, base::BindOnce(&CoordinatorImpl::UnregisterClientProcess,
base::Unretained(this), client_process)); base::Unretained(this), client_process));
auto identity = GetClientIdentityForCurrentRequest(); auto identity = GetClientIdentityForCurrentRequest();
auto client_info = std::make_unique<ClientInfo>( auto client_info = std::make_unique<ClientInfo>(
std::move(identity), std::move(client_process_ptr), process_type); std::move(identity), std::move(client_process_ptr), process_type);
...@@ -260,7 +264,7 @@ void CoordinatorImpl::UnregisterClientProcess( ...@@ -260,7 +264,7 @@ void CoordinatorImpl::UnregisterClientProcess(
void CoordinatorImpl::RequestGlobalMemoryDumpInternal( void CoordinatorImpl::RequestGlobalMemoryDumpInternal(
const QueuedRequest::Args& args, const QueuedRequest::Args& args,
const RequestGlobalMemoryDumpInternalCallback& callback) { RequestGlobalMemoryDumpInternalCallback callback) {
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
UMA_HISTOGRAM_COUNTS_1000("Memory.Experimental.Debug.GlobalDumpQueueLength", UMA_HISTOGRAM_COUNTS_1000("Memory.Experimental.Debug.GlobalDumpQueueLength",
...@@ -283,14 +287,15 @@ void CoordinatorImpl::RequestGlobalMemoryDumpInternal( ...@@ -283,14 +287,15 @@ void CoordinatorImpl::RequestGlobalMemoryDumpInternal(
<< base::trace_event::MemoryDumpLevelOfDetailToString( << base::trace_event::MemoryDumpLevelOfDetailToString(
args.level_of_detail) args.level_of_detail)
<< ") is already in the queue"; << ") is already in the queue";
callback.Run(false /* success */, 0 /* dump_guid */, std::move(callback).Run(false /* success */, 0 /* dump_guid */,
nullptr /* global_memory_dump */); nullptr /* global_memory_dump */);
return; return;
} }
} }
} }
queued_memory_dump_requests_.emplace_back(args, ++next_dump_id_, callback); queued_memory_dump_requests_.emplace_back(args, ++next_dump_id_,
std::move(callback));
// If another dump is already in queued, this dump will automatically be // If another dump is already in queued, this dump will automatically be
// scheduled when the other dump finishes. // scheduled when the other dump finishes.
...@@ -490,7 +495,7 @@ void CoordinatorImpl::FinalizeVmRegionDumpIfAllManagersReplied( ...@@ -490,7 +495,7 @@ void CoordinatorImpl::FinalizeVmRegionDumpIfAllManagersReplied(
QueuedRequestDispatcher::VmRegions results = QueuedRequestDispatcher::VmRegions results =
QueuedRequestDispatcher::FinalizeVmRegionRequest(it->second.get()); QueuedRequestDispatcher::FinalizeVmRegionRequest(it->second.get());
it->second->callback.Run(std::move(results)); std::move(it->second->callback).Run(std::move(results));
in_progress_vm_region_requests_.erase(it); in_progress_vm_region_requests_.erase(it);
} }
...@@ -578,8 +583,8 @@ void CoordinatorImpl::FinalizeGlobalMemoryDumpIfAllManagersReplied() { ...@@ -578,8 +583,8 @@ void CoordinatorImpl::FinalizeGlobalMemoryDumpIfAllManagersReplied() {
if (!queued_memory_dump_requests_.empty()) { if (!queued_memory_dump_requests_.empty()) {
base::SequencedTaskRunnerHandle::Get()->PostTask( base::SequencedTaskRunnerHandle::Get()->PostTask(
FROM_HERE, FROM_HERE,
base::Bind(&CoordinatorImpl::PerformNextQueuedGlobalMemoryDump, base::BindOnce(&CoordinatorImpl::PerformNextQueuedGlobalMemoryDump,
base::Unretained(this))); base::Unretained(this)));
} }
} }
......
...@@ -62,20 +62,20 @@ class CoordinatorImpl : public Coordinator, ...@@ -62,20 +62,20 @@ class CoordinatorImpl : public Coordinator,
base::trace_event::MemoryDumpType, base::trace_event::MemoryDumpType,
base::trace_event::MemoryDumpLevelOfDetail, base::trace_event::MemoryDumpLevelOfDetail,
const std::vector<std::string>& allocator_dump_names, const std::vector<std::string>& allocator_dump_names,
const RequestGlobalMemoryDumpCallback&) override; RequestGlobalMemoryDumpCallback) override;
void RequestGlobalMemoryDumpForPid( void RequestGlobalMemoryDumpForPid(
base::ProcessId, base::ProcessId,
const RequestGlobalMemoryDumpForPidCallback&) override; RequestGlobalMemoryDumpForPidCallback) override;
void RequestGlobalMemoryDumpAndAppendToTrace( void RequestGlobalMemoryDumpAndAppendToTrace(
base::trace_event::MemoryDumpType, base::trace_event::MemoryDumpType,
base::trace_event::MemoryDumpLevelOfDetail, base::trace_event::MemoryDumpLevelOfDetail,
const RequestGlobalMemoryDumpAndAppendToTraceCallback&) override; RequestGlobalMemoryDumpAndAppendToTraceCallback) override;
void RegisterHeapProfiler(mojom::HeapProfilerPtr heap_profiler) override; void RegisterHeapProfiler(mojom::HeapProfilerPtr heap_profiler) override;
// mojom::HeapProfilerHelper implementation. // mojom::HeapProfilerHelper implementation.
void GetVmRegionsForHeapProfiler( void GetVmRegionsForHeapProfiler(
const std::vector<base::ProcessId>& pids, const std::vector<base::ProcessId>& pids,
const GetVmRegionsForHeapProfilerCallback&) override; GetVmRegionsForHeapProfilerCallback) override;
protected: protected:
// virtual for testing. // virtual for testing.
...@@ -89,7 +89,7 @@ class CoordinatorImpl : public Coordinator, ...@@ -89,7 +89,7 @@ class CoordinatorImpl : public Coordinator,
using OSMemDumpMap = using OSMemDumpMap =
std::unordered_map<base::ProcessId, mojom::RawOSMemDumpPtr>; std::unordered_map<base::ProcessId, mojom::RawOSMemDumpPtr>;
using RequestGlobalMemoryDumpInternalCallback = using RequestGlobalMemoryDumpInternalCallback =
base::Callback<void(bool, uint64_t, mojom::GlobalMemoryDumpPtr)>; base::OnceCallback<void(bool, uint64_t, mojom::GlobalMemoryDumpPtr)>;
friend std::default_delete<CoordinatorImpl>; // For testing friend std::default_delete<CoordinatorImpl>; // For testing
friend class CoordinatorImplTest; // For testing friend class CoordinatorImplTest; // For testing
...@@ -107,7 +107,7 @@ class CoordinatorImpl : public Coordinator, ...@@ -107,7 +107,7 @@ class CoordinatorImpl : public Coordinator,
void RequestGlobalMemoryDumpInternal( void RequestGlobalMemoryDumpInternal(
const QueuedRequest::Args& args, const QueuedRequest::Args& args,
const RequestGlobalMemoryDumpInternalCallback& callback); RequestGlobalMemoryDumpInternalCallback callback);
// Callback of RequestChromeMemoryDump. // Callback of RequestChromeMemoryDump.
void OnChromeMemoryDumpResponse( void OnChromeMemoryDumpResponse(
......
...@@ -32,11 +32,10 @@ bool QueuedRequest::PendingResponse::operator<( ...@@ -32,11 +32,10 @@ bool QueuedRequest::PendingResponse::operator<(
QueuedRequest::Response::Response() {} QueuedRequest::Response::Response() {}
QueuedRequest::Response::~Response() = default; QueuedRequest::Response::~Response() = default;
QueuedRequest::QueuedRequest( QueuedRequest::QueuedRequest(const Args& args,
const Args& args, uint64_t dump_guid,
uint64_t dump_guid, RequestGlobalMemoryDumpInternalCallback callback)
const RequestGlobalMemoryDumpInternalCallback& callback) : args(args), dump_guid(dump_guid), callback(std::move(callback)) {}
: args(args), dump_guid(dump_guid), callback(callback) {}
QueuedRequest::~QueuedRequest() = default; QueuedRequest::~QueuedRequest() = default;
base::trace_event::MemoryDumpRequestArgs QueuedRequest::GetRequestArgs() { base::trace_event::MemoryDumpRequestArgs QueuedRequest::GetRequestArgs() {
...@@ -52,9 +51,8 @@ QueuedVmRegionRequest::Response::~Response() = default; ...@@ -52,9 +51,8 @@ QueuedVmRegionRequest::Response::~Response() = default;
QueuedVmRegionRequest::QueuedVmRegionRequest( QueuedVmRegionRequest::QueuedVmRegionRequest(
uint64_t dump_guid, uint64_t dump_guid,
const mojom::HeapProfilerHelper::GetVmRegionsForHeapProfilerCallback& mojom::HeapProfilerHelper::GetVmRegionsForHeapProfilerCallback callback)
callback) : dump_guid(dump_guid), callback(std::move(callback)) {}
: dump_guid(dump_guid), callback(callback) {}
QueuedVmRegionRequest::~QueuedVmRegionRequest() = default; QueuedVmRegionRequest::~QueuedVmRegionRequest() = default;
} // namespace memory_instrumentation } // namespace memory_instrumentation
...@@ -25,7 +25,7 @@ using OSMemDumpMap = ...@@ -25,7 +25,7 @@ using OSMemDumpMap =
// Holds data for pending requests enqueued via RequestGlobalMemoryDump(). // Holds data for pending requests enqueued via RequestGlobalMemoryDump().
struct QueuedRequest { struct QueuedRequest {
using RequestGlobalMemoryDumpInternalCallback = base::Callback< using RequestGlobalMemoryDumpInternalCallback = base::OnceCallback<
void(bool, uint64_t, memory_instrumentation::mojom::GlobalMemoryDumpPtr)>; void(bool, uint64_t, memory_instrumentation::mojom::GlobalMemoryDumpPtr)>;
struct Args { struct Args {
...@@ -69,7 +69,7 @@ struct QueuedRequest { ...@@ -69,7 +69,7 @@ struct QueuedRequest {
QueuedRequest(const Args& args, QueuedRequest(const Args& args,
uint64_t dump_guid, uint64_t dump_guid,
const RequestGlobalMemoryDumpInternalCallback& callback); RequestGlobalMemoryDumpInternalCallback callback);
~QueuedRequest(); ~QueuedRequest();
base::trace_event::MemoryDumpRequestArgs GetRequestArgs(); base::trace_event::MemoryDumpRequestArgs GetRequestArgs();
...@@ -87,7 +87,7 @@ struct QueuedRequest { ...@@ -87,7 +87,7 @@ struct QueuedRequest {
const Args args; const Args args;
const uint64_t dump_guid; const uint64_t dump_guid;
const RequestGlobalMemoryDumpInternalCallback callback; RequestGlobalMemoryDumpInternalCallback callback;
// When a dump, requested via RequestGlobalMemoryDump(), is in progress this // When a dump, requested via RequestGlobalMemoryDump(), is in progress this
// set contains a |PendingResponse| for each |RequestChromeMemoryDump| and // set contains a |PendingResponse| for each |RequestChromeMemoryDump| and
...@@ -111,11 +111,10 @@ struct QueuedRequest { ...@@ -111,11 +111,10 @@ struct QueuedRequest {
struct QueuedVmRegionRequest { struct QueuedVmRegionRequest {
QueuedVmRegionRequest( QueuedVmRegionRequest(
uint64_t dump_guid, uint64_t dump_guid,
const mojom::HeapProfilerHelper::GetVmRegionsForHeapProfilerCallback& mojom::HeapProfilerHelper::GetVmRegionsForHeapProfilerCallback callback);
callback);
~QueuedVmRegionRequest(); ~QueuedVmRegionRequest();
const uint64_t dump_guid; const uint64_t dump_guid;
const mojom::HeapProfilerHelper::GetVmRegionsForHeapProfilerCallback callback; mojom::HeapProfilerHelper::GetVmRegionsForHeapProfilerCallback callback;
struct Response { struct Response {
Response(); Response();
......
...@@ -225,8 +225,9 @@ void QueuedRequestDispatcher::SetUpAndDispatch( ...@@ -225,8 +225,9 @@ void QueuedRequestDispatcher::SetUpAndDispatch(
// https://bugs.chromium.org/p/chromium/issues/detail?id=812346#c16 for more // https://bugs.chromium.org/p/chromium/issues/detail?id=812346#c16 for more
// details. // details.
request->pending_responses.insert({client, ResponseType::kChromeDump}); request->pending_responses.insert({client, ResponseType::kChromeDump});
client->RequestChromeMemoryDump(request->GetRequestArgs(), client->RequestChromeMemoryDump(
base::Bind(chrome_callback, client)); request->GetRequestArgs(),
base::BindOnce(std::move(chrome_callback), client));
// On most platforms each process can dump data about their own process // On most platforms each process can dump data about their own process
// so ask each process to do so Linux is special see below. // so ask each process to do so Linux is special see below.
...@@ -234,7 +235,7 @@ void QueuedRequestDispatcher::SetUpAndDispatch( ...@@ -234,7 +235,7 @@ void QueuedRequestDispatcher::SetUpAndDispatch(
request->pending_responses.insert({client, ResponseType::kOSDump}); request->pending_responses.insert({client, ResponseType::kOSDump});
client->RequestOSMemoryDump(request->memory_map_option(), client->RequestOSMemoryDump(request->memory_map_option(),
{base::kNullProcessId}, {base::kNullProcessId},
base::Bind(os_callback, client)); base::BindOnce(os_callback, client));
#endif // !defined(OS_LINUX) #endif // !defined(OS_LINUX)
// If we are in the single pid case, then we've already found the only // If we are in the single pid case, then we've already found the only
...@@ -263,9 +264,9 @@ void QueuedRequestDispatcher::SetUpAndDispatch( ...@@ -263,9 +264,9 @@ void QueuedRequestDispatcher::SetUpAndDispatch(
} }
if (browser_client && pids.size() > 0) { if (browser_client && pids.size() > 0) {
request->pending_responses.insert({browser_client, ResponseType::kOSDump}); request->pending_responses.insert({browser_client, ResponseType::kOSDump});
const auto callback = base::Bind(os_callback, browser_client); auto callback = base::BindOnce(os_callback, browser_client);
browser_client->RequestOSMemoryDump(request->memory_map_option(), pids, browser_client->RequestOSMemoryDump(request->memory_map_option(), pids,
callback); std::move(callback));
} }
#endif // defined(OS_LINUX) #endif // defined(OS_LINUX)
...@@ -304,9 +305,9 @@ void QueuedRequestDispatcher::SetUpAndDispatchVmRegionRequest( ...@@ -304,9 +305,9 @@ void QueuedRequestDispatcher::SetUpAndDispatchVmRegionRequest(
request->pending_responses.insert(browser_client); request->pending_responses.insert(browser_client);
request->responses[browser_client].process_id = browser_client_pid; request->responses[browser_client].process_id = browser_client_pid;
const auto callback = base::Bind(os_callback, browser_client); auto callback = base::BindOnce(os_callback, browser_client);
browser_client->RequestOSMemoryDump(mojom::MemoryMapOption::MODULES, browser_client->RequestOSMemoryDump(mojom::MemoryMapOption::MODULES,
desired_pids, callback); desired_pids, std::move(callback));
#else #else
for (const auto& client_info : clients) { for (const auto& client_info : clients) {
if (std::find(desired_pids.begin(), desired_pids.end(), client_info.pid) != if (std::find(desired_pids.begin(), desired_pids.end(), client_info.pid) !=
...@@ -316,7 +317,7 @@ void QueuedRequestDispatcher::SetUpAndDispatchVmRegionRequest( ...@@ -316,7 +317,7 @@ void QueuedRequestDispatcher::SetUpAndDispatchVmRegionRequest(
request->responses[client].process_id = client_info.pid; request->responses[client].process_id = client_info.pid;
client->RequestOSMemoryDump(mojom::MemoryMapOption::MODULES, client->RequestOSMemoryDump(mojom::MemoryMapOption::MODULES,
{base::kNullProcessId}, {base::kNullProcessId},
base::Bind(os_callback, client)); base::BindOnce(os_callback, client));
} }
} }
#endif // defined(OS_LINUX) #endif // defined(OS_LINUX)
...@@ -539,8 +540,9 @@ void QueuedRequestDispatcher::Finalize(QueuedRequest* request, ...@@ -539,8 +540,9 @@ void QueuedRequestDispatcher::Finalize(QueuedRequest* request,
if (request->args.pid != base::kNullProcessId && !global_success) { if (request->args.pid != base::kNullProcessId && !global_success) {
global_dump = nullptr; global_dump = nullptr;
} }
const auto& callback = request->callback; auto& callback = request->callback;
callback.Run(global_success, request->dump_guid, std::move(global_dump)); std::move(callback).Run(global_success, request->dump_guid,
std::move(global_dump));
UMA_HISTOGRAM_MEDIUM_TIMES("Memory.Experimental.Debug.GlobalDumpDuration", UMA_HISTOGRAM_MEDIUM_TIMES("Memory.Experimental.Debug.GlobalDumpDuration",
base::Time::Now() - request->start_time); base::Time::Now() - request->start_time);
UMA_HISTOGRAM_COUNTS_1000( UMA_HISTOGRAM_COUNTS_1000(
......
...@@ -21,15 +21,15 @@ class QueuedRequestDispatcher { ...@@ -21,15 +21,15 @@ class QueuedRequestDispatcher {
using OSMemDumpMap = using OSMemDumpMap =
std::unordered_map<base::ProcessId, std::unordered_map<base::ProcessId,
memory_instrumentation::mojom::RawOSMemDumpPtr>; memory_instrumentation::mojom::RawOSMemDumpPtr>;
using RequestGlobalMemoryDumpInternalCallback = base::Callback< using RequestGlobalMemoryDumpInternalCallback = base::OnceCallback<
void(bool, uint64_t, memory_instrumentation::mojom::GlobalMemoryDumpPtr)>; void(bool, uint64_t, memory_instrumentation::mojom::GlobalMemoryDumpPtr)>;
using ChromeCallback = base::Callback<void( using ChromeCallback = base::RepeatingCallback<void(
mojom::ClientProcess*, mojom::ClientProcess*,
bool, bool,
uint64_t, uint64_t,
std::unique_ptr<base::trace_event::ProcessMemoryDump>)>; std::unique_ptr<base::trace_event::ProcessMemoryDump>)>;
using OsCallback = using OsCallback =
base::Callback<void(mojom::ClientProcess*, bool, OSMemDumpMap)>; base::RepeatingCallback<void(mojom::ClientProcess*, bool, OSMemDumpMap)>;
using VmRegions = std::unordered_map< using VmRegions = std::unordered_map<
base::ProcessId, base::ProcessId,
std::vector<memory_instrumentation::mojom::VmRegionPtr>>; std::vector<memory_instrumentation::mojom::VmRegionPtr>>;
......
...@@ -35,8 +35,8 @@ void FrameResourceCoordinator::AddChildFrame( ...@@ -35,8 +35,8 @@ void FrameResourceCoordinator::AddChildFrame(
// We could keep the ID around ourselves, but this hop ensures that the child // We could keep the ID around ourselves, but this hop ensures that the child
// has been created on the service-side. // has been created on the service-side.
child.service()->GetID( child.service()->GetID(
base::Bind(&FrameResourceCoordinator::AddChildFrameByID, base::BindOnce(&FrameResourceCoordinator::AddChildFrameByID,
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
} }
void FrameResourceCoordinator::RemoveChildFrame( void FrameResourceCoordinator::RemoveChildFrame(
...@@ -45,8 +45,8 @@ void FrameResourceCoordinator::RemoveChildFrame( ...@@ -45,8 +45,8 @@ void FrameResourceCoordinator::RemoveChildFrame(
if (!service_) if (!service_)
return; return;
child.service()->GetID( child.service()->GetID(
base::Bind(&FrameResourceCoordinator::RemoveChildFrameByID, base::BindOnce(&FrameResourceCoordinator::RemoveChildFrameByID,
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
} }
void FrameResourceCoordinator::ConnectToService( void FrameResourceCoordinator::ConnectToService(
......
...@@ -74,7 +74,7 @@ ClientProcessImpl::~ClientProcessImpl() {} ...@@ -74,7 +74,7 @@ ClientProcessImpl::~ClientProcessImpl() {}
void ClientProcessImpl::RequestChromeMemoryDump( void ClientProcessImpl::RequestChromeMemoryDump(
const base::trace_event::MemoryDumpRequestArgs& args, const base::trace_event::MemoryDumpRequestArgs& args,
const RequestChromeMemoryDumpCallback& callback) { RequestChromeMemoryDumpCallback callback) {
DCHECK(!callback.is_null()); DCHECK(!callback.is_null());
most_recent_chrome_memory_dump_guid_ = args.dump_guid; most_recent_chrome_memory_dump_guid_ = args.dump_guid;
auto it_and_inserted = auto it_and_inserted =
...@@ -106,10 +106,10 @@ void ClientProcessImpl::OnChromeMemoryDumpDone( ...@@ -106,10 +106,10 @@ void ClientProcessImpl::OnChromeMemoryDumpDone(
} }
if (!process_memory_dump) { if (!process_memory_dump) {
callback.Run(false, dump_guid, nullptr); std::move(callback).Run(false, dump_guid, nullptr);
return; return;
} }
callback.Run(success, dump_guid, std::move(process_memory_dump)); std::move(callback).Run(success, dump_guid, std::move(process_memory_dump));
} }
void ClientProcessImpl::RequestGlobalMemoryDump_NoCallback( void ClientProcessImpl::RequestGlobalMemoryDump_NoCallback(
...@@ -118,8 +118,8 @@ void ClientProcessImpl::RequestGlobalMemoryDump_NoCallback( ...@@ -118,8 +118,8 @@ void ClientProcessImpl::RequestGlobalMemoryDump_NoCallback(
if (!task_runner_->RunsTasksInCurrentSequence()) { if (!task_runner_->RunsTasksInCurrentSequence()) {
task_runner_->PostTask( task_runner_->PostTask(
FROM_HERE, FROM_HERE,
base::Bind(&ClientProcessImpl::RequestGlobalMemoryDump_NoCallback, base::BindOnce(&ClientProcessImpl::RequestGlobalMemoryDump_NoCallback,
base::Unretained(this), dump_type, level_of_detail)); base::Unretained(this), dump_type, level_of_detail));
return; return;
} }
...@@ -130,19 +130,20 @@ void ClientProcessImpl::RequestGlobalMemoryDump_NoCallback( ...@@ -130,19 +130,20 @@ void ClientProcessImpl::RequestGlobalMemoryDump_NoCallback(
void ClientProcessImpl::EnableHeapProfiling( void ClientProcessImpl::EnableHeapProfiling(
base::trace_event::HeapProfilingMode mode, base::trace_event::HeapProfilingMode mode,
const EnableHeapProfilingCallback& callback) { EnableHeapProfilingCallback callback) {
callback.Run(base::trace_event::MemoryDumpManager::GetInstance()-> std::move(callback).Run(
EnableHeapProfiling(mode)); base::trace_event::MemoryDumpManager::GetInstance()->EnableHeapProfiling(
mode));
} }
void ClientProcessImpl::RequestOSMemoryDump( void ClientProcessImpl::RequestOSMemoryDump(
mojom::MemoryMapOption mmap_option, mojom::MemoryMapOption mmap_option,
const std::vector<base::ProcessId>& pids, const std::vector<base::ProcessId>& pids,
const RequestOSMemoryDumpCallback& callback) { RequestOSMemoryDumpCallback callback) {
OSMemoryDumpArgs args; OSMemoryDumpArgs args;
args.mmap_option = mmap_option; args.mmap_option = mmap_option;
args.pids = pids; args.pids = pids;
args.callback = callback; args.callback = std::move(callback);
#if defined(OS_MACOSX) #if defined(OS_MACOSX)
// If the most recent chrome memory dump hasn't finished, wait for that to // If the most recent chrome memory dump hasn't finished, wait for that to
...@@ -174,7 +175,7 @@ void ClientProcessImpl::PerformOSMemoryDump(OSMemoryDumpArgs args) { ...@@ -174,7 +175,7 @@ void ClientProcessImpl::PerformOSMemoryDump(OSMemoryDumpArgs args) {
results[pid] = std::move(result); results[pid] = std::move(result);
global_success = global_success && success; global_success = global_success && success;
} }
args.callback.Run(global_success, std::move(results)); std::move(args.callback).Run(global_success, std::move(results));
} }
ClientProcessImpl::Config::Config(service_manager::Connector* connector, ClientProcessImpl::Config::Config(service_manager::Connector* connector,
...@@ -187,7 +188,7 @@ ClientProcessImpl::Config::Config(service_manager::Connector* connector, ...@@ -187,7 +188,7 @@ ClientProcessImpl::Config::Config(service_manager::Connector* connector,
ClientProcessImpl::Config::~Config() {} ClientProcessImpl::Config::~Config() {}
ClientProcessImpl::OSMemoryDumpArgs::OSMemoryDumpArgs() = default; ClientProcessImpl::OSMemoryDumpArgs::OSMemoryDumpArgs() = default;
ClientProcessImpl::OSMemoryDumpArgs::OSMemoryDumpArgs(const OSMemoryDumpArgs&) = ClientProcessImpl::OSMemoryDumpArgs::OSMemoryDumpArgs(OSMemoryDumpArgs&&) =
default; default;
ClientProcessImpl::OSMemoryDumpArgs::~OSMemoryDumpArgs() = default; ClientProcessImpl::OSMemoryDumpArgs::~OSMemoryDumpArgs() = default;
......
...@@ -63,13 +63,12 @@ class SERVICES_RESOURCE_COORDINATOR_PUBLIC_CPP_EXPORT ClientProcessImpl ...@@ -63,13 +63,12 @@ class SERVICES_RESOURCE_COORDINATOR_PUBLIC_CPP_EXPORT ClientProcessImpl
// mojom::ClientProcess implementation. The Coordinator calls this. // mojom::ClientProcess implementation. The Coordinator calls this.
void RequestChromeMemoryDump( void RequestChromeMemoryDump(
const base::trace_event::MemoryDumpRequestArgs& args, const base::trace_event::MemoryDumpRequestArgs& args,
const RequestChromeMemoryDumpCallback& callback) override; RequestChromeMemoryDumpCallback callback) override;
// mojom::ClientProcess implementation. // mojom::ClientProcess implementation.
// TODO(ssid): Use for GPU process. // TODO(ssid): Use for GPU process.
void EnableHeapProfiling( void EnableHeapProfiling(base::trace_event::HeapProfilingMode mode,
base::trace_event::HeapProfilingMode mode, EnableHeapProfilingCallback callback) override;
const EnableHeapProfilingCallback& callback) override;
// Callback passed to base::MemoryDumpManager::CreateProcessDump(). // Callback passed to base::MemoryDumpManager::CreateProcessDump().
void OnChromeMemoryDumpDone( void OnChromeMemoryDumpDone(
...@@ -78,14 +77,13 @@ class SERVICES_RESOURCE_COORDINATOR_PUBLIC_CPP_EXPORT ClientProcessImpl ...@@ -78,14 +77,13 @@ class SERVICES_RESOURCE_COORDINATOR_PUBLIC_CPP_EXPORT ClientProcessImpl
std::unique_ptr<base::trace_event::ProcessMemoryDump>); std::unique_ptr<base::trace_event::ProcessMemoryDump>);
// mojom::ClientProcess implementation. The Coordinator calls this. // mojom::ClientProcess implementation. The Coordinator calls this.
void RequestOSMemoryDump( void RequestOSMemoryDump(mojom::MemoryMapOption mmap_option,
mojom::MemoryMapOption mmap_option, const std::vector<base::ProcessId>& ids,
const std::vector<base::ProcessId>& ids, RequestOSMemoryDumpCallback callback) override;
const RequestOSMemoryDumpCallback& callback) override;
struct OSMemoryDumpArgs { struct OSMemoryDumpArgs {
OSMemoryDumpArgs(); OSMemoryDumpArgs();
OSMemoryDumpArgs(const OSMemoryDumpArgs&); OSMemoryDumpArgs(OSMemoryDumpArgs&&);
~OSMemoryDumpArgs(); ~OSMemoryDumpArgs();
mojom::MemoryMapOption mmap_option; mojom::MemoryMapOption mmap_option;
std::vector<base::ProcessId> pids; std::vector<base::ProcessId> pids;
......
...@@ -97,9 +97,9 @@ MemoryInstrumentation::GetCoordinatorBindingForCurrentThread() { ...@@ -97,9 +97,9 @@ MemoryInstrumentation::GetCoordinatorBindingForCurrentThread() {
// invoking methods on the |coordinator| proxy objects. // invoking methods on the |coordinator| proxy objects.
connector_task_runner_->PostTask( connector_task_runner_->PostTask(
FROM_HERE, FROM_HERE,
base::Bind( base::BindOnce(
&MemoryInstrumentation::BindCoordinatorRequestOnConnectorThread, &MemoryInstrumentation::BindCoordinatorRequestOnConnectorThread,
base::Unretained(this), base::Passed(std::move(coordinator_req)))); base::Unretained(this), std::move(coordinator_req)));
} }
DCHECK(*coordinator); DCHECK(*coordinator);
return *coordinator; return *coordinator;
......
...@@ -121,16 +121,16 @@ class MockCoordinator : public Coordinator, public mojom::Coordinator { ...@@ -121,16 +121,16 @@ class MockCoordinator : public Coordinator, public mojom::Coordinator {
MemoryDumpType dump_type, MemoryDumpType dump_type,
MemoryDumpLevelOfDetail level_of_detail, MemoryDumpLevelOfDetail level_of_detail,
const std::vector<std::string>& allocator_dump_names, const std::vector<std::string>& allocator_dump_names,
const RequestGlobalMemoryDumpCallback&) override; RequestGlobalMemoryDumpCallback) override;
void RequestGlobalMemoryDumpForPid( void RequestGlobalMemoryDumpForPid(
base::ProcessId pid, base::ProcessId pid,
const RequestGlobalMemoryDumpForPidCallback&) override {} RequestGlobalMemoryDumpForPidCallback) override {}
void RequestGlobalMemoryDumpAndAppendToTrace( void RequestGlobalMemoryDumpAndAppendToTrace(
MemoryDumpType dump_type, MemoryDumpType dump_type,
MemoryDumpLevelOfDetail level_of_detail, MemoryDumpLevelOfDetail level_of_detail,
const RequestGlobalMemoryDumpAndAppendToTraceCallback&) override; RequestGlobalMemoryDumpAndAppendToTraceCallback) override;
private: private:
mojo::BindingSet<mojom::Coordinator> bindings_; mojo::BindingSet<mojom::Coordinator> bindings_;
...@@ -173,20 +173,21 @@ class MemoryTracingIntegrationTest : public testing::Test { ...@@ -173,20 +173,21 @@ class MemoryTracingIntegrationTest : public testing::Test {
bool success = false; bool success = false;
uint64_t req_guid = ++guid_counter_; uint64_t req_guid = ++guid_counter_;
MemoryDumpRequestArgs request_args{req_guid, dump_type, level_of_detail}; MemoryDumpRequestArgs request_args{req_guid, dump_type, level_of_detail};
ClientProcessImpl::RequestChromeMemoryDumpCallback callback = base::Bind( ClientProcessImpl::RequestChromeMemoryDumpCallback callback =
[](bool* curried_success, base::Closure curried_quit_closure, base::BindOnce(
std::unique_ptr<base::trace_event::ProcessMemoryDump>* [](bool* curried_success, base::OnceClosure curried_quit_closure,
curried_result, std::unique_ptr<base::trace_event::ProcessMemoryDump>*
uint64_t curried_expected_guid, bool success, uint64_t dump_guid, curried_result,
std::unique_ptr<base::trace_event::ProcessMemoryDump> result) { uint64_t curried_expected_guid, bool success, uint64_t dump_guid,
EXPECT_EQ(curried_expected_guid, dump_guid); std::unique_ptr<base::trace_event::ProcessMemoryDump> result) {
*curried_success = success; EXPECT_EQ(curried_expected_guid, dump_guid);
if (curried_result) *curried_success = success;
*curried_result = std::move(result); if (curried_result)
curried_quit_closure.Run(); *curried_result = std::move(result);
}, std::move(curried_quit_closure).Run();
&success, run_loop.QuitClosure(), result, req_guid); },
client_process_->RequestChromeMemoryDump(request_args, callback); &success, run_loop.QuitClosure(), result, req_guid);
client_process_->RequestChromeMemoryDump(request_args, std::move(callback));
run_loop.Run(); run_loop.Run();
return success; return success;
} }
...@@ -195,10 +196,12 @@ class MemoryTracingIntegrationTest : public testing::Test { ...@@ -195,10 +196,12 @@ class MemoryTracingIntegrationTest : public testing::Test {
MemoryDumpLevelOfDetail level_of_detail) { MemoryDumpLevelOfDetail level_of_detail) {
uint64_t req_guid = ++guid_counter_; uint64_t req_guid = ++guid_counter_;
MemoryDumpRequestArgs request_args{req_guid, dump_type, level_of_detail}; MemoryDumpRequestArgs request_args{req_guid, dump_type, level_of_detail};
ClientProcessImpl::RequestChromeMemoryDumpCallback callback = base::Bind( ClientProcessImpl::RequestChromeMemoryDumpCallback callback =
[](bool success, uint64_t dump_guid, base::BindOnce(
std::unique_ptr<base::trace_event::ProcessMemoryDump> result) {}); [](bool success, uint64_t dump_guid,
client_process_->RequestChromeMemoryDump(request_args, callback); std::unique_ptr<base::trace_event::ProcessMemoryDump> result) {
});
client_process_->RequestChromeMemoryDump(request_args, std::move(callback));
} }
protected: protected:
...@@ -249,17 +252,17 @@ void MockCoordinator::RequestGlobalMemoryDump( ...@@ -249,17 +252,17 @@ void MockCoordinator::RequestGlobalMemoryDump(
MemoryDumpType dump_type, MemoryDumpType dump_type,
MemoryDumpLevelOfDetail level_of_detail, MemoryDumpLevelOfDetail level_of_detail,
const std::vector<std::string>& allocator_dump_names, const std::vector<std::string>& allocator_dump_names,
const RequestGlobalMemoryDumpCallback& callback) { RequestGlobalMemoryDumpCallback callback) {
client_->RequestChromeDump(dump_type, level_of_detail); client_->RequestChromeDump(dump_type, level_of_detail);
callback.Run(true, mojom::GlobalMemoryDumpPtr()); std::move(callback).Run(true, mojom::GlobalMemoryDumpPtr());
} }
void MockCoordinator::RequestGlobalMemoryDumpAndAppendToTrace( void MockCoordinator::RequestGlobalMemoryDumpAndAppendToTrace(
MemoryDumpType dump_type, MemoryDumpType dump_type,
MemoryDumpLevelOfDetail level_of_detail, MemoryDumpLevelOfDetail level_of_detail,
const RequestGlobalMemoryDumpAndAppendToTraceCallback& callback) { RequestGlobalMemoryDumpAndAppendToTraceCallback callback) {
client_->RequestChromeDump(dump_type, level_of_detail); client_->RequestChromeDump(dump_type, level_of_detail);
callback.Run(1, true); std::move(callback).Run(1, true);
} }
// Checks that is the ClientProcessImpl is initialized after tracing already // Checks that is the ClientProcessImpl is initialized after tracing already
...@@ -526,11 +529,11 @@ TEST_F(MemoryTracingIntegrationTest, GenerationChangeDoesntReenterMDM) { ...@@ -526,11 +529,11 @@ TEST_F(MemoryTracingIntegrationTest, GenerationChangeDoesntReenterMDM) {
base::RunLoop run_loop; base::RunLoop run_loop;
thread->PostTask( thread->PostTask(
FROM_HERE, FROM_HERE,
Bind( base::BindOnce(
[](scoped_refptr<base::SequencedTaskRunner> main_task_runner, [](scoped_refptr<base::SequencedTaskRunner> main_task_runner,
base::Closure quit_closure) { base::OnceClosure quit_closure) {
TRACE_EVENT0(MemoryDumpManager::kTraceCategory, "foo"); TRACE_EVENT0(MemoryDumpManager::kTraceCategory, "foo");
main_task_runner->PostTask(FROM_HERE, quit_closure); main_task_runner->PostTask(FROM_HERE, std::move(quit_closure));
}, },
base::SequencedTaskRunnerHandle::Get(), run_loop.QuitClosure())); base::SequencedTaskRunnerHandle::Get(), run_loop.QuitClosure()));
run_loop.Run(); run_loop.Run();
......
...@@ -57,8 +57,8 @@ void PageResourceCoordinator::AddFrame(const FrameResourceCoordinator& frame) { ...@@ -57,8 +57,8 @@ void PageResourceCoordinator::AddFrame(const FrameResourceCoordinator& frame) {
return; return;
// We could keep the ID around ourselves, but this hop ensures that the child // We could keep the ID around ourselves, but this hop ensures that the child
// has been created on the service-side. // has been created on the service-side.
frame.service()->GetID(base::Bind(&PageResourceCoordinator::AddFrameByID, frame.service()->GetID(base::BindOnce(&PageResourceCoordinator::AddFrameByID,
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
} }
void PageResourceCoordinator::RemoveFrame( void PageResourceCoordinator::RemoveFrame(
...@@ -66,8 +66,9 @@ void PageResourceCoordinator::RemoveFrame( ...@@ -66,8 +66,9 @@ void PageResourceCoordinator::RemoveFrame(
DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); DCHECK_CALLED_ON_VALID_THREAD(thread_checker_);
if (!service_) if (!service_)
return; return;
frame.service()->GetID(base::Bind(&PageResourceCoordinator::RemoveFrameByID, frame.service()->GetID(
weak_ptr_factory_.GetWeakPtr())); base::BindOnce(&PageResourceCoordinator::RemoveFrameByID,
weak_ptr_factory_.GetWeakPtr()));
} }
void PageResourceCoordinator::ConnectToService( void PageResourceCoordinator::ConnectToService(
......
...@@ -40,8 +40,9 @@ void ProcessResourceCoordinator::AddFrame( ...@@ -40,8 +40,9 @@ void ProcessResourceCoordinator::AddFrame(
return; return;
// We could keep the ID around ourselves, but this hop ensures that the child // We could keep the ID around ourselves, but this hop ensures that the child
// has been created on the service-side. // has been created on the service-side.
frame.service()->GetID(base::Bind(&ProcessResourceCoordinator::AddFrameByID, frame.service()->GetID(
weak_ptr_factory_.GetWeakPtr())); base::BindOnce(&ProcessResourceCoordinator::AddFrameByID,
weak_ptr_factory_.GetWeakPtr()));
} }
void ProcessResourceCoordinator::RemoveFrame( void ProcessResourceCoordinator::RemoveFrame(
...@@ -50,8 +51,8 @@ void ProcessResourceCoordinator::RemoveFrame( ...@@ -50,8 +51,8 @@ void ProcessResourceCoordinator::RemoveFrame(
if (!service_) if (!service_)
return; return;
frame.service()->GetID( frame.service()->GetID(
base::Bind(&ProcessResourceCoordinator::RemoveFrameByID, base::BindOnce(&ProcessResourceCoordinator::RemoveFrameByID,
weak_ptr_factory_.GetWeakPtr())); weak_ptr_factory_.GetWeakPtr()));
} }
void ProcessResourceCoordinator::ConnectToService( void ProcessResourceCoordinator::ConnectToService(
......
...@@ -29,7 +29,4 @@ mojom_component("mojom") { ...@@ -29,7 +29,4 @@ mojom_component("mojom") {
if (is_linux || is_android) { if (is_linux || is_android) {
enabled_features += [ "private_swap_info" ] enabled_features += [ "private_swap_info" ]
} }
# TODO(crbug.com/714018): Convert the implementation to use OnceCallback.
use_once_callback = false
} }
...@@ -47,8 +47,8 @@ TEST_F(ResourceCoordinatorTest, ResourceCoordinatorInstantiate) { ...@@ -47,8 +47,8 @@ TEST_F(ResourceCoordinatorTest, ResourceCoordinatorInstantiate) {
provider->CreatePageCoordinationUnit(mojo::MakeRequest(&coordination_unit), provider->CreatePageCoordinationUnit(mojo::MakeRequest(&coordination_unit),
new_id); new_id);
coordination_unit->GetID(base::Bind(&ResourceCoordinatorTest::GetIDCallback, coordination_unit->GetID(base::BindOnce(
base::Unretained(this))); &ResourceCoordinatorTest::GetIDCallback, base::Unretained(this)));
base::RunLoop loop; base::RunLoop loop;
SetRunLoopToQuit(&loop); SetRunLoopToQuit(&loop);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment