1// Copyright 2014 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
5#include "ash/ime/input_method_menu_manager.h"
6
7#include "base/logging.h"
8#include "base/memory/singleton.h"
9
10namespace ash {
11namespace ime {
12
13InputMethodMenuManager::InputMethodMenuManager()
14    : menu_list_(), observers_() {}
15
16InputMethodMenuManager::~InputMethodMenuManager() {}
17
18void InputMethodMenuManager::AddObserver(
19    InputMethodMenuManager::Observer* observer) {
20  observers_.AddObserver(observer);
21}
22
23void InputMethodMenuManager::RemoveObserver(
24    InputMethodMenuManager::Observer* observer) {
25  observers_.RemoveObserver(observer);
26}
27
28InputMethodMenuItemList
29InputMethodMenuManager::GetCurrentInputMethodMenuItemList() const {
30  return menu_list_;
31}
32
33void InputMethodMenuManager::SetCurrentInputMethodMenuItemList(
34    const InputMethodMenuItemList& menu_list) {
35  menu_list_ = menu_list;
36  FOR_EACH_OBSERVER(InputMethodMenuManager::Observer,
37                    observers_,
38                    InputMethodMenuItemChanged(this));
39}
40
41bool InputMethodMenuManager::HasInputMethodMenuItemForKey(
42    const std::string& key) const {
43  for (size_t i = 0; i < menu_list_.size(); ++i) {
44    if (menu_list_[i].key == key) {
45      return true;
46    }
47  }
48  return false;
49}
50
51// static
52InputMethodMenuManager* InputMethodMenuManager::GetInstance() {
53  return Singleton<InputMethodMenuManager>::get();
54}
55
56}  // namespace ime
57}  // namespace ash
58