Merge "Fix system locale propagation during user creation." into nyc-dev am: ce9f5e3657

am: 005ef10518

* commit '005ef10518adb9768ad6569f0c6b42db949083d4':
  Fix system locale propagation during user creation.

Change-Id: Ibbfebbfb28321bbd7275461b9e8d112577e05620
This commit is contained in:
Seigo Nonaka
2016-05-26 04:17:47 +00:00
committed by android-build-merger
2 changed files with 25 additions and 7 deletions

View File

@@ -2230,19 +2230,37 @@ public final class Settings {
* @param outConfig Where to place the configuration settings.
*/
public static void getConfiguration(ContentResolver cr, Configuration outConfig) {
getConfigurationForUser(cr, outConfig, UserHandle.myUserId());
adjustConfigurationForUser(cr, outConfig, UserHandle.myUserId(),
false /* updateSettingsIfEmpty */);
}
/** @hide */
public static void getConfigurationForUser(ContentResolver cr, Configuration outConfig,
int userHandle) {
public static void adjustConfigurationForUser(ContentResolver cr, Configuration outConfig,
int userHandle, boolean updateSettingsIfEmpty) {
outConfig.fontScale = Settings.System.getFloatForUser(
cr, FONT_SCALE, DEFAULT_FONT_SCALE, userHandle);
if (outConfig.fontScale < 0) {
outConfig.fontScale = DEFAULT_FONT_SCALE;
}
outConfig.setLocales(LocaleList.forLanguageTags(
Settings.System.getStringForUser(cr, SYSTEM_LOCALES, userHandle)));
final String localeValue =
Settings.System.getStringForUser(cr, SYSTEM_LOCALES, userHandle);
if (localeValue != null) {
outConfig.setLocales(LocaleList.forLanguageTags(localeValue));
} else {
// Do not update configuration with emtpy settings since we need to take over the
// locale list of previous user if the settings value is empty. This happens when a
// new user is created.
if (updateSettingsIfEmpty) {
// Make current configuration persistent. This is necessary the first time a
// user log in. At the first login, the configuration settings are empty, so we
// need to store the adjusted configuration as the initial settings.
Settings.System.putStringForUser(
cr, SYSTEM_LOCALES, outConfig.getLocales().toLanguageTags(),
userHandle);
}
}
}
/**

View File

@@ -18306,8 +18306,8 @@ public final class ActivityManagerService extends ActivityManagerNative
void updateUserConfigurationLocked() {
Configuration configuration = new Configuration(mConfiguration);
Settings.System.getConfigurationForUser(mContext.getContentResolver(), configuration,
mUserController.getCurrentUserIdLocked());
Settings.System.adjustConfigurationForUser(mContext.getContentResolver(), configuration,
mUserController.getCurrentUserIdLocked(), Settings.System.canWrite(mContext));
updateConfigurationLocked(configuration, null, false);
}