Commit 2b66e9c4 authored by Yuichiro Hanada's avatar Yuichiro Hanada Committed by Commit Bot

Move ash::mojom::ImeKeyset into //ui/base/ime/chromeos/public/interfaces.

and use it everywhere to express keysets.
This CL aims to reduce the risk to pass unexpected values
to InputMethodManager::OverrideKeyboardUrlRef.

- Rename OverrideKeyboardUrlRef to OverrideKeyboardKeyset

This CL addresses the comment in crrev.com/c/950523.

Bug: 819018
Test: No behavior change. Unit tests still pass.
Change-Id: I96139abaa867c91de039113bc9006b72f210be26
Reviewed-on: https://chromium-review.googlesource.com/974668Reviewed-by: default avatarDaniel Cheng <dcheng@chromium.org>
Reviewed-by: default avatarJames Cook <jamescook@chromium.org>
Commit-Queue: Yuichiro Hanada <yhanada@chromium.org>
Cr-Commit-Position: refs/heads/master@{#545931}
parent b3827e88
...@@ -162,12 +162,13 @@ void ImeController::SetCapsLockEnabled(bool caps_enabled) { ...@@ -162,12 +162,13 @@ void ImeController::SetCapsLockEnabled(bool caps_enabled) {
client_->SetCapsLockEnabled(caps_enabled); client_->SetCapsLockEnabled(caps_enabled);
} }
void ImeController::OverrideKeyboardKeyset(ash::mojom::ImeKeyset keyset) { void ImeController::OverrideKeyboardKeyset(
chromeos::input_method::mojom::ImeKeyset keyset) {
OverrideKeyboardKeyset(keyset, base::DoNothing()); OverrideKeyboardKeyset(keyset, base::DoNothing());
} }
void ImeController::OverrideKeyboardKeyset( void ImeController::OverrideKeyboardKeyset(
ash::mojom::ImeKeyset keyset, chromeos::input_method::mojom::ImeKeyset keyset,
mojom::ImeControllerClient::OverrideKeyboardKeysetCallback callback) { mojom::ImeControllerClient::OverrideKeyboardKeysetCallback callback) {
if (client_) if (client_)
client_->OverrideKeyboardKeyset(keyset, std::move(callback)); client_->OverrideKeyboardKeyset(keyset, std::move(callback));
......
...@@ -71,9 +71,9 @@ class ASH_EXPORT ImeController : public mojom::ImeController { ...@@ -71,9 +71,9 @@ class ASH_EXPORT ImeController : public mojom::ImeController {
void SwitchImeById(const std::string& ime_id, bool show_message); void SwitchImeById(const std::string& ime_id, bool show_message);
void ActivateImeMenuItem(const std::string& key); void ActivateImeMenuItem(const std::string& key);
void SetCapsLockEnabled(bool caps_enabled); void SetCapsLockEnabled(bool caps_enabled);
void OverrideKeyboardKeyset(mojom::ImeKeyset keyset); void OverrideKeyboardKeyset(chromeos::input_method::mojom::ImeKeyset keyset);
void OverrideKeyboardKeyset( void OverrideKeyboardKeyset(
mojom::ImeKeyset keyset, chromeos::input_method::mojom::ImeKeyset keyset,
mojom::ImeControllerClient::OverrideKeyboardKeysetCallback callback); mojom::ImeControllerClient::OverrideKeyboardKeysetCallback callback);
// Returns true if the switch is allowed and the keystroke should be // Returns true if the switch is allowed and the keystroke should be
......
...@@ -44,7 +44,7 @@ void TestImeControllerClient::SetCapsLockEnabled(bool enabled) { ...@@ -44,7 +44,7 @@ void TestImeControllerClient::SetCapsLockEnabled(bool enabled) {
} }
void TestImeControllerClient::OverrideKeyboardKeyset( void TestImeControllerClient::OverrideKeyboardKeyset(
ash::mojom::ImeKeyset keyset, chromeos::input_method::mojom::ImeKeyset keyset,
OverrideKeyboardKeysetCallback callback) { OverrideKeyboardKeysetCallback callback) {
last_keyset_ = keyset; last_keyset_ = keyset;
std::move(callback).Run(); std::move(callback).Run();
......
...@@ -24,7 +24,7 @@ class TestImeControllerClient : public mojom::ImeControllerClient { ...@@ -24,7 +24,7 @@ class TestImeControllerClient : public mojom::ImeControllerClient {
void SwitchImeById(const std::string& id, bool show_message) override; void SwitchImeById(const std::string& id, bool show_message) override;
void ActivateImeMenuItem(const std::string& key) override; void ActivateImeMenuItem(const std::string& key) override;
void SetCapsLockEnabled(bool enabled) override; void SetCapsLockEnabled(bool enabled) override;
void OverrideKeyboardKeyset(mojom::ImeKeyset keyset, void OverrideKeyboardKeyset(chromeos::input_method::mojom::ImeKeyset keyset,
OverrideKeyboardKeysetCallback callback) override; OverrideKeyboardKeysetCallback callback) override;
int next_ime_count_ = 0; int next_ime_count_ = 0;
...@@ -33,7 +33,8 @@ class TestImeControllerClient : public mojom::ImeControllerClient { ...@@ -33,7 +33,8 @@ class TestImeControllerClient : public mojom::ImeControllerClient {
int set_caps_lock_count_ = 0; int set_caps_lock_count_ = 0;
std::string last_switch_ime_id_; std::string last_switch_ime_id_;
bool last_show_message_ = false; bool last_show_message_ = false;
mojom::ImeKeyset last_keyset_ = ash::mojom::ImeKeyset::kNone; chromeos::input_method::mojom::ImeKeyset last_keyset_ =
chromeos::input_method::mojom::ImeKeyset::kNone;
private: private:
mojo::Binding<mojom::ImeControllerClient> binding_; mojo::Binding<mojom::ImeControllerClient> binding_;
......
...@@ -65,6 +65,7 @@ mojom("interfaces_internal") { ...@@ -65,6 +65,7 @@ mojom("interfaces_internal") {
"//services/preferences/public/mojom", "//services/preferences/public/mojom",
"//skia/public/interfaces", "//skia/public/interfaces",
"//ui/accessibility:ax_enums_mojo", "//ui/accessibility:ax_enums_mojo",
"//ui/base/ime/chromeos/public/interfaces",
"//ui/events/mojo:interfaces", "//ui/events/mojo:interfaces",
"//ui/gfx/geometry/mojo", "//ui/gfx/geometry/mojo",
"//ui/gfx/image/mojo:interfaces", "//ui/gfx/image/mojo:interfaces",
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
module ash.mojom; module ash.mojom;
import "ash/public/interfaces/ime_info.mojom"; import "ash/public/interfaces/ime_info.mojom";
import "ui/base/ime/chromeos/public/interfaces/ime_keyset.mojom";
// Interface for ash client (e.g. Chrome) to send input method info to ash. // Interface for ash client (e.g. Chrome) to send input method info to ash.
interface ImeController { interface ImeController {
...@@ -47,16 +48,6 @@ interface ImeController { ...@@ -47,16 +48,6 @@ interface ImeController {
bool is_voice_enabled); bool is_voice_enabled);
}; };
// Used by the virtual keyboard to represent different key layouts for
// different purposes. 'kNone' represents the default key layout.
// Used in UMA, so this enum should not be reordered.
enum ImeKeyset {
kNone = 0,
kEmoji = 1,
kHandwriting = 2,
kVoice = 3,
};
// Interface for ash to send input method requests to its client (e.g. Chrome). // Interface for ash to send input method requests to its client (e.g. Chrome).
interface ImeControllerClient { interface ImeControllerClient {
// Switches to the next input method. Does nothing if only one input method // Switches to the next input method. Does nothing if only one input method
...@@ -90,5 +81,5 @@ interface ImeControllerClient { ...@@ -90,5 +81,5 @@ interface ImeControllerClient {
// Overrides the keyboard keyset (emoji, handwriting or voice). If keyset is // Overrides the keyboard keyset (emoji, handwriting or voice). If keyset is
// 'kNone', we switch to the default keyset. Because this is asynchronous, // 'kNone', we switch to the default keyset. Because this is asynchronous,
// any code that needs the keyset to be updated first must use the callback. // any code that needs the keyset to be updated first must use the callback.
OverrideKeyboardKeyset(ImeKeyset keyset) => (); OverrideKeyboardKeyset(chromeos.input_method.mojom.ImeKeyset keyset) => ();
}; };
...@@ -177,13 +177,14 @@ class ImeButtonsView : public views::View, public views::ButtonListener { ...@@ -177,13 +177,14 @@ class ImeButtonsView : public views::View, public views::ButtonListener {
// The |keyset| will be used for drawing input view keyset in IME // The |keyset| will be used for drawing input view keyset in IME
// extensions. ImeMenuTray::ShowKeyboardWithKeyset() will deal with // extensions. ImeMenuTray::ShowKeyboardWithKeyset() will deal with
// the |keyset| string to generate the right input view url. // the |keyset| string to generate the right input view url.
mojom::ImeKeyset keyset = mojom::ImeKeyset::kNone; using chromeos::input_method::mojom::ImeKeyset;
ImeKeyset keyset = ImeKeyset::kNone;
if (sender == emoji_button_) if (sender == emoji_button_)
keyset = mojom::ImeKeyset::kEmoji; keyset = ImeKeyset::kEmoji;
else if (sender == voice_button_) else if (sender == voice_button_)
keyset = mojom::ImeKeyset::kVoice; keyset = ImeKeyset::kVoice;
else if (sender == handwriting_button_) else if (sender == handwriting_button_)
keyset = mojom::ImeKeyset::kHandwriting; keyset = ImeKeyset::kHandwriting;
else else
NOTREACHED(); NOTREACHED();
...@@ -338,7 +339,8 @@ void ImeMenuTray::ShowImeMenuBubbleInternal(bool show_by_click) { ...@@ -338,7 +339,8 @@ void ImeMenuTray::ShowImeMenuBubbleInternal(bool show_by_click) {
SetIsActive(true); SetIsActive(true);
} }
void ImeMenuTray::ShowKeyboardWithKeyset(ash::mojom::ImeKeyset keyset) { void ImeMenuTray::ShowKeyboardWithKeyset(
chromeos::input_method::mojom::ImeKeyset keyset) {
CloseBubble(); CloseBubble();
// This will override the url ref of the keyboard to make it shown with // This will override the url ref of the keyboard to make it shown with
...@@ -463,7 +465,8 @@ void ImeMenuTray::HideBubble(const views::TrayBubbleView* bubble_view) { ...@@ -463,7 +465,8 @@ void ImeMenuTray::HideBubble(const views::TrayBubbleView* bubble_view) {
} }
void ImeMenuTray::OnKeyboardClosed() { void ImeMenuTray::OnKeyboardClosed() {
ime_controller_->OverrideKeyboardKeyset(ash::mojom::ImeKeyset::kNone); ime_controller_->OverrideKeyboardKeyset(
chromeos::input_method::mojom::ImeKeyset::kNone);
keyboard::KeyboardController* keyboard_controller = keyboard::KeyboardController* keyboard_controller =
keyboard::KeyboardController::GetInstance(); keyboard::KeyboardController::GetInstance();
if (keyboard_controller) if (keyboard_controller)
...@@ -490,7 +493,8 @@ void ImeMenuTray::OnKeyboardHidden() { ...@@ -490,7 +493,8 @@ void ImeMenuTray::OnKeyboardHidden() {
// If the the IME menu has overriding the input view url, we should write it // If the the IME menu has overriding the input view url, we should write it
// back to normal keyboard when hiding the input view. // back to normal keyboard when hiding the input view.
ime_controller_->OverrideKeyboardKeyset(ash::mojom::ImeKeyset::kNone); ime_controller_->OverrideKeyboardKeyset(
chromeos::input_method::mojom::ImeKeyset::kNone);
show_keyboard_ = false; show_keyboard_ = false;
// If the keyboard is forced to be shown by IME menu for once, we need to // If the keyboard is forced to be shown by IME menu for once, we need to
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "ash/system/tray/tray_bubble_wrapper.h" #include "ash/system/tray/tray_bubble_wrapper.h"
#include "ash/system/virtual_keyboard/virtual_keyboard_observer.h" #include "ash/system/virtual_keyboard/virtual_keyboard_observer.h"
#include "base/macros.h" #include "base/macros.h"
#include "ui/base/ime/chromeos/public/interfaces/ime_keyset.mojom.h"
#include "ui/keyboard/keyboard_controller_observer.h" #include "ui/keyboard/keyboard_controller_observer.h"
#include "ui/views/bubble/tray_bubble_view.h" #include "ui/views/bubble/tray_bubble_view.h"
...@@ -38,7 +39,7 @@ class ASH_EXPORT ImeMenuTray : public TrayBackgroundView, ...@@ -38,7 +39,7 @@ class ASH_EXPORT ImeMenuTray : public TrayBackgroundView,
// Shows the virtual keyboard with the given keyset: emoji, handwriting or // Shows the virtual keyboard with the given keyset: emoji, handwriting or
// voice. // voice.
void ShowKeyboardWithKeyset(mojom::ImeKeyset keyset); void ShowKeyboardWithKeyset(chromeos::input_method::mojom::ImeKeyset keyset);
// Returns true if the menu should show emoji, handwriting and voice buttons // Returns true if the menu should show emoji, handwriting and voice buttons
// on the bottom. Otherwise, the menu will show a 'Customize...' bottom row // on the bottom. Otherwise, the menu will show a 'Customize...' bottom row
......
...@@ -285,7 +285,8 @@ TEST_F(ImeMenuTrayTest, ShowEmojiKeyset) { ...@@ -285,7 +285,8 @@ TEST_F(ImeMenuTrayTest, ShowEmojiKeyset) {
accessibility_controller->SetVirtualKeyboardEnabled(true); accessibility_controller->SetVirtualKeyboardEnabled(true);
EXPECT_TRUE(accessibility_controller->IsVirtualKeyboardEnabled()); EXPECT_TRUE(accessibility_controller->IsVirtualKeyboardEnabled());
GetTray()->ShowKeyboardWithKeyset(mojom::ImeKeyset::kEmoji); GetTray()->ShowKeyboardWithKeyset(
chromeos::input_method::mojom::ImeKeyset::kEmoji);
// The menu should be hidden. // The menu should be hidden.
EXPECT_FALSE(IsBubbleShown()); EXPECT_FALSE(IsBubbleShown());
// The virtual keyboard should be enabled. // The virtual keyboard should be enabled.
...@@ -306,7 +307,8 @@ TEST_F(ImeMenuTrayTest, ForceToShowEmojiKeyset) { ...@@ -306,7 +307,8 @@ TEST_F(ImeMenuTrayTest, ForceToShowEmojiKeyset) {
TestImeControllerClient client; TestImeControllerClient client;
ime_controller->SetClient(client.CreateInterfacePtr()); ime_controller->SetClient(client.CreateInterfacePtr());
GetTray()->ShowKeyboardWithKeyset(mojom::ImeKeyset::kEmoji); GetTray()->ShowKeyboardWithKeyset(
chromeos::input_method::mojom::ImeKeyset::kEmoji);
// Keyboard is shown asynchronously through Mojo // Keyboard is shown asynchronously through Mojo
ime_controller->FlushMojoForTesting(); ime_controller->FlushMojoForTesting();
// The virtual keyboard should be enabled. // The virtual keyboard should be enabled.
......
...@@ -105,6 +105,19 @@ InputMethodCategory GetInputMethodCategory(const std::string& input_method_id, ...@@ -105,6 +105,19 @@ InputMethodCategory GetInputMethodCategory(const std::string& input_method_id,
return category; return category;
} }
std::string KeysetToString(mojom::ImeKeyset keyset) {
switch (keyset) {
case mojom::ImeKeyset::kNone:
return "";
case mojom::ImeKeyset::kEmoji:
return "emoji";
case mojom::ImeKeyset::kHandwriting:
return "hwt";
case mojom::ImeKeyset::kVoice:
return "voice";
}
}
} // namespace } // namespace
// ------------------------ InputMethodManagerImpl::StateImpl // ------------------------ InputMethodManagerImpl::StateImpl
...@@ -1262,7 +1275,7 @@ void InputMethodManagerImpl::MaybeNotifyImeMenuActivationChanged() { ...@@ -1262,7 +1275,7 @@ void InputMethodManagerImpl::MaybeNotifyImeMenuActivationChanged() {
is_ime_menu_activated_); is_ime_menu_activated_);
} }
void InputMethodManagerImpl::OverrideKeyboardUrlRef(const std::string& keyset) { void InputMethodManagerImpl::OverrideKeyboardKeyset(mojom::ImeKeyset keyset) {
GURL url = state_->GetInputViewUrl(); GURL url = state_->GetInputViewUrl();
// If fails to find ref or tag "id" in the ref, it means the current IME is // If fails to find ref or tag "id" in the ref, it means the current IME is
...@@ -1276,7 +1289,7 @@ void InputMethodManagerImpl::OverrideKeyboardUrlRef(const std::string& keyset) { ...@@ -1276,7 +1289,7 @@ void InputMethodManagerImpl::OverrideKeyboardUrlRef(const std::string& keyset) {
if (i == std::string::npos) if (i == std::string::npos)
return; return;
if (keyset.empty()) { if (keyset == mojom::ImeKeyset::kNone) {
// Resets the url as the input method default url and notify the hash // Resets the url as the input method default url and notify the hash
// changed to VK. // changed to VK.
state_->input_view_url = state_->current_input_method.input_view_url(); state_->input_view_url = state_->current_input_method.input_view_url();
...@@ -1294,9 +1307,9 @@ void InputMethodManagerImpl::OverrideKeyboardUrlRef(const std::string& keyset) { ...@@ -1294,9 +1307,9 @@ void InputMethodManagerImpl::OverrideKeyboardUrlRef(const std::string& keyset) {
// id like: id=${keyset}.emoji/hwt/voice. // id like: id=${keyset}.emoji/hwt/voice.
auto j = overridden_ref.find("&", i + 1); auto j = overridden_ref.find("&", i + 1);
if (j == std::string::npos) { if (j == std::string::npos) {
overridden_ref += "." + keyset; overridden_ref += "." + KeysetToString(keyset);
} else { } else {
overridden_ref.replace(j, 0, "." + keyset); overridden_ref.replace(j, 0, "." + KeysetToString(keyset));
} }
GURL::Replacements replacements; GURL::Replacements replacements;
......
...@@ -190,7 +190,7 @@ class InputMethodManagerImpl : public InputMethodManager, ...@@ -190,7 +190,7 @@ class InputMethodManagerImpl : public InputMethodManager,
const std::string& engine_id, const std::string& engine_id,
const std::vector<InputMethodManager::MenuItem>& items) override; const std::vector<InputMethodManager::MenuItem>& items) override;
void MaybeNotifyImeMenuActivationChanged() override; void MaybeNotifyImeMenuActivationChanged() override;
void OverrideKeyboardUrlRef(const std::string& keyset) override; void OverrideKeyboardKeyset(mojom::ImeKeyset keyset) override;
void SetImeMenuFeatureEnabled(ImeMenuFeature feature, bool enabled) override; void SetImeMenuFeatureEnabled(ImeMenuFeature feature, bool enabled) override;
bool GetImeMenuFeatureEnabled(ImeMenuFeature feature) const override; bool GetImeMenuFeatureEnabled(ImeMenuFeature feature) const override;
void NotifyObserversImeExtraInputStateChange() override; void NotifyObserversImeExtraInputStateChange() override;
......
...@@ -1281,7 +1281,7 @@ TEST_F(InputMethodManagerImplTest, OverrideKeyboardUrlRefWithKeyset) { ...@@ -1281,7 +1281,7 @@ TEST_F(InputMethodManagerImplTest, OverrideKeyboardUrlRefWithKeyset) {
"chrome-extension://" "chrome-extension://"
"inputview.html#id=us.compact.qwerty.emoji&language=en-US&passwordLayout=" "inputview.html#id=us.compact.qwerty.emoji&language=en-US&passwordLayout="
"us.compact.qwerty&name=keyboard_us"); "us.compact.qwerty&name=keyboard_us");
manager_->OverrideKeyboardUrlRef("emoji"); manager_->OverrideKeyboardKeyset(mojom::ImeKeyset::kEmoji);
EXPECT_EQ(overridden_url_emoji, GetActiveIMEState()->GetInputViewUrl()); EXPECT_EQ(overridden_url_emoji, GetActiveIMEState()->GetInputViewUrl());
// Override the keyboard url ref with 'hwt'. // Override the keyboard url ref with 'hwt'.
...@@ -1290,7 +1290,7 @@ TEST_F(InputMethodManagerImplTest, OverrideKeyboardUrlRefWithKeyset) { ...@@ -1290,7 +1290,7 @@ TEST_F(InputMethodManagerImplTest, OverrideKeyboardUrlRefWithKeyset) {
"chrome-extension://" "chrome-extension://"
"inputview.html#id=us.compact.qwerty.hwt&language=en-US&passwordLayout=" "inputview.html#id=us.compact.qwerty.hwt&language=en-US&passwordLayout="
"us.compact.qwerty&name=keyboard_us"); "us.compact.qwerty&name=keyboard_us");
manager_->OverrideKeyboardUrlRef("hwt"); manager_->OverrideKeyboardKeyset(mojom::ImeKeyset::kHandwriting);
EXPECT_EQ(overridden_url_hwt, GetActiveIMEState()->GetInputViewUrl()); EXPECT_EQ(overridden_url_hwt, GetActiveIMEState()->GetInputViewUrl());
// Override the keyboard url ref with 'voice'. // Override the keyboard url ref with 'voice'.
...@@ -1299,7 +1299,7 @@ TEST_F(InputMethodManagerImplTest, OverrideKeyboardUrlRefWithKeyset) { ...@@ -1299,7 +1299,7 @@ TEST_F(InputMethodManagerImplTest, OverrideKeyboardUrlRefWithKeyset) {
"chrome-extension://" "chrome-extension://"
"inputview.html#id=us.compact.qwerty.voice&language=en-US" "inputview.html#id=us.compact.qwerty.voice&language=en-US"
"&passwordLayout=us.compact.qwerty&name=keyboard_us"); "&passwordLayout=us.compact.qwerty&name=keyboard_us");
manager_->OverrideKeyboardUrlRef("voice"); manager_->OverrideKeyboardKeyset(mojom::ImeKeyset::kVoice);
EXPECT_EQ(overridden_url_voice, GetActiveIMEState()->GetInputViewUrl()); EXPECT_EQ(overridden_url_voice, GetActiveIMEState()->GetInputViewUrl());
} }
...@@ -1310,7 +1310,7 @@ TEST_F(InputMethodManagerImplTest, OverrideDefaultKeyboardUrlRef) { ...@@ -1310,7 +1310,7 @@ TEST_F(InputMethodManagerImplTest, OverrideDefaultKeyboardUrlRef) {
EXPECT_EQ(default_url, GetActiveIMEState()->GetInputViewUrl()); EXPECT_EQ(default_url, GetActiveIMEState()->GetInputViewUrl());
manager_->OverrideKeyboardUrlRef("emoji"); manager_->OverrideKeyboardKeyset(mojom::ImeKeyset::kEmoji);
EXPECT_EQ(default_url, GetActiveIMEState()->GetInputViewUrl()); EXPECT_EQ(default_url, GetActiveIMEState()->GetInputViewUrl());
} }
......
...@@ -113,25 +113,9 @@ void ImeControllerClient::SetCapsLockEnabled(bool caps_enabled) { ...@@ -113,25 +113,9 @@ void ImeControllerClient::SetCapsLockEnabled(bool caps_enabled) {
} }
void ImeControllerClient::OverrideKeyboardKeyset( void ImeControllerClient::OverrideKeyboardKeyset(
ash::mojom::ImeKeyset keyset, chromeos::input_method::mojom::ImeKeyset keyset,
OverrideKeyboardKeysetCallback callback) { OverrideKeyboardKeysetCallback callback) {
std::string url_ref; input_method_manager_->OverrideKeyboardKeyset(keyset);
switch (keyset) {
case ash::mojom::ImeKeyset::kNone:
// kNone resets url_ref to the empty string.
break;
case ash::mojom::ImeKeyset::kEmoji:
url_ref = "emoji";
break;
case ash::mojom::ImeKeyset::kVoice:
url_ref = "voice";
break;
case ash::mojom::ImeKeyset::kHandwriting:
url_ref = "hwt";
break;
}
input_method_manager_->OverrideKeyboardUrlRef(url_ref);
std::move(callback).Run(); std::move(callback).Run();
} }
......
...@@ -42,7 +42,7 @@ class ImeControllerClient ...@@ -42,7 +42,7 @@ class ImeControllerClient
void SwitchImeById(const std::string& id, bool show_message) override; void SwitchImeById(const std::string& id, bool show_message) override;
void ActivateImeMenuItem(const std::string& key) override; void ActivateImeMenuItem(const std::string& key) override;
void SetCapsLockEnabled(bool caps_enabled) override; void SetCapsLockEnabled(bool caps_enabled) override;
void OverrideKeyboardKeyset(ash::mojom::ImeKeyset keyset, void OverrideKeyboardKeyset(chromeos::input_method::mojom::ImeKeyset keyset,
OverrideKeyboardKeysetCallback callback) override; OverrideKeyboardKeysetCallback callback) override;
// chromeos::input_method::InputMethodManager::Observer: // chromeos::input_method::InputMethodManager::Observer:
......
...@@ -120,8 +120,9 @@ class TestInputMethodManager : public MockInputMethodManager { ...@@ -120,8 +120,9 @@ class TestInputMethodManager : public MockInputMethodManager {
void ActivateInputMethodMenuItem(const std::string& key) override { void ActivateInputMethodMenuItem(const std::string& key) override {
last_activate_menu_item_key_ = key; last_activate_menu_item_key_ = key;
} }
void OverrideKeyboardUrlRef(const std::string& key_set) override { void OverrideKeyboardKeyset(
keyboard_url_ref_ = key_set; chromeos::input_method::mojom::ImeKeyset keyset) override {
keyboard_keyset_ = keyset;
} }
InputMethodUtil* GetInputMethodUtil() override { return &util_; } InputMethodUtil* GetInputMethodUtil() override { return &util_; }
...@@ -135,7 +136,7 @@ class TestInputMethodManager : public MockInputMethodManager { ...@@ -135,7 +136,7 @@ class TestInputMethodManager : public MockInputMethodManager {
int add_menu_observer_count_ = 0; int add_menu_observer_count_ = 0;
int remove_menu_observer_count_ = 0; int remove_menu_observer_count_ = 0;
std::string last_activate_menu_item_key_; std::string last_activate_menu_item_key_;
std::string keyboard_url_ref_; chromeos::input_method::mojom::ImeKeyset keyboard_keyset_;
FakeInputMethodDelegate delegate_; FakeInputMethodDelegate delegate_;
InputMethodUtil util_; InputMethodUtil util_;
...@@ -337,10 +338,11 @@ TEST_F(ImeControllerClientTest, OverrideKeyboardKeyset) { ...@@ -337,10 +338,11 @@ TEST_F(ImeControllerClientTest, OverrideKeyboardKeyset) {
ImeControllerClient client(&input_method_manager_); ImeControllerClient client(&input_method_manager_);
bool callback_called = false; bool callback_called = false;
client.OverrideKeyboardKeyset( client.OverrideKeyboardKeyset(
ash::mojom::ImeKeyset::kEmoji, chromeos::input_method::mojom::ImeKeyset::kEmoji,
base::BindLambdaForTesting( base::BindLambdaForTesting(
[&callback_called]() { callback_called = true; })); [&callback_called]() { callback_called = true; }));
EXPECT_EQ("emoji", input_method_manager_.keyboard_url_ref_); EXPECT_EQ(chromeos::input_method::mojom::ImeKeyset::kEmoji,
input_method_manager_.keyboard_keyset_);
EXPECT_TRUE(callback_called); EXPECT_TRUE(callback_called);
} }
......
...@@ -118,6 +118,7 @@ jumbo_component("ime") { ...@@ -118,6 +118,7 @@ jumbo_component("ime") {
"//net", "//net",
"//third_party/icu", "//third_party/icu",
"//ui/base", "//ui/base",
"//ui/base/ime/chromeos/public/interfaces",
"//ui/display", "//ui/display",
"//ui/events", "//ui/events",
"//ui/gfx", "//ui/gfx",
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "base/memory/ref_counted.h" #include "base/memory/ref_counted.h"
#include "ui/base/ime/chromeos/input_method_descriptor.h" #include "ui/base/ime/chromeos/input_method_descriptor.h"
#include "ui/base/ime/chromeos/public/interfaces/ime_keyset.mojom.h"
#include "ui/base/ime/ui_base_ime_export.h" #include "ui/base/ime/ui_base_ime_export.h"
class Profile; class Profile;
...@@ -327,10 +328,9 @@ class UI_BASE_IME_EXPORT InputMethodManager { ...@@ -327,10 +328,9 @@ class UI_BASE_IME_EXPORT InputMethodManager {
// is different from previous. // is different from previous.
virtual void MaybeNotifyImeMenuActivationChanged() = 0; virtual void MaybeNotifyImeMenuActivationChanged() = 0;
// Overrides the keyboard url ref (stuff following '#' to the end of the // Overrides active keyset with the given keyset if the active IME supports
// string) with the given keyset (emoji, hwt or voice). If |keyset| is empty, // the given keyset.
// it indicates that we should override the url back with the keyboard keyset. virtual void OverrideKeyboardKeyset(mojom::ImeKeyset keyset) = 0;
virtual void OverrideKeyboardUrlRef(const std::string& keyset) = 0;
// Enables or disables some advanced features, e.g. handwiring, voices input. // Enables or disables some advanced features, e.g. handwiring, voices input.
virtual void SetImeMenuFeatureEnabled(ImeMenuFeature feature, virtual void SetImeMenuFeatureEnabled(ImeMenuFeature feature,
......
...@@ -198,8 +198,7 @@ void MockInputMethodManager::NotifyImeMenuItemsChanged( ...@@ -198,8 +198,7 @@ void MockInputMethodManager::NotifyImeMenuItemsChanged(
void MockInputMethodManager::MaybeNotifyImeMenuActivationChanged() {} void MockInputMethodManager::MaybeNotifyImeMenuActivationChanged() {}
void MockInputMethodManager::OverrideKeyboardUrlRef(const std::string& keyset) { void MockInputMethodManager::OverrideKeyboardKeyset(mojom::ImeKeyset keyset) {}
}
void MockInputMethodManager::SetImeMenuFeatureEnabled(ImeMenuFeature feature, void MockInputMethodManager::SetImeMenuFeatureEnabled(ImeMenuFeature feature,
bool enabled) { bool enabled) {
......
...@@ -109,7 +109,7 @@ class UI_BASE_IME_EXPORT MockInputMethodManager : public InputMethodManager { ...@@ -109,7 +109,7 @@ class UI_BASE_IME_EXPORT MockInputMethodManager : public InputMethodManager {
const std::string& engine_id, const std::string& engine_id,
const std::vector<InputMethodManager::MenuItem>& items) override; const std::vector<InputMethodManager::MenuItem>& items) override;
void MaybeNotifyImeMenuActivationChanged() override; void MaybeNotifyImeMenuActivationChanged() override;
void OverrideKeyboardUrlRef(const std::string& keyset) override; void OverrideKeyboardKeyset(mojom::ImeKeyset keyset) override;
void SetImeMenuFeatureEnabled(ImeMenuFeature feature, bool enabled) override; void SetImeMenuFeatureEnabled(ImeMenuFeature feature, bool enabled) override;
bool GetImeMenuFeatureEnabled(ImeMenuFeature feature) const override; bool GetImeMenuFeatureEnabled(ImeMenuFeature feature) const override;
void NotifyObserversImeExtraInputStateChange() override; void NotifyObserversImeExtraInputStateChange() override;
......
# Copyright 2018 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.
import("//mojo/public/tools/bindings/mojom.gni")
mojom("interfaces") {
sources = [
"ime_keyset.mojom",
]
}
per-file *.mojom=set noparent
per-file *.mojom=file://ipc/SECURITY_OWNERS
// Copyright 2018 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.
module chromeos.input_method.mojom;
// Used by the virtual keyboard to represent different key layouts for
// different purposes. 'kNone' represents the default key layout.
// Used in UMA, so this enum should not be reordered.
enum ImeKeyset {
kNone = 0,
kEmoji = 1,
kHandwriting = 2,
kVoice = 3,
};
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