| 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();
|
| }
|
|
|