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..f35083e88eff07df4de30a1829c01c345b375a14 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" |
@@ -763,18 +768,58 @@ TEST_F(FocusManagerArrowKeyTraversalTest, ArrowKeyTraversal) { |
EXPECT_EQ(v[0], focus_manager->GetFocusedView()); |
} |
+class TextInputTestView : public View { |
+ public: |
+ virtual ui::TextInputClient* GetTextInputClient() OVERRIDE { |
+ return &text_input_client_; |
+ } |
+ |
+ private: |
+ ui::DummyTextInputClient text_input_client_; |
+}; |
sky
2014/05/30 16:30:15
DISALLOW_...
Yuki
2014/06/02 07:38:55
Done.
|
+ |
TEST_F(FocusManagerTest, StoreFocusedView) { |
- 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); |
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 { |