diff --git a/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java b/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java index 6d07305e375..3a084102ec5 100644 --- a/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java +++ b/src/com/android/settings/privatespace/PrivateSpaceMaintainer.java @@ -20,6 +20,7 @@ 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.PRIVATE_SPACE_AUTO_LOCK; import static android.provider.Settings.Secure.PRIVATE_SPACE_AUTO_LOCK_AFTER_DEVICE_RESTART; +import static android.provider.Settings.Secure.SKIP_FIRST_USE_HINTS; import static android.provider.Settings.Secure.USER_SETUP_COMPLETE; import android.app.ActivityManager; @@ -122,6 +123,7 @@ public class PrivateSpaceMaintainer { Log.i(TAG, "Private space created with id: " + mUserHandle.getIdentifier()); resetPrivateSpaceSettings(); setUserSetupComplete(); + setSkipFirstUseHints(); } return true; } @@ -350,6 +352,17 @@ public class PrivateSpaceMaintainer { 1, mUserHandle.getIdentifier()); } + /** + * Sets the SKIP_FIRST_USE_HINTS for private profile so that the first launch of an app in + * private space will not display introductory hints. + */ + @GuardedBy("this") + private void setSkipFirstUseHints() { + Log.d(TAG, "setting SKIP_FIRST_USE_HINTS = 1 for private profile"); + Settings.Secure.putIntForUser(mContext.getContentResolver(), SKIP_FIRST_USE_HINTS, + 1, mUserHandle.getIdentifier()); + } + private boolean isPrivateSpaceAutoLockSupported() { return android.os.Flags.allowPrivateProfile() && android.multiuser.Flags.supportAutolockForPrivateSpace() diff --git a/tests/unit/src/com/android/settings/privatespace/PrivateSpaceMaintainerTest.java b/tests/unit/src/com/android/settings/privatespace/PrivateSpaceMaintainerTest.java index 637b4857ce5..522dcd5e242 100644 --- a/tests/unit/src/com/android/settings/privatespace/PrivateSpaceMaintainerTest.java +++ b/tests/unit/src/com/android/settings/privatespace/PrivateSpaceMaintainerTest.java @@ -421,6 +421,30 @@ public class PrivateSpaceMaintainerTest { assertThat(privateSpaceMaintainer.isPrivateSpaceEntryPointEnabled()).isFalse(); } + @Test + public void createPrivateSpace_psDoesNotExist_setsSkipFirstUseHints() { + mSetFlagsRule.enableFlags( + android.multiuser.Flags.FLAG_ENABLE_PRIVATE_SPACE_FEATURES); + assumeTrue(mContext.getSystemService(UserManager.class).canAddPrivateProfile()); + PrivateSpaceMaintainer privateSpaceMaintainer = + PrivateSpaceMaintainer.getInstance(mContext); + privateSpaceMaintainer.createPrivateSpace(); + assertThat(getSecureSkipFirstUseHints()).isEqualTo(1); + } + + @Test + public void createPrivateSpace_pSExists_doesNotChangeSkipFirstUseHints() { + mSetFlagsRule.enableFlags( + android.multiuser.Flags.FLAG_ENABLE_PRIVATE_SPACE_FEATURES); + assumeTrue(mContext.getSystemService(UserManager.class).canAddPrivateProfile()); + PrivateSpaceMaintainer privateSpaceMaintainer = + PrivateSpaceMaintainer.getInstance(mContext); + privateSpaceMaintainer.createPrivateSpace(); + assertThat(getSecureSkipFirstUseHints()).isEqualTo(1); + privateSpaceMaintainer.createPrivateSpace(); + assertThat(getSecureSkipFirstUseHints()).isEqualTo(1); + } + private int getSecureUserSetupComplete() { PrivateSpaceMaintainer privateSpaceMaintainer = PrivateSpaceMaintainer.getInstance(mContext); @@ -431,6 +455,16 @@ public class PrivateSpaceMaintainerTest { privateSpaceMaintainer.getPrivateProfileHandle().getIdentifier()); } + private int getSecureSkipFirstUseHints() { + PrivateSpaceMaintainer privateSpaceMaintainer = + PrivateSpaceMaintainer.getInstance(mContext); + return Settings.Secure.getIntForUser( + mContentResolver, + Settings.Secure.SKIP_FIRST_USE_HINTS, + 0, + privateSpaceMaintainer.getPrivateProfileHandle().getIdentifier()); + } + private int getPsSensitiveNotificationsValue(PrivateSpaceMaintainer privateSpaceMaintainer) { return Settings.Secure.getIntForUser(mContentResolver, LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,