diff --git a/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java b/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java index b5e7692043b..b8f140fb1c3 100644 --- a/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java +++ b/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java @@ -18,6 +18,7 @@ package com.android.settings.privatespace; import static android.os.UserManager.USER_TYPE_PROFILE_PRIVATE; import static android.provider.Settings.Secure.HIDE_PRIVATESPACE_ENTRY_POINT; +import static android.provider.Settings.Secure.USER_SETUP_COMPLETE; import android.app.ActivityManager; import android.app.IActivityManager; @@ -96,6 +97,7 @@ public class PrivateSpaceMaintainer { IActivityManager am = ActivityManager.getService(); try { + //TODO(b/313926659): To check and handle failure of startProfile am.startProfile(mUserHandle.getIdentifier()); } catch (RemoteException e) { Log.e(TAG, "Failed to start private profile"); @@ -104,6 +106,7 @@ public class PrivateSpaceMaintainer { Log.i(TAG, "Private space created with id: " + mUserHandle.getIdentifier()); resetPrivateSpaceSettings(); + setUserSetupComplete(); } return true; } @@ -250,4 +253,14 @@ public class PrivateSpaceMaintainer { private void resetPrivateSpaceSettings() { setHidePrivateSpaceEntryPointSetting(HIDE_PRIVATE_SPACE_ENTRY_POINT_DISABLED_VAL); } + + /** + * Sets the USER_SETUP_COMPLETE for private profile on which device theme is applied to the + * profile. + */ + @GuardedBy("this") + private void setUserSetupComplete() { + Settings.Secure.putIntForUser(mContext.getContentResolver(), USER_SETUP_COMPLETE, + 1, mUserHandle.getIdentifier()); + } } diff --git a/tests/unit/src/com/android/settings/privatespace/PrivateSpaceMaintainerTest.java b/tests/unit/src/com/android/settings/privatespace/PrivateSpaceMaintainerTest.java index 1d273263db5..1605ae66694 100644 --- a/tests/unit/src/com/android/settings/privatespace/PrivateSpaceMaintainerTest.java +++ b/tests/unit/src/com/android/settings/privatespace/PrivateSpaceMaintainerTest.java @@ -198,4 +198,40 @@ public class PrivateSpaceMaintainerTest { assertThat(privateSpaceMaintainer.doesPrivateSpaceExist()).isFalse(); assertThat(privateSpaceMaintainer.lockPrivateSpace()).isFalse(); } + + /** + * Tests that {@link PrivateSpaceMaintainer#createPrivateSpace()} when no PS exists sets + * USER_SETUP_COMPLETE setting. + */ + @Test + public void createPrivateSpace_psDoesNotExist_setsUserSetupComplete() { + PrivateSpaceMaintainer privateSpaceMaintainer = + PrivateSpaceMaintainer.getInstance(mContext); + privateSpaceMaintainer.createPrivateSpace(); + assertThat(getSecureUserSetupComplete()).isEqualTo(1); + } + + /** + * Tests that {@link PrivateSpaceMaintainer#createPrivateSpace()} when PS exists does not + * change USER_SETUP_COMPLETE setting. + */ + @Test + public void createPrivateSpace_pSExists_doesNotChangeUserSetupSetting() { + PrivateSpaceMaintainer privateSpaceMaintainer = + PrivateSpaceMaintainer.getInstance(mContext); + privateSpaceMaintainer.createPrivateSpace(); + assertThat(getSecureUserSetupComplete()).isEqualTo(1); + privateSpaceMaintainer.createPrivateSpace(); + assertThat(getSecureUserSetupComplete()).isEqualTo(1); + } + + private int getSecureUserSetupComplete() { + PrivateSpaceMaintainer privateSpaceMaintainer = + PrivateSpaceMaintainer.getInstance(mContext); + return Settings.Secure.getIntForUser( + mContentResolver, + Settings.Secure.USER_SETUP_COMPLETE, + 0, + privateSpaceMaintainer.getPrivateProfileHandle().getIdentifier()); + } }