Commit f1fb4144 authored by ben@chromium.org's avatar ben@chromium.org

Fix text input.

The mock input method wasn't filtering WM_CHARs.

R=sky@chromium.org
http://crbug.com/365012

Review URL: https://codereview.chromium.org/329803002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@276700 0039d316-1c4b-4281-b951-d872f2087c98
parent 1b830e9c
...@@ -10,9 +10,9 @@ ...@@ -10,9 +10,9 @@
#include "ui/aura/client/aura_constants.h" #include "ui/aura/client/aura_constants.h"
#include "ui/aura/window.h" #include "ui/aura/window.h"
#include "ui/aura/window_event_dispatcher.h" #include "ui/aura/window_event_dispatcher.h"
#include "ui/base/ime/input_method.h"
#include "ui/base/ime/input_method_delegate.h" #include "ui/base/ime/input_method_delegate.h"
#include "ui/base/ime/input_method_factory.h" #include "ui/base/ime/input_method_factory.h"
#include "ui/base/ime/mock_input_method.h"
#include "ui/base/ime/text_input_client.h" #include "ui/base/ime/text_input_client.h"
#include "ui/wm/core/base_focus_rules.h" #include "ui/wm/core/base_focus_rules.h"
#include "ui/wm/core/focus_controller.h" #include "ui/wm/core/focus_controller.h"
...@@ -34,50 +34,14 @@ class FocusRulesImpl : public wm::BaseFocusRules { ...@@ -34,50 +34,14 @@ class FocusRulesImpl : public wm::BaseFocusRules {
DISALLOW_COPY_AND_ASSIGN(FocusRulesImpl); DISALLOW_COPY_AND_ASSIGN(FocusRulesImpl);
}; };
class InputMethodImpl : public ui::MockInputMethod {
public:
explicit InputMethodImpl(ui::internal::InputMethodDelegate* delegate)
: MockInputMethod(delegate),
delegate_(delegate) {
}
virtual ~InputMethodImpl() {
}
// MockInputMethod:
virtual bool DispatchKeyEvent(const ui::KeyEvent& event) OVERRIDE {
// If no text input client, do nothing.
if (!GetTextInputClient())
return DispatchKeyEventPostIME(event);
const bool handled = DispatchKeyEventPostIME(event);
if (event.type() == ui::ET_KEY_PRESSED && GetTextInputClient()) {
const uint16 ch = event.GetCharacter();
if (ch) {
GetTextInputClient()->InsertChar(ch, event.flags());
return true;
}
}
return handled;
}
private:
bool DispatchKeyEventPostIME(const ui::KeyEvent& event) const {
return delegate_ && delegate_->DispatchKeyEventPostIME(event);
}
ui::internal::InputMethodDelegate* delegate_;
DISALLOW_COPY_AND_ASSIGN(InputMethodImpl);
};
class MinimalInputEventFilter : public ui::internal::InputMethodDelegate, class MinimalInputEventFilter : public ui::internal::InputMethodDelegate,
public ui::EventHandler { public ui::EventHandler {
public: public:
explicit MinimalInputEventFilter(aura::Window* root) explicit MinimalInputEventFilter(aura::Window* root)
: root_(root) { : root_(root),
ui::SetUpInputMethodFactoryForTesting(); input_method_(
input_method_.reset(new InputMethodImpl(this)); ui::CreateInputMethod(this, gfx::kNullAcceleratedWidget).Pass()) {
ui::InitializeInputMethod(); ui::InitializeInputMethodForTesting();
input_method_->Init(true); input_method_->Init(true);
root_->AddPreTargetHandler(this); root_->AddPreTargetHandler(this);
root_->SetProperty(aura::client::kRootWindowInputMethodKey, root_->SetProperty(aura::client::kRootWindowInputMethodKey,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment