// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ui/base/ime/chromeos/ime_bridge.h" #include <map> #include "base/logging.h" #include "base/memory/singleton.h" namespace chromeos { static IMEBridge* g_ime_bridge = NULL; // An implementation of IMEBridge. class IMEBridgeImpl : public IMEBridge { public: IMEBridgeImpl() : input_context_handler_(NULL), engine_handler_(NULL), candidate_window_handler_(NULL), current_text_input_(ui::TEXT_INPUT_TYPE_NONE) { } virtual ~IMEBridgeImpl() { } // IMEBridge override. virtual IMEInputContextHandlerInterface* GetInputContextHandler() const OVERRIDE { return input_context_handler_; } // IMEBridge override. virtual void SetInputContextHandler( IMEInputContextHandlerInterface* handler) OVERRIDE { input_context_handler_ = handler; } // IMEBridge override. virtual void SetCurrentEngineHandler( IMEEngineHandlerInterface* handler) OVERRIDE { engine_handler_ = handler; } // IMEBridge override. virtual IMEEngineHandlerInterface* GetCurrentEngineHandler() const OVERRIDE { return engine_handler_; } // IMEBridge override. virtual IMECandidateWindowHandlerInterface* GetCandidateWindowHandler() const OVERRIDE { return candidate_window_handler_; } // IMEBridge override. virtual void SetCandidateWindowHandler( IMECandidateWindowHandlerInterface* handler) OVERRIDE { candidate_window_handler_ = handler; } // IMEBridge override. virtual void SetCurrentTextInputType(ui::TextInputType input_type) OVERRIDE { current_text_input_ = input_type; } // IMEBridge override. virtual ui::TextInputType GetCurrentTextInputType() const OVERRIDE { return current_text_input_; } private: IMEInputContextHandlerInterface* input_context_handler_; IMEEngineHandlerInterface* engine_handler_; IMECandidateWindowHandlerInterface* candidate_window_handler_; ui::TextInputType current_text_input_; DISALLOW_COPY_AND_ASSIGN(IMEBridgeImpl); }; /////////////////////////////////////////////////////////////////////////////// // IMEBridge IMEBridge::IMEBridge() { } IMEBridge::~IMEBridge() { } // static. void IMEBridge::Initialize() { if (!g_ime_bridge) g_ime_bridge = new IMEBridgeImpl(); } // static. void IMEBridge::Shutdown() { delete g_ime_bridge; g_ime_bridge = NULL; } // static. IMEBridge* IMEBridge::Get() { return g_ime_bridge; } } // namespace chromeos