Merge "Fix a bug where the locale was not switching properly for user-10." into sc-v2-dev
diff --git a/service/src/com/android/car/user/InitialUserSetter.java b/service/src/com/android/car/user/InitialUserSetter.java
index 29406db..69fdfcf 100644
--- a/service/src/com/android/car/user/InitialUserSetter.java
+++ b/service/src/com/android/car/user/InitialUserSetter.java
@@ -241,7 +241,13 @@
*/
@NonNull
public Builder setUserLocales(@Nullable String userLocales) {
- mUserLocales = userLocales;
+ // This string can come from a binder IPC call where empty string is the default value
+ // for the auto-generated code. So, need to check for that.
+ if (userLocales != null && userLocales.trim().isEmpty()) {
+ mUserLocales = null;
+ } else {
+ mUserLocales = userLocales;
+ }
return this;
}
diff --git a/tests/carservice_unit_test/src/com/android/car/user/InitialUserSetterTest.java b/tests/carservice_unit_test/src/com/android/car/user/InitialUserSetterTest.java
index 3a7430b..1cb5d41 100644
--- a/tests/carservice_unit_test/src/com/android/car/user/InitialUserSetterTest.java
+++ b/tests/carservice_unit_test/src/com/android/car/user/InitialUserSetterTest.java
@@ -593,6 +593,40 @@
}
@Test
+ public void testDefaultBehavior_firstBoot_ok_setEmptyLocale() throws Exception {
+ // no need to mock hasInitialUser(), it will return false by default
+ UserInfo newUser = expectCreateFullUser(USER_ID, OWNER_NAME, UserInfo.FLAG_ADMIN);
+ expectSwitchUser(USER_ID);
+
+ mSetter.set(new Builder(InitialUserSetter.TYPE_DEFAULT_BEHAVIOR)
+ .setUserLocales("")
+ .build());
+
+ verifyUserSwitched(USER_ID);
+ verifyFallbackDefaultBehaviorNeverCalled();
+ verifySystemUserUnlocked();
+ assertInitialUserSet(newUser);
+ assertSystemLocalesToBeNull();
+ }
+
+ @Test
+ public void testDefaultBehavior_firstBoot_ok_setBlankLocale() throws Exception {
+ // no need to mock hasInitialUser(), it will return false by default
+ UserInfo newUser = expectCreateFullUser(USER_ID, OWNER_NAME, UserInfo.FLAG_ADMIN);
+ expectSwitchUser(USER_ID);
+
+ mSetter.set(new Builder(InitialUserSetter.TYPE_DEFAULT_BEHAVIOR)
+ .setUserLocales(" ")
+ .build());
+
+ verifyUserSwitched(USER_ID);
+ verifyFallbackDefaultBehaviorNeverCalled();
+ verifySystemUserUnlocked();
+ assertInitialUserSet(newUser);
+ assertSystemLocalesToBeNull();
+ }
+
+ @Test
public void testDefaultBehavior_firstBoot_fail_createUserFailed() throws Exception {
// no need to mock hasInitialUser(), it will return false by default
// no need to mock createUser(), it will return null by default
@@ -1182,6 +1216,10 @@
assertThat(getSettingsString(Settings.System.SYSTEM_LOCALES)).isEqualTo(expected);
}
+ private void assertSystemLocalesToBeNull() {
+ assertThat(getSettingsString(Settings.System.SYSTEM_LOCALES)).isNull();
+ }
+
private final class MyListener implements Consumer<UserInfo> {
public int numberCalls;
public UserInfo initialUser;