Chromium Code Reviews| Index: chrome/browser/chromeos/events/event_rewriter.cc |
| diff --git a/chrome/browser/chromeos/events/event_rewriter.cc b/chrome/browser/chromeos/events/event_rewriter.cc |
| index d532a8b375defbef81cbecf8646c09b35647033d..da1fd869a3f9941867ff49692c2f45d49e7660fb 100644 |
| --- a/chrome/browser/chromeos/events/event_rewriter.cc |
| +++ b/chrome/browser/chromeos/events/event_rewriter.cc |
| @@ -20,9 +20,12 @@ |
| #include "chrome/browser/chromeos/login/ui/login_display_host.h" |
| #include "chrome/browser/extensions/extension_commands_global_registry.h" |
| #include "chrome/browser/profiles/profile_manager.h" |
| +#include "chrome/browser/ui/webui/chromeos/login/oobe_ui.h" |
| +#include "chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h" |
| #include "chrome/common/pref_names.h" |
| #include "chromeos/chromeos_switches.h" |
| #include "components/prefs/pref_service.h" |
| +#include "components/user_manager/known_user.h" |
| #include "components/user_manager/user_manager.h" |
| #include "ui/base/ime/chromeos/ime_keyboard.h" |
| #include "ui/base/ime/chromeos/input_method_manager.h" |
| @@ -132,14 +135,32 @@ const ModifierRemapping* kModifierRemappingNeoMod3 = &kModifierRemappings[1]; |
| // prefs::kLanguageRemapSearchKeyTo. |
| const ModifierRemapping* GetRemappedKey(const std::string& pref_name, |
| const PrefService& pref_service) { |
| - if (!pref_service.FindPreference(pref_name.c_str())) |
| - return NULL; // The |pref_name| hasn't been registered. On login screen? |
| - const int value = pref_service.GetInteger(pref_name.c_str()); |
| + int value = -1; |
| + // If we're at the login screen, try to get the pref from the global prefs |
| + // dictionary. |
| + if (LoginDisplayHost::default_host()) { |
| + const AccountId focused_account_id = LoginDisplayHost::default_host() |
| + ->GetOobeUI() |
| + ->signin_screen_handler() |
| + ->focused_pod_account_id(); |
| + if (!focused_account_id.empty()) { |
|
xiyuan
2017/02/22 17:40:18
nit: empty() -> is_valid()
|
| + user_manager::known_user::GetIntegerPref(focused_account_id, pref_name, |
| + &value); |
|
Alexander Alekseev
2017/02/22 10:51:50
I am not an owner of this file, but it seems to me
xdai1
2017/02/22 18:36:16
Done.
|
| + } |
| + } |
| + |
| + if (value == -1) { |
| + if (pref_service.FindPreference(pref_name)) |
| + value = pref_service.GetInteger(pref_name); |
| + else |
| + return nullptr; |
| + } |
| + |
| for (size_t i = 0; i < arraysize(kModifierRemappings); ++i) { |
| if (value == kModifierRemappings[i].remap_to) |
| return &kModifierRemappings[i]; |
| } |
| - return NULL; |
| + return nullptr; |
| } |
| bool HasDiamondKey() { |