diff options
author | shuchen <shuchen@chromium.org> | 2015-06-15 08:07:20 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-15 15:08:50 +0000 |
commit | 4e09795ae7eaacce866f0de33a0c9a3c89e4464e (patch) | |
tree | 29ffa2206414bf4f996ebb8f560d352bd6d1939e | |
parent | 3634509ac780f4277e1ba708231270360539592b (diff) | |
download | chromium_src-4e09795ae7eaacce866f0de33a0c9a3c89e4464e.zip chromium_src-4e09795ae7eaacce866f0de33a0c9a3c89e4464e.tar.gz chromium_src-4e09795ae7eaacce866f0de33a0c9a3c89e4464e.tar.bz2 |
Removes TextInputFocusManager.
TextInputFocusManager can be removed with the effort of IMF refactoring.
Actually the bugs that TextInputFocusManager was trying to fix have been fixed
already by IMF refactoring.
TBR=sky@chromium.org
BUG=474828
TEST=Trybots.
Review URL: https://codereview.chromium.org/1182523003
Cr-Commit-Position: refs/heads/master@{#334379}
31 files changed, 30 insertions, 625 deletions
diff --git a/ash/root_window_controller_unittest.cc b/ash/root_window_controller_unittest.cc index 412fecd..8189581 100644 --- a/ash/root_window_controller_unittest.cc +++ b/ash/root_window_controller_unittest.cc @@ -30,8 +30,6 @@ #include "ui/base/ime/dummy_text_input_client.h" #include "ui/base/ime/input_method.h" #include "ui/base/ime/text_input_client.h" -#include "ui/base/ime/text_input_focus_manager.h" -#include "ui/base/ui_base_switches_util.h" #include "ui/events/test/event_generator.h" #include "ui/events/test/test_event_handler.h" #include "ui/keyboard/keyboard_controller_proxy.h" @@ -902,12 +900,7 @@ TEST_F(VirtualKeyboardRootWindowControllerTest, EnsureCaretInWorkArea) { MockTextInputClient text_input_client; ui::InputMethod* input_method = proxy->GetInputMethod(); ASSERT_TRUE(input_method); - if (switches::IsTextInputFocusManagerEnabled()) { - ui::TextInputFocusManager::GetInstance()->FocusTextInputClient( - &text_input_client); - } else { - input_method->SetFocusedTextInputClient(&text_input_client); - } + input_method->SetFocusedTextInputClient(&text_input_client); aura::Window* root_window = Shell::GetPrimaryRootWindow(); aura::Window* keyboard_container = @@ -928,12 +921,7 @@ TEST_F(VirtualKeyboardRootWindowControllerTest, EnsureCaretInWorkArea) { ASSERT_EQ(root_window->bounds().height() - keyboard_height, text_input_client.visible_rect().height()); - if (switches::IsTextInputFocusManagerEnabled()) { - ui::TextInputFocusManager::GetInstance()->BlurTextInputClient( - &text_input_client); - } else { - input_method->SetFocusedTextInputClient(NULL); - } + input_method->SetFocusedTextInputClient(NULL); } // Tests that the virtual keyboard does not block context menus. The virtual diff --git a/ash/wm/workspace/workspace_layout_manager_unittest.cc b/ash/wm/workspace/workspace_layout_manager_unittest.cc index 84a2251..63826fc 100644 --- a/ash/wm/workspace/workspace_layout_manager_unittest.cc +++ b/ash/wm/workspace/workspace_layout_manager_unittest.cc @@ -29,8 +29,6 @@ #include "ui/aura/window_event_dispatcher.h" #include "ui/base/ime/dummy_text_input_client.h" #include "ui/base/ime/input_method.h" -#include "ui/base/ime/text_input_focus_manager.h" -#include "ui/base/ui_base_switches_util.h" #include "ui/base/ui_base_types.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/screen.h" @@ -1014,27 +1012,17 @@ class WorkspaceLayoutManagerKeyboardTest : public test::AshTestBase { } void Focus(ui::TextInputClient* text_input_client) { - if (switches::IsTextInputFocusManagerEnabled()) { - ui::TextInputFocusManager::GetInstance()->FocusTextInputClient( - text_input_client); - } else { - aura::Window* root_window = - ash::Shell::GetInstance()->GetPrimaryRootWindow(); - ui::InputMethod* input_method = root_window->GetHost()->GetInputMethod(); - input_method->SetFocusedTextInputClient(text_input_client); - } + aura::Window* root_window = + ash::Shell::GetInstance()->GetPrimaryRootWindow(); + ui::InputMethod* input_method = root_window->GetHost()->GetInputMethod(); + input_method->SetFocusedTextInputClient(text_input_client); } void Blur(ui::TextInputClient* text_input_client) { - if (switches::IsTextInputFocusManagerEnabled()) { - ui::TextInputFocusManager::GetInstance()->BlurTextInputClient( - text_input_client); - } else { - aura::Window* root_window = - ash::Shell::GetInstance()->GetPrimaryRootWindow(); - ui::InputMethod* input_method = root_window->GetHost()->GetInputMethod(); - input_method->SetFocusedTextInputClient(NULL); - } + aura::Window* root_window = + ash::Shell::GetInstance()->GetPrimaryRootWindow(); + ui::InputMethod* input_method = root_window->GetHost()->GetInputMethod(); + input_method->SetFocusedTextInputClient(NULL); } private: diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index d5833fe..53aa529 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -6758,12 +6758,6 @@ Keep your key file in a safe place. You will need it to create new versions of y <message name="IDS_FLAGS_ENABLE_APPS_FILE_ASSOCIATIONS_DESCRIPTION" desc="Description for a flag to enable file associations for Chrome Apps."> Enable OS integration of file associations for Chrome Apps. </message> - <message name="IDS_FLAGS_TEXT_INPUT_FOCUS_MANAGER_NAME" desc="Title for the flag to enable the new text input focus manager."> - Experimental text input focus manager. - </message> - <message name="IDS_FLAGS_TEXT_INPUT_FOCUS_MANAGER_DESCRIPTION" desc="Description for the flag to enable the new text input focus manager."> - Enable an experimental focus manager to track text input clients. - </message> <message name="IDS_FLAGS_ENABLE_HARFBUZZ_RENDERTEXT_NAME" desc="Name of the about:flags HarfBuzz RenderText experiment."> Enable HarfBuzz for UI text. </message> diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc index 0aeb725..7e9bf2a 100644 --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc @@ -1615,14 +1615,6 @@ const Experiment kExperiments[] = { IDS_FLAGS_EXTENSION_CONTENT_VERIFICATION_DESCRIPTION, kOsDesktop, MULTI_VALUE_TYPE(kExtensionContentVerificationChoices)}, -#if defined(USE_AURA) - {"text-input-focus-manager", - IDS_FLAGS_TEXT_INPUT_FOCUS_MANAGER_NAME, - IDS_FLAGS_TEXT_INPUT_FOCUS_MANAGER_DESCRIPTION, - kOsCrOS | kOsLinux | kOsWin, - ENABLE_DISABLE_VALUE_TYPE(switches::kEnableTextInputFocusManager, - switches::kDisableTextInputFocusManager)}, -#endif #if defined(ENABLE_EXTENSIONS) {"extension-active-script-permission", IDS_FLAGS_USER_CONSENT_FOR_EXTENSION_SCRIPTS_NAME, diff --git a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc index 7409b6b..caf108a 100644 --- a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc +++ b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc @@ -83,7 +83,6 @@ #include "ui/base/ime/chromeos/extension_ime_util.h" #include "ui/base/ime/chromeos/input_method_manager.h" #include "ui/base/resource/resource_bundle.h" -#include "ui/base/ui_base_switches_util.h" #include "ui/compositor/layer.h" #include "ui/compositor/layer_animation_observer.h" #include "ui/compositor/scoped_layer_animation_settings.h" @@ -973,8 +972,6 @@ void LoginDisplayHostImpl::ShowWebUI() { VLOG(1) << "Login WebUI >> Show already initialized UI"; login_window_->Show(); login_view_->GetWebContents()->Focus(); - if (::switches::IsTextInputFocusManagerEnabled()) - login_view_->RequestFocus(); login_view_->SetStatusAreaVisible(status_area_saved_visibility_); login_view_->OnPostponedShow(); diff --git a/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc b/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc index 592bd3d..af5bb96 100644 --- a/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc +++ b/chrome/browser/ui/views/omnibox/omnibox_view_views_browsertest.cc @@ -20,13 +20,13 @@ #include "chrome/test/base/interactive_test_utils.h" #include "ui/base/clipboard/clipboard.h" #include "ui/base/clipboard/scoped_clipboard_writer.h" -#include "ui/base/ime/text_input_focus_manager.h" #include "ui/base/test/ui_controls.h" #include "ui/base/ui_base_switches.h" #include "ui/events/event_processor.h" #include "ui/events/event_utils.h" #include "ui/events/test/event_generator.h" #include "ui/views/controls/textfield/textfield_test_api.h" +#include "ui/views/ime/input_method.h" namespace { @@ -376,18 +376,12 @@ IN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest, } IN_PROC_BROWSER_TEST_F(OmniboxViewViewsTest, FocusedTextInputClient) { - base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); - cmd_line->AppendSwitch(switches::kEnableTextInputFocusManager); - - // TODO(yukishiino): The following call to FocusLocationBar is not necessary - // if the flag is enabled by default. Remove the call once the transition to - // TextInputFocusManager completes. chrome::FocusLocationBar(browser()); OmniboxView* view = NULL; ASSERT_NO_FATAL_FAILURE(GetOmniboxViewForBrowser(browser(), &view)); OmniboxViewViews* omnibox_view_views = static_cast<OmniboxViewViews*>(view); - ui::TextInputFocusManager* text_input_focus_manager = - ui::TextInputFocusManager::GetInstance(); + views::InputMethod* input_method = + omnibox_view_views->GetWidget()->GetInputMethod(); EXPECT_EQ(omnibox_view_views->GetTextInputClient(), - text_input_focus_manager->GetFocusedTextInputClient()); + input_method->GetTextInputClient()); } diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index 84f12f1..43a824b 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -1016,7 +1016,6 @@ ], # Cross-platform views interactive tests ready for toolkit-views on Mac. 'chrome_interactive_ui_test_views_sources': [ - '../ui/views/controls/webview/webview_interactive_uitest.cc', '../ui/views/corewm/desktop_capture_controller_unittest.cc', '../ui/views/widget/desktop_aura/desktop_window_tree_host_x11_interactive_uitest.cc', '../ui/views/widget/desktop_aura/x11_topmost_window_finder_interactive_uitest.cc', diff --git a/ui/base/ime/BUILD.gn b/ui/base/ime/BUILD.gn index 99e4aae..5125aa2 100644 --- a/ui/base/ime/BUILD.gn +++ b/ui/base/ime/BUILD.gn @@ -89,8 +89,6 @@ component("ime") { "remote_input_method_win.h", "text_input_client.cc", "text_input_client.h", - "text_input_focus_manager.cc", - "text_input_focus_manager.h", "text_input_type.h", "ui_base_ime_export.h", "win/imm32_manager.cc", diff --git a/ui/base/ime/input_method_base.cc b/ui/base/ime/input_method_base.cc index b117a08..dc85619 100644 --- a/ui/base/ime/input_method_base.cc +++ b/ui/base/ime/input_method_base.cc @@ -10,8 +10,6 @@ #include "ui/base/ime/input_method_delegate.h" #include "ui/base/ime/input_method_observer.h" #include "ui/base/ime/text_input_client.h" -#include "ui/base/ime/text_input_focus_manager.h" -#include "ui/base/ui_base_switches_util.h" #include "ui/events/event.h" namespace ui { @@ -51,9 +49,6 @@ void InputMethodBase::DetachTextInputClient(TextInputClient* client) { } TextInputClient* InputMethodBase::GetTextInputClient() const { - if (switches::IsTextInputFocusManagerEnabled()) - return TextInputFocusManager::GetInstance()->GetFocusedTextInputClient(); - return system_toplevel_window_focused_ ? text_input_client_ : NULL; } @@ -132,9 +127,6 @@ void InputMethodBase::NotifyTextInputCaretBoundsChanged( void InputMethodBase::SetFocusedTextInputClientInternal( TextInputClient* client) { - if (switches::IsTextInputFocusManagerEnabled()) - return; - TextInputClient* old = text_input_client_; if (old == client) return; diff --git a/ui/base/ime/input_method_base_unittest.cc b/ui/base/ime/input_method_base_unittest.cc index 55db6f9..3e9ae87 100644 --- a/ui/base/ime/input_method_base_unittest.cc +++ b/ui/base/ime/input_method_base_unittest.cc @@ -12,8 +12,6 @@ #include "testing/gtest/include/gtest/gtest.h" #include "ui/base/ime/dummy_text_input_client.h" #include "ui/base/ime/input_method_observer.h" -#include "ui/base/ime/text_input_focus_manager.h" -#include "ui/base/ui_base_switches_util.h" #include "ui/events/event.h" namespace ui { @@ -54,15 +52,9 @@ class ClientChangeVerifier { // Verifies the result satisfies the expectation or not. void Verify() { - if (switches::IsTextInputFocusManagerEnabled()) { - EXPECT_FALSE(on_will_change_focused_client_called_); - EXPECT_FALSE(on_did_change_focused_client_called_); - EXPECT_FALSE(on_text_input_state_changed_); - } else { - EXPECT_EQ(call_expected_, on_will_change_focused_client_called_); - EXPECT_EQ(call_expected_, on_did_change_focused_client_called_); - EXPECT_EQ(call_expected_, on_text_input_state_changed_); - } + EXPECT_EQ(call_expected_, on_will_change_focused_client_called_); + EXPECT_EQ(call_expected_, on_did_change_focused_client_called_); + EXPECT_EQ(call_expected_, on_text_input_state_changed_); } void OnWillChangeFocusedClient(TextInputClient* focused_before, @@ -203,12 +195,7 @@ typedef ScopedObserver<InputMethod, InputMethodObserver> void SetFocusedTextInputClient(InputMethod* input_method, TextInputClient* text_input_client) { - if (switches::IsTextInputFocusManagerEnabled()) { - TextInputFocusManager::GetInstance()->FocusTextInputClient( - text_input_client); - } else { - input_method->SetFocusedTextInputClient(text_input_client); - } + input_method->SetFocusedTextInputClient(text_input_client); } TEST_F(InputMethodBaseTest, SetFocusedTextInputClient) { @@ -271,10 +258,6 @@ TEST_F(InputMethodBaseTest, SetFocusedTextInputClient) { } TEST_F(InputMethodBaseTest, DetachTextInputClient) { - // DetachTextInputClient is not supported when IsTextInputFocusManagerEnabled. - if (switches::IsTextInputFocusManagerEnabled()) - return; - DummyTextInputClient text_input_client; DummyTextInputClient text_input_client_the_other; diff --git a/ui/base/ime/input_method_chromeos_unittest.cc b/ui/base/ime/input_method_chromeos_unittest.cc index aa4ac76..8593924 100644 --- a/ui/base/ime/input_method_chromeos_unittest.cc +++ b/ui/base/ime/input_method_chromeos_unittest.cc @@ -23,8 +23,6 @@ #include "ui/base/ime/dummy_text_input_client.h" #include "ui/base/ime/input_method_delegate.h" #include "ui/base/ime/text_input_client.h" -#include "ui/base/ime/text_input_focus_manager.h" -#include "ui/base/ui_base_switches_util.h" #include "ui/events/event.h" #include "ui/events/event_utils.h" #include "ui/events/keycodes/dom/dom_code.h" @@ -220,19 +218,12 @@ class InputMethodChromeOSTest : public internal::InputMethodDelegate, mock_ime_candidate_window_handler_.get()); ime_.reset(new TestableInputMethodChromeOS(this)); - if (switches::IsTextInputFocusManagerEnabled()) - TextInputFocusManager::GetInstance()->FocusTextInputClient(this); - else - ime_->SetFocusedTextInputClient(this); + ime_->SetFocusedTextInputClient(this); } void TearDown() override { - if (ime_.get()) { - if (switches::IsTextInputFocusManagerEnabled()) - TextInputFocusManager::GetInstance()->BlurTextInputClient(this); - else - ime_->SetFocusedTextInputClient(NULL); - } + if (ime_.get()) + ime_->SetFocusedTextInputClient(NULL); ime_.reset(); chromeos::IMEBridge::Get()->SetCurrentEngineHandler(NULL); chromeos::IMEBridge::Get()->SetCandidateWindowHandler(NULL); @@ -377,30 +368,21 @@ TEST_F(InputMethodChromeOSTest, CanComposeInline) { TEST_F(InputMethodChromeOSTest, GetTextInputClient) { ime_->OnFocus(); EXPECT_EQ(this, ime_->GetTextInputClient()); - if (switches::IsTextInputFocusManagerEnabled()) - TextInputFocusManager::GetInstance()->BlurTextInputClient(this); - else - ime_->SetFocusedTextInputClient(NULL); + ime_->SetFocusedTextInputClient(NULL); EXPECT_EQ(NULL, ime_->GetTextInputClient()); } TEST_F(InputMethodChromeOSTest, GetInputTextType_WithoutFocusedClient) { ime_->OnFocus(); EXPECT_EQ(TEXT_INPUT_TYPE_NONE, ime_->GetTextInputType()); - if (switches::IsTextInputFocusManagerEnabled()) - TextInputFocusManager::GetInstance()->BlurTextInputClient(this); - else - ime_->SetFocusedTextInputClient(NULL); + ime_->SetFocusedTextInputClient(NULL); input_type_ = TEXT_INPUT_TYPE_PASSWORD; ime_->OnTextInputTypeChanged(this); // The OnTextInputTypeChanged() call above should be ignored since |this| is // not the current focused client. EXPECT_EQ(TEXT_INPUT_TYPE_NONE, ime_->GetTextInputType()); - if (switches::IsTextInputFocusManagerEnabled()) - TextInputFocusManager::GetInstance()->FocusTextInputClient(this); - else - ime_->SetFocusedTextInputClient(this); + ime_->SetFocusedTextInputClient(this); ime_->OnTextInputTypeChanged(this); EXPECT_EQ(TEXT_INPUT_TYPE_PASSWORD, ime_->GetTextInputType()); } @@ -408,28 +390,19 @@ TEST_F(InputMethodChromeOSTest, GetInputTextType_WithoutFocusedClient) { TEST_F(InputMethodChromeOSTest, GetInputTextType_WithoutFocusedWindow) { ime_->OnFocus(); EXPECT_EQ(TEXT_INPUT_TYPE_NONE, ime_->GetTextInputType()); - if (switches::IsTextInputFocusManagerEnabled()) - TextInputFocusManager::GetInstance()->BlurTextInputClient(this); - else - ime_->OnBlur(); + ime_->OnBlur(); input_type_ = TEXT_INPUT_TYPE_PASSWORD; ime_->OnTextInputTypeChanged(this); // The OnTextInputTypeChanged() call above should be ignored since the top- // level window which the ime_ is attached to is not currently focused. EXPECT_EQ(TEXT_INPUT_TYPE_NONE, ime_->GetTextInputType()); - if (switches::IsTextInputFocusManagerEnabled()) - TextInputFocusManager::GetInstance()->FocusTextInputClient(this); - else - ime_->OnFocus(); + ime_->OnFocus(); ime_->OnTextInputTypeChanged(this); EXPECT_EQ(TEXT_INPUT_TYPE_PASSWORD, ime_->GetTextInputType()); } TEST_F(InputMethodChromeOSTest, GetInputTextType_WithoutFocusedWindow2) { - if (switches::IsTextInputFocusManagerEnabled()) - return; - EXPECT_EQ(TEXT_INPUT_TYPE_NONE, ime_->GetTextInputType()); input_type_ = TEXT_INPUT_TYPE_PASSWORD; ime_->OnTextInputTypeChanged(this); @@ -540,10 +513,6 @@ TEST_F(InputMethodChromeOSTest, Focus_Scenario) { EXPECT_EQ(TEXT_INPUT_MODE_KANA, mock_ime_engine_handler_->last_text_input_context().mode); - // When IsTextInputFocusManagerEnabled, InputMethod::SetFocusedTextInputClient - // is not supported and it's no-op. - if (switches::IsTextInputFocusManagerEnabled()) - return; // Confirm that FocusOut is called when set focus to NULL client. ime_->SetFocusedTextInputClient(NULL); EXPECT_EQ(3, mock_ime_engine_handler_->focus_in_call_count()); diff --git a/ui/base/ime/mock_input_method.cc b/ui/base/ime/mock_input_method.cc index 6a93643..046942a 100644 --- a/ui/base/ime/mock_input_method.cc +++ b/ui/base/ime/mock_input_method.cc @@ -5,8 +5,6 @@ #include "ui/base/ime/mock_input_method.h" #include "ui/base/ime/input_method_delegate.h" -#include "ui/base/ime/text_input_focus_manager.h" -#include "ui/base/ui_base_switches_util.h" #include "ui/events/event.h" namespace ui { @@ -25,9 +23,6 @@ void MockInputMethod::SetDelegate(internal::InputMethodDelegate* delegate) { } void MockInputMethod::SetFocusedTextInputClient(TextInputClient* client) { - if (switches::IsTextInputFocusManagerEnabled()) - return; - if (text_input_client_ == client) return; text_input_client_ = client; @@ -42,9 +37,6 @@ void MockInputMethod::DetachTextInputClient(TextInputClient* client) { } TextInputClient* MockInputMethod::GetTextInputClient() const { - if (switches::IsTextInputFocusManagerEnabled()) - return TextInputFocusManager::GetInstance()->GetFocusedTextInputClient(); - return text_input_client_; } diff --git a/ui/base/ime/text_input_focus_manager.cc b/ui/base/ime/text_input_focus_manager.cc deleted file mode 100644 index 25033d8..0000000 --- a/ui/base/ime/text_input_focus_manager.cc +++ /dev/null @@ -1,45 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ui/base/ime/text_input_focus_manager.h" - -#include "base/logging.h" -#include "base/memory/singleton.h" - -namespace ui { - -// TODO(sky): reenable these DCHECKs. We're in the process of enabling usage -// of views from multiple threads and this causes problems. See -// http://crbug.com/388045 for details. - -TextInputFocusManager* TextInputFocusManager::GetInstance() { - TextInputFocusManager* instance = Singleton<TextInputFocusManager>::get(); - // DCHECK(instance->thread_checker_.CalledOnValidThread()); - return instance; -} - -TextInputClient* TextInputFocusManager::GetFocusedTextInputClient() { - // DCHECK(thread_checker_.CalledOnValidThread()); - return focused_text_input_client_; -} - -void TextInputFocusManager::FocusTextInputClient( - TextInputClient* text_input_client) { - // DCHECK(thread_checker_.CalledOnValidThread()); - focused_text_input_client_ = text_input_client; -} - -void TextInputFocusManager::BlurTextInputClient( - TextInputClient* text_input_client) { - // DCHECK(thread_checker_.CalledOnValidThread()); - if (focused_text_input_client_ == text_input_client) - focused_text_input_client_ = NULL; -} - -TextInputFocusManager::TextInputFocusManager() - : focused_text_input_client_(NULL) {} - -TextInputFocusManager::~TextInputFocusManager() {} - -} // namespace ui diff --git a/ui/base/ime/text_input_focus_manager.h b/ui/base/ime/text_input_focus_manager.h deleted file mode 100644 index 88bf3fc..0000000 --- a/ui/base/ime/text_input_focus_manager.h +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef UI_BASE_IME_TEXT_INPUT_FOCUS_MANAGER_H_ -#define UI_BASE_IME_TEXT_INPUT_FOCUS_MANAGER_H_ - -#include "base/macros.h" -#include "base/threading/thread_checker.h" -#include "ui/base/ime/ui_base_ime_export.h" - -template <typename T> struct DefaultSingletonTraits; - -namespace ui { - -class TextInputClient; - -// Manages the focused TextInputClient across windows and their contents. -class UI_BASE_IME_EXPORT TextInputFocusManager { - public: - static TextInputFocusManager* GetInstance(); - - // Returns the currently focused text input client or NULL. - TextInputClient* GetFocusedTextInputClient(); - - // Changes the text input focus to |text_input_client|. - void FocusTextInputClient(TextInputClient* text_input_client); - - // Removes the text input focus from |text_input_client|. If - // |text_input_client| was not focused, does nothing. - void BlurTextInputClient(TextInputClient* text_input_client); - - private: - friend struct DefaultSingletonTraits<TextInputFocusManager>; - - TextInputFocusManager(); - ~TextInputFocusManager(); - - TextInputClient* focused_text_input_client_; - base::ThreadChecker thread_checker_; - - DISALLOW_COPY_AND_ASSIGN(TextInputFocusManager); -}; - -} // namespace ui - -#endif // UI_BASE_IME_TEXT_INPUT_FOCUS_MANAGER_H_ diff --git a/ui/base/ime/ui_base_ime.gyp b/ui/base/ime/ui_base_ime.gyp index 65134f7..b612984 100644 --- a/ui/base/ime/ui_base_ime.gyp +++ b/ui/base/ime/ui_base_ime.gyp @@ -110,8 +110,6 @@ 'remote_input_method_win.h', 'text_input_client.cc', 'text_input_client.h', - 'text_input_focus_manager.cc', - 'text_input_focus_manager.h', 'text_input_type.h', 'ui_base_ime_export.h', 'win/imm32_manager.cc', diff --git a/ui/base/ui_base_switches.cc b/ui/base/ui_base_switches.cc index e26b882..f3682da 100644 --- a/ui/base/ui_base_switches.cc +++ b/ui/base/ui_base_switches.cc @@ -22,9 +22,6 @@ const char kDisableDwmComposition[] = "disable-dwm-composition"; // Disables large icons on the New Tab page. const char kDisableIconNtp[] = "disable-icon-ntp"; -// Disables an experimental focus manager to track text input clients. -const char kDisableTextInputFocusManager[] = "disable-text-input-focus-manager"; - // Disables touch adjustment. const char kDisableTouchAdjustment[] = "disable-touch-adjustment"; @@ -44,9 +41,6 @@ const char kEnableIconNtp[] = "enable-icon-ntp"; const char kEnableLinkDisambiguationPopup[] = "enable-link-disambiguation-popup"; -// Enables an experimental focus manager to track text input clients. -const char kEnableTextInputFocusManager[] = "enable-text-input-focus-manager"; - // Enables touch event based drag and drop. const char kEnableTouchDragDrop[] = "enable-touch-drag-drop"; diff --git a/ui/base/ui_base_switches.h b/ui/base/ui_base_switches.h index eddf34f..7541bad 100644 --- a/ui/base/ui_base_switches.h +++ b/ui/base/ui_base_switches.h @@ -19,14 +19,12 @@ UI_BASE_EXPORT extern const char kEnableNSGLSurfaces[]; UI_BASE_EXPORT extern const char kDisableDwmComposition[]; UI_BASE_EXPORT extern const char kDisableIconNtp[]; -UI_BASE_EXPORT extern const char kDisableTextInputFocusManager[]; UI_BASE_EXPORT extern const char kDisableTouchAdjustment[]; UI_BASE_EXPORT extern const char kDisableTouchDragDrop[]; UI_BASE_EXPORT extern const char kDisableTouchEditing[]; UI_BASE_EXPORT extern const char kDisableTouchFeedback[]; UI_BASE_EXPORT extern const char kEnableIconNtp[]; UI_BASE_EXPORT extern const char kEnableLinkDisambiguationPopup[]; -UI_BASE_EXPORT extern const char kEnableTextInputFocusManager[]; UI_BASE_EXPORT extern const char kEnableTouchDragDrop[]; UI_BASE_EXPORT extern const char kEnableTouchEditing[]; UI_BASE_EXPORT extern const char kLang[]; diff --git a/ui/base/ui_base_switches_util.cc b/ui/base/ui_base_switches_util.cc index 6dcb9ef..e529a7c 100644 --- a/ui/base/ui_base_switches_util.cc +++ b/ui/base/ui_base_switches_util.cc @@ -21,11 +21,6 @@ bool IsLinkDisambiguationPopupEnabled() { #endif } -bool IsTextInputFocusManagerEnabled() { - return base::CommandLine::ForCurrentProcess()->HasSwitch( - switches::kEnableTextInputFocusManager); -} - bool IsTouchDragDropEnabled() { #if defined(OS_CHROMEOS) return !base::CommandLine::ForCurrentProcess()->HasSwitch( diff --git a/ui/base/ui_base_switches_util.h b/ui/base/ui_base_switches_util.h index 213aed6..fe6c289 100644 --- a/ui/base/ui_base_switches_util.h +++ b/ui/base/ui_base_switches_util.h @@ -10,7 +10,6 @@ namespace switches { UI_BASE_EXPORT bool IsLinkDisambiguationPopupEnabled(); -UI_BASE_EXPORT bool IsTextInputFocusManagerEnabled(); UI_BASE_EXPORT bool IsTouchDragDropEnabled(); UI_BASE_EXPORT bool IsTouchEditingEnabled(); UI_BASE_EXPORT bool IsTouchFeedbackEnabled(); diff --git a/ui/keyboard/keyboard_controller_unittest.cc b/ui/keyboard/keyboard_controller_unittest.cc index 640e7f7..116e43e 100644 --- a/ui/keyboard/keyboard_controller_unittest.cc +++ b/ui/keyboard/keyboard_controller_unittest.cc @@ -19,8 +19,6 @@ #include "ui/base/ime/input_method.h" #include "ui/base/ime/input_method_factory.h" #include "ui/base/ime/text_input_client.h" -#include "ui/base/ime/text_input_focus_manager.h" -#include "ui/base/ui_base_switches_util.h" #include "ui/compositor/compositor.h" #include "ui/compositor/layer_type.h" #include "ui/compositor/scoped_animation_duration_scale_mode.h" @@ -185,8 +183,6 @@ class KeyboardControllerTest : public testing::Test, aura_test_helper_->SetUp(context_factory); new wm::DefaultActivationClient(aura_test_helper_->root_window()); ui::SetUpInputMethodFactoryForTesting(); - if (::switches::IsTextInputFocusManagerEnabled()) - ui::TextInputFocusManager::GetInstance()->FocusTextInputClient(NULL); focus_controller_.reset(new TestFocusController(root_window())); proxy_ = new TestKeyboardControllerProxy(); controller_.reset(new KeyboardController(proxy_)); @@ -197,8 +193,6 @@ class KeyboardControllerTest : public testing::Test, controller()->RemoveObserver(this); controller_.reset(); focus_controller_.reset(); - if (::switches::IsTextInputFocusManagerEnabled()) - ui::TextInputFocusManager::GetInstance()->FocusTextInputClient(NULL); aura_test_helper_->TearDown(); ui::TerminateContextFactoryForTests(); } @@ -235,12 +229,7 @@ class KeyboardControllerTest : public testing::Test, void SetFocus(ui::TextInputClient* client) { ui::InputMethod* input_method = proxy()->GetInputMethod(); - if (::switches::IsTextInputFocusManagerEnabled()) { - ui::TextInputFocusManager::GetInstance()->FocusTextInputClient(client); - input_method->OnTextInputTypeChanged(client); - } else { - input_method->SetFocusedTextInputClient(client); - } + input_method->SetFocusedTextInputClient(client); if (client && client->GetTextInputType() != ui::TEXT_INPUT_TYPE_NONE) { input_method->ShowImeIfNeeded(); if (proxy_->GetKeyboardWindow()->bounds().height() == 0) { diff --git a/ui/views/cocoa/bridged_native_widget.mm b/ui/views/cocoa/bridged_native_widget.mm index a465d24..c5fa0a2 100644 --- a/ui/views/cocoa/bridged_native_widget.mm +++ b/ui/views/cocoa/bridged_native_widget.mm @@ -15,7 +15,6 @@ #include "ui/base/hit_test.h" #include "ui/base/ime/input_method.h" #include "ui/base/ime/input_method_factory.h" -#include "ui/base/ui_base_switches_util.h" #include "ui/gfx/display.h" #include "ui/gfx/geometry/dip_util.h" #import "ui/gfx/mac/coordinate_conversion.h" @@ -709,9 +708,6 @@ void BridgedNativeWidget::OnSizeConstraintsChanged() { } InputMethod* BridgedNativeWidget::CreateInputMethod() { - if (switches::IsTextInputFocusManagerEnabled()) - return new NullInputMethod(); - return new InputMethodBridge(this, GetHostInputMethod(), true); } diff --git a/ui/views/controls/webview/webview.cc b/ui/views/controls/webview/webview.cc index 059540a..adeeadc 100644 --- a/ui/views/controls/webview/webview.cc +++ b/ui/views/controls/webview/webview.cc @@ -14,7 +14,6 @@ #include "ipc/ipc_message.h" #include "ui/accessibility/ax_enums.h" #include "ui/accessibility/ax_view_state.h" -#include "ui/base/ui_base_switches_util.h" #include "ui/events/event.h" #include "ui/views/controls/native/native_view_host.h" #include "ui/views/focus/focus_manager.h" @@ -111,21 +110,6 @@ const char* WebView::GetClassName() const { } ui::TextInputClient* WebView::GetTextInputClient() { - // This function delegates the text input handling to the underlying - // content::RenderWidgetHostView. So when the underlying RWHV is destroyed or - // replaced with another one, we have to notify the FocusManager through - // FocusManager::OnTextInputClientChanged() that the focused TextInputClient - // needs to be updated. - if (switches::IsTextInputFocusManagerEnabled() && - web_contents() && !web_contents()->IsBeingDestroyed()) { - const content::RenderViewHost* host = web_contents()->GetRenderViewHost(); - content::RenderWidgetHostView* host_view = - is_embedding_fullscreen_widget_ ? - web_contents()->GetFullscreenRenderWidgetHostView() : - web_contents()->GetRenderWidgetHostView(); - if (host && host->IsRenderViewLive() && host_view) - return host_view->GetTextInputClient(); - } return NULL; } @@ -393,11 +377,6 @@ void WebView::ReattachForFullscreenChange(bool enter_fullscreen) { } void WebView::NotifyMaybeTextInputClientAndAccessibilityChanged() { - // Update the TextInputClient as needed; see GetTextInputClient(). - FocusManager* const focus_manager = GetFocusManager(); - if (focus_manager) - focus_manager->OnTextInputClientChanged(this); - #if defined(OS_CHROMEOS) if (web_contents()) NotifyAccessibilityEvent(ui::AX_EVENT_CHILDREN_CHANGED, false); diff --git a/ui/views/controls/webview/webview_interactive_uitest.cc b/ui/views/controls/webview/webview_interactive_uitest.cc deleted file mode 100644 index a15dfaa..0000000 --- a/ui/views/controls/webview/webview_interactive_uitest.cc +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2014 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "ui/views/controls/webview/webview.h" - -#include "base/command_line.h" -#include "base/memory/scoped_ptr.h" -#include "content/public/browser/web_contents.h" -#include "content/public/test/mock_render_process_host.h" -#include "content/public/test/test_browser_context.h" -#include "content/public/test/test_browser_thread.h" -#include "content/public/test/test_renderer_host.h" -#include "content/public/test/web_contents_tester.h" -#include "ui/base/ime/text_input_focus_manager.h" -#include "ui/base/ui_base_switches.h" -#include "ui/gl/gl_surface.h" -#include "ui/views/test/test_views_delegate.h" -#include "ui/views/test/webview_test_helper.h" -#include "ui/views/test/widget_test.h" - -namespace { - -class WebViewTestViewsDelegate : public views::TestViewsDelegate { - public: - WebViewTestViewsDelegate() {} - - // Overriden from TestViewsDelegate. - content::WebContents* CreateWebContents( - content::BrowserContext* browser_context, - content::SiteInstance* site_instance) override { - return content::WebContentsTester::CreateTestWebContents(browser_context, - site_instance); - } - - private: - DISALLOW_COPY_AND_ASSIGN(WebViewTestViewsDelegate); -}; - -class WebViewInteractiveUiTest : public views::test::WidgetTest { - public: - WebViewInteractiveUiTest() - : ui_thread_(content::BrowserThread::UI, base::MessageLoop::current()) {} - - void SetUp() override { - gfx::GLSurface::InitializeOneOffForTests(); - set_views_delegate(make_scoped_ptr(new WebViewTestViewsDelegate)); - WidgetTest::SetUp(); - } - - protected: - content::BrowserContext* browser_context() { return &browser_context_; } - - private: - content::TestBrowserContext browser_context_; - views::WebViewTestHelper webview_test_helper_; - content::TestBrowserThread ui_thread_; - - DISALLOW_COPY_AND_ASSIGN(WebViewInteractiveUiTest); -}; - -TEST_F(WebViewInteractiveUiTest, TextInputClientIsUpToDate) { - // WebViewInteractiveUiTest.TextInputClientIsUpToDate needs - // kEnableTextInputFocusManager flag to be enabled. - base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); - cmd_line->AppendSwitch(switches::kEnableTextInputFocusManager); - - // Create a top level widget and a webview as its content. - views::Widget* widget = CreateTopLevelFramelessPlatformWidget(); - views::WebView* webview = new views::WebView(browser_context()); - widget->SetContentsView(webview); - widget->Show(); - webview->RequestFocus(); - - // Mac needs to spin a run loop to activate. Don't fake it, so that the Widget - // still gets didBecomeKey notifications. There is just one widget, so a - // single spin of the runloop should be enough (it didn't flake in local tests - // but a WidgetObserver might be needed). -#if defined(OS_MACOSX) - RunPendingMessages(); -#endif - EXPECT_TRUE(widget->IsActive()); - - ui::TextInputFocusManager* text_input_focus_manager = - ui::TextInputFocusManager::GetInstance(); - EXPECT_EQ(nullptr, webview->GetTextInputClient()); - EXPECT_EQ(text_input_focus_manager->GetFocusedTextInputClient(), - webview->GetTextInputClient()); - - // Case 1: Creates a new WebContents. - content::WebContents* web_contents1 = webview->GetWebContents(); - web_contents1->GetRenderViewHost()->GetProcess()->Init(); - content::RenderViewHostTester::For(web_contents1->GetRenderViewHost()) - ->CreateTestRenderView(base::string16(), MSG_ROUTING_NONE, - MSG_ROUTING_NONE, -1, false); - webview->RequestFocus(); - ui::TextInputClient* client1 = webview->GetTextInputClient(); - EXPECT_NE(nullptr, client1); - EXPECT_EQ(text_input_focus_manager->GetFocusedTextInputClient(), client1); - - // Case 2: Replaces a WebContents by SetWebContents(). - scoped_ptr<content::WebContents> web_contents2( - content::WebContentsTester::CreateTestWebContents(browser_context(), - nullptr)); - web_contents2->GetRenderViewHost()->GetProcess()->Init(); - content::RenderViewHostTester::For(web_contents2->GetRenderViewHost()) - ->CreateTestRenderView(base::string16(), MSG_ROUTING_NONE, - MSG_ROUTING_NONE, -1, false); - webview->SetWebContents(web_contents2.get()); - ui::TextInputClient* client2 = webview->GetTextInputClient(); - EXPECT_NE(nullptr, client2); - EXPECT_EQ(text_input_focus_manager->GetFocusedTextInputClient(), client2); - EXPECT_NE(client1, client2); - - widget->Close(); - RunPendingMessages(); -} - -} // namespace diff --git a/ui/views/focus/focus_manager.cc b/ui/views/focus/focus_manager.cc index 86acea3c..c84c315 100644 --- a/ui/views/focus/focus_manager.cc +++ b/ui/views/focus/focus_manager.cc @@ -13,8 +13,6 @@ #include "ui/base/accelerators/accelerator.h" #include "ui/base/ime/input_method.h" #include "ui/base/ime/text_input_client.h" -#include "ui/base/ime/text_input_focus_manager.h" -#include "ui/base/ui_base_switches_util.h" #include "ui/events/event.h" #include "ui/events/keycodes/keyboard_codes.h" #include "ui/views/focus/focus_manager_delegate.h" @@ -301,13 +299,8 @@ View* FocusManager::GetNextFocusableView(View* original_starting_view, void FocusManager::SetFocusedViewWithReason( View* view, FocusChangeReason reason) { - if (focused_view_ == view) { - // In the case that the widget lost the focus and gained it back without - // changing the focused view, we have to make the text input client focused. - // TODO(yukishiino): Remove this hack once we fix http://crbug.com/383236 - FocusTextInputClient(focused_view_); + if (focused_view_ == view) return; - } base::AutoReset<bool> auto_changing_focus(&is_changing_focus_, true); // Update the reason for the focus change (since this is checked by @@ -318,18 +311,14 @@ void FocusManager::SetFocusedViewWithReason( View* old_focused_view = focused_view_; focused_view_ = view; - if (old_focused_view) { + if (old_focused_view) old_focused_view->Blur(); - BlurTextInputClient(old_focused_view); - } // Also make |focused_view_| the stored focus view. This way the stored focus // view is remembered if focus changes are requested prior to a show or while // hidden. SetStoredFocusView(focused_view_); - if (focused_view_) { - FocusTextInputClient(focused_view_); + if (focused_view_) focused_view_->Focus(); - } FOR_EACH_OBSERVER(FocusChangeListener, focus_change_listeners_, OnDidChangeFocus(old_focused_view, focused_view_)); @@ -443,46 +432,6 @@ void FocusManager::ClearStoredFocusedView() { SetStoredFocusView(NULL); } -void FocusManager::OnTextInputClientChanged(View* view) { - if (view == focused_view_) - FocusTextInputClient(view); -} - -void FocusManager::FocusTextInputClient(View* view) { - if (!switches::IsTextInputFocusManagerEnabled()) - return; - - // If the widget is not active, do not steal the text input focus. - if (!widget_->IsActive()) - return; - - ui::TextInputClient* text_input_client = - view ? view->GetTextInputClient() : NULL; - ui::TextInputFocusManager::GetInstance()-> - FocusTextInputClient(text_input_client); - ui::InputMethod* input_method = widget_->GetHostInputMethod(); - if (input_method) { - input_method->OnTextInputTypeChanged(text_input_client); - input_method->OnCaretBoundsChanged(text_input_client); - } -} - -void FocusManager::BlurTextInputClient(View* view) { - if (!switches::IsTextInputFocusManagerEnabled()) - return; - - ui::TextInputClient* text_input_client = - view ? view->GetTextInputClient() : NULL; - if (text_input_client && text_input_client->HasCompositionText()) { - text_input_client->ConfirmCompositionText(); - ui::InputMethod* input_method = widget_->GetHostInputMethod(); - if (input_method && input_method->GetTextInputClient() == text_input_client) - input_method->CancelComposition(text_input_client); - } - ui::TextInputFocusManager::GetInstance()-> - BlurTextInputClient(text_input_client); -} - // Find the next (previous if reverse is true) focusable view for the specified // FocusTraversable, starting at the specified view, traversing down the // FocusTraversable hierarchy. diff --git a/ui/views/focus/focus_manager.h b/ui/views/focus/focus_manager.h index 4030158..aa8f66a 100644 --- a/ui/views/focus/focus_manager.h +++ b/ui/views/focus/focus_manager.h @@ -216,15 +216,6 @@ class VIEWS_EXPORT FocusManager { // Returns true if in the process of changing the focused view. bool is_changing_focus() const { return is_changing_focus_; } - // Changes the text input focus to |view->GetTextInputClient()| iff |view| - // is focused. Views must call this method when their internal - // TextInputClient instance changes. - void OnTextInputClientChanged(View* view); - - // Moves the text input focus into/out from |view|. - void FocusTextInputClient(View* view); - void BlurTextInputClient(View* view); - // Disable shortcut handling. void set_shortcut_handling_suspended(bool suspended) { shortcut_handling_suspended_ = suspended; diff --git a/ui/views/focus/focus_manager_unittest.cc b/ui/views/focus/focus_manager_unittest.cc index 007d9fc..5789c5e 100644 --- a/ui/views/focus/focus_manager_unittest.cc +++ b/ui/views/focus/focus_manager_unittest.cc @@ -12,9 +12,6 @@ #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" @@ -796,60 +793,6 @@ TEST_F(FocusManagerTest, StoreFocusedView) { EXPECT_EQ(&view, GetFocusManager()->GetStoredFocusView()); } -class TextInputTestView : public View { - public: - TextInputTestView() {} - - 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 diff --git a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc index dcbd24c..2ee6351 100644 --- a/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc +++ b/ui/views/widget/desktop_aura/desktop_native_widget_aura.cc @@ -16,7 +16,6 @@ #include "ui/aura/window_tree_host.h" #include "ui/base/hit_test.h" #include "ui/base/ime/input_method.h" -#include "ui/base/ui_base_switches_util.h" #include "ui/compositor/layer.h" #include "ui/gfx/canvas.h" #include "ui/gfx/display.h" @@ -629,9 +628,6 @@ bool DesktopNativeWidgetAura::HasCapture() const { } InputMethod* DesktopNativeWidgetAura::CreateInputMethod() { - if (switches::IsTextInputFocusManagerEnabled()) - return new NullInputMethod(); - return new InputMethodBridge(this, GetHostInputMethod(), false); } diff --git a/ui/views/widget/native_widget_aura.cc b/ui/views/widget/native_widget_aura.cc index cf3017b..6c53b2d 100644 --- a/ui/views/widget/native_widget_aura.cc +++ b/ui/views/widget/native_widget_aura.cc @@ -18,7 +18,6 @@ #include "ui/aura/window_observer.h" #include "ui/aura/window_tree_host.h" #include "ui/base/dragdrop/os_exchange_data.h" -#include "ui/base/ui_base_switches_util.h" #include "ui/base/ui_base_types.h" #include "ui/compositor/layer.h" #include "ui/events/event.h" @@ -271,9 +270,6 @@ InputMethod* NativeWidgetAura::CreateInputMethod() { if (!window_) return NULL; - if (switches::IsTextInputFocusManagerEnabled()) - return new NullInputMethod(); - return new InputMethodBridge(this, GetHostInputMethod(), true); } @@ -889,12 +885,6 @@ void NativeWidgetAura::OnKeyEvent(ui::KeyEvent* event) { if (!input_method) return; input_method->DispatchKeyEvent(*event); - if (switches::IsTextInputFocusManagerEnabled()) { - FocusManager* focus_manager = GetWidget()->GetFocusManager(); - delegate_->OnKeyEvent(event); - if (!event->handled() && focus_manager) - focus_manager->OnKeyEvent(*event); - } event->SetHandled(); } diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc index 7f8e076..a573920 100644 --- a/ui/views/widget/widget.cc +++ b/ui/views/widget/widget.cc @@ -1051,19 +1051,6 @@ void Widget::OnNativeWidgetActivationChanged(bool active) { FOR_EACH_OBSERVER(WidgetObserver, observers_, OnWidgetActivationChanged(this, active)); - // During window creation, the widget gets focused without activation, and in - // that case, the focus manager cannot set the appropriate text input client - // because the widget is not active. Thus we have to notify the focus manager - // not only when the focus changes but also when the widget gets activated. - // See crbug.com/377479 for details. - views::FocusManager* focus_manager = GetFocusManager(); - if (focus_manager) { - if (active) - focus_manager->FocusTextInputClient(focus_manager->GetFocusedView()); - else - focus_manager->BlurTextInputClient(focus_manager->GetFocusedView()); - } - if (IsVisible() && non_client_view()) non_client_view()->frame_view()->SchedulePaint(); } diff --git a/ui/wm/core/focus_controller.cc b/ui/wm/core/focus_controller.cc index 1fee190..d062903 100644 --- a/ui/wm/core/focus_controller.cc +++ b/ui/wm/core/focus_controller.cc @@ -10,7 +10,6 @@ #include "ui/aura/client/focus_change_observer.h" #include "ui/aura/env.h" #include "ui/aura/window_tracker.h" -#include "ui/base/ime/text_input_focus_manager.h" #include "ui/events/event.h" #include "ui/wm/core/focus_rules.h" #include "ui/wm/core/window_util.h" @@ -231,14 +230,6 @@ void FocusController::SetFocusedWindow(aura::Window* window) { base::AutoReset<bool> updating_focus(&updating_focus_, true); aura::Window* lost_focus = focused_window_; - // |window| is going to get the focus, so reset the text input client. - // OnWindowFocused() may set a proper text input client if the implementation - // supports text input. - ui::TextInputFocusManager* text_input_focus_manager = - ui::TextInputFocusManager::GetInstance(); - if (window) - text_input_focus_manager->FocusTextInputClient(NULL); - // Allow for the window losing focus to be deleted during dispatch. If it is // deleted pass NULL to observers instead of a deleted window. aura::WindowTracker window_tracker; @@ -270,10 +261,6 @@ void FocusController::SetFocusedWindow(aura::Window* window) { focused_window_, window_tracker.Contains(lost_focus) ? lost_focus : NULL); } - - // Ensure that the text input client is reset when the window loses the focus. - if (!window) - text_input_focus_manager->FocusTextInputClient(NULL); } void FocusController::SetActiveWindow( diff --git a/ui/wm/core/focus_controller_unittest.cc b/ui/wm/core/focus_controller_unittest.cc index a8bddb3..c82e3dd 100644 --- a/ui/wm/core/focus_controller_unittest.cc +++ b/ui/wm/core/focus_controller_unittest.cc @@ -15,8 +15,6 @@ #include "ui/aura/window.h" #include "ui/aura/window_event_dispatcher.h" #include "ui/aura/window_tracker.h" -#include "ui/base/ime/dummy_text_input_client.h" -#include "ui/base/ime/text_input_focus_manager.h" #include "ui/events/event.h" #include "ui/events/event_constants.h" #include "ui/events/event_handler.h" @@ -265,25 +263,6 @@ class ScopedTargetFocusNotificationObserver : public FocusNotificationObserver { DISALLOW_COPY_AND_ASSIGN(ScopedTargetFocusNotificationObserver); }; -class ScopedFocusedTextInputClientChanger - : public ScopedFocusNotificationObserver { - public: - ScopedFocusedTextInputClientChanger(aura::Window* root_window, - ui::TextInputClient* text_input_client) - : ScopedFocusNotificationObserver(root_window), - text_input_client_(text_input_client) {} - - private: - // Overridden from aura::client::FocusChangeObserver: - void OnWindowFocused(aura::Window* gained_focus, - aura::Window* lost_focus) override { - ui::TextInputFocusManager::GetInstance()->FocusTextInputClient( - text_input_client_); - } - - ui::TextInputClient* text_input_client_; -}; - // Used to fake the handling of events in the pre-target phase. class SimpleEventHandler : public ui::EventHandler { public: @@ -486,7 +465,6 @@ class FocusControllerTestBase : public aura::test::AuraTestBase { virtual void FocusChangeDuringDrag() {} virtual void ChangeFocusWhenNothingFocusedAndCaptured() {} virtual void DontPassDeletedWindow() {} - virtual void FocusedTextInputClient() {} private: scoped_ptr<FocusController> focus_controller_; @@ -858,41 +836,6 @@ class FocusControllerDirectTestBase : public FocusControllerTestBase { } } - // Verifies if the focused text input client is cleared when a window gains - // or loses the focus. - void FocusedTextInputClient() override { - ui::TextInputFocusManager* text_input_focus_manager = - ui::TextInputFocusManager::GetInstance(); - ui::DummyTextInputClient text_input_client; - ui::TextInputClient* null_text_input_client = NULL; - - EXPECT_EQ(null_text_input_client, - text_input_focus_manager->GetFocusedTextInputClient()); - - text_input_focus_manager->FocusTextInputClient(&text_input_client); - EXPECT_EQ(&text_input_client, - text_input_focus_manager->GetFocusedTextInputClient()); - FocusWindowById(1); - // The focused text input client gets cleared when a window gets focused - // unless any of observers sets the focused text input client. - EXPECT_EQ(null_text_input_client, - text_input_focus_manager->GetFocusedTextInputClient()); - - ScopedFocusedTextInputClientChanger text_input_focus_changer( - root_window(), &text_input_client); - EXPECT_EQ(null_text_input_client, - text_input_focus_manager->GetFocusedTextInputClient()); - FocusWindowById(2); - // |text_input_focus_changer| sets the focused text input client. - EXPECT_EQ(&text_input_client, - text_input_focus_manager->GetFocusedTextInputClient()); - - FocusWindow(NULL); - // The focused text input client gets cleared when a window loses the focus. - EXPECT_EQ(null_text_input_client, - text_input_focus_manager->GetFocusedTextInputClient()); - } - private: DISALLOW_COPY_AND_ASSIGN(FocusControllerDirectTestBase); }; @@ -1344,10 +1287,6 @@ FOCUS_CONTROLLER_TEST(FocusControllerApiTest, DontPassDeletedWindow); FOCUS_CONTROLLER_TEST(FocusControllerParentHideTest, TransientChildWindowActivationTest); -// - Verifies that the focused text input client is cleard when the window focus -// changes. -ALL_FOCUS_TESTS(FocusedTextInputClient); - // If a mouse event was handled, it should not activate a window. FOCUS_CONTROLLER_TEST(FocusControllerMouseEventTest, IgnoreHandledEvent); |