Index: ash/accelerators/accelerator_controller.cc |
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc |
index 789059b65e59b661ee936a128796670c73f86cc2..6b9336da3fde20273256ac2106206f2e81a27fc4 100644 |
--- a/ash/accelerators/accelerator_controller.cc |
+++ b/ash/accelerators/accelerator_controller.cc |
@@ -12,7 +12,7 @@ |
#include "ash/accessibility_delegate.h" |
#include "ash/accessibility_types.h" |
#include "ash/focus_cycler.h" |
-#include "ash/ime/ime_switch_type.h" |
+#include "ash/ime_control_delegate.h" |
#include "ash/media_controller.h" |
#include "ash/multi_profile_uma.h" |
#include "ash/new_window_controller.h" |
@@ -68,7 +68,6 @@ |
namespace { |
using base::UserMetricsAction; |
-using chromeos::input_method::InputMethodManager; |
using message_center::Notification; |
// Identifier for the high contrast toggle accelerator notification. |
@@ -172,11 +171,6 @@ |
histogram->Add(sample); |
} |
-void RecordImeSwitchByAccelerator() { |
- UMA_HISTOGRAM_ENUMERATION("InputMethod.ImeSwitch", |
- ImeSwitchType::kAccelerator, ImeSwitchType::kCount); |
-} |
- |
void HandleCycleBackwardMRU(const ui::Accelerator& accelerator) { |
if (accelerator.key_code() == ui::VKEY_TAB) |
base::RecordAction(base::UserMetricsAction("Accel_PrevWindow_Tab")); |
@@ -257,15 +251,8 @@ |
Shell::Get()->new_window_controller()->NewWindow(false /* is_incognito */); |
} |
-bool CanCycleInputMethod() { |
- InputMethodManager* manager = InputMethodManager::Get(); |
- DCHECK(manager); |
- if (!manager->GetActiveIMEState()) { |
- LOG(WARNING) << "Cannot cycle through input methods as they are not " |
- "initialized yet."; |
- return false; |
- } |
- return manager->GetActiveIMEState()->CanCycleInputMethod(); |
+bool CanHandleNextIme(ImeControlDelegate* ime_control_delegate) { |
+ return ime_control_delegate && ime_control_delegate->CanCycleIme(); |
} |
bool CanHandleCycleMru(const ui::Accelerator& accelerator) { |
@@ -280,10 +267,9 @@ |
return !(keyboard_controller && keyboard_controller->keyboard_visible()); |
} |
-void HandleNextIme() { |
+void HandleNextIme(ImeControlDelegate* ime_control_delegate) { |
base::RecordAction(UserMetricsAction("Accel_Next_Ime")); |
- RecordImeSwitchByAccelerator(); |
- InputMethodManager::Get()->GetActiveIMEState()->SwitchToNextInputMethod(); |
+ ime_control_delegate->HandleNextIme(); |
} |
void HandleOpenFeedbackPage() { |
@@ -291,14 +277,15 @@ |
Shell::Get()->new_window_controller()->OpenFeedbackPage(); |
} |
-void HandlePreviousIme(const ui::Accelerator& accelerator) { |
+bool CanHandlePreviousIme(ImeControlDelegate* ime_control_delegate) { |
+ return ime_control_delegate && ime_control_delegate->CanCycleIme(); |
+} |
+ |
+void HandlePreviousIme(ImeControlDelegate* ime_control_delegate, |
+ const ui::Accelerator& accelerator) { |
base::RecordAction(UserMetricsAction("Accel_Previous_Ime")); |
- if (accelerator.key_state() == ui::Accelerator::KeyState::PRESSED) { |
- RecordImeSwitchByAccelerator(); |
- InputMethodManager::Get() |
- ->GetActiveIMEState() |
- ->SwitchToPreviousInputMethod(); |
- } |
+ if (accelerator.key_state() == ui::Accelerator::KeyState::PRESSED) |
+ ime_control_delegate->HandlePreviousIme(); |
// Else: consume the Ctrl+Space ET_KEY_RELEASED event but do not do anything. |
} |
@@ -365,22 +352,16 @@ |
Shell::Get()->new_window_controller()->ShowTaskManager(); |
} |
-bool CanHandleSwitchIme(const ui::Accelerator& accelerator) { |
- InputMethodManager* manager = InputMethodManager::Get(); |
- DCHECK(manager); |
- if (!manager->GetActiveIMEState()) { |
- LOG(WARNING) << "Cannot switch input methods as they are not " |
- "initialized yet."; |
- return false; |
- } |
- return manager->GetActiveIMEState()->CanSwitchInputMethod(accelerator); |
-} |
- |
-void HandleSwitchIme(const ui::Accelerator& accelerator) { |
+bool CanHandleSwitchIme(ImeControlDelegate* ime_control_delegate, |
+ const ui::Accelerator& accelerator) { |
+ return ime_control_delegate && |
+ ime_control_delegate->CanSwitchIme(accelerator); |
+} |
+ |
+void HandleSwitchIme(ImeControlDelegate* ime_control_delegate, |
+ const ui::Accelerator& accelerator) { |
base::RecordAction(UserMetricsAction("Accel_Switch_Ime")); |
- RecordImeSwitchByAccelerator(); |
- InputMethodManager::Get()->GetActiveIMEState()->SwitchInputMethod( |
- accelerator); |
+ ime_control_delegate->HandleSwitchIme(accelerator); |
} |
bool CanHandleToggleAppList(const ui::Accelerator& accelerator, |
@@ -752,6 +733,11 @@ |
AcceleratorController::AcceleratorProcessingRestriction |
AcceleratorController::GetCurrentAcceleratorRestriction() { |
return GetAcceleratorProcessingRestriction(-1); |
+} |
+ |
+void AcceleratorController::SetImeControlDelegate( |
+ std::unique_ptr<ImeControlDelegate> ime_control_delegate) { |
+ ime_control_delegate_ = std::move(ime_control_delegate); |
} |
bool AcceleratorController::ShouldCloseMenuAndRepostAccelerator( |
@@ -926,15 +912,15 @@ |
case NEW_INCOGNITO_WINDOW: |
return CanHandleNewIncognitoWindow(); |
case NEXT_IME: |
- return CanCycleInputMethod(); |
+ return CanHandleNextIme(ime_control_delegate_.get()); |
case PREVIOUS_IME: |
- return CanCycleInputMethod(); |
+ return CanHandlePreviousIme(ime_control_delegate_.get()); |
case SHOW_MESSAGE_CENTER_BUBBLE: |
return CanHandleShowMessageCenterBubble(); |
case SHOW_STYLUS_TOOLS: |
return CanHandleShowStylusTools(); |
case SWITCH_IME: |
- return CanHandleSwitchIme(accelerator); |
+ return CanHandleSwitchIme(ime_control_delegate_.get(), accelerator); |
case SWITCH_TO_PREVIOUS_USER: |
case SWITCH_TO_NEXT_USER: |
return CanHandleCycleUser(); |
@@ -1125,7 +1111,7 @@ |
HandleNewWindow(); |
break; |
case NEXT_IME: |
- HandleNextIme(); |
+ HandleNextIme(ime_control_delegate_.get()); |
break; |
case OPEN_CROSH: |
HandleCrosh(); |
@@ -1140,7 +1126,7 @@ |
HandleGetHelp(); |
break; |
case PREVIOUS_IME: |
- HandlePreviousIme(accelerator); |
+ HandlePreviousIme(ime_control_delegate_.get(), accelerator); |
break; |
case PRINT_UI_HIERARCHIES: |
debug::PrintUIHierarchies(); |
@@ -1173,7 +1159,7 @@ |
HandleSuspend(); |
break; |
case SWITCH_IME: |
- HandleSwitchIme(accelerator); |
+ HandleSwitchIme(ime_control_delegate_.get(), accelerator); |
break; |
case SWITCH_TO_NEXT_USER: |
HandleCycleUser(CycleUserDirection::NEXT); |