summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adam Bookatz <bookatz@google.com> 2023-04-03 12:43:40 -0700
committer Adam Bookatz <bookatz@google.com> 2023-04-03 12:43:40 -0700
commit9058cb22f47a36a70f0e081e325198dddc3d16d0 (patch)
tree4313d79410d3f997ec21b193fae1807092d695bf
parent9faf11fc4eb30bd11011f02be4c9fc1a6bfefa3d (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.java13
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java2
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(