// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ash/periodic_metrics_recorder.h" #include "ash/shelf/shelf_layout_manager.h" #include "ash/shelf/shelf_view.h" #include "ash/shelf/shelf_widget.h" #include "ash/shell.h" #include "base/metrics/histogram.h" namespace ash { // Time in seconds between calls to "RecordMetrics". const int kAshPeriodicMetricsTimeInSeconds = 30 * 60; PeriodicMetricsRecorder::PeriodicMetricsRecorder() { timer_.Start(FROM_HERE, base::TimeDelta::FromSeconds(kAshPeriodicMetricsTimeInSeconds), this, &PeriodicMetricsRecorder::RecordMetrics); } PeriodicMetricsRecorder::~PeriodicMetricsRecorder() { timer_.Stop(); } void PeriodicMetricsRecorder::RecordMetrics() { internal::ShelfLayoutManager* manager = internal::ShelfLayoutManager::ForLauncher(Shell::GetPrimaryRootWindow()); if (manager) { UMA_HISTOGRAM_ENUMERATION("Ash.ShelfAlignmentOverTime", manager->SelectValueForShelfAlignment( internal::SHELF_ALIGNMENT_UMA_ENUM_VALUE_BOTTOM, internal::SHELF_ALIGNMENT_UMA_ENUM_VALUE_LEFT, internal::SHELF_ALIGNMENT_UMA_ENUM_VALUE_RIGHT, -1), internal::SHELF_ALIGNMENT_UMA_ENUM_VALUE_COUNT); } } } // namespace ash