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