| Index: ui/views/ime/input_method_bridge.cc
|
| diff --git a/ui/views/ime/input_method_bridge.cc b/ui/views/ime/input_method_bridge.cc
|
| deleted file mode 100644
|
| index 88ceec7d5c90938ecc4a40d6ef8a880878370f25..0000000000000000000000000000000000000000
|
| --- a/ui/views/ime/input_method_bridge.cc
|
| +++ /dev/null
|
| @@ -1,346 +0,0 @@
|
| -// Copyright (c) 2012 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/views/ime/input_method_bridge.h"
|
| -
|
| -#include "ui/base/ime/input_method.h"
|
| -#include "ui/base/ime/input_method_observer.h"
|
| -#include "ui/events/event.h"
|
| -#include "ui/gfx/geometry/rect.h"
|
| -#include "ui/views/view.h"
|
| -#include "ui/views/widget/widget.h"
|
| -
|
| -namespace views {
|
| -
|
| -// InputMethodBridge::HostObserver class ---------------------------------------
|
| -
|
| -// An observer class for observing the host input method. When the host input
|
| -// method is destroyed, it will null out the |host_| field on the
|
| -// InputMethodBridge object.
|
| -class InputMethodBridge::HostObserver : public ui::InputMethodObserver {
|
| - public:
|
| - explicit HostObserver(InputMethodBridge* bridge);
|
| - ~HostObserver() override;
|
| -
|
| - void OnTextInputTypeChanged(const ui::TextInputClient* client) override {}
|
| - void OnFocus() override {}
|
| - void OnBlur() override {}
|
| - void OnCaretBoundsChanged(const ui::TextInputClient* client) override {}
|
| - void OnTextInputStateChanged(const ui::TextInputClient* client) override {}
|
| - void OnInputMethodDestroyed(const ui::InputMethod* input_method) override;
|
| - void OnShowImeIfNeeded() override {}
|
| -
|
| - private:
|
| - InputMethodBridge* bridge_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(HostObserver);
|
| -};
|
| -
|
| -InputMethodBridge::HostObserver::HostObserver(InputMethodBridge* bridge)
|
| - : bridge_(bridge) {
|
| - bridge_->host_->AddObserver(this);
|
| -}
|
| -
|
| -InputMethodBridge::HostObserver::~HostObserver() {
|
| - if (bridge_->host_)
|
| - bridge_->host_->RemoveObserver(this);
|
| -}
|
| -
|
| -void InputMethodBridge::HostObserver::OnInputMethodDestroyed(
|
| - const ui::InputMethod* input_method) {
|
| - DCHECK_EQ(bridge_->host_, input_method);
|
| - bridge_->host_->RemoveObserver(this);
|
| - bridge_->host_ = NULL;
|
| -}
|
| -
|
| -// InputMethodBridge class -----------------------------------------------------
|
| -
|
| -InputMethodBridge::InputMethodBridge(internal::InputMethodDelegate* delegate,
|
| - ui::InputMethod* host,
|
| - bool shared_input_method)
|
| - : host_(host),
|
| - shared_input_method_(shared_input_method) {
|
| - DCHECK(host_);
|
| - SetDelegate(delegate);
|
| -
|
| - host_observer_.reset(new HostObserver(this));
|
| -}
|
| -
|
| -InputMethodBridge::~InputMethodBridge() {
|
| - // By the time we get here it's very likely |widget_|'s NativeWidget has been
|
| - // destroyed. This means any calls to |widget_| that go to the NativeWidget,
|
| - // such as IsActive(), will crash. SetFocusedTextInputClient() may callback to
|
| - // this and go into |widget_|. NULL out |widget_| so we don't attempt to use
|
| - // it.
|
| - DetachFromWidget();
|
| -
|
| - // Host input method might have been destroyed at this point.
|
| - if (host_)
|
| - host_->DetachTextInputClient(this);
|
| -}
|
| -
|
| -void InputMethodBridge::OnFocus() {
|
| - if (!host_) // |host_| could be NULL after OnInputMethodDestroyed.
|
| - return;
|
| -
|
| - // Direct the shared IME to send TextInputClient messages to |this| object.
|
| - if (shared_input_method_ || !host_->GetTextInputClient())
|
| - host_->SetFocusedTextInputClient(this);
|
| -
|
| - // TODO(yusukes): We don't need to call OnTextInputTypeChanged() once we move
|
| - // text input type tracker code to ui::InputMethodBase.
|
| - if (GetFocusedView()) {
|
| - OnTextInputTypeChanged(GetFocusedView());
|
| - OnCaretBoundsChanged(GetFocusedView());
|
| - }
|
| -}
|
| -
|
| -void InputMethodBridge::OnBlur() {
|
| - if (!host_) // |host_| could be NULL after OnInputMethodDestroyed.
|
| - return;
|
| -
|
| - if (HasCompositionText()) {
|
| - ConfirmCompositionText();
|
| - host_->CancelComposition(this);
|
| - }
|
| -
|
| - if (host_->GetTextInputClient() == this)
|
| - host_->SetFocusedTextInputClient(NULL);
|
| -}
|
| -
|
| -bool InputMethodBridge::OnUntranslatedIMEMessage(const base::NativeEvent& event,
|
| - NativeEventResult* result) {
|
| - DCHECK(host_);
|
| -
|
| - return host_->OnUntranslatedIMEMessage(event, result);
|
| -}
|
| -
|
| -void InputMethodBridge::DispatchKeyEvent(const ui::KeyEvent& key) {
|
| - DCHECK(key.type() == ui::ET_KEY_PRESSED || key.type() == ui::ET_KEY_RELEASED);
|
| -
|
| - // We can just dispatch the event here since the |key| is already processed by
|
| - // the system-wide IME.
|
| - DispatchKeyEventPostIME(key);
|
| -}
|
| -
|
| -void InputMethodBridge::OnTextInputTypeChanged(View* view) {
|
| - DCHECK(host_);
|
| -
|
| - if (IsViewFocused(view))
|
| - host_->OnTextInputTypeChanged(this);
|
| - InputMethodBase::OnTextInputTypeChanged(view);
|
| -}
|
| -
|
| -void InputMethodBridge::OnCaretBoundsChanged(View* view) {
|
| - DCHECK(host_);
|
| -
|
| - if (IsViewFocused(view) && !IsTextInputTypeNone())
|
| - host_->OnCaretBoundsChanged(this);
|
| -}
|
| -
|
| -void InputMethodBridge::CancelComposition(View* view) {
|
| - DCHECK(host_);
|
| -
|
| - if (IsViewFocused(view))
|
| - host_->CancelComposition(this);
|
| -}
|
| -
|
| -void InputMethodBridge::OnInputLocaleChanged() {
|
| - DCHECK(host_);
|
| -
|
| - host_->OnInputLocaleChanged();
|
| -}
|
| -
|
| -std::string InputMethodBridge::GetInputLocale() {
|
| - DCHECK(host_);
|
| -
|
| - return host_->GetInputLocale();
|
| -}
|
| -
|
| -bool InputMethodBridge::IsActive() {
|
| - DCHECK(host_);
|
| -
|
| - return host_->IsActive();
|
| -}
|
| -
|
| -bool InputMethodBridge::IsCandidatePopupOpen() const {
|
| - DCHECK(host_);
|
| -
|
| - return host_->IsCandidatePopupOpen();
|
| -}
|
| -
|
| -void InputMethodBridge::ShowImeIfNeeded() {
|
| - DCHECK(host_);
|
| - host_->ShowImeIfNeeded();
|
| -}
|
| -
|
| -// Overridden from TextInputClient. Forward an event from the system-wide IME
|
| -// to the text input |client|, which is e.g. views::Textfield.
|
| -void InputMethodBridge::SetCompositionText(
|
| - const ui::CompositionText& composition) {
|
| - TextInputClient* client = GetTextInputClient();
|
| - if (client)
|
| - client->SetCompositionText(composition);
|
| -}
|
| -
|
| -void InputMethodBridge::ConfirmCompositionText() {
|
| - TextInputClient* client = GetTextInputClient();
|
| - if (client)
|
| - client->ConfirmCompositionText();
|
| -}
|
| -
|
| -void InputMethodBridge::ClearCompositionText() {
|
| - TextInputClient* client = GetTextInputClient();
|
| - if (client)
|
| - client->ClearCompositionText();
|
| -}
|
| -
|
| -void InputMethodBridge::InsertText(const base::string16& text) {
|
| - TextInputClient* client = GetTextInputClient();
|
| - if (client)
|
| - client->InsertText(text);
|
| -}
|
| -
|
| -void InputMethodBridge::InsertChar(base::char16 ch, int flags) {
|
| - TextInputClient* client = GetTextInputClient();
|
| - if (client)
|
| - client->InsertChar(ch, flags);
|
| -}
|
| -
|
| -gfx::NativeWindow InputMethodBridge::GetAttachedWindow() const {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ?
|
| - client->GetAttachedWindow() : static_cast<gfx::NativeWindow>(NULL);
|
| -}
|
| -
|
| -ui::TextInputType InputMethodBridge::GetTextInputType() const {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ? client->GetTextInputType() : ui::TEXT_INPUT_TYPE_NONE;
|
| -}
|
| -
|
| -ui::TextInputMode InputMethodBridge::GetTextInputMode() const {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ? client->GetTextInputMode() : ui::TEXT_INPUT_MODE_DEFAULT;
|
| -}
|
| -
|
| -int InputMethodBridge::GetTextInputFlags() const {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ? client->GetTextInputFlags() : 0;
|
| -}
|
| -
|
| -bool InputMethodBridge::CanComposeInline() const {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ? client->CanComposeInline() : true;
|
| -}
|
| -
|
| -gfx::Rect InputMethodBridge::GetCaretBounds() const {
|
| - TextInputClient* client = GetTextInputClient();
|
| - if (!client)
|
| - return gfx::Rect();
|
| -
|
| - return client->GetCaretBounds();
|
| -}
|
| -
|
| -bool InputMethodBridge::GetCompositionCharacterBounds(uint32 index,
|
| - gfx::Rect* rect) const {
|
| - DCHECK(rect);
|
| - TextInputClient* client = GetTextInputClient();
|
| - if (!client)
|
| - return false;
|
| -
|
| - return client->GetCompositionCharacterBounds(index, rect);
|
| -}
|
| -
|
| -bool InputMethodBridge::HasCompositionText() const {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ? client->HasCompositionText() : false;
|
| -}
|
| -
|
| -bool InputMethodBridge::GetTextRange(gfx::Range* range) const {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ? client->GetTextRange(range) : false;
|
| -}
|
| -
|
| -bool InputMethodBridge::GetCompositionTextRange(gfx::Range* range) const {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ? client->GetCompositionTextRange(range) : false;
|
| -}
|
| -
|
| -bool InputMethodBridge::GetSelectionRange(gfx::Range* range) const {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ? client->GetSelectionRange(range) : false;
|
| -}
|
| -
|
| -bool InputMethodBridge::SetSelectionRange(const gfx::Range& range) {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ? client->SetSelectionRange(range) : false;
|
| -}
|
| -
|
| -bool InputMethodBridge::DeleteRange(const gfx::Range& range) {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ? client->DeleteRange(range) : false;
|
| -}
|
| -
|
| -bool InputMethodBridge::GetTextFromRange(const gfx::Range& range,
|
| - base::string16* text) const {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ? client->GetTextFromRange(range, text) : false;
|
| -}
|
| -
|
| -void InputMethodBridge::OnInputMethodChanged() {
|
| - TextInputClient* client = GetTextInputClient();
|
| - if (client)
|
| - client->OnInputMethodChanged();
|
| -}
|
| -
|
| -bool InputMethodBridge::ChangeTextDirectionAndLayoutAlignment(
|
| - base::i18n::TextDirection direction) {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ?
|
| - client->ChangeTextDirectionAndLayoutAlignment(direction) : false;
|
| -}
|
| -
|
| -void InputMethodBridge::ExtendSelectionAndDelete(size_t before, size_t after) {
|
| - TextInputClient* client = GetTextInputClient();
|
| - if (client)
|
| - client->ExtendSelectionAndDelete(before, after);
|
| -}
|
| -
|
| -void InputMethodBridge::EnsureCaretInRect(const gfx::Rect& rect) {
|
| - TextInputClient* client = GetTextInputClient();
|
| - if (client)
|
| - client->EnsureCaretInRect(rect);
|
| -}
|
| -
|
| -bool InputMethodBridge::IsEditCommandEnabled(int command_id) {
|
| - TextInputClient* client = GetTextInputClient();
|
| - return client ? client->IsEditCommandEnabled(command_id) : false;
|
| -}
|
| -
|
| -void InputMethodBridge::SetEditCommandForNextKeyEvent(int command_id) {
|
| - TextInputClient* client = GetTextInputClient();
|
| - if (client)
|
| - client->SetEditCommandForNextKeyEvent(command_id);
|
| -}
|
| -
|
| -// Overridden from FocusChangeListener.
|
| -void InputMethodBridge::OnWillChangeFocus(View* focused_before, View* focused) {
|
| - if (HasCompositionText()) {
|
| - ConfirmCompositionText();
|
| - CancelComposition(focused_before);
|
| - }
|
| -}
|
| -
|
| -void InputMethodBridge::OnDidChangeFocus(View* focused_before, View* focused) {
|
| - DCHECK_EQ(GetFocusedView(), focused);
|
| - OnTextInputTypeChanged(focused);
|
| - OnCaretBoundsChanged(focused);
|
| -}
|
| -
|
| -ui::InputMethod* InputMethodBridge::GetHostInputMethod() const {
|
| - return host_;
|
| -}
|
| -
|
| -
|
| -} // namespace views
|
|
|