Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(438)

Unified Diff: ash/ime/input_method_event_filter_unittest.cc

Issue 8576005: IME (input method editor) support for Aura, part 3 of 3: Use ui::InputMethod in ash. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: move to ash/ime/ Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/ime/input_method_event_filter.cc ('k') | ash/shell.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/ime/input_method_event_filter_unittest.cc
diff --git a/ash/ime/input_method_event_filter_unittest.cc b/ash/ime/input_method_event_filter_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..397cad586351c390f47a3e95b75d33521aff2714
--- /dev/null
+++ b/ash/ime/input_method_event_filter_unittest.cc
@@ -0,0 +1,85 @@
+// Copyright (c) 2011 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 "ash/ime/input_method_event_filter.h"
+
+#include "ash/shell.h"
+#include "ash/shell_window_ids.h"
+#include "ash/test/aura_shell_test_base.h"
+#include "ash/wm/root_window_event_filter.h"
+#include "ash/wm/window_util.h"
+#include "testing/gtest/include/gtest/gtest.h"
+#include "ui/aura/client/aura_constants.h"
+#include "ui/aura/root_window.h"
+#include "ui/aura/test/aura_test_base.h"
+#include "ui/aura/test/event_generator.h"
+#include "ui/aura/test/test_event_filter.h"
+#include "ui/aura/test/test_windows.h"
+
+#if !defined(OS_WIN) && !defined(USE_X11)
+// On platforms except Windows and X11, aura::test::EventGenerator::PressKey
+// generates a key event without native_event(), which is not supported by
+// ui::MockInputMethod.
+#define TestInputMethodKeyEventPropagation \
+DISABLED_TestInputMethodKeyEventPropagation
+#endif
+
+namespace ash {
+namespace test {
+
+typedef aura::test::AuraTestBase InputMethodEventFilterTestWithoutShell;
+typedef AuraShellTestBase InputMethodEventFilterTest;
+
+// Tests if InputMethodEventFilter adds a window property on its construction.
+TEST_F(InputMethodEventFilterTestWithoutShell, TestInputMethodProperty) {
+ aura::RootWindow* root_window = aura::RootWindow::GetInstance();
+ internal::RootWindowEventFilter* root_filter =
+ new internal::RootWindowEventFilter;
+ EXPECT_FALSE(root_window->GetProperty(aura::client::kRootWindowInputMethod));
+ internal::InputMethodEventFilter ime_filter;
+ root_filter->AddFilter(&ime_filter);
+ EXPECT_TRUE(root_window->GetProperty(aura::client::kRootWindowInputMethod));
+ root_filter->RemoveFilter(&ime_filter);
+}
+
+// Tests if InputMethodEventFilter dispatches a ui::ET_TRANSLATED_KEY_* event to
+// the root window.
+TEST_F(InputMethodEventFilterTest, TestInputMethodKeyEventPropagation) {
+ aura::RootWindow* root_window = aura::RootWindow::GetInstance();
+
+ // Add TestEventFilter to the RootWindow.
+ aura::test::TestEventFilter test_filter(root_window);
+ internal::RootWindowEventFilter* root_filter =
+ static_cast<internal::RootWindowEventFilter*>(
+ root_window->event_filter());
+ ASSERT_TRUE(root_filter);
+ root_filter->AddFilter(&test_filter);
+
+ // We need an active window. Otherwise, the root window will not forward a key
+ // event to event filters.
+ aura::Window* default_container = Shell::GetInstance()->GetContainer(
+ internal::kShellWindowId_DefaultContainer);
+ aura::Window* window = aura::test::CreateTestWindowWithDelegate(
+ new aura::test::TestWindowDelegate,
+ -1,
+ gfx::Rect(),
+ default_container);
+ ActivateWindow(window);
+
+ // Send a fake key event to the root window. InputMethodEventFilter, which is
+ // automatically set up by AuraShellTestBase, consumes it and sends a new
+ // ui::ET_TRANSLATED_KEY_* event to the root window, which will be consumed by
+ // the test event filter.
+ aura::test::EventGenerator generator_;
+ EXPECT_EQ(0, test_filter.key_event_count());
+ generator_.PressKey(ui::VKEY_SPACE, 0);
+ EXPECT_EQ(1, test_filter.key_event_count());
+ generator_.ReleaseKey(ui::VKEY_SPACE, 0);
+ EXPECT_EQ(2, test_filter.key_event_count());
+
+ root_filter->RemoveFilter(&test_filter);
+}
+
+} // namespace test
+} // namespace ash
« no previous file with comments | « ash/ime/input_method_event_filter.cc ('k') | ash/shell.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698