diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/unit/com/android/documentsui/DragAndDropManagerTests.java | 39 | ||||
-rw-r--r-- | tests/unit/com/android/documentsui/UserManagerStateTest.java | 196 |
2 files changed, 95 insertions, 140 deletions
diff --git a/tests/unit/com/android/documentsui/DragAndDropManagerTests.java b/tests/unit/com/android/documentsui/DragAndDropManagerTests.java index d7a701f75..27b4074fd 100644 --- a/tests/unit/com/android/documentsui/DragAndDropManagerTests.java +++ b/tests/unit/com/android/documentsui/DragAndDropManagerTests.java @@ -26,17 +26,22 @@ import android.content.ClipData; import android.content.ClipDescription; import android.graphics.drawable.Drawable; import android.os.PersistableBundle; +import android.platform.test.annotations.RequiresFlagsDisabled; +import android.platform.test.annotations.RequiresFlagsEnabled; +import android.platform.test.flag.junit.CheckFlagsRule; +import android.platform.test.flag.junit.DeviceFlagsValueProvider; import android.util.Pair; import android.view.KeyEvent; import android.view.View; +import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; -import androidx.test.runner.AndroidJUnit4; import com.android.documentsui.DragAndDropManager.RuntimeDragAndDropManager; import com.android.documentsui.DragAndDropManager.State; import com.android.documentsui.base.DocumentStack; import com.android.documentsui.base.RootInfo; +import com.android.documentsui.flags.Flags; import com.android.documentsui.services.FileOperationService; import com.android.documentsui.services.FileOperations; import com.android.documentsui.testing.ClipDatas; @@ -52,6 +57,7 @@ import com.android.documentsui.testing.TestSelectionDetails; import com.android.documentsui.testing.Views; import org.junit.Before; +import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; @@ -93,6 +99,9 @@ public class DragAndDropManagerTests { private DragAndDropManager mManager; + @Rule + public final CheckFlagsRule mCheckFlagsRule = DeviceFlagsValueProvider.createCheckFlagsRule(); + @Before public void setUp() { mEnv = TestEnv.create(); @@ -191,7 +200,8 @@ public class DragAndDropManagerTests { } @Test - public void testStartDrag_BuildsCorrectShadow_MultipleDocs() { + @RequiresFlagsDisabled({Flags.FLAG_USE_MATERIAL3}) + public void testStartDrag_BuildsCorrectShadow_MultipleDocs_M3Disabled() { mManager.startDrag( mStartDragView, Arrays.asList(TestEnv.FILE_APK, TestEnv.FILE_JPG), @@ -208,6 +218,24 @@ public class DragAndDropManagerTests { } @Test + @RequiresFlagsEnabled({Flags.FLAG_USE_MATERIAL3}) + public void testStartDrag_BuildsCorrectShadow_MultipleDocs() { + mManager.startDrag( + mStartDragView, + Arrays.asList(TestEnv.FILE_APK, TestEnv.FILE_JPG), + TestProvidersAccess.HOME, + Arrays.asList(TestEnv.FOLDER_0.derivedUri, TestEnv.FILE_APK.derivedUri, + TestEnv.FILE_JPG.derivedUri), + mDetails, + mIconHelper, + TestEnv.FOLDER_0); + + mShadowBuilder.title.assertLastArgument(TestEnv.FILE_APK.displayName); + mShadowBuilder.icon.assertLastArgument(mIconHelper.nextDocumentIcon); + mShadowBuilder.count.assertLastArgument(2); + } + + @Test public void testCanSpringOpen_ReturnsFalse_RootNotSupportCreate() { mManager.startDrag( mStartDragView, @@ -860,6 +888,7 @@ public class DragAndDropManagerTests { public TestEventListener<String> title; public TestEventListener<Drawable> icon; public TestEventListener<Integer> state; + public TestEventListener<Integer> count; private TestDragShadowBuilder() { super(null); @@ -880,6 +909,11 @@ public class DragAndDropManagerTests { this.state.accept(state); } + @Override + void updateDragFileCount(int count) { + this.count.accept(count); + } + public static TestDragShadowBuilder create() { TestDragShadowBuilder builder = Mockito.mock(TestDragShadowBuilder.class, Mockito.CALLS_REAL_METHODS); @@ -887,6 +921,7 @@ public class DragAndDropManagerTests { builder.title = new TestEventListener<>(); builder.icon = new TestEventListener<>(); builder.state = new TestEventListener<>(); + builder.count = new TestEventListener<>(); return builder; } diff --git a/tests/unit/com/android/documentsui/UserManagerStateTest.java b/tests/unit/com/android/documentsui/UserManagerStateTest.java index 9d629c574..04102a429 100644 --- a/tests/unit/com/android/documentsui/UserManagerStateTest.java +++ b/tests/unit/com/android/documentsui/UserManagerStateTest.java @@ -23,6 +23,7 @@ import static com.android.documentsui.DevicePolicyResources.Strings.WORK_TAB; import static com.google.common.truth.Truth.assertWithMessage; +import static org.junit.Assume.assumeFalse; import static org.junit.Assume.assumeTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; @@ -225,7 +226,7 @@ public class UserManagerStateTest { @Test public void testGetUserIds_allProfilesCurrentUserSystem_allShowInSharingSurfacesSeparate() { - if (!SdkLevel.isAtLeastV()) return; + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mSystemUser); initializeUserManagerState( currentUser, @@ -240,7 +241,7 @@ public class UserManagerStateTest { @Test public void testGetUserIds_allProfilesCurrentUserManaged_allShowInSharingSurfacesSeparate() { - if (!SdkLevel.isAtLeastV()) return; + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mManagedUser); initializeUserManagerState( currentUser, @@ -255,7 +256,7 @@ public class UserManagerStateTest { @Test public void testGetUserIds_allProfilesCurrentUserPrivate_allShowInSharingSurfacesSeparate() { - if (!SdkLevel.isAtLeastV()) return; + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mPrivateUser); initializeUserManagerState( currentUser, @@ -289,7 +290,7 @@ public class UserManagerStateTest { @Test public void testGetUserIds_systemAndPrivateUserCurrentUserSystem_returnsBoth() { - if (!SdkLevel.isAtLeastV()) return; + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mSystemUser); initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mPrivateUser)); @@ -300,7 +301,7 @@ public class UserManagerStateTest { @Test public void testGetUserIds_systemAndPrivateUserCurrentUserPrivate_returnsBoth() { - if (!SdkLevel.isAtLeastV()) return; + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mPrivateUser); initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mPrivateUser)); @@ -310,116 +311,6 @@ public class UserManagerStateTest { } @Test - public void testGetUserIds_systemAndOtherUserCurrentUserOtherPreV_returnsCurrentUser() { - if (SdkLevel.isAtLeastV()) return; - UserId currentUser = UserId.of(mOtherUser); - initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mOtherUser)); - - assertWithMessage("getUserIds returns unexpected list of user ids") - .that(mUserManagerState.getUserIds()) - .containsExactly(currentUser); - } - - @Test - public void testGetUserIds_systemAndOtherUserCurrentUserOtherPostV_returnsSystemUser() { - if (!SdkLevel.isAtLeastV()) return; - UserId currentUser = UserId.of(mOtherUser); - initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mOtherUser)); - - assertWithMessage("getUserIds returns unexpected list of user ids") - .that(mUserManagerState.getUserIds()) - .containsExactly(UserId.of(mSystemUser)); - } - - @Test - public void testGetUserIds_normalAndOtherUserCurrentUserNormal_returnsCurrentUser() { - // since both users do not have show in sharing surfaces separate, returns - // current user - UserId currentUser = UserId.of(mNormalUser); - initializeUserManagerState(currentUser, Lists.newArrayList(mOtherUser, mNormalUser)); - - assertWithMessage("getUserIds returns unexpected list of user ids") - .that(mUserManagerState.getUserIds()) - .containsExactly(UserId.of(mNormalUser)); - } - - @Test - public void testGetUserIds_systemAndManagedUserCurrentUserSystem_returnsBothInOrder() { - // Returns the both if there are system and managed users. - if (SdkLevel.isAtLeastV()) return; - UserId currentUser = UserId.of(mSystemUser); - initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mManagedUser)); - assertWithMessage("getUserIds returns unexpected list of user ids") - .that(mUserManagerState.getUserIds()) - .containsExactly(UserId.of(mSystemUser), UserId.of(mManagedUser)) - .inOrder(); - } - - @Test - public void testGetUserIds_systemAndManagedUserCurrentUserManaged_returnsBothInOrder() { - // Returns the both if there are system and managed users. - if (SdkLevel.isAtLeastV()) return; - UserId currentUser = UserId.of(mManagedUser); - initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mManagedUser)); - assertWithMessage("getUserIds returns unexpected list of user ids") - .that(mUserManagerState.getUserIds()) - .containsExactly(UserId.of(mSystemUser), UserId.of(mManagedUser)) - .inOrder(); - } - - @Test - public void testGetUserIds_managedAndSystemUserCurrentUserSystem_returnsBothInOrder() { - // Returns the both if there are system and managed users, regardless of input - // list order. - if (SdkLevel.isAtLeastV()) return; - UserId currentUser = UserId.of(mSystemUser); - initializeUserManagerState(currentUser, Lists.newArrayList(mManagedUser, mSystemUser)); - assertWithMessage("getUserIds returns unexpected list of user ids") - .that(mUserManagerState.getUserIds()) - .containsExactly(UserId.of(mSystemUser), UserId.of(mManagedUser)) - .inOrder(); - } - - @Test - public void testGetUserIds_otherAndManagedUserCurrentUserOtherPreV_returnsCurrentUser() { - // When there is no system user, returns the current user. - // This is a case theoretically can happen but we don't expect. So we return the - // current - // user only. - if (SdkLevel.isAtLeastV()) return; - UserId currentUser = UserId.of(mOtherUser); - initializeUserManagerState(currentUser, Lists.newArrayList(mOtherUser, mManagedUser)); - assertWithMessage("getUserIds returns unexpected list of user ids") - .that(mUserManagerState.getUserIds()) - .containsExactly(currentUser); - } - - @Test - public void testGetUserIds_otherAndManagedUserCurrentUserOtherPostV_returnsManagedUser() { - // Only the users with show in sharing surfaces separate are eligible to be - // returned - if (!SdkLevel.isAtLeastV()) return; - UserId currentUser = UserId.of(mOtherUser); - initializeUserManagerState(currentUser, Lists.newArrayList(mOtherUser, mManagedUser)); - assertWithMessage("getUserIds returns unexpected list of user ids") - .that(mUserManagerState.getUserIds()) - .containsExactly(UserId.of(mManagedUser)); - } - - @Test - public void testGetUserIds_otherAndManagedUserCurrentUserManaged_returnsCurrentUser() { - // When there is no system user, returns the current user. - // This is a case theoretically can happen, but we don't expect. So we return - // the current - // user only. - UserId currentUser = UserId.of(mManagedUser); - initializeUserManagerState(currentUser, Lists.newArrayList(mOtherUser, mManagedUser)); - assertWithMessage("getUserIds returns unexpected list of user ids") - .that(mUserManagerState.getUserIds()) - .containsExactly(currentUser); - } - - @Test public void testGetUserIds_unsupportedDeviceCurrent_returnsCurrentUser() { // This test only tests for Android R or later. This test case always passes // before R. @@ -457,7 +348,8 @@ public class UserManagerStateTest { initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mManagedUser)); final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfoManagedUser); - when(mMockPackageManager.queryIntentActivities(any(Intent.class), anyInt())) + when(mMockPackageManager.queryIntentActivitiesAsUser( + any(Intent.class), anyInt(), eq(mSystemUser))) .thenReturn(mMockResolveInfoList); Map<UserId, Boolean> expectedCanForwardToProfileIdMap = new HashMap<>(); @@ -471,7 +363,7 @@ public class UserManagerStateTest { @Test public void testGetCanForwardToProfileIdMap_systemUserCanAlwaysForwardToPrivate() { - if (!SdkLevel.isAtLeastV()) return; + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mSystemUser); initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mPrivateUser)); @@ -497,8 +389,8 @@ public class UserManagerStateTest { .thenReturn(mMockResolveInfoList); } else { initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mManagedUser)); - when(mMockPackageManager.queryIntentActivities( - mMockIntent, PackageManager.MATCH_DEFAULT_ONLY)) + when(mMockPackageManager.queryIntentActivitiesAsUser( + mMockIntent, PackageManager.MATCH_DEFAULT_ONLY, mSystemUser)) .thenReturn(mMockResolveInfoList); } @@ -515,10 +407,13 @@ public class UserManagerStateTest { } @Test - public void testGetCanForwardToProfileIdMap_managedCanForwardToAll() { + public void testGetCanForwardToProfileIdMap_managedCanForwardToAllVPlus() { + assumeTrue(SdkLevel.isAtLeastV()); + UserId currentUser = UserId.of(mManagedUser); final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfoPrimaryUser); - when(mMockPackageManager.queryIntentActivities(any(Intent.class), anyInt())) + when(mMockPackageManager.queryIntentActivitiesAsUser( + any(Intent.class), anyInt(), eq(mManagedUser))) .thenReturn(mMockResolveInfoList); initializeUserManagerState( @@ -535,10 +430,31 @@ public class UserManagerStateTest { } @Test + public void testGetCanForwardToProfileIdMap_managedCanForwardToAllUMinus() { + assumeFalse(SdkLevel.isAtLeastV()); + + UserId currentUser = UserId.of(mManagedUser); + final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfoPrimaryUser); + when(mMockPackageManager.queryIntentActivitiesAsUser( + any(Intent.class), anyInt(), eq(mManagedUser))) + .thenReturn(mMockResolveInfoList); + + initializeUserManagerState( + currentUser, Lists.newArrayList(mSystemUser, mManagedUser)); + + Map<UserId, Boolean> expectedCanForwardToProfileIdMap = new HashMap<>(); + expectedCanForwardToProfileIdMap.put(UserId.of(mSystemUser), true); + expectedCanForwardToProfileIdMap.put(UserId.of(mManagedUser), true); + + assertWithMessage("getCanForwardToProfileIdMap returns incorrect mappings") + .that(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent)) + .isEqualTo(expectedCanForwardToProfileIdMap); + } + + @Test public void testGetCanForwardToProfileIdMap_managedCanNotForwardToAll() { UserId currentUser = UserId.of(mManagedUser); - final List<ResolveInfo> mMockResolveInfoList = - Lists.newArrayList(mMockInfoPrivateUser, mMockInfoPrimaryUser); + final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfoPrimaryUser); if (SdkLevel.isAtLeastV()) { initializeUserManagerState( @@ -567,12 +483,14 @@ public class UserManagerStateTest { @Test public void testGetCanForwardToProfileIdMap_privateCanForwardToAll() { + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mPrivateUser); initializeUserManagerState( currentUser, Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser)); final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfoPrimaryUser, mMockInfoManagedUser); - when(mMockPackageManager.queryIntentActivities(any(Intent.class), anyInt())) + when(mMockPackageManager.queryIntentActivitiesAsUser( + any(Intent.class), anyInt(), eq(mSystemUser))) .thenReturn(mMockResolveInfoList); Map<UserId, Boolean> expectedCanForwardToProfileIdMap = new HashMap<>(); @@ -587,6 +505,7 @@ public class UserManagerStateTest { @Test public void testGetCanForwardToProfileIdMap_privateCanNotForwardToManagedUser() { + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mPrivateUser); initializeUserManagerState( currentUser, Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser)); @@ -607,7 +526,7 @@ public class UserManagerStateTest { @Test public void testGetCanForwardToProfileIdMap_privateCanAlwaysForwardToSystemUser() { - if (!SdkLevel.isAtLeastV()) return; + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mPrivateUser); initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mPrivateUser)); @@ -626,7 +545,7 @@ public class UserManagerStateTest { @Test public void testOnProfileStatusChange_anyIntentActionForManagedProfile() { - if (!SdkLevel.isAtLeastV()) return; + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mSystemUser); initializeUserManagerState( currentUser, Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser)); @@ -653,7 +572,7 @@ public class UserManagerStateTest { @Test public void testOnProfileStatusChange_actionProfileUnavailableForPrivateProfile() { - if (!SdkLevel.isAtLeastV()) return; + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mSystemUser); UserId managedUser = UserId.of(mManagedUser); UserId privateUser = UserId.of(mPrivateUser); @@ -666,8 +585,7 @@ public class UserManagerStateTest { currentUser, Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser)); // UserManagerState#mUserId and UserManagerState#mCanForwardToProfileIdMap will - // empty - // by default if the getters of these member variables have not been called + // empty by default if the getters of these member variables have not been called List<UserId> userIdsBeforeIntent = new ArrayList<>(mUserManagerState.getUserIds()); Map<UserId, Boolean> canForwardToProfileIdMapBeforeIntent = new HashMap<>(mUserManagerState.getCanForwardToProfileIdMap(mMockIntent)); @@ -694,12 +612,12 @@ public class UserManagerStateTest { @Test public void testOnProfileStatusChange_actionProfileAvailable_profileInitialised() { - if (!SdkLevel.isAtLeastV()) return; + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mSystemUser); UserId managedUser = UserId.of(mManagedUser); UserId privateUser = UserId.of(mPrivateUser); final List<ResolveInfo> mMockResolveInfoList = - Lists.newArrayList(mMockInfoManagedUser, mMockInfoPrivateUser); + Lists.newArrayList(mMockInfoManagedUser); when(mMockPackageManager.queryIntentActivitiesAsUser( mMockIntent, PackageManager.MATCH_DEFAULT_ONLY, mSystemUser)) .thenReturn(mMockResolveInfoList); @@ -748,7 +666,8 @@ public class UserManagerStateTest { final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfoManagedUser); - when(mMockPackageManager.queryIntentActivities(any(Intent.class), anyInt())) + when(mMockPackageManager.queryIntentActivitiesAsUser( + any(Intent.class), anyInt(), eq(mSystemUser))) .thenReturn(mMockResolveInfoList); initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mManagedUser)); @@ -780,13 +699,14 @@ public class UserManagerStateTest { @Test public void testOnProfileStatusChange_actionProfileAvailable_profileNotInitialised() { - if (!SdkLevel.isAtLeastV()) return; + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mSystemUser); UserId managedUser = UserId.of(mManagedUser); UserId privateUser = UserId.of(mPrivateUser); final List<ResolveInfo> mMockResolveInfoList = Lists.newArrayList(mMockInfoManagedUser, mMockInfoPrivateUser); - when(mMockPackageManager.queryIntentActivities(any(Intent.class), anyInt())) + when(mMockPackageManager.queryIntentActivitiesAsUser( + any(Intent.class), anyInt(), eq(mSystemUser))) .thenReturn(mMockResolveInfoList); when(mMockUserManager.getProfileParent(UserHandle.of(privateUser.getIdentifier()))) @@ -836,7 +756,7 @@ public class UserManagerStateTest { @Test public void testGetUserIdToLabelMap_systemUserAndManagedUser_PreV() { - if (SdkLevel.isAtLeastV()) return; + assumeFalse(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mSystemUser); initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mManagedUser)); if (SdkLevel.isAtLeastT()) { @@ -860,7 +780,7 @@ public class UserManagerStateTest { @Test public void testGetUserIdToLabelMap_systemUserManagedUserPrivateUser_PostV() { - if (!SdkLevel.isAtLeastV()) return; + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mSystemUser); initializeUserManagerState( currentUser, Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser)); @@ -891,7 +811,7 @@ public class UserManagerStateTest { @Test public void testGetUserIdToBadgeMap_systemUserManagedUser_PreV() { - if (SdkLevel.isAtLeastV()) return; + assumeFalse(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mSystemUser); initializeUserManagerState(currentUser, Lists.newArrayList(mSystemUser, mManagedUser)); Drawable workBadge = mock(Drawable.class); @@ -919,7 +839,7 @@ public class UserManagerStateTest { @Test public void testGetUserIdToBadgeMap_systemUserManagedUserPrivateUser_PostV() { - if (!SdkLevel.isAtLeastV()) return; + assumeTrue(SdkLevel.isAtLeastV()); UserId currentUser = UserId.of(mSystemUser); initializeUserManagerState( currentUser, Lists.newArrayList(mSystemUser, mManagedUser, mPrivateUser)); |