Commit 5aeef1b8 authored by Bao-Duy Tran's avatar Bao-Duy Tran Committed by Commit Bot

Fix highly confusing misnomer ComponentExtensionIMEManagerImpl.

Despite what the current name implies, ComponentExtensionIMEManagerImpl
is NOT an implementation of ComponentExtensionIMEManager interface
(that's actually a concrete class, only ever subclassed by its mock).
This is extremely confusing in terms of readability.

In fact, ComponentExtensionIMEManagerImpl [sic] is an implementation
of ComponentExtensionIMEManagerDelegate interface. An instance of the
latter is dependency-injected for use by ComponentExtensionIMEManager
itself. The already confusing misnomer is thus exacerbated, as both
ComponentExtensionIMEManager and ComponentExtensionIMEManagerImpl [sic]
tend to appear together while bearing no inheritance relationship.

In this patch, ComponentExtensionIMEManagerImpl [sic] is renamed to
ComponentExtensionIMEManagerDelegateImpl to reflect what it really is.
Descriptiveness and conciseness improvements are out of scope.

Also:
- Extract ComponentExtensionIMEManagerDelegate to its own .h file.
- Fix pre-existing std::unique_ptr usage as flagged by presubmit errors.
- Replace pre-existing NULL with nullptr as flagged by presubmit errors.

Bug: 1134465
Change-Id: If36b7d4c17ee19cdfc773c22ad4f384779b2a4fd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2440381
Auto-Submit: Bao-Duy Tran <tranbaoduy@chromium.org>
Commit-Queue: Devlin <rdevlin.cronin@chromium.org>
Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Reviewed-by: default avatarKeith Lee <keithlee@chromium.org>
Reviewed-by: default avatarDavid Vallet <dvallet@chromium.org>
Cr-Commit-Position: refs/heads/master@{#816644}
parent a2573fcb
...@@ -1411,8 +1411,8 @@ source_set("chromeos") { ...@@ -1411,8 +1411,8 @@ source_set("chromeos") {
"input_method/candidate_window_controller.h", "input_method/candidate_window_controller.h",
"input_method/candidate_window_controller_impl.cc", "input_method/candidate_window_controller_impl.cc",
"input_method/candidate_window_controller_impl.h", "input_method/candidate_window_controller_impl.h",
"input_method/component_extension_ime_manager_impl.cc", "input_method/component_extension_ime_manager_delegate_impl.cc",
"input_method/component_extension_ime_manager_impl.h", "input_method/component_extension_ime_manager_delegate_impl.h",
"input_method/emoji_suggester.cc", "input_method/emoji_suggester.cc",
"input_method/emoji_suggester.h", "input_method/emoji_suggester.h",
"input_method/ime_service_connector.cc", "input_method/ime_service_connector.cc",
......
// Copyright 2013 The Chromium Authors. All rights reserved. // Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "chrome/browser/chromeos/input_method/component_extension_ime_manager_impl.h" #include "chrome/browser/chromeos/input_method/component_extension_ime_manager_delegate_impl.h"
#include <stddef.h> #include <stddef.h>
...@@ -159,17 +159,21 @@ void OnFilePathChecked(Profile* profile, ...@@ -159,17 +159,21 @@ void OnFilePathChecked(Profile* profile,
} // namespace } // namespace
ComponentExtensionIMEManagerImpl::ComponentExtensionIMEManagerImpl() { ComponentExtensionIMEManagerDelegateImpl::
ComponentExtensionIMEManagerDelegateImpl() {
ReadComponentExtensionsInfo(&component_extension_list_); ReadComponentExtensionsInfo(&component_extension_list_);
} }
ComponentExtensionIMEManagerImpl::~ComponentExtensionIMEManagerImpl() = default; ComponentExtensionIMEManagerDelegateImpl::
~ComponentExtensionIMEManagerDelegateImpl() = default;
std::vector<ComponentExtensionIME> ComponentExtensionIMEManagerImpl::ListIME() { std::vector<ComponentExtensionIME>
ComponentExtensionIMEManagerDelegateImpl::ListIME() {
return component_extension_list_; return component_extension_list_;
} }
void ComponentExtensionIMEManagerImpl::Load(Profile* profile, void ComponentExtensionIMEManagerDelegateImpl::Load(
Profile* profile,
const std::string& extension_id, const std::string& extension_id,
const std::string& manifest, const std::string& manifest,
const base::FilePath& file_path) { const base::FilePath& file_path) {
...@@ -189,21 +193,23 @@ void ComponentExtensionIMEManagerImpl::Load(Profile* profile, ...@@ -189,21 +193,23 @@ void ComponentExtensionIMEManagerImpl::Load(Profile* profile,
} }
std::unique_ptr<base::DictionaryValue> std::unique_ptr<base::DictionaryValue>
ComponentExtensionIMEManagerImpl::GetManifest( ComponentExtensionIMEManagerDelegateImpl::GetManifest(
const std::string& manifest_string) { const std::string& manifest_string) {
std::string error; std::string error;
JSONStringValueDeserializer deserializer(manifest_string); JSONStringValueDeserializer deserializer(manifest_string);
std::unique_ptr<base::Value> manifest = std::unique_ptr<base::Value> manifest =
deserializer.Deserialize(NULL, &error); deserializer.Deserialize(nullptr, &error);
if (!manifest.get()) if (!manifest.get())
LOG(ERROR) << "Failed at getting manifest"; LOG(ERROR) << "Failed at getting manifest";
return std::unique_ptr<base::DictionaryValue>( std::unique_ptr<base::DictionaryValue> ret(
static_cast<base::DictionaryValue*>(manifest.release())); static_cast<base::DictionaryValue*>(manifest.release()));
return ret;
} }
// static // static
bool ComponentExtensionIMEManagerImpl::IsIMEExtensionID(const std::string& id) { bool ComponentExtensionIMEManagerDelegateImpl::IsIMEExtensionID(
const std::string& id) {
for (auto& extension : allowlisted_component_extensions) { for (auto& extension : allowlisted_component_extensions) {
if (base::LowerCaseEqualsASCII(id, extension.id)) if (base::LowerCaseEqualsASCII(id, extension.id))
return true; return true;
...@@ -212,7 +218,7 @@ bool ComponentExtensionIMEManagerImpl::IsIMEExtensionID(const std::string& id) { ...@@ -212,7 +218,7 @@ bool ComponentExtensionIMEManagerImpl::IsIMEExtensionID(const std::string& id) {
} }
// static // static
bool ComponentExtensionIMEManagerImpl::ReadEngineComponent( bool ComponentExtensionIMEManagerDelegateImpl::ReadEngineComponent(
const ComponentExtensionIME& component_extension, const ComponentExtensionIME& component_extension,
const base::DictionaryValue& dict, const base::DictionaryValue& dict,
ComponentExtensionEngine* out) { ComponentExtensionEngine* out) {
...@@ -230,14 +236,14 @@ bool ComponentExtensionIMEManagerImpl::ReadEngineComponent( ...@@ -230,14 +236,14 @@ bool ComponentExtensionIMEManagerImpl::ReadEngineComponent(
out->indicator = ""; out->indicator = "";
std::set<std::string> languages; std::set<std::string> languages;
const base::Value* language_value = NULL; const base::Value* language_value = nullptr;
if (dict.Get(extensions::manifest_keys::kLanguage, &language_value)) { if (dict.Get(extensions::manifest_keys::kLanguage, &language_value)) {
if (language_value->is_string()) { if (language_value->is_string()) {
std::string language_str; std::string language_str;
language_value->GetAsString(&language_str); language_value->GetAsString(&language_str);
languages.insert(language_str); languages.insert(language_str);
} else if (language_value->is_list()) { } else if (language_value->is_list()) {
const base::ListValue* language_list = NULL; const base::ListValue* language_list = nullptr;
language_value->GetAsList(&language_list); language_value->GetAsList(&language_list);
for (size_t j = 0; j < language_list->GetSize(); ++j) { for (size_t j = 0; j < language_list->GetSize(); ++j) {
std::string language_str; std::string language_str;
...@@ -249,7 +255,7 @@ bool ComponentExtensionIMEManagerImpl::ReadEngineComponent( ...@@ -249,7 +255,7 @@ bool ComponentExtensionIMEManagerImpl::ReadEngineComponent(
DCHECK(!languages.empty()); DCHECK(!languages.empty());
out->language_codes.assign(languages.begin(), languages.end()); out->language_codes.assign(languages.begin(), languages.end());
const base::ListValue* layouts = NULL; const base::ListValue* layouts = nullptr;
if (!dict.GetList(extensions::manifest_keys::kLayouts, &layouts)) if (!dict.GetList(extensions::manifest_keys::kLayouts, &layouts))
return false; return false;
...@@ -270,8 +276,7 @@ bool ComponentExtensionIMEManagerImpl::ReadEngineComponent( ...@@ -270,8 +276,7 @@ bool ComponentExtensionIMEManagerImpl::ReadEngineComponent(
return false; return false;
out->input_view_url = url; out->input_view_url = url;
#else #else
if (dict.GetString(extensions::manifest_keys::kInputView, if (dict.GetString(extensions::manifest_keys::kInputView, &url_string)) {
&url_string)) {
GURL url = extensions::Extension::GetResourceURL( GURL url = extensions::Extension::GetResourceURL(
extensions::Extension::GetBaseURLFromExtensionId( extensions::Extension::GetBaseURLFromExtensionId(
component_extension.id), component_extension.id),
...@@ -282,8 +287,7 @@ bool ComponentExtensionIMEManagerImpl::ReadEngineComponent( ...@@ -282,8 +287,7 @@ bool ComponentExtensionIMEManagerImpl::ReadEngineComponent(
} }
#endif #endif
if (dict.GetString(extensions::manifest_keys::kOptionsPage, if (dict.GetString(extensions::manifest_keys::kOptionsPage, &url_string)) {
&url_string)) {
GURL url = extensions::Extension::GetResourceURL( GURL url = extensions::Extension::GetResourceURL(
extensions::Extension::GetBaseURLFromExtensionId( extensions::Extension::GetBaseURLFromExtensionId(
component_extension.id), component_extension.id),
...@@ -300,7 +304,7 @@ bool ComponentExtensionIMEManagerImpl::ReadEngineComponent( ...@@ -300,7 +304,7 @@ bool ComponentExtensionIMEManagerImpl::ReadEngineComponent(
} }
// static // static
bool ComponentExtensionIMEManagerImpl::ReadExtensionInfo( bool ComponentExtensionIMEManagerDelegateImpl::ReadExtensionInfo(
const base::DictionaryValue& manifest, const base::DictionaryValue& manifest,
const std::string& extension_id, const std::string& extension_id,
ComponentExtensionIME* out) { ComponentExtensionIME* out) {
...@@ -325,7 +329,7 @@ bool ComponentExtensionIMEManagerImpl::ReadExtensionInfo( ...@@ -325,7 +329,7 @@ bool ComponentExtensionIMEManagerImpl::ReadExtensionInfo(
} }
// static // static
void ComponentExtensionIMEManagerImpl::ReadComponentExtensionsInfo( void ComponentExtensionIMEManagerDelegateImpl::ReadComponentExtensionsInfo(
std::vector<ComponentExtensionIME>* out_imes) { std::vector<ComponentExtensionIME>* out_imes) {
DCHECK(out_imes); DCHECK(out_imes);
for (auto& extension : allowlisted_component_extensions) { for (auto& extension : allowlisted_component_extensions) {
......
// Copyright 2013 The Chromium Authors. All rights reserved. // Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_COMPONENT_EXTENSION_IME_MANAGER_IMPL_H_ #ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_COMPONENT_EXTENSION_IME_MANAGER_DELEGATE_IMPL_H_
#define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_COMPONENT_EXTENSION_IME_MANAGER_IMPL_H_ #define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_COMPONENT_EXTENSION_IME_MANAGER_DELEGATE_IMPL_H_
#include <set> #include <set>
#include <vector> #include <vector>
...@@ -15,17 +15,18 @@ ...@@ -15,17 +15,18 @@
#include "base/threading/thread_checker.h" #include "base/threading/thread_checker.h"
#include "base/values.h" #include "base/values.h"
#include "ui/base/ime/chromeos/component_extension_ime_manager.h" #include "ui/base/ime/chromeos/component_extension_ime_manager.h"
#include "ui/base/ime/chromeos/component_extension_ime_manager_delegate.h"
class Profile; class Profile;
namespace chromeos { namespace chromeos {
// The implementation class of ComponentExtensionIMEManagerDelegate. // The implementation class of ComponentExtensionIMEManagerDelegate.
class ComponentExtensionIMEManagerImpl class ComponentExtensionIMEManagerDelegateImpl
: public ComponentExtensionIMEManagerDelegate { : public ComponentExtensionIMEManagerDelegate {
public: public:
ComponentExtensionIMEManagerImpl(); ComponentExtensionIMEManagerDelegateImpl();
~ComponentExtensionIMEManagerImpl() override; ~ComponentExtensionIMEManagerDelegateImpl() override;
// ComponentExtensionIMEManagerDelegate overrides: // ComponentExtensionIMEManagerDelegate overrides:
std::vector<ComponentExtensionIME> ListIME() override; std::vector<ComponentExtensionIME> ListIME() override;
...@@ -63,9 +64,9 @@ class ComponentExtensionIMEManagerImpl ...@@ -63,9 +64,9 @@ class ComponentExtensionIMEManagerImpl
// The list of component extension IME. // The list of component extension IME.
std::vector<ComponentExtensionIME> component_extension_list_; std::vector<ComponentExtensionIME> component_extension_list_;
DISALLOW_COPY_AND_ASSIGN(ComponentExtensionIMEManagerImpl); DISALLOW_COPY_AND_ASSIGN(ComponentExtensionIMEManagerDelegateImpl);
}; };
} // namespace chromeos } // namespace chromeos
#endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_COMPONENT_EXTENSION_IME_MANAGER_IMPL_H_ #endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_COMPONENT_EXTENSION_IME_MANAGER_DELEGATE_IMPL_H_
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#include "chrome/browser/browser_process_platform_part_chromeos.h" #include "chrome/browser/browser_process_platform_part_chromeos.h"
#include "chrome/browser/chromeos/input_method/assistive_window_controller.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/candidate_window_controller.h"
#include "chrome/browser/chromeos/input_method/component_extension_ime_manager_impl.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/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_item.h"
#include "chrome/browser/chromeos/input_method/ui/input_method_menu_manager.h" #include "chrome/browser/chromeos/input_method/ui/input_method_menu_manager.h"
...@@ -46,6 +46,7 @@ ...@@ -46,6 +46,7 @@
#include "components/user_manager/user_manager.h" #include "components/user_manager/user_manager.h"
#include "third_party/icu/source/common/unicode/uloc.h" #include "third_party/icu/source/common/unicode/uloc.h"
#include "ui/base/ime/chromeos/component_extension_ime_manager.h" #include "ui/base/ime/chromeos/component_extension_ime_manager.h"
#include "ui/base/ime/chromeos/component_extension_ime_manager_delegate.h"
#include "ui/base/ime/chromeos/extension_ime_util.h" #include "ui/base/ime/chromeos/extension_ime_util.h"
#include "ui/base/ime/chromeos/fake_ime_keyboard.h" #include "ui/base/ime/chromeos/fake_ime_keyboard.h"
#include "ui/base/ime/chromeos/ime_bridge.h" #include "ui/base/ime/chromeos/ime_bridge.h"
...@@ -946,7 +947,7 @@ InputMethodManagerImpl::InputMethodManagerImpl( ...@@ -946,7 +947,7 @@ InputMethodManagerImpl::InputMethodManagerImpl(
} }
// Initializes the system IME list. // Initializes the system IME list.
std::unique_ptr<ComponentExtensionIMEManagerDelegate> comp_delegate( std::unique_ptr<ComponentExtensionIMEManagerDelegate> comp_delegate(
new ComponentExtensionIMEManagerImpl()); new ComponentExtensionIMEManagerDelegateImpl());
component_extension_ime_manager_->Initialize(std::move(comp_delegate)); component_extension_ime_manager_->Initialize(std::move(comp_delegate));
const InputMethodDescriptors& descriptors = const InputMethodDescriptors& descriptors =
component_extension_ime_manager_->GetAllIMEAsInputMethodDescriptor(); component_extension_ime_manager_->GetAllIMEAsInputMethodDescriptor();
......
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
#include "chrome/test/base/testing_profile_manager.h" #include "chrome/test/base/testing_profile_manager.h"
#include "testing/gmock/include/gmock/gmock.h" #include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "ui/base/ime/chromeos/component_extension_ime_manager.h"
#include "ui/base/ime/chromeos/extension_ime_util.h" #include "ui/base/ime/chromeos/extension_ime_util.h"
#include "ui/base/ime/chromeos/fake_ime_keyboard.h" #include "ui/base/ime/chromeos/fake_ime_keyboard.h"
#include "ui/base/ime/chromeos/fake_input_method_delegate.h" #include "ui/base/ime/chromeos/fake_input_method_delegate.h"
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
#include "ash/keyboard/ui/grit/keyboard_resources.h" #include "ash/keyboard/ui/grit/keyboard_resources.h"
#include "chrome/browser/chromeos/input_method/component_extension_ime_manager_impl.h" #include "chrome/browser/chromeos/input_method/component_extension_ime_manager_delegate_impl.h"
#include "ui/file_manager/grit/file_manager_resources.h" #include "ui/file_manager/grit/file_manager_resources.h"
#endif #endif
...@@ -48,7 +48,7 @@ bool IsComponentExtensionAllowlisted(const std::string& extension_id) { ...@@ -48,7 +48,7 @@ bool IsComponentExtensionAllowlisted(const std::string& extension_id) {
} }
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
if (chromeos::ComponentExtensionIMEManagerImpl::IsIMEExtensionID( if (chromeos::ComponentExtensionIMEManagerDelegateImpl::IsIMEExtensionID(
extension_id)) { extension_id)) {
return true; return true;
} }
......
...@@ -14,6 +14,7 @@ component("chromeos") { ...@@ -14,6 +14,7 @@ component("chromeos") {
sources = [ sources = [
"component_extension_ime_manager.cc", "component_extension_ime_manager.cc",
"component_extension_ime_manager.h", "component_extension_ime_manager.h",
"component_extension_ime_manager_delegate.h",
"extension_ime_util.cc", "extension_ime_util.cc",
"extension_ime_util.h", "extension_ime_util.h",
"fake_ime_keyboard.cc", "fake_ime_keyboard.cc",
......
...@@ -55,12 +55,6 @@ ComponentExtensionIME::ComponentExtensionIME( ...@@ -55,12 +55,6 @@ ComponentExtensionIME::ComponentExtensionIME(
ComponentExtensionIME::~ComponentExtensionIME() = default; ComponentExtensionIME::~ComponentExtensionIME() = default;
ComponentExtensionIMEManagerDelegate::ComponentExtensionIMEManagerDelegate() =
default;
ComponentExtensionIMEManagerDelegate::~ComponentExtensionIMEManagerDelegate() =
default;
ComponentExtensionIMEManager::ComponentExtensionIMEManager() { ComponentExtensionIMEManager::ComponentExtensionIMEManager() {
for (const auto& input_method : input_method::kInputMethods) { for (const auto& input_method : input_method::kInputMethods) {
if (input_method.is_login_keyboard) if (input_method.is_login_keyboard)
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "base/files/file_path.h" #include "base/files/file_path.h"
#include "base/macros.h" #include "base/macros.h"
#include "base/observer_list.h" #include "base/observer_list.h"
#include "ui/base/ime/chromeos/component_extension_ime_manager_delegate.h"
#include "ui/base/ime/chromeos/input_method_descriptor.h" #include "ui/base/ime/chromeos/input_method_descriptor.h"
class Profile; class Profile;
...@@ -47,24 +48,6 @@ struct COMPONENT_EXPORT(UI_BASE_IME_CHROMEOS) ComponentExtensionIME { ...@@ -47,24 +48,6 @@ struct COMPONENT_EXPORT(UI_BASE_IME_CHROMEOS) ComponentExtensionIME {
std::vector<ComponentExtensionEngine> engines; std::vector<ComponentExtensionEngine> engines;
}; };
// Provides an interface to list/load/unload for component extension IME.
class COMPONENT_EXPORT(UI_BASE_IME_CHROMEOS)
ComponentExtensionIMEManagerDelegate {
public:
ComponentExtensionIMEManagerDelegate();
virtual ~ComponentExtensionIMEManagerDelegate();
// Lists installed component extension IMEs.
virtual std::vector<ComponentExtensionIME> ListIME() = 0;
// Loads component extension IME associated with |extension_id|.
// Returns false if it fails, otherwise returns true.
virtual void Load(Profile* profile,
const std::string& extension_id,
const std::string& manifest,
const base::FilePath& path) = 0;
};
// This class manages component extension input method. // This class manages component extension input method.
class COMPONENT_EXPORT(UI_BASE_IME_CHROMEOS) ComponentExtensionIMEManager { class COMPONENT_EXPORT(UI_BASE_IME_CHROMEOS) ComponentExtensionIMEManager {
public: public:
......
// Copyright 2020 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_CHROMEOS_COMPONENT_EXTENSION_IME_MANAGER_DELEGATE_H_
#define UI_BASE_IME_CHROMEOS_COMPONENT_EXTENSION_IME_MANAGER_DELEGATE_H_
#include "base/component_export.h"
#include "base/files/file_path.h"
#include "base/macros.h"
class Profile;
namespace chromeos {
struct ComponentExtensionIME;
// Provides an interface to list/load/unload for component extension IME.
class COMPONENT_EXPORT(UI_BASE_IME_CHROMEOS)
ComponentExtensionIMEManagerDelegate {
public:
virtual ~ComponentExtensionIMEManagerDelegate() {}
// Lists installed component extension IMEs.
virtual std::vector<ComponentExtensionIME> ListIME() = 0;
// Loads component extension IME associated with |extension_id|.
// Returns false if it fails, otherwise returns true.
virtual void Load(Profile* profile,
const std::string& extension_id,
const std::string& manifest,
const base::FilePath& path) = 0;
};
} // namespace chromeos
#endif // UI_BASE_IME_CHROMEOS_COMPONENT_EXTENSION_IME_MANAGER_DELEGATE_H_
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
// found in the LICENSE file. // found in the LICENSE file.
#include "ui/base/ime/chromeos/mock_component_extension_ime_manager_delegate.h" #include "ui/base/ime/chromeos/mock_component_extension_ime_manager_delegate.h"
#include "ui/base/ime/chromeos/component_extension_ime_manager.h"
namespace chromeos { namespace chromeos {
namespace input_method { namespace input_method {
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
#include "base/component_export.h" #include "base/component_export.h"
#include "base/macros.h" #include "base/macros.h"
#include "ui/base/ime/chromeos/component_extension_ime_manager.h" #include "ui/base/ime/chromeos/component_extension_ime_manager_delegate.h"
namespace chromeos { namespace chromeos {
namespace input_method { namespace input_method {
......
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