diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-05 04:13:40 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-05 04:13:40 +0000 |
commit | 709f92dc4a855b975f7400e207ac20ecf79cdb14 (patch) | |
tree | de17b9860b9beb062f4cc67daeeea61c149cce08 /ui/views/widget | |
parent | fd7e9664ca6c3c84fac80f84ac4c07cdfbcf32e1 (diff) | |
download | chromium_src-709f92dc4a855b975f7400e207ac20ecf79cdb14.zip chromium_src-709f92dc4a855b975f7400e207ac20ecf79cdb14.tar.gz chromium_src-709f92dc4a855b975f7400e207ac20ecf79cdb14.tar.bz2 |
views: Fix key-event regression.
A typo fix. But I have added a test to make sure future changes do not
cause similar regressions.
BUG=159109
Review URL: https://codereview.chromium.org/11275126
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165897 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/views/widget')
-rw-r--r-- | ui/views/widget/root_view.cc | 2 | ||||
-rw-r--r-- | ui/views/widget/widget.cc | 2 | ||||
-rw-r--r-- | ui/views/widget/widget_unittest.cc | 27 |
3 files changed, 29 insertions, 2 deletions
diff --git a/ui/views/widget/root_view.cc b/ui/views/widget/root_view.cc index b8cac10..e9e2729 100644 --- a/ui/views/widget/root_view.cc +++ b/ui/views/widget/root_view.cc @@ -129,7 +129,7 @@ ui::EventResult RootView::DispatchKeyEvent(const ui::KeyEvent& event) { v->OnKeyPressed(event) : v->OnKeyReleased(event); } - return consumed ? ui::ER_CONSUMED : ui::ER_HANDLED; + return consumed ? ui::ER_CONSUMED : ui::ER_UNHANDLED; } ui::EventResult RootView::DispatchScrollEvent(ui::ScrollEvent* event) { diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc index 41752a5..f263459 100644 --- a/ui/views/widget/widget.cc +++ b/ui/views/widget/widget.cc @@ -1091,7 +1091,7 @@ int Widget::GetNonClientComponent(const gfx::Point& point) { bool Widget::OnKeyEvent(const ui::KeyEvent& event) { ScopedEvent scoped(this, event); return static_cast<internal::RootView*>(GetRootView())-> - DispatchKeyEvent(event) == ui::ER_UNHANDLED; + DispatchKeyEvent(event) != ui::ER_UNHANDLED; } bool Widget::OnMouseEvent(const ui::MouseEvent& event) { diff --git a/ui/views/widget/widget_unittest.cc b/ui/views/widget/widget_unittest.cc index 4b75f51..4a1689a 100644 --- a/ui/views/widget/widget_unittest.cc +++ b/ui/views/widget/widget_unittest.cc @@ -5,10 +5,12 @@ #include "base/basictypes.h" #include "base/memory/scoped_ptr.h" #include "base/message_loop.h" +#include "base/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h" #include "ui/gfx/native_widget_types.h" #include "ui/gfx/point.h" #include "ui/views/bubble/bubble_delegate.h" +#include "ui/views/controls/textfield/textfield.h" #include "ui/views/test/test_views_delegate.h" #include "ui/views/test/views_test_base.h" #include "ui/views/views_delegate.h" @@ -975,5 +977,30 @@ TEST_F(WidgetTest, ResetCaptureOnGestureEnd) { RunPendingMessages(); } +#if defined(USE_AURA) +// The key-event propagation from Widget happens differently on aura and +// non-aura systems because of the difference in IME. So this test works only on +// aura. +TEST_F(WidgetTest, KeyboardInputEvent) { + Widget* toplevel = CreateTopLevelPlatformWidget(); + View* container = new View; + toplevel->SetContentsView(container); + + Textfield* textfield = new Textfield(); + textfield->SetText(ASCIIToUTF16("some text")); + container->AddChildView(textfield); + toplevel->Show(); + textfield->RequestFocus(); + + // The press gets handled. The release doesn't have an effect. + ui::KeyEvent backspace_p(ui::ET_KEY_PRESSED, ui::VKEY_DELETE, 0, false); + EXPECT_TRUE(toplevel->OnKeyEvent(backspace_p)); + ui::KeyEvent backspace_r(ui::ET_KEY_RELEASED, ui::VKEY_DELETE, 0, false); + EXPECT_FALSE(toplevel->OnKeyEvent(backspace_r)); + + toplevel->Close(); +} +#endif // defined(USE_AURA) + } // namespace } // namespace views |