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

Unified Diff: ui/views/focus/focus_manager_unittest.cc

Issue 294023002: aura: Updates the text input client when native activation changes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed sky's comments. Created 6 years, 7 months 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
Index: ui/views/focus/focus_manager_unittest.cc
diff --git a/ui/views/focus/focus_manager_unittest.cc b/ui/views/focus/focus_manager_unittest.cc
index 9bd988d4e0896d8adaa1886891094e59406e144f..23213ca4d0e8029b5d154c8172b1824156fc7e65 100644
--- a/ui/views/focus/focus_manager_unittest.cc
+++ b/ui/views/focus/focus_manager_unittest.cc
@@ -2,17 +2,22 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "ui/views/focus/focus_manager.h"
+
#include <utility>
#include <vector>
+#include "base/command_line.h"
#include "base/strings/utf_string_conversions.h"
#include "ui/aura/client/focus_client.h"
#include "ui/aura/window.h"
#include "ui/base/accelerators/accelerator.h"
+#include "ui/base/ime/dummy_text_input_client.h"
+#include "ui/base/ime/text_input_focus_manager.h"
+#include "ui/base/ui_base_switches.h"
#include "ui/events/keycodes/keyboard_codes.h"
#include "ui/views/accessible_pane_view.h"
#include "ui/views/controls/button/label_button.h"
-#include "ui/views/controls/textfield/textfield.h"
#include "ui/views/focus/focus_manager_factory.h"
#include "ui/views/focus/focus_manager_test.h"
#include "ui/views/focus/widget_focus_manager.h"
@@ -53,6 +58,8 @@ class SimpleTestView : public View {
private:
std::vector<FocusTestEvent>* event_list_;
+
+ DISALLOW_COPY_AND_ASSIGN(SimpleTestView);
};
// Tests that the appropriate Focus related methods are called when a View
@@ -763,18 +770,62 @@ TEST_F(FocusManagerArrowKeyTraversalTest, ArrowKeyTraversal) {
EXPECT_EQ(v[0], focus_manager->GetFocusedView());
}
+class TextInputTestView : public View {
+ public:
+ TextInputTestView() {}
+
+ virtual ui::TextInputClient* GetTextInputClient() OVERRIDE {
+ return &text_input_client_;
+ }
+
+ private:
+ ui::DummyTextInputClient text_input_client_;
+
+ DISALLOW_COPY_AND_ASSIGN(TextInputTestView);
+};
+
TEST_F(FocusManagerTest, StoreFocusedView) {
msw 2014/06/02 17:17:04 Make a separate test for TextInputClient checks, t
Yuki 2014/06/08 11:08:16 Done.
- View view;
- GetFocusManager()->SetFocusedView(&view);
+ base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess();
+ cmd_line->AppendSwitch(switches::kEnableTextInputFocusManager);
+
+ View* view = new TextInputTestView;
+ ui::TextInputClient* text_input_client = view->GetTextInputClient();
+ view->SetFocusable(true);
+ GetContentsView()->AddChildView(view);
+ ui::TextInputFocusManager* text_input_focus_manager =
+ ui::TextInputFocusManager::GetInstance();
+
+ GetFocusManager()->SetFocusedView(view);
+ EXPECT_EQ(view, GetFocusManager()->GetFocusedView());
+ EXPECT_EQ(text_input_client,
+ text_input_focus_manager->GetFocusedTextInputClient());
GetFocusManager()->StoreFocusedView(false);
msw 2014/06/02 17:17:04 nit: EXPECT_EQ(NULL, GetFocusManager()->GetFocused
Yuki 2014/06/08 11:08:16 Done.
EXPECT_TRUE(GetFocusManager()->RestoreFocusedView());
- EXPECT_EQ(&view, GetFocusManager()->GetStoredFocusView());
+ EXPECT_EQ(view, GetFocusManager()->GetStoredFocusView());
+ EXPECT_EQ(view, GetFocusManager()->GetFocusedView());
+ EXPECT_EQ(text_input_client,
+ text_input_focus_manager->GetFocusedTextInputClient());
// Repeat with |true|.
- GetFocusManager()->SetFocusedView(&view);
+ GetFocusManager()->SetFocusedView(view);
+ EXPECT_EQ(view, GetFocusManager()->GetFocusedView());
+ EXPECT_EQ(text_input_client,
+ text_input_focus_manager->GetFocusedTextInputClient());
GetFocusManager()->StoreFocusedView(true);
EXPECT_TRUE(GetFocusManager()->RestoreFocusedView());
- EXPECT_EQ(&view, GetFocusManager()->GetStoredFocusView());
+ EXPECT_EQ(view, GetFocusManager()->GetStoredFocusView());
+ EXPECT_EQ(view, GetFocusManager()->GetFocusedView());
+ EXPECT_EQ(text_input_client,
+ text_input_focus_manager->GetFocusedTextInputClient());
+
+ // Focus the view twice in a row.
+ GetFocusManager()->SetFocusedView(view);
+ EXPECT_EQ(text_input_client,
+ text_input_focus_manager->GetFocusedTextInputClient());
+ ui::TextInputFocusManager::GetInstance()->FocusTextInputClient(NULL);
+ GetFocusManager()->SetFocusedView(view);
+ EXPECT_EQ(text_input_client,
+ text_input_focus_manager->GetFocusedTextInputClient());
}
namespace {

Powered by Google App Engine
This is Rietveld 408576698