Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5903)

Unified Diff: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc

Issue 2923773003: Adding mojo calls for several lock screen related operations. (Closed)
Patch Set: comments and rebase Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
diff --git a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
index 168c632f511766e5a7433c295925a78d8a9b1ad1..f203706e0ef0b8213811114518f1eb5faeea3079 100644
--- a/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/signin_screen_handler.cc
@@ -40,6 +40,7 @@
#include "chrome/browser/chromeos/login/hwid_checker.h"
#include "chrome/browser/chromeos/login/lock/screen_locker.h"
#include "chrome/browser/chromeos/login/lock/webui_screen_locker.h"
+#include "chrome/browser/chromeos/login/lock_screen_utils.h"
#include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_factory.h"
#include "chrome/browser/chromeos/login/quick_unlock/quick_unlock_storage.h"
#include "chrome/browser/chromeos/login/reauth_stats.h"
@@ -126,12 +127,6 @@ const char kNoLockScreenApps[] = "LOCK_SCREEN_APPS_STATE.NONE";
const char kBackgroundLockScreenApps[] = "LOCK_SCREEN_APPS_STATE.BACKGROUND";
const char kForegroundLockScreenApps[] = "LOCK_SCREEN_APPS_STATE.FOREGROUND";
-static bool Contains(const std::vector<std::string>& container,
- const std::string& value) {
- return std::find(container.begin(), container.end(), value) !=
- container.end();
-}
-
class CallOnReturn {
public:
explicit CallOnReturn(const base::Closure& callback)
@@ -203,64 +198,6 @@ std::string GetNetworkName(const std::string& service_path) {
return network->name();
}
-static bool SetUserInputMethodImpl(
- const std::string& username,
- const std::string& user_input_method,
- input_method::InputMethodManager::State* ime_state) {
- if (!chromeos::input_method::InputMethodManager::Get()->IsLoginKeyboard(
- user_input_method)) {
- LOG(WARNING) << "SetUserInputMethod('" << username
- << "'): stored user last input method '" << user_input_method
- << "' is no longer Full Latin Keyboard Language"
- << " (entry dropped). Use hardware default instead.";
-
- PrefService* const local_state = g_browser_process->local_state();
- DictionaryPrefUpdate updater(local_state, prefs::kUsersLastInputMethod);
-
- base::DictionaryValue* const users_last_input_methods = updater.Get();
- if (users_last_input_methods != nullptr) {
- users_last_input_methods->SetStringWithoutPathExpansion(username, "");
- }
- return false;
- }
-
- if (!Contains(ime_state->GetActiveInputMethodIds(), user_input_method)) {
- if (!ime_state->EnableInputMethod(user_input_method)) {
- DLOG(ERROR) << "SigninScreenHandler::SetUserInputMethod('" << username
- << "'): user input method '" << user_input_method
- << "' is not enabled and enabling failed (ignored!).";
- }
- }
- ime_state->ChangeInputMethod(user_input_method, false /* show_message */);
-
- return true;
-}
-
-void EnforcePolicyInputMethods(std::string user_input_method) {
- chromeos::CrosSettings* cros_settings = chromeos::CrosSettings::Get();
- const base::ListValue* login_screen_input_methods = nullptr;
- if (!cros_settings->GetList(chromeos::kDeviceLoginScreenInputMethods,
- &login_screen_input_methods)) {
- return;
- }
-
- std::vector<std::string> allowed_input_methods;
-
- // Add user's input method first so it is pre-selected.
- if (!user_input_method.empty()) {
- allowed_input_methods.push_back(user_input_method);
- }
-
- std::string input_method;
- for (const auto& input_method_entry : *login_screen_input_methods) {
- if (input_method_entry.GetAsString(&input_method))
- allowed_input_methods.push_back(input_method);
- }
- chromeos::input_method::InputMethodManager* imm =
- chromeos::input_method::InputMethodManager::Get();
- imm->GetActiveIMEState()->SetAllowedInputMethods(allowed_input_methods);
-}
-
void StopEnforcingPolicyInputMethods() {
// Empty means all input methods are allowed
std::vector<std::string> allowed_input_methods;
@@ -373,56 +310,6 @@ SigninScreenHandler::~SigninScreenHandler() {
proximity_auth::ScreenlockBridge::Get()->SetFocusedUser(EmptyAccountId());
}
-// static
-std::string SigninScreenHandler::GetUserLastInputMethod(
- const std::string& username) {
- PrefService* const local_state = g_browser_process->local_state();
- const base::DictionaryValue* users_last_input_methods =
- local_state->GetDictionary(prefs::kUsersLastInputMethod);
-
- if (!users_last_input_methods) {
- DLOG(WARNING) << "GetUserLastInputMethod('" << username
- << "'): no kUsersLastInputMethod";
- return std::string();
- }
-
- std::string input_method;
-
- if (!users_last_input_methods->GetStringWithoutPathExpansion(username,
- &input_method)) {
- DVLOG(0) << "GetUserLastInputMethod('" << username
- << "'): no input method for this user";
- return std::string();
- }
-
- return input_method;
-}
-
-// static
-// Update keyboard layout to least recently used by the user.
-void SigninScreenHandler::SetUserInputMethod(
- const std::string& username,
- input_method::InputMethodManager::State* ime_state) {
- bool succeed = false;
-
- const std::string input_method = GetUserLastInputMethod(username);
-
- EnforcePolicyInputMethods(input_method);
-
- if (!input_method.empty())
- succeed = SetUserInputMethodImpl(username, input_method, ime_state);
-
- // This is also a case when last layout is set only for a few local users,
- // thus others need to be switched to default locale.
- // Otherwise they will end up using another user's locale to log in.
- if (!succeed) {
- DVLOG(0) << "SetUserInputMethod('" << username
- << "'): failed to set user layout. Switching to default.";
-
- ime_state->SetInputMethodLoginDefault();
- }
-}
-
void SigninScreenHandler::DeclareLocalizedValues(
::login::LocalizedValuesBuilder* builder) {
// Format numbers to be used on the pin keyboard.
@@ -1493,8 +1380,9 @@ void SigninScreenHandler::HandleFocusPod(const AccountId& account_id) {
if (user && user->is_logged_in() && !user->is_active()) {
SessionControllerClient::DoSwitchActiveUser(account_id);
} else {
- SetUserInputMethod(account_id.GetUserEmail(), ime_state_.get());
- SetKeyboardSettings(account_id);
+ lock_screen_utils::SetUserInputMethod(account_id.GetUserEmail(),
+ ime_state_.get());
+ lock_screen_utils::SetKeyboardSettings(account_id);
WallpaperManager::Get()->SetUserWallpaperDelayed(account_id);
bool use_24hour_clock = false;
@@ -1510,7 +1398,7 @@ void SigninScreenHandler::HandleFocusPod(const AccountId& account_id) {
void SigninScreenHandler::HandleNoPodFocused() {
focused_pod_account_id_.reset();
- EnforcePolicyInputMethods(std::string());
+ lock_screen_utils::EnforcePolicyInputMethods(std::string());
}
void SigninScreenHandler::HandleGetPublicSessionKeyboardLayouts(
@@ -1651,7 +1539,7 @@ bool SigninScreenHandler::IsGuestSigninAllowed() const {
void SigninScreenHandler::OnShowAddUser() {
is_account_picker_showing_first_time_ = false;
- EnforcePolicyInputMethods(std::string());
+ lock_screen_utils::EnforcePolicyInputMethods(std::string());
gaia_screen_handler_->ShowGaiaAsync();
}
@@ -1677,40 +1565,12 @@ void SigninScreenHandler::OnAllowedInputMethodsChanged() {
return;
if (focused_pod_account_id_) {
- std::string user_input_method =
- GetUserLastInputMethod(focused_pod_account_id_->GetUserEmail());
- EnforcePolicyInputMethods(user_input_method);
+ std::string user_input_method = lock_screen_utils::GetUserLastInputMethod(
+ focused_pod_account_id_->GetUserEmail());
+ lock_screen_utils::EnforcePolicyInputMethods(user_input_method);
} else {
- EnforcePolicyInputMethods(std::string());
+ lock_screen_utils::EnforcePolicyInputMethods(std::string());
}
}
-void SigninScreenHandler::SetKeyboardSettings(const AccountId& account_id) {
- bool auto_repeat_enabled = language_prefs::kXkbAutoRepeatEnabled;
- if (user_manager::known_user::GetBooleanPref(
- account_id, prefs::kLanguageXkbAutoRepeatEnabled,
- &auto_repeat_enabled) &&
- !auto_repeat_enabled) {
- input_method::InputMethodManager::Get()
- ->GetImeKeyboard()
- ->SetAutoRepeatEnabled(false);
- return;
- }
-
- int auto_repeat_delay = language_prefs::kXkbAutoRepeatDelayInMs;
- int auto_repeat_interval = language_prefs::kXkbAutoRepeatIntervalInMs;
- user_manager::known_user::GetIntegerPref(
- account_id, prefs::kLanguageXkbAutoRepeatDelay, &auto_repeat_delay);
- user_manager::known_user::GetIntegerPref(
- account_id, prefs::kLanguageXkbAutoRepeatInterval, &auto_repeat_interval);
- input_method::AutoRepeatRate rate;
- rate.initial_delay_in_ms = auto_repeat_delay;
- rate.repeat_interval_in_ms = auto_repeat_interval;
- input_method::InputMethodManager::Get()
- ->GetImeKeyboard()
- ->SetAutoRepeatEnabled(true);
- input_method::InputMethodManager::Get()->GetImeKeyboard()->SetAutoRepeatRate(
- rate);
-}
-
} // namespace chromeos
« no previous file with comments | « chrome/browser/ui/webui/chromeos/login/signin_screen_handler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698