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 <string_view> 8 9 #include "base/functional/bind.h" 10 #include "base/functional/callback_helpers.h" 11 #include "base/test/test_simple_task_runner.h" 12 13 namespace base { 14 UserActionTester()15UserActionTester::UserActionTester() 16 : task_runner_(new base::TestSimpleTaskRunner), 17 action_callback_(base::BindRepeating(&UserActionTester::OnUserAction, 18 base::Unretained(this))) { 19 base::SetRecordActionTaskRunner(task_runner_); 20 base::AddActionCallback(action_callback_); 21 } 22 ~UserActionTester()23UserActionTester::~UserActionTester() { 24 base::RemoveActionCallback(action_callback_); 25 } 26 GetActionCount(std::string_view user_action) const27int UserActionTester::GetActionCount(std::string_view user_action) const { 28 return times_map_.count(user_action); 29 } 30 GetActionTimes(std::string_view user_action) const31std::vector<TimeTicks> UserActionTester::GetActionTimes( 32 std::string_view user_action) const { 33 std::vector<TimeTicks> result; 34 auto range = times_map_.equal_range(user_action); 35 for (auto it = range.first; it != range.second; it++) { 36 result.push_back(it->second); 37 } 38 return result; 39 } 40 ResetCounts()41void UserActionTester::ResetCounts() { 42 times_map_.clear(); 43 } 44 OnUserAction(const std::string & user_action,TimeTicks action_time)45void UserActionTester::OnUserAction(const std::string& user_action, 46 TimeTicks action_time) { 47 times_map_.insert({user_action, action_time}); 48 } 49 50 } // namespace base 51