Chromium Code Reviews| Index: ash/metrics/task_switch_metrics_recorder.cc |
| diff --git a/ash/metrics/task_switch_metrics_recorder.cc b/ash/metrics/task_switch_metrics_recorder.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9f6a7dca412297feb4d5a6ab341edb54678a890e |
| --- /dev/null |
| +++ b/ash/metrics/task_switch_metrics_recorder.cc |
| @@ -0,0 +1,62 @@ |
| +// Copyright 2015 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/metrics/task_switch_metrics_recorder.h" |
| + |
| +#include "ash/metrics/task_switch_time_tracker.h" |
| + |
| +namespace ash { |
| + |
| +namespace { |
| + |
| +const char kShelf_histogram[] = "Ash.Shelf.TimeBetweenNavigateToTaskSwitches"; |
| + |
| +// Returns the histogram name for the given |task_switch_source|. |
| +const char* GetHistogramName( |
| + TaskSwitchMetricsRecorder::TaskSwitchSource task_switch_source) { |
| + switch (task_switch_source) { |
| + case TaskSwitchMetricsRecorder::kShelf: |
| + return kShelf_histogram; |
| + } |
|
oshima
2015/05/13 22:16:52
NOTREACHED()
bruthig
2015/05/13 23:41:09
Done.
|
| +} |
| + |
| +} // namespace |
| + |
| +TaskSwitchMetricsRecorder::TaskSwitchMetricsRecorder() { |
| +} |
| + |
| +TaskSwitchMetricsRecorder::~TaskSwitchMetricsRecorder() { |
| +} |
| + |
| +void TaskSwitchMetricsRecorder::OnTaskSwitch( |
| + TaskSwitchSource task_switch_source) { |
| + TaskSwitchTimeTracker* task_switch_time_tracker = |
| + FindTaskSwitchTimeTracker(task_switch_source); |
| + if (!task_switch_time_tracker) |
| + AddTaskSwitchTimeTracker(task_switch_source); |
| + |
| + task_switch_time_tracker = FindTaskSwitchTimeTracker(task_switch_source); |
| + CHECK(task_switch_time_tracker); |
| + |
| + task_switch_time_tracker->OnTaskSwitch(); |
| +} |
| + |
| +TaskSwitchTimeTracker* TaskSwitchMetricsRecorder::FindTaskSwitchTimeTracker( |
| + TaskSwitchSource task_switch_source) { |
| + return histogram_map_.get(task_switch_source); |
| +} |
| + |
| +void TaskSwitchMetricsRecorder::AddTaskSwitchTimeTracker( |
| + TaskSwitchSource task_switch_source) { |
| + CHECK(histogram_map_.find(task_switch_source) == histogram_map_.end()); |
| + |
| + const char* histogram_name = GetHistogramName(task_switch_source); |
| + CHECK(histogram_name); |
|
oshima
2015/05/13 22:16:52
If you assume wrong source value results in nullpt
bruthig
2015/05/13 23:41:09
Done.
|
| + |
| + histogram_map_.add(task_switch_source, |
| + scoped_ptr<TaskSwitchTimeTracker>( |
| + new TaskSwitchTimeTracker(histogram_name))); |
| +} |
| + |
| +} // namespace ash |