#ifndef ASH_PUBLIC_CPP_ACCELERATOR_KEYCODE_LOOKUP_CACHE_H_
#define ASH_PUBLIC_CPP_ACCELERATOR_KEYCODE_LOOKUP_CACHE_H_
#include <map>
#include <string>
#include "ash/public/cpp/ash_public_export.h"
#include "ui/base/ime/ash/input_method_manager.h"
#include "ui/events/keycodes/keyboard_codes_posix.h"
namespace ash {
class ASH_PUBLIC_EXPORT AcceleratorKeycodeLookupCache
: public input_method::InputMethodManager::Observer {
public:
static AcceleratorKeycodeLookupCache* Get();
AcceleratorKeycodeLookupCache();
AcceleratorKeycodeLookupCache(const AcceleratorKeycodeLookupCache&) = delete;
AcceleratorKeycodeLookupCache& operator=(
const AcceleratorKeycodeLookupCache&) = delete;
~AcceleratorKeycodeLookupCache() override;
void InputMethodChanged(input_method::InputMethodManager* manager,
Profile* profile,
bool show_message) override;
absl::optional<std::u16string> Find(ui::KeyboardCode key_code);
void InsertOrAssign(ui::KeyboardCode key_code, std::u16string description);
void Clear();
private:
friend class AcceleratorKeycodeLookupCacheTest;
std::map<ui::KeyboardCode, std::u16string> key_code_to_string16_cache_;
};
}
#endif