Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1214)

Unified Diff: components/arc/metrics/arc_metrics_service.cc

Issue 2906503003: ARC: Add BootType parameter to ReportBootProgress() in metrics.mojom (Closed)
Patch Set: Address more comments Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « components/arc/metrics/arc_metrics_service.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/arc/metrics/arc_metrics_service.cc
diff --git a/components/arc/metrics/arc_metrics_service.cc b/components/arc/metrics/arc_metrics_service.cc
index 2f391c598382e16dd158f43f3196667d7627bd53..52867ee63f3e3bd55f3d77efafa4a3b773edcff0 100644
--- a/components/arc/metrics/arc_metrics_service.cc
+++ b/components/arc/metrics/arc_metrics_service.cc
@@ -8,23 +8,43 @@
#include <utility>
#include "base/logging.h"
+#include "base/metrics/histogram_functions.h"
#include "base/metrics/histogram_macros.h"
#include "base/strings/string_util.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/session_manager_client.h"
#include "components/arc/arc_bridge_service.h"
+namespace arc {
+
namespace {
-const int kRequestProcessListPeriodInMinutes = 5;
-const char kArcProcessNamePrefix[] = "org.chromium.arc.";
-const char kGmsProcessNamePrefix[] = "com.google.android.gms";
-const char kBootProgressEnableScreen[] = "boot_progress_enable_screen";
+constexpr base::TimeDelta kUmaMinTime = base::TimeDelta::FromMilliseconds(1);
+constexpr int kUmaNumBuckets = 50;
+
+constexpr base::TimeDelta kRequestProcessListPeriod =
+ base::TimeDelta::FromMinutes(5);
+constexpr char kArcProcessNamePrefix[] = "org.chromium.arc.";
+constexpr char kGmsProcessNamePrefix[] = "com.google.android.gms";
+constexpr char kBootProgressEnableScreen[] = "boot_progress_enable_screen";
+
+std::string BootTypeToString(mojom::BootType boot_type) {
+ switch (boot_type) {
+ case mojom::BootType::UNKNOWN:
+ return ""; // for backward compatibility.
+ case mojom::BootType::FIRST_BOOT:
+ return ".FirstBoot";
+ case mojom::BootType::FIRST_BOOT_AFTER_UPDATE:
+ return ".FirstBootAfterUpdate";
+ case mojom::BootType::REGULAR_BOOT:
+ return ".RegularBoot";
+ }
+ NOTREACHED();
+ return "";
+}
} // namespace
-namespace arc {
-
ArcMetricsService::ArcMetricsService(ArcBridgeService* bridge_service)
: ArcService(bridge_service),
binding_(this),
@@ -64,9 +84,8 @@ void ArcMetricsService::OnInstanceClosed() {
void ArcMetricsService::OnProcessInstanceReady() {
VLOG(2) << "Start updating process list.";
- timer_.Start(FROM_HERE,
- base::TimeDelta::FromMinutes(kRequestProcessListPeriodInMinutes),
- this, &ArcMetricsService::RequestProcessList);
+ timer_.Start(FROM_HERE, kRequestProcessListPeriod, this,
+ &ArcMetricsService::RequestProcessList);
}
void ArcMetricsService::OnProcessInstanceClosed() {
@@ -136,26 +155,30 @@ void ArcMetricsService::OnArcStartTimeRetrieved(
}
void ArcMetricsService::ReportBootProgress(
- std::vector<mojom::BootProgressEventPtr> events) {
+ std::vector<mojom::BootProgressEventPtr> events,
+ mojom::BootType boot_type) {
DCHECK(CalledOnValidThread());
+ // TODO(yusukes): Return immediately with with LOG(ERROR) when |boot_type| is
+ // UNKNOWN. Once the container is updated, we'll never see the boot type.
int64_t arc_start_time_in_ms =
(arc_start_time_ - base::TimeTicks()).InMilliseconds();
+ const std::string suffix = BootTypeToString(boot_type);
+ // TODO(yusukes): Define kUmaMaxTime and always use 60s.
+ const base::TimeDelta max_time = base::TimeDelta::FromSeconds(
+ boot_type == mojom::BootType::UNKNOWN ? 30 : 60);
for (const auto& event : events) {
VLOG(2) << "Report boot progress event:" << event->event << "@"
<< event->uptimeMillis;
- std::string title = "Arc." + event->event;
- base::TimeDelta elapsed_time = base::TimeDelta::FromMilliseconds(
+ const std::string name = "Arc." + event->event + suffix;
+ const base::TimeDelta elapsed_time = base::TimeDelta::FromMilliseconds(
event->uptimeMillis - arc_start_time_in_ms);
- // Note: This leaks memory, which is expected behavior.
- base::HistogramBase* histogram = base::Histogram::FactoryTimeGet(
- title, base::TimeDelta::FromMilliseconds(1),
- base::TimeDelta::FromSeconds(30), 50,
- base::HistogramBase::kUmaTargetedHistogramFlag);
- histogram->AddTime(elapsed_time);
- if (event->event.compare(kBootProgressEnableScreen) == 0)
- UMA_HISTOGRAM_CUSTOM_TIMES("Arc.AndroidBootTime", elapsed_time,
- base::TimeDelta::FromMilliseconds(1),
- base::TimeDelta::FromSeconds(30), 50);
+ base::UmaHistogramCustomTimes(name, elapsed_time, kUmaMinTime, max_time,
+ kUmaNumBuckets);
+ if (event->event.compare(kBootProgressEnableScreen) == 0) {
+ base::UmaHistogramCustomTimes("Arc.AndroidBootTime" + suffix,
+ elapsed_time, kUmaMinTime, max_time,
+ kUmaNumBuckets);
+ }
}
}
« no previous file with comments | « components/arc/metrics/arc_metrics_service.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698