user_action_tester.cc 1.4 KB

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