Commit 4b04564d authored by Bao-Duy Tran's avatar Bao-Duy Tran Committed by Commit Bot

Dependency-inject another delegate into InputMethodManagerImpl.

InputMethodManagerImpl unit tests are failing in certain environment due
to mixed usage of hermetic test data and non-hermetic CrOS-specific prod
data, with inconsistent direct tweaking on an internal delegate.

This refactoring doesn't fix the failures as yet but facilitates the
move towards consistent usage of hermetic test data in follow-ups.

Bug: 970790
Change-Id: I892aeaddf3658c6ab0f2d35ab441a2fa85858c0c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2550146
Commit-Queue: Bao-Duy Tran <tranbaoduy@chromium.org>
Reviewed-by: default avatarKeith Lee <keithlee@chromium.org>
Cr-Commit-Position: refs/heads/master@{#830899}
parent 2e19203e
......@@ -9,6 +9,7 @@
#include "base/bind.h"
#include "base/logging.h"
#include "chrome/browser/chromeos/input_method/accessibility.h"
#include "chrome/browser/chromeos/input_method/component_extension_ime_manager_delegate_impl.h"
#include "chrome/browser/chromeos/input_method/input_method_delegate_impl.h"
#include "chrome/browser/chromeos/input_method/input_method_manager_impl.h"
#include "chrome/browser/chromeos/input_method/input_method_persistence.h"
......@@ -30,7 +31,8 @@ class InputMethodConfiguration {
ui::IMEBridge::Initialize();
auto* impl = new InputMethodManagerImpl(
std::unique_ptr<InputMethodDelegate>(new InputMethodDelegateImpl),
std::make_unique<InputMethodDelegateImpl>(),
std::make_unique<ComponentExtensionIMEManagerDelegateImpl>(),
!g_disable_extension_loading);
InputMethodManager::Initialize(impl);
......
......@@ -31,7 +31,6 @@
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/chromeos/input_method/assistive_window_controller.h"
#include "chrome/browser/chromeos/input_method/candidate_window_controller.h"
#include "chrome/browser/chromeos/input_method/component_extension_ime_manager_delegate_impl.h"
#include "chrome/browser/chromeos/input_method/ui/assistive_delegate.h"
#include "chrome/browser/chromeos/input_method/ui/input_method_menu_item.h"
#include "chrome/browser/chromeos/input_method/ui/input_method_menu_manager.h"
......@@ -956,6 +955,8 @@ InputMethodManagerImpl::GetActiveIMEState() {
InputMethodManagerImpl::InputMethodManagerImpl(
std::unique_ptr<InputMethodDelegate> delegate,
std::unique_ptr<ComponentExtensionIMEManagerDelegate>
component_extension_ime_manager_delegate,
bool enable_extension_loading)
: delegate_(std::move(delegate)),
util_(delegate_.get()),
......@@ -969,9 +970,8 @@ InputMethodManagerImpl::InputMethodManagerImpl(
keyboard_ = std::make_unique<FakeImeKeyboard>();
}
// Initializes the system IME list.
std::unique_ptr<ComponentExtensionIMEManagerDelegate> comp_delegate(
new ComponentExtensionIMEManagerDelegateImpl());
component_extension_ime_manager_->Initialize(std::move(comp_delegate));
component_extension_ime_manager_->Initialize(
std::move(component_extension_ime_manager_delegate));
const InputMethodDescriptors& descriptors =
component_extension_ime_manager_->GetAllIMEAsInputMethodDescriptor();
util_.ResetInputMethods(descriptors);
......
......@@ -191,6 +191,8 @@ class InputMethodManagerImpl : public InputMethodManager,
// calling |SetUISessionState| in response to relevant changes in browser
// state.
InputMethodManagerImpl(std::unique_ptr<InputMethodDelegate> delegate,
std::unique_ptr<ComponentExtensionIMEManagerDelegate>
component_extension_ime_manager_delegate,
bool enable_extension_loading);
~InputMethodManagerImpl() override;
......
......@@ -17,6 +17,7 @@
#include "base/macros.h"
#include "base/run_loop.h"
#include "base/test/task_environment.h"
#include "chrome/browser/chromeos/input_method/component_extension_ime_manager_delegate_impl.h"
#include "chrome/browser/chromeos/input_method/mock_candidate_window_controller.h"
#include "chrome/browser/chromeos/input_method/mock_input_method_engine.h"
#include "chrome/browser/profiles/profile_manager.h"
......@@ -139,7 +140,8 @@ class InputMethodManagerImplTest : public BrowserWithTestWindowTest {
ui::InitializeInputMethodForTesting();
manager_ = std::make_unique<InputMethodManagerImpl>(
std::make_unique<FakeInputMethodDelegate>(), false);
std::make_unique<FakeInputMethodDelegate>(),
std::make_unique<ComponentExtensionIMEManagerDelegateImpl>(), false);
manager_->GetInputMethodUtil()->UpdateHardwareLayoutCache();
candidate_window_controller_ = new MockCandidateWindowController;
manager_->SetCandidateWindowControllerForTesting(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment