diff options
| author | 2023-04-03 12:43:40 -0700 | |
|---|---|---|
| committer | 2023-04-03 12:43:40 -0700 | |
| commit | 9058cb22f47a36a70f0e081e325198dddc3d16d0 (patch) | |
| tree | 4313d79410d3f997ec21b193fae1807092d695bf | |
| parent | 9faf11fc4eb30bd11011f02be4c9fc1a6bfefa3d (diff) | |
Non-managed profiles autoapply USER_SETUP_COMPLETE
Profiles, other than managed profiles, typically do not go through
SetupWizard or have a DPC-guided setup flow. Consequently, there is no
app that sets the USER_SETUP_COMPLETE secure setting for them, which
leads to oddities.
For such profiles, we should automatically consider them as being "setup
complete", so we set the USER_SETUP_COMPLETE setting as creation time.
Bug: 276761898
Test: atest atest com.android.server.pm.UserManagerTest#testCloneUser
Change-Id: I9245334986f520f4c3a4eaab454769149ae07729
| -rw-r--r-- | services/core/java/com/android/server/pm/UserTypeFactory.java | 13 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java | 2 |
2 files changed, 14 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/pm/UserTypeFactory.java b/services/core/java/com/android/server/pm/UserTypeFactory.java index b7a2b86b1bcd..a814ca46fa5e 100644 --- a/services/core/java/com/android/server/pm/UserTypeFactory.java +++ b/services/core/java/com/android/server/pm/UserTypeFactory.java @@ -136,6 +136,7 @@ public final class UserTypeFactory { com.android.internal.R.color.system_neutral2_900) .setDefaultRestrictions(null) .setDefaultCrossProfileIntentFilters(getDefaultCloneCrossProfileIntentFilter()) + .setDefaultSecureSettings(getDefaultNonManagedProfileSecureSettings()) .setDefaultUserProperties(new UserProperties.Builder() .setStartWithParent(true) .setShowInLauncher(UserProperties.SHOW_IN_LAUNCHER_WITH_PARENT) @@ -216,7 +217,8 @@ public final class UserTypeFactory { com.android.internal.R.color.profile_badge_1_dark, com.android.internal.R.color.profile_badge_2_dark, com.android.internal.R.color.profile_badge_3_dark) - .setDefaultRestrictions(restrictions); + .setDefaultRestrictions(restrictions) + .setDefaultSecureSettings(getDefaultNonManagedProfileSecureSettings()); } /** @@ -337,6 +339,15 @@ public final class UserTypeFactory { return DefaultCrossProfileIntentFiltersUtils.getDefaultCloneProfileFilters(); } + /** Gets a default bundle, keyed by Settings.Secure String names, for non-managed profiles. */ + private static Bundle getDefaultNonManagedProfileSecureSettings() { + final Bundle settings = new Bundle(); + // Non-managed profiles go through neither SetupWizard nor DPC flows, so we automatically + // mark them as setup. + settings.putString(android.provider.Settings.Secure.USER_SETUP_COMPLETE, "1"); + return settings; + } + /** * Reads the given xml parser to obtain device user-type customization, and updates the given * map of {@link UserTypeDetails.Builder}s accordingly. diff --git a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java index 0b6756d7c063..6bcda3fbcf43 100644 --- a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java @@ -178,6 +178,8 @@ public final class UserManagerTest { UserHandle.of(userInfo.id)); assertThat(userContext.getSystemService( UserManager.class).isMediaSharedWithParent()).isTrue(); + assertThat(Settings.Secure.getInt(userContext.getContentResolver(), + Settings.Secure.USER_SETUP_COMPLETE, 0)).isEqualTo(1); List<UserInfo> list = mUserManager.getUsers(); List<UserInfo> cloneUsers = list.stream().filter( |