summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/com/android/documentsui/DragAndDropManagerTests.java39
-rw-r--r--tests/unit/com/android/documentsui/UserManagerStateTest.java196
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));