Add login screen locale and input method device policies

This CL introduces two device policies for Chrome OS:
+ DeviceLoginScreenLocales
  Mandates a specific locale for the login screen.
  (Note that the policy value is a list for future compatibility, in
  case dynamically switching login screen locales is implemented in the
  future. Currently only the first value is used).
+ DeviceLoginScreenInputMethods
  Enforces input methods on the login screen.

This is done by:
Locale:
- Introducing cros setting kDeviceLoginScreenLocales, controlled by the new policy
- Applying Login Screen locale before login screen is displayed
- Pre-setting kApplicationLocale on application exit for the next run

Input Methods:
- Introducing cros setting kDeviceLoginScreenInputMethods, controlled by the new policy
- new method SetAllowedKeyboardLayoutInputMethods on InputMethodManager to restrict input methods
- enforcing keyboard layouts (through InputMethodManager) on sign-in screen (depending on which user's fod is focused)
- adding info to the tray icon to display that input methods are controlled by policy

See go/cros-locale-input-policy-dd for more detail.

BUG=373324
TEST=New browser_tests, new unit_tests, manual test with YAPS.

Review-Url: https://codereview.chromium.org/2652793003
Cr-Original-Commit-Position: refs/heads/master@{#448961}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 8c3ffb5e698796da543bcbf2192bbb5aebb90807
1 file changed
tree: e7c995d28ebdf58dcd6d5fc3a75a068db0c7f0e0
  1. chrome_device_policy.proto
  2. install_attributes.proto