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#ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_MOCK_INPUT_METHOD_ENGINE_H_
6#define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_MOCK_INPUT_METHOD_ENGINE_H_
7
8#include <string>
9#include <vector>
10
11#include "chrome/browser/chromeos/input_method/input_method_engine_interface.h"
12#include "chromeos/ime/input_method_descriptor.h"
13
14namespace ui {
15class KeyEvent;
16}  // namespace ui
17
18namespace ash {
19namespace ime {
20struct InputMethodMenuItem;
21}  // namespace ime
22}  // namespace ash
23
24namespace chromeos {
25
26class CompositionText;
27
28namespace input_method {
29class CandidateWindow;
30struct KeyEventHandle;
31}  // namespace input_method
32
33class MockInputMethodEngine : public InputMethodEngineInterface {
34 public:
35  explicit MockInputMethodEngine();
36  virtual ~MockInputMethodEngine();
37
38  // InputMethodEngineInterface overrides.
39  virtual const std::string& GetActiveComponentId() const OVERRIDE;
40  virtual bool SetComposition(int context_id,
41                              const char* text,
42                              int selection_start,
43                              int selection_end,
44                              int cursor,
45                              const std::vector<SegmentInfo>& segments,
46                              std::string* error) OVERRIDE;
47  virtual bool ClearComposition(int context_id, std::string* error) OVERRIDE;
48  virtual bool CommitText(int context_id, const char* text,
49                          std::string* error) OVERRIDE;
50  virtual bool SendKeyEvents(int context_id,
51                             const std::vector<KeyboardEvent>& events) OVERRIDE;
52  virtual const CandidateWindowProperty&
53    GetCandidateWindowProperty() const OVERRIDE;
54  virtual void SetCandidateWindowProperty(
55      const CandidateWindowProperty& property) OVERRIDE;
56  virtual bool SetCandidateWindowVisible(bool visible,
57                                         std::string* error) OVERRIDE;
58  virtual bool SetCandidates(int context_id,
59                             const std::vector<Candidate>& candidates,
60                             std::string* error) OVERRIDE;
61  virtual bool SetCursorPosition(int context_id, int candidate_id,
62                                 std::string* error) OVERRIDE;
63  virtual bool SetMenuItems(const std::vector<MenuItem>& items) OVERRIDE;
64  virtual bool UpdateMenuItems(const std::vector<MenuItem>& items) OVERRIDE;
65  virtual bool IsActive() const OVERRIDE;
66  virtual bool DeleteSurroundingText(int context_id,
67                                     int offset,
68                                     size_t number_of_chars,
69                                     std::string* error) OVERRIDE;
70
71  // IMEEngineHandlerInterface overrides.
72  virtual void FocusIn(
73      const IMEEngineHandlerInterface::InputContext& input_context) OVERRIDE;
74  virtual void FocusOut() OVERRIDE;
75  virtual void Enable(const std::string& component_id) OVERRIDE;
76  virtual void Disable() OVERRIDE;
77  virtual void PropertyActivate(const std::string& property_name) OVERRIDE;
78  virtual void Reset() OVERRIDE;
79  virtual void ProcessKeyEvent(const ui::KeyEvent& key_event,
80                               const KeyEventDoneCallback& callback) OVERRIDE;
81  virtual void CandidateClicked(uint32 index) OVERRIDE;
82  virtual void SetSurroundingText(const std::string& text, uint32 cursor_pos,
83                                  uint32 anchor_pos) OVERRIDE;
84  virtual void HideInputView() OVERRIDE;
85
86  std::string last_activated_property() const {
87    return last_activated_property_;
88  }
89
90 private:
91  std::string active_component_id_;
92
93  // The current candidate window property.
94  CandidateWindowProperty candidate_window_property_;
95
96  std::string last_activated_property_;
97};
98
99}  // namespace chromeos
100
101#endif  // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_MOCK_INPUT_METHOD_ENGINE_H_
102