From 83f73732de74cf7c9869faa8f7d40789b031c288 Mon Sep 17 00:00:00 2001 From: josephpv Date: Mon, 15 Apr 2024 10:37:23 +0000 Subject: [PATCH] Set SKIP_FIRST_USE_HINTS setting for private space With this change the value of Secure settings SKIP_FIRST_USE_HINTS is set for private profile after creation of profile in PS setup flow. The value is set for the profile user so that first launch of an app in private space will not display introductory hints. Bug: 325596557 Test: PrivateSpaceMaintainerTest Change-Id: I63a967bba052a3dcb4742c95b89c6da19aba74d5 --- .../privatespace/PrivateSpaceMaintainer.java | 13 +++++++ .../PrivateSpaceMaintainerTest.java | 34 +++++++++++++++++++ 2 files changed, 47 insertions(+) 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,