1// Copyright (c) 2012 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#ifndef ASH_IME_CONTROL_DELEGATE_H_
6#define ASH_IME_CONTROL_DELEGATE_H_
7
8namespace ui {
9class Accelerator;
10}  // namespace ui
11
12namespace ash {
13
14// Delegate for controlling IME (input method editor).
15class ImeControlDelegate {
16 public:
17  virtual ~ImeControlDelegate() {}
18
19  // Changes the IME to what is listed next. This function do nothing if there
20  // is only one IME is enabled.
21  virtual void HandleNextIme() = 0;
22
23  // Changes the IME to previously selected one. If there is no previously
24  // selected IMEs, chooses the next listed IME. This function returns false if
25  // there is only one IME is enabled.
26  virtual bool HandlePreviousIme(const ui::Accelerator& accelerator) = 0;
27
28  // Switches to another IME depending on the |accelerator|.
29  virtual bool HandleSwitchIme(const ui::Accelerator& accelerator) = 0;
30
31  // Checks for special language anomalies and re-map the |accelerator|
32  // accordingly.
33  virtual ui::Accelerator RemapAccelerator(
34      const ui::Accelerator& accelerator) = 0;
35};
36
37}  // namespace ash
38
39#endif  // ASH_IME_CONTROL_DELEGATE_H_
40