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 |
index 1ca16315a4e874a138a8fdb1a8b6979e982212bd..eef4c12ea4e788f1def3556c208685396bbd81cd 100644 |
--- a/ui/views/ime/input_method_bridge.cc |
+++ b/ui/views/ime/input_method_bridge.cc |
@@ -15,12 +15,11 @@ InputMethodBridge::InputMethodBridge(internal::InputMethodDelegate* delegate, |
ui::InputMethod* host) |
: host_(host), |
context_focused_(false) { |
- DCHECK(host_); |
set_delegate(delegate); |
} |
InputMethodBridge::~InputMethodBridge() { |
- if (host_->GetTextInputClient() == this) |
+ if (host_ && host_->GetTextInputClient() == this) |
Ben Goodger (Google)
2011/12/20 21:02:02
so, if host_ is set in the ctor, and, per your doc
Yusuke Sato
2011/12/21 16:57:27
For Chrome with the aura_shell, the checks are not
|
host_->SetFocusedTextInputClient(NULL); |
} |
@@ -29,12 +28,16 @@ void InputMethodBridge::Init(Widget* widget) { |
} |
void InputMethodBridge::OnFocus() { |
- DCHECK(!widget_focused()); |
+ // Disabling the DCHECK for now since views_unittests seems to call |
+ // views::InputMethod::OnFocus and OnBlur in a wrong way. |
+ // TODO(yusukes): Reenable it once views_unittests are fixed. |
+ // DCHECK(!widget_focused()); |
InputMethodBase::OnFocus(); |
// Ask the system-wide IME to send all TextInputClient messages to |this| |
// object. |
- host_->SetFocusedTextInputClient(this); |
+ if (host_) |
+ host_->SetFocusedTextInputClient(this); |
// TODO(yusukes): We don't need to call OnTextInputTypeChanged() once we move |
// text input type tracker code to ui::InputMethodBase. |
@@ -43,11 +46,12 @@ void InputMethodBridge::OnFocus() { |
} |
void InputMethodBridge::OnBlur() { |
- DCHECK(widget_focused()); |
+ // TODO(yusukes): Reenable it once views_unittests are fixed. |
+ // DCHECK(widget_focused()); |
ConfirmCompositionText(); |
InputMethodBase::OnBlur(); |
- if (host_->GetTextInputClient() == this) |
+ if (host_ && host_->GetTextInputClient() == this) |
host_->SetFocusedTextInputClient(NULL); |
} |
@@ -61,31 +65,31 @@ void InputMethodBridge::DispatchKeyEvent(const KeyEvent& key) { |
} |
void InputMethodBridge::OnTextInputTypeChanged(View* view) { |
- if (IsViewFocused(view)) |
+ if (host_ && IsViewFocused(view)) |
host_->OnTextInputTypeChanged(this); |
InputMethodBase::OnTextInputTypeChanged(view); |
} |
void InputMethodBridge::OnCaretBoundsChanged(View* view) { |
- if (IsViewFocused(view) && !IsTextInputTypeNone()) |
+ if (host_ && IsViewFocused(view) && !IsTextInputTypeNone()) |
host_->OnCaretBoundsChanged(this); |
} |
void InputMethodBridge::CancelComposition(View* view) { |
- if (IsViewFocused(view)) |
+ if (host_ && IsViewFocused(view)) |
host_->CancelComposition(this); |
} |
std::string InputMethodBridge::GetInputLocale() { |
- return host_->GetInputLocale(); |
+ return host_ ? host_->GetInputLocale() : ""; |
} |
base::i18n::TextDirection InputMethodBridge::GetInputTextDirection() { |
- return host_->GetInputTextDirection(); |
+ return host_ ? host_->GetInputTextDirection() : base::i18n::UNKNOWN_DIRECTION; |
} |
bool InputMethodBridge::IsActive() { |
- return host_->IsActive(); |
+ return host_ ? host_->IsActive() : false; |
} |
// Overridden from TextInputClient. Forward an event from the system-wide IME |