Index: ui/base/ime/input_method_tsf.cc |
diff --git a/ui/base/ime/input_method_tsf.cc b/ui/base/ime/input_method_tsf.cc |
deleted file mode 100644 |
index 5e6de052e55a0f9e38fbbd772e253e3b3aee0139..0000000000000000000000000000000000000000 |
--- a/ui/base/ime/input_method_tsf.cc |
+++ /dev/null |
@@ -1,158 +0,0 @@ |
-// Copyright (c) 2013 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/input_method_tsf.h" |
- |
-#include "ui/base/ime/text_input_client.h" |
-#include "ui/base/ime/win/tsf_bridge.h" |
-#include "ui/base/ime/win/tsf_event_router.h" |
- |
-namespace ui { |
- |
-class InputMethodTSF::TSFEventObserver : public TSFEventRouterObserver { |
- public: |
- TSFEventObserver() : is_candidate_popup_open_(false) {} |
- |
- // Returns true if we know for sure that a candidate window (or IME suggest, |
- // etc.) is open. |
- bool IsCandidatePopupOpen() const { return is_candidate_popup_open_; } |
- |
- // Overridden from TSFEventRouterObserver: |
- virtual void OnCandidateWindowCountChanged(size_t window_count) OVERRIDE { |
- is_candidate_popup_open_ = (window_count != 0); |
- } |
- |
- private: |
- // True if we know for sure that a candidate window is open. |
- bool is_candidate_popup_open_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TSFEventObserver); |
-}; |
- |
-InputMethodTSF::InputMethodTSF(internal::InputMethodDelegate* delegate, |
- HWND toplevel_window_handle) |
- : InputMethodWin(delegate, toplevel_window_handle), |
- tsf_event_observer_(new TSFEventObserver()), |
- tsf_event_router_(new TSFEventRouter(tsf_event_observer_.get())) { |
- // In non-Aura environment, appropriate callbacks to OnFocus() and OnBlur() |
- // are not implemented yet. To work around this limitation, here we use |
- // "always focused" model. |
- // TODO(ime): Fix the caller of OnFocus() and OnBlur() so that appropriate |
- // focus event will be passed. |
- InputMethodWin::OnFocus(); |
-} |
- |
-InputMethodTSF::~InputMethodTSF() {} |
- |
-void InputMethodTSF::OnFocus() { |
- // Do not call baseclass' OnFocus() and discard the event being in |
- // "always focused" model. See the comment in the constructor. |
- // TODO(ime): Implement OnFocus once the callers are fixed. |
- |
- tsf_event_router_->SetManager( |
- ui::TSFBridge::GetInstance()->GetThreadManager()); |
-} |
- |
-void InputMethodTSF::OnBlur() { |
- // Do not call baseclass' OnBlur() and discard the event being in |
- // "always focused" model. See the comment in the constructor. |
- // TODO(ime): Implement OnFocus once the callers are fixed. |
- |
- tsf_event_router_->SetManager(NULL); |
-} |
- |
-bool InputMethodTSF::OnUntranslatedIMEMessage( |
- const base::NativeEvent& event, InputMethod::NativeEventResult* result) { |
- LRESULT original_result = 0; |
- BOOL handled = FALSE; |
- // Even when TSF is enabled, following IMM32/Win32 messages must be handled. |
- switch (event.message) { |
- case WM_IME_REQUEST: |
- // Some TSF-native TIPs (Text Input Processors) such as ATOK and Mozc |
- // still rely on WM_IME_REQUEST message to implement reverse conversion. |
- original_result = OnImeRequest( |
- event.message, event.wParam, event.lParam, &handled); |
- break; |
- case WM_CHAR: |
- case WM_SYSCHAR: |
- // ui::InputMethod interface is responsible for handling Win32 character |
- // messages. For instance, we will be here in the following cases. |
- // - TIP is not activated. (e.g, the current language profile is English) |
- // - TIP does not handle and WM_KEYDOWN and WM_KEYDOWN is translated into |
- // WM_CHAR by TranslateMessage API. (e.g, TIP is turned off) |
- // - Another application sends WM_CHAR through SendMessage API. |
- original_result = OnChar( |
- event.hwnd, event.message, event.wParam, event.lParam, &handled); |
- break; |
- case WM_DEADCHAR: |
- case WM_SYSDEADCHAR: |
- // See the comment in WM_CHAR/WM_SYSCHAR. |
- original_result = OnDeadChar( |
- event.message, event.wParam, event.lParam, &handled); |
- break; |
- } |
- if (result) |
- *result = original_result; |
- return !!handled; |
-} |
- |
-void InputMethodTSF::OnTextInputTypeChanged(const TextInputClient* client) { |
- if (!IsTextInputClientFocused(client) || !IsWindowFocused(client)) |
- return; |
- ui::TSFBridge::GetInstance()->CancelComposition(); |
- ui::TSFBridge::GetInstance()->OnTextInputTypeChanged(client); |
-} |
- |
-void InputMethodTSF::OnCaretBoundsChanged(const TextInputClient* client) { |
- if (!IsTextInputClientFocused(client) || !IsWindowFocused(client)) |
- return; |
- ui::TSFBridge::GetInstance()->OnTextLayoutChanged(); |
-} |
- |
-void InputMethodTSF::CancelComposition(const TextInputClient* client) { |
- if (IsTextInputClientFocused(client) && IsWindowFocused(client)) |
- ui::TSFBridge::GetInstance()->CancelComposition(); |
-} |
- |
-void InputMethodTSF::DetachTextInputClient(TextInputClient* client) { |
- InputMethodWin::DetachTextInputClient(client); |
- ui::TSFBridge::GetInstance()->RemoveFocusedClient(client); |
-} |
- |
-bool InputMethodTSF::IsCandidatePopupOpen() const { |
- return tsf_event_observer_->IsCandidatePopupOpen(); |
-} |
- |
-void InputMethodTSF::OnWillChangeFocusedClient(TextInputClient* focused_before, |
- TextInputClient* focused) { |
- if (IsWindowFocused(focused_before)) { |
- ConfirmCompositionText(); |
- ui::TSFBridge::GetInstance()->RemoveFocusedClient(focused_before); |
- } |
-} |
- |
-void InputMethodTSF::OnDidChangeFocusedClient(TextInputClient* focused_before, |
- TextInputClient* focused) { |
- if (IsWindowFocused(focused) && IsTextInputClientFocused(focused)) { |
- ui::TSFBridge::GetInstance()->SetFocusedClient( |
- GetAttachedWindowHandle(focused), focused); |
- |
- // Force to update the input type since client's TextInputStateChanged() |
- // function might not be called if text input types before the client loses |
- // focus and after it acquires focus again are the same. |
- OnTextInputTypeChanged(focused); |
- |
- // Force to update caret bounds, in case the client thinks that the caret |
- // bounds has not changed. |
- OnCaretBoundsChanged(focused); |
- } |
- InputMethodWin::OnDidChangeFocusedClient(focused_before, focused); |
-} |
- |
-void InputMethodTSF::ConfirmCompositionText() { |
- if (!IsTextInputTypeNone()) |
- ui::TSFBridge::GetInstance()->ConfirmComposition(); |
-} |
- |
-} // namespace ui |