// 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 "base/test/user_action_tester.h"

#include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/test/test_simple_task_runner.h"

namespace base {

UserActionTester::UserActionTester()
    : task_runner_(new base::TestSimpleTaskRunner),
      action_callback_(
          base::Bind(&UserActionTester::OnUserAction, base::Unretained(this))) {
  base::SetRecordActionTaskRunner(task_runner_);
  base::AddActionCallback(action_callback_);
}

UserActionTester::~UserActionTester() {
  base::RemoveActionCallback(action_callback_);
}

int UserActionTester::GetActionCount(const std::string& user_action) const {
  UserActionCountMap::const_iterator iter = count_map_.find(user_action);
  return iter == count_map_.end() ? 0 : iter->second;
}

void UserActionTester::ResetCounts() {
  count_map_.clear();
}

void UserActionTester::OnUserAction(const std::string& user_action) {
  ++(count_map_[user_action]);
}

}  // namespace base
