• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2015 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "base/test/metrics/user_action_tester.h"
6 
7 #include "base/functional/bind.h"
8 #include "base/functional/callback_helpers.h"
9 #include "base/test/test_simple_task_runner.h"
10 
11 namespace base {
12 
UserActionTester()13 UserActionTester::UserActionTester()
14     : task_runner_(new base::TestSimpleTaskRunner),
15       action_callback_(base::BindRepeating(&UserActionTester::OnUserAction,
16                                            base::Unretained(this))) {
17   base::SetRecordActionTaskRunner(task_runner_);
18   base::AddActionCallback(action_callback_);
19 }
20 
~UserActionTester()21 UserActionTester::~UserActionTester() {
22   base::RemoveActionCallback(action_callback_);
23 }
24 
GetActionCount(base::StringPiece user_action) const25 int UserActionTester::GetActionCount(base::StringPiece user_action) const {
26   return times_map_.count(user_action);
27 }
28 
GetActionTimes(base::StringPiece user_action) const29 std::vector<TimeTicks> UserActionTester::GetActionTimes(
30     base::StringPiece user_action) const {
31   std::vector<TimeTicks> result;
32   auto range = times_map_.equal_range(user_action);
33   for (auto it = range.first; it != range.second; it++) {
34     result.push_back(it->second);
35   }
36   return result;
37 }
38 
ResetCounts()39 void UserActionTester::ResetCounts() {
40   times_map_.clear();
41 }
42 
OnUserAction(const std::string & user_action,TimeTicks action_time)43 void UserActionTester::OnUserAction(const std::string& user_action,
44                                     TimeTicks action_time) {
45   times_map_.insert({user_action, action_time});
46 }
47 
48 }  // namespace base
49