From ab0a50979b9eb4dfa3320eff7e187e41efedf7a9 Mon Sep 17 00:00:00 2001 From: Jocelyn Turcotte Date: Fri, 8 Aug 2014 14:30:41 +0200 Subject: Update Chromium to beta version 37.0.2062.68 Change-Id: I188e3b5aff1bec75566014291b654eb19f5bc8ca Reviewed-by: Andras Becsi --- chromium/ui/views/focus/focus_manager_unittest.cc | 131 ++++++++++++---------- 1 file changed, 71 insertions(+), 60 deletions(-) (limited to 'chromium/ui/views/focus/focus_manager_unittest.cc') diff --git a/chromium/ui/views/focus/focus_manager_unittest.cc b/chromium/ui/views/focus/focus_manager_unittest.cc index fcb82b7f310..3513e2b70a7 100644 --- a/chromium/ui/views/focus/focus_manager_unittest.cc +++ b/chromium/ui/views/focus/focus_manager_unittest.cc @@ -2,38 +2,29 @@ // 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 #include +#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/accelerator_handler.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" #include "ui/views/widget/widget.h" -#if defined(USE_AURA) -#include "ui/aura/client/focus_client.h" -#include "ui/aura/window.h" -#endif - namespace views { -void FocusNativeView(gfx::NativeView view) { -#if defined(USE_AURA) - aura::client::GetFocusClient(view)->FocusWindow(view); -#elif defined(OS_WIN) - SetFocus(view); -#else -#error -#endif -} - enum FocusTestEventType { ON_FOCUS = 0, ON_BLUR @@ -67,6 +58,8 @@ class SimpleTestView : public View { private: std::vector* event_list_; + + DISALLOW_COPY_AND_ASSIGN(SimpleTestView); }; // Tests that the appropriate Focus related methods are called when a View @@ -149,14 +142,14 @@ TEST_F(FocusManagerTest, WidgetFocusChangeListener) { widget_listener.ClearFocusChanges(); gfx::NativeView native_view1 = widget1->GetNativeView(); - FocusNativeView(native_view1); + aura::client::GetFocusClient(native_view1)->FocusWindow(native_view1); ASSERT_EQ(2, static_cast(widget_listener.focus_changes().size())); EXPECT_EQ(native_view1, widget_listener.focus_changes()[0].second); EXPECT_EQ(native_view1, widget_listener.focus_changes()[1].second); widget_listener.ClearFocusChanges(); gfx::NativeView native_view2 = widget2->GetNativeView(); - FocusNativeView(native_view2); + aura::client::GetFocusClient(native_view2)->FocusWindow(native_view2); ASSERT_EQ(2, static_cast(widget_listener.focus_changes().size())); EXPECT_EQ(NativeViewPair(native_view1, native_view2), widget_listener.focus_changes()[0]); @@ -164,26 +157,6 @@ TEST_F(FocusManagerTest, WidgetFocusChangeListener) { widget_listener.focus_changes()[1]); } -#if !defined(USE_AURA) -class TestTextfield : public Textfield { - public: - TestTextfield() {} - virtual gfx::NativeView TestGetNativeControlView() { - return native_wrapper_->GetTestingHandle(); - } -}; - -// Tests that NativeControls do set the focused View appropriately on the -// FocusManager. -TEST_F(FocusManagerTest, DISABLED_FocusNativeControls) { - TestTextfield* textfield = new TestTextfield(); - GetContentsView()->AddChildView(textfield); - // Simulate the native view getting the native focus (such as by user click). - FocusNativeView(textfield->TestGetNativeControlView()); - EXPECT_EQ(textfield, GetFocusManager()->GetFocusedView()); -} -#endif - // Counts accelerator calls. class TestAcceleratorTarget : public ui::AcceleratorTarget { public: @@ -537,10 +510,11 @@ class FocusManagerDtorTest : public FocusManagerTest { class LabelButtonDtorTracked : public LabelButton { public: - LabelButtonDtorTracked(const string16& text, DtorTrackVector* dtor_tracker) + LabelButtonDtorTracked(const base::string16& text, + DtorTrackVector* dtor_tracker) : LabelButton(NULL, text), dtor_tracker_(dtor_tracker) { - SetStyle(STYLE_NATIVE_TEXTBUTTON); + SetStyle(STYLE_BUTTON); }; virtual ~LabelButtonDtorTracked() { dtor_tracker_->push_back("LabelButtonDtorTracked"); @@ -586,25 +560,6 @@ class FocusManagerDtorTest : public FocusManagerTest { DtorTrackVector dtor_tracker_; }; -#if !defined(USE_AURA) -TEST_F(FocusManagerDtorTest, FocusManagerDestructedLast) { - // Setup views hierarchy. - GetContentsView()->AddChildView(new TestTextfield()); - GetContentsView()->AddChildView(new LabelButtonDtorTracked( - ASCIIToUTF16("button"), &dtor_tracker_)); - - // Close the window. - GetWidget()->Close(); - RunPendingMessages(); - - // Test window, button and focus manager should all be destructed. - ASSERT_EQ(3, static_cast(dtor_tracker_.size())); - - // Focus manager should be the last one to destruct. - ASSERT_STREQ("FocusManagerDtorTracked", dtor_tracker_[2].c_str()); -} -#endif - namespace { class FocusInAboutToRequestFocusFromTabTraversalView : public View { @@ -819,16 +774,72 @@ TEST_F(FocusManagerTest, StoreFocusedView) { View view; GetFocusManager()->SetFocusedView(&view); GetFocusManager()->StoreFocusedView(false); + EXPECT_EQ(NULL, GetFocusManager()->GetFocusedView()); EXPECT_TRUE(GetFocusManager()->RestoreFocusedView()); EXPECT_EQ(&view, GetFocusManager()->GetStoredFocusView()); // Repeat with |true|. GetFocusManager()->SetFocusedView(&view); GetFocusManager()->StoreFocusedView(true); + EXPECT_EQ(NULL, GetFocusManager()->GetFocusedView()); EXPECT_TRUE(GetFocusManager()->RestoreFocusedView()); EXPECT_EQ(&view, GetFocusManager()->GetStoredFocusView()); } +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, TextInputClient) { + 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(text_input_client, + text_input_focus_manager->GetFocusedTextInputClient()); + + // Repeat with |true|. + 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(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 { // Trivial WidgetDelegate implementation that allows setting return value of -- cgit v1.2.3