| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "components/arc/metrics/arc_metrics_service.h" | 5 #include "components/arc/metrics/arc_metrics_service.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "base/metrics/histogram_macros.h" | 8 #include "base/metrics/histogram_macros.h" |
| 9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 10 | 10 |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 this, | 42 this, |
| 43 &ArcMetricsService::RequestProcessList); | 43 &ArcMetricsService::RequestProcessList); |
| 44 } | 44 } |
| 45 | 45 |
| 46 void ArcMetricsService::OnProcessInstanceClosed() { | 46 void ArcMetricsService::OnProcessInstanceClosed() { |
| 47 VLOG(2) << "Stop updating process list."; | 47 VLOG(2) << "Stop updating process list."; |
| 48 timer_.Stop(); | 48 timer_.Stop(); |
| 49 } | 49 } |
| 50 | 50 |
| 51 void ArcMetricsService::RequestProcessList() { | 51 void ArcMetricsService::RequestProcessList() { |
| 52 ProcessInstance* process_instance = | 52 mojom::ProcessInstance* process_instance = |
| 53 arc_bridge_service()->process_instance(); | 53 arc_bridge_service()->process_instance(); |
| 54 if (!process_instance) { | 54 if (!process_instance) { |
| 55 LOG(ERROR) << "No process instance found before RequestProcessList"; | 55 LOG(ERROR) << "No process instance found before RequestProcessList"; |
| 56 return; | 56 return; |
| 57 } | 57 } |
| 58 | 58 |
| 59 VLOG(2) << "RequestProcessList"; | 59 VLOG(2) << "RequestProcessList"; |
| 60 process_instance->RequestProcessList( | 60 process_instance->RequestProcessList( |
| 61 base::Bind(&ArcMetricsService::ParseProcessList, | 61 base::Bind(&ArcMetricsService::ParseProcessList, |
| 62 weak_ptr_factory_.GetWeakPtr())); | 62 weak_ptr_factory_.GetWeakPtr())); |
| 63 } | 63 } |
| 64 | 64 |
| 65 void ArcMetricsService::ParseProcessList( | 65 void ArcMetricsService::ParseProcessList( |
| 66 mojo::Array<arc::RunningAppProcessInfoPtr> processes) { | 66 mojo::Array<arc::mojom::RunningAppProcessInfoPtr> processes) { |
| 67 int running_app_count = 0; | 67 int running_app_count = 0; |
| 68 for (const auto& process : processes) { | 68 for (const auto& process : processes) { |
| 69 const mojo::String& process_name = process->process_name; | 69 const mojo::String& process_name = process->process_name; |
| 70 const ProcessState& process_state = process->process_state; | 70 const mojom::ProcessState& process_state = process->process_state; |
| 71 | 71 |
| 72 // Processes like the ARC launcher and intent helper are always running | 72 // Processes like the ARC launcher and intent helper are always running |
| 73 // and not counted as apps running by users. With the same reasoning, | 73 // and not counted as apps running by users. With the same reasoning, |
| 74 // GMS (Google Play Services) and its related processes are skipped as | 74 // GMS (Google Play Services) and its related processes are skipped as |
| 75 // well. The process_state check below filters out system processes, | 75 // well. The process_state check below filters out system processes, |
| 76 // services, apps that are cached because they've run before. | 76 // services, apps that are cached because they've run before. |
| 77 if (base::StartsWith(process_name.get(), kArcProcessNamePrefix, | 77 if (base::StartsWith(process_name.get(), kArcProcessNamePrefix, |
| 78 base::CompareCase::SENSITIVE) || | 78 base::CompareCase::SENSITIVE) || |
| 79 base::StartsWith(process_name.get(), kGmsProcessNamePrefix, | 79 base::StartsWith(process_name.get(), kGmsProcessNamePrefix, |
| 80 base::CompareCase::SENSITIVE) || | 80 base::CompareCase::SENSITIVE) || |
| 81 process_state != ProcessState::TOP) { | 81 process_state != mojom::ProcessState::TOP) { |
| 82 VLOG(2) << "Skipped " << process_name << " " << process_state; | 82 VLOG(2) << "Skipped " << process_name << " " << process_state; |
| 83 } else { | 83 } else { |
| 84 ++running_app_count; | 84 ++running_app_count; |
| 85 } | 85 } |
| 86 } | 86 } |
| 87 | 87 |
| 88 UMA_HISTOGRAM_COUNTS_100("Arc.AppCount", running_app_count); | 88 UMA_HISTOGRAM_COUNTS_100("Arc.AppCount", running_app_count); |
| 89 } | 89 } |
| 90 | 90 |
| 91 } // namespace arc | 91 } // namespace arc |
| OLD | NEW |