| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | // 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.#ifndef BASE_TEST_METRICS_USER_ACTION_TESTER_H_#define BASE_TEST_METRICS_USER_ACTION_TESTER_H_#include <map>#include <string>#include <vector>#include "base/macros.h"#include "base/memory/scoped_refptr.h"#include "base/metrics/user_metrics.h"#include "base/single_thread_task_runner.h"#include "base/time/time.h"namespace base {class TimeTicks;// This class observes and collects user action notifications that are sent// by the tests, so that they can be examined afterwards for correctness.// Note: This class is NOT thread-safe.class UserActionTester { public:  UserActionTester();  ~UserActionTester();  // Returns the number of times the given |user_action| occurred.  int GetActionCount(const std::string& user_action) const;  // Returns the time values at which the given |user_action| has occurred.  // The order of returned values is unspecified.  std::vector<TimeTicks> GetActionTimes(const std::string& user_action) const;  // Resets all user action counts to 0.  void ResetCounts(); private:  typedef std::multimap<std::string, TimeTicks> UserActionTimesMap;  // The callback that is notified when a user actions occurs.  void OnUserAction(const std::string& user_action, TimeTicks action_time);  // A map that tracks the times when a user action has occurred.  UserActionTimesMap times_map_;  // A test task runner used by user metrics.  scoped_refptr<base::SingleThreadTaskRunner> task_runner_;  // The callback that is added to the global action callback list.  base::ActionCallback action_callback_;  DISALLOW_COPY_AND_ASSIGN(UserActionTester);};}  // namespace base#endif  // BASE_TEST_METRICS_USER_ACTION_TESTER_H_
 |