15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/ime/mock_input_method.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "ui/base/ime/text_input_focus_manager.h"
8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "ui/base/ui_base_switches_util.h"
9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ui {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockInputMethod::MockInputMethod(internal::InputMethodDelegate* delegate)
131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)    : text_input_client_(NULL) {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MockInputMethod::~MockInputMethod() {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockInputMethod::SetDelegate(internal::InputMethodDelegate* delegate) {
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void MockInputMethod::SetFocusedTextInputClient(TextInputClient* client) {
23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  if (switches::IsTextInputFocusManagerEnabled())
24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    return;
25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  if (text_input_client_ == client)
27d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    return;
28d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  text_input_client_ = client;
29d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  if (client)
30d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)    OnTextInputTypeChanged(client);
31d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)}
32d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)
33d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)void MockInputMethod::DetachTextInputClient(TextInputClient* client) {
34d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  if (text_input_client_ == client) {
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    text_input_client_ = NULL;
36d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)  }
3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}
3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TextInputClient* MockInputMethod::GetTextInputClient() const {
40f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  if (switches::IsTextInputFocusManagerEnabled())
41f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    return TextInputFocusManager::GetInstance()->GetFocusedTextInputClient();
42f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return text_input_client_;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)bool MockInputMethod::DispatchKeyEvent(const ui::KeyEvent& event) {
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return false;
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockInputMethod::Init(bool focused) {
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockInputMethod::OnFocus() {
544e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  FOR_EACH_OBSERVER(InputMethodObserver, observer_list_, OnFocus());
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockInputMethod::OnBlur() {
584e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  FOR_EACH_OBSERVER(InputMethodObserver, observer_list_, OnBlur());
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
617d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)bool MockInputMethod::OnUntranslatedIMEMessage(const base::NativeEvent& event,
627d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)                                               NativeEventResult* result) {
637d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  if (result)
647d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    *result = NativeEventResult();
657d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  return false;
667d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
677d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockInputMethod::OnTextInputTypeChanged(const TextInputClient* client) {
694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  FOR_EACH_OBSERVER(InputMethodObserver,
704e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                    observer_list_,
714e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                    OnTextInputTypeChanged(client));
724e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  FOR_EACH_OBSERVER(InputMethodObserver,
734e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                    observer_list_,
744e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                    OnTextInputStateChanged(client));
752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockInputMethod::OnCaretBoundsChanged(const TextInputClient* client) {
784e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  FOR_EACH_OBSERVER(InputMethodObserver,
794e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                    observer_list_,
804e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)                    OnCaretBoundsChanged(client));
812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void MockInputMethod::CancelComposition(const TextInputClient* client) {
842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
867d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)void MockInputMethod::OnInputLocaleChanged() {
877d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}
887d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)std::string MockInputMethod::GetInputLocale() {
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return "";
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool MockInputMethod::IsActive() {
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
97424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)TextInputType MockInputMethod::GetTextInputType() const {
98424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  return TEXT_INPUT_TYPE_NONE;
99424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)}
100424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
101424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)TextInputMode MockInputMethod::GetTextInputMode() const {
102424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  return TEXT_INPUT_MODE_DEFAULT;
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool MockInputMethod::CanComposeInline() const {
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
109eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool MockInputMethod::IsCandidatePopupOpen() const {
110eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return false;
111eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
1135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)void MockInputMethod::ShowImeIfNeeded() {
1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  FOR_EACH_OBSERVER(InputMethodObserver, observer_list_, OnShowImeIfNeeded());
1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void MockInputMethod::AddObserver(InputMethodObserver* observer) {
1184e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  observer_list_.AddObserver(observer);
1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
121c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void MockInputMethod::RemoveObserver(InputMethodObserver* observer) {
1224e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)  observer_list_.RemoveObserver(observer);
1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace ui
126