// Copyright 2014 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 UI_BASE_ACCELERATORS_ACCELERATOR_HISTORY_H_
#define UI_BASE_ACCELERATORS_ACCELERATOR_HISTORY_H_

#include "base/memory/singleton.h"
#include "ui/base/accelerators/accelerator.h"
#include "ui/base/ui_base_export.h"
#include "ui/events/event.h"
#include "ui/events/event_handler.h"

namespace ui {

// Keeps track of the system-wide current and the most recent previous
// key accelerators.
class UI_BASE_EXPORT AcceleratorHistory {
 public:
  AcceleratorHistory();
  ~AcceleratorHistory();

  // Returns the most recent recorded accelerator.
  const Accelerator& current_accelerator() const {
    return current_accelerator_;
  }

  // Returns the most recent previously recorded key accelerator that is
  // different than the current. Non-synthesized mouse events will be stored
  // in the histroy as an empty accelerator.
  const Accelerator& previous_accelerator() const {
    return previous_accelerator_;
  }

  // Stores the given |accelerator| only if it's different than the currently
  // stored one.
  void StoreCurrentAccelerator(const Accelerator& accelerator);

 private:
  Accelerator current_accelerator_;
  Accelerator previous_accelerator_;

  DISALLOW_COPY_AND_ASSIGN(AcceleratorHistory);
};

}; // namespace ui

#endif  // UI_BASE_ACCELERATORS_ACCELERATOR_HISTORY_H_
