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 "ui/base/ime/chromeos/ime_bridge.h" 6 7#include <map> 8#include "base/logging.h" 9#include "base/memory/singleton.h" 10 11namespace chromeos { 12 13static IMEBridge* g_ime_bridge = NULL; 14 15// An implementation of IMEBridge. 16class IMEBridgeImpl : public IMEBridge { 17 public: 18 IMEBridgeImpl() 19 : input_context_handler_(NULL), 20 engine_handler_(NULL), 21 candidate_window_handler_(NULL), 22 current_text_input_(ui::TEXT_INPUT_TYPE_NONE) { 23 } 24 25 virtual ~IMEBridgeImpl() { 26 } 27 28 // IMEBridge override. 29 virtual IMEInputContextHandlerInterface* 30 GetInputContextHandler() const OVERRIDE { 31 return input_context_handler_; 32 } 33 34 // IMEBridge override. 35 virtual void SetInputContextHandler( 36 IMEInputContextHandlerInterface* handler) OVERRIDE { 37 input_context_handler_ = handler; 38 } 39 40 // IMEBridge override. 41 virtual void SetCurrentEngineHandler( 42 IMEEngineHandlerInterface* handler) OVERRIDE { 43 engine_handler_ = handler; 44 } 45 46 // IMEBridge override. 47 virtual IMEEngineHandlerInterface* GetCurrentEngineHandler() const OVERRIDE { 48 return engine_handler_; 49 } 50 51 // IMEBridge override. 52 virtual IMECandidateWindowHandlerInterface* GetCandidateWindowHandler() const 53 OVERRIDE { 54 return candidate_window_handler_; 55 } 56 57 // IMEBridge override. 58 virtual void SetCandidateWindowHandler( 59 IMECandidateWindowHandlerInterface* handler) OVERRIDE { 60 candidate_window_handler_ = handler; 61 } 62 63 // IMEBridge override. 64 virtual void SetCurrentTextInputType(ui::TextInputType input_type) OVERRIDE { 65 current_text_input_ = input_type; 66 } 67 68 // IMEBridge override. 69 virtual ui::TextInputType GetCurrentTextInputType() const OVERRIDE { 70 return current_text_input_; 71 } 72 73 private: 74 IMEInputContextHandlerInterface* input_context_handler_; 75 IMEEngineHandlerInterface* engine_handler_; 76 IMECandidateWindowHandlerInterface* candidate_window_handler_; 77 ui::TextInputType current_text_input_; 78 79 DISALLOW_COPY_AND_ASSIGN(IMEBridgeImpl); 80}; 81 82/////////////////////////////////////////////////////////////////////////////// 83// IMEBridge 84IMEBridge::IMEBridge() { 85} 86 87IMEBridge::~IMEBridge() { 88} 89 90// static. 91void IMEBridge::Initialize() { 92 if (!g_ime_bridge) 93 g_ime_bridge = new IMEBridgeImpl(); 94} 95 96// static. 97void IMEBridge::Shutdown() { 98 delete g_ime_bridge; 99 g_ime_bridge = NULL; 100} 101 102// static. 103IMEBridge* IMEBridge::Get() { 104 return g_ime_bridge; 105} 106 107} // namespace chromeos 108