Chromium Code Reviews| 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 { |