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 10d689ee47e614c6b18480264d6a43224fe76774..52820a6ad885d6f5ec13eaa9f0c7aa248561de26 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,9 +81,12 @@ |
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, |
@@ -93,7 +96,7 @@ |
} |
void ArcProcessTaskProvider::OnUpdateProcessList( |
- mojo::Array<arc::RunningAppProcessInfoPtr> processes) { |
+ const std::vector<arc::RunningAppProcessInfo>& processes) { |
TRACE_EVENT0("browser", "ArcProcessTaskProvider::OnUpdateProcessList"); |
// NB: |processes| can be already stale here because it is sent via IPC, and |
@@ -104,12 +107,11 @@ |
std::set<base::ProcessId> removed_nspids; |
for (const auto& entry : nspid_to_task_) |
removed_nspids.insert(entry.first); |
- 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); |
+ for (const arc::RunningAppProcessInfo& process : processes) { |
+ 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. |
@@ -130,15 +132,7 @@ |
} |
void ArcProcessTaskProvider::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())); |
+ arc::ArcBridgeService::Get()->RequestProcessList(); |
} |
void ArcProcessTaskProvider::RemoveTasks( |
@@ -166,6 +160,7 @@ |
} |
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 |
@@ -178,6 +173,7 @@ |
} |
void ArcProcessTaskProvider::StopUpdating() { |
+ arc::ArcBridgeService::Get()->RemoveProcessObserver(this); |
timer_.Stop(); |
nspid_to_task_.clear(); |
} |