Index: chrome/browser/task_management/providers/arc/arc_process_task_provider.cc |
diff --git a/chrome/browser/task_management/providers/arc/arc_process_task_provider.cc b/chrome/browser/task_management/providers/arc/arc_process_task_provider.cc |
index 52820a6ad885d6f5ec13eaa9f0c7aa248561de26..10d689ee47e614c6b18480264d6a43224fe76774 100644 |
--- a/chrome/browser/task_management/providers/arc/arc_process_task_provider.cc |
+++ b/chrome/browser/task_management/providers/arc/arc_process_task_provider.cc |
@@ -81,12 +81,9 @@ std::map<base::ProcessId, base::ProcessId> ComputeNspidToPidMap() { |
namespace task_management { |
-ArcProcessTaskProvider::ArcProcessTaskProvider() |
- : weak_ptr_factory_(this) { |
-} |
+ArcProcessTaskProvider::ArcProcessTaskProvider() : weak_ptr_factory_(this) {} |
-ArcProcessTaskProvider::~ArcProcessTaskProvider() { |
-} |
+ArcProcessTaskProvider::~ArcProcessTaskProvider() {} |
Task* ArcProcessTaskProvider::GetTaskOfUrlRequest(int origin_pid, |
int child_id, |
@@ -96,7 +93,7 @@ Task* ArcProcessTaskProvider::GetTaskOfUrlRequest(int origin_pid, |
} |
void ArcProcessTaskProvider::OnUpdateProcessList( |
- const std::vector<arc::RunningAppProcessInfo>& processes) { |
+ mojo::Array<arc::RunningAppProcessInfoPtr> processes) { |
TRACE_EVENT0("browser", "ArcProcessTaskProvider::OnUpdateProcessList"); |
// NB: |processes| can be already stale here because it is sent via IPC, and |
@@ -107,11 +104,12 @@ void ArcProcessTaskProvider::OnUpdateProcessList( |
std::set<base::ProcessId> removed_nspids; |
for (const auto& entry : nspid_to_task_) |
removed_nspids.insert(entry.first); |
- for (const arc::RunningAppProcessInfo& process : processes) { |
- if (nspid_to_task_.count(process.pid)) |
- removed_nspids.erase(process.pid); |
+ for (size_t i = 0; i < processes.size(); ++i) { |
+ const arc::RunningAppProcessInfoPtr& process = processes[i]; |
+ if (nspid_to_task_.count(process->pid)) |
+ removed_nspids.erase(process->pid); |
else |
- added_processes.push_back(process); |
+ added_processes.push_back(*process); |
} |
// Remove stale tasks. |
@@ -132,7 +130,15 @@ void ArcProcessTaskProvider::OnUpdateProcessList( |
} |
void ArcProcessTaskProvider::RequestProcessList() { |
- arc::ArcBridgeService::Get()->RequestProcessList(); |
+ arc::ProcessInstance* arc_process_instance = |
+ arc::ArcBridgeService::Get()->process_instance(); |
+ if (!arc_process_instance) { |
+ VLOG(2) << "ARC process instance is not ready."; |
+ return; |
+ } |
+ arc_process_instance->RequestProcessList( |
+ base::Bind(&ArcProcessTaskProvider::OnUpdateProcessList, |
+ weak_ptr_factory_.GetWeakPtr())); |
} |
void ArcProcessTaskProvider::RemoveTasks( |
@@ -160,7 +166,6 @@ void ArcProcessTaskProvider::AddTasks( |
} |
void ArcProcessTaskProvider::StartUpdating() { |
- arc::ArcBridgeService::Get()->AddProcessObserver(this); |
RequestProcessList(); |
// TODO(nya): Remove this timer once ARC starts to send us UpdateProcessList |
// message when the process list changed. As of today, ARC does not send |
@@ -173,7 +178,6 @@ void ArcProcessTaskProvider::StartUpdating() { |
} |
void ArcProcessTaskProvider::StopUpdating() { |
- arc::ArcBridgeService::Get()->RemoveProcessObserver(this); |
timer_.Stop(); |
nspid_to_task_.clear(); |
} |