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..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 { |