Merge "Check whether the user is a sub profile before starting Settings homepage" into main

This commit is contained in:
Jason Chiu
2024-05-03 02:14:26 +00:00
committed by Android (Google) Code Review
4 changed files with 100 additions and 24 deletions

View File

@@ -40,7 +40,9 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.ArraySet;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
@@ -74,6 +76,8 @@ import org.robolectric.shadow.api.Shadow;
import org.robolectric.shadows.ShadowActivityManager;
import org.robolectric.util.ReflectionHelpers;
import java.util.Set;
@RunWith(RobolectricTestRunner.class)
@Config(shadows = {
ShadowUserManager.class,
@@ -249,7 +253,7 @@ public class SettingsHomepageActivityTest {
spy(Robolectric.buildActivity(SettingsHomepageActivity.class).get());
doReturn(true).when(activity).isTaskRoot();
activity.onCreate(/* savedInstanceState */ null);
activity.onCreate(/* savedInstanceState= */ null);
verify(activity, never()).finish();
}
@@ -260,7 +264,7 @@ public class SettingsHomepageActivityTest {
spy(Robolectric.buildActivity(SettingsHomepageActivity.class).get());
doReturn(false).when(activity).isTaskRoot();
activity.onCreate(/* savedInstanceState */ null);
activity.onCreate(/* savedInstanceState= */ null);
verify(activity).finish();
verify(activity).startActivity(any(Intent.class));
@@ -269,26 +273,75 @@ public class SettingsHomepageActivityTest {
@Test
public void onCreate_notTaskRoot_flagNewTask_shouldOnlyFinish() {
SettingsHomepageActivity activity =
spy(Robolectric.buildActivity(SettingsHomepageActivity.class).get());
spy(Robolectric.buildActivity(SettingsHomepageActivity.class,
new Intent().addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)).get());
doReturn(false).when(activity).isTaskRoot();
activity.setIntent(new Intent().addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
activity.onCreate(/* savedInstanceState */ null);
activity.onCreate(/* savedInstanceState= */ null);
verify(activity).finish();
verify(activity, never()).startActivity(any(Intent.class));
}
@Test
@Config(shadows = ShadowActivityEmbeddingUtils.class)
public void onCreate_eligibleProfile_shouldNotRestartActivity() {
ShadowActivityEmbeddingUtils.setIsEmbeddingActivityEnabled(true);
SettingsHomepageActivity activity =
spy(Robolectric.buildActivity(SettingsHomepageActivity.class).get());
doReturn(0).when(activity).getUserId();
doReturn(true).when(activity).isTaskRoot();
activity.onCreate(/* savedInstanceState= */ null);
verify(activity, never()).finish();
verify(activity, never()).startActivityAsUser(any(Intent.class), any(UserHandle.class));
}
@Test
@Config(shadows = ShadowActivityEmbeddingUtils.class)
public void onCreate_managedProfile_shouldRestartActivity() {
ShadowActivityEmbeddingUtils.setIsEmbeddingActivityEnabled(true);
SettingsHomepageActivity activity =
spy(Robolectric.buildActivity(SettingsHomepageActivity.class).get());
final Set<Integer> profileIds = new ArraySet<>();
profileIds.add(10);
ShadowUserManager.getShadow().setManagedProfiles(profileIds);
doReturn(10).when(activity).getUserId();
doReturn(true).when(activity).isTaskRoot();
activity.onCreate(/* savedInstanceState= */ null);
verify(activity).finish();
verify(activity).startActivityAsUser(any(Intent.class), any(UserHandle.class));
}
@Test
@Config(shadows = ShadowActivityEmbeddingUtils.class)
public void onCreate_privateProfile_shouldRestartActivity() {
ShadowActivityEmbeddingUtils.setIsEmbeddingActivityEnabled(true);
SettingsHomepageActivity activity =
spy(Robolectric.buildActivity(SettingsHomepageActivity.class).get());
ShadowUserManager.getShadow().setPrivateProfile(11, "private", 0);
doReturn(11).when(activity).getUserId();
doReturn(true).when(activity).isTaskRoot();
activity.onCreate(/* savedInstanceState= */ null);
verify(activity).finish();
verify(activity).startActivityAsUser(any(Intent.class), any(UserHandle.class));
}
/** This test is for large screen devices Activity embedding. */
@Test
@Config(shadows = ShadowActivityEmbeddingUtils.class)
public void onCreate_flagClearTop_shouldInitRules() {
ShadowActivityEmbeddingUtils.setIsEmbeddingActivityEnabled(true);
SettingsHomepageActivity activity =
spy(Robolectric.buildActivity(SettingsHomepageActivity.class).get());
doReturn(new Intent().setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).when(activity).getIntent();
spy(Robolectric.buildActivity(SettingsHomepageActivity.class,
new Intent().setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)).get());
activity.onCreate(/* savedInstanceState */ null);
activity.onCreate(/* savedInstanceState= */ null);
verify(activity).initSplitPairRules();
}
@@ -315,12 +368,12 @@ public class SettingsHomepageActivityTest {
@Test
public void getInitialReferrer_hasReferrerExtra_returnGivenReferrer() {
SettingsHomepageActivity activity =
spy(Robolectric.buildActivity(SettingsHomepageActivity.class).get());
doReturn(activity.getPackageName()).when(activity).getCurrentReferrer();
String referrer = "com.abc";
activity.setIntent(new Intent().putExtra(SettingsHomepageActivity.EXTRA_INITIAL_REFERRER,
referrer));
SettingsHomepageActivity activity =
spy(Robolectric.buildActivity(SettingsHomepageActivity.class,
new Intent().putExtra(SettingsHomepageActivity.EXTRA_INITIAL_REFERRER,
referrer)).get());
doReturn(activity.getPackageName()).when(activity).getCurrentReferrer();
assertEquals(activity.getInitialReferrer(), referrer);
}
@@ -330,8 +383,8 @@ public class SettingsHomepageActivityTest {
String referrer = "com.abc";
Uri uri = new Uri.Builder().scheme("android-app").authority(referrer).build();
SettingsHomepageActivity activity =
spy(Robolectric.buildActivity(SettingsHomepageActivity.class).get());
activity.setIntent(new Intent().putExtra(Intent.EXTRA_REFERRER, uri));
spy(Robolectric.buildActivity(SettingsHomepageActivity.class,
new Intent().putExtra(Intent.EXTRA_REFERRER, uri)).get());
assertNotEquals(activity.getCurrentReferrer(), referrer);
}
@@ -340,8 +393,8 @@ public class SettingsHomepageActivityTest {
public void getCurrentReferrer_hasReferrerNameExtra_shouldNotEqual() {
String referrer = "com.abc";
SettingsHomepageActivity activity =
spy(Robolectric.buildActivity(SettingsHomepageActivity.class).get());
activity.setIntent(new Intent().putExtra(Intent.EXTRA_REFERRER_NAME, referrer));
spy(Robolectric.buildActivity(SettingsHomepageActivity.class,
new Intent().putExtra(Intent.EXTRA_REFERRER_NAME, referrer)).get());
assertNotEquals(activity.getCurrentReferrer(), referrer);
}