// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef CHROME_BROWSER_ASH_LOGIN_LOCK_SCREEN_UTILS_H_
#define CHROME_BROWSER_ASH_LOGIN_LOCK_SCREEN_UTILS_H_

#include "ash/public/cpp/login_types.h"
#include "base/values.h"
#include "ui/base/ime/ash/input_method_manager.h"

class AccountId;
class PrefService;

namespace ash::lock_screen_utils {

// Update current input method in the given IME state to last input method used
// by this user.
void SetUserInputMethod(PrefService& local_state,
                        const AccountId& account_id,
                        input_method::InputMethodManager::State* ime_state,
                        bool honor_device_policy);

// Get user's last input method ID.
std::string GetUserLastInputMethodId(PrefService& local_state,
                                     const AccountId& account_id);

// Sets the currently allowed input method ID, including those that are enforced
// by device policy.
void EnforceDevicePolicyInputMethods(std::string user_input_method_id);

// Remove any policy limitations on allowed IMEs.
void StopEnforcingPolicyInputMethods();

// Update the keyboard settings for `account_id`.
void SetKeyboardSettings(PrefService& local_state, const AccountId& account_id);

// Covert a base::ListValue of locale info to a list of ash struct LocaleItem.
std::vector<LocaleItem> FromListValueToLocaleItem(base::ListValue locales);

}  // namespace ash::lock_screen_utils

#endif  // CHROME_BROWSER_ASH_LOGIN_LOCK_SCREEN_UTILS_H_
