diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-05-25 15:13:39 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-05-25 15:13:39 +0000 |
commit | 07db87c24be61bb635458916cc4738c2e9a7e250 (patch) | |
tree | e443a946d27cd0738343b94a103a3cf00a29066d | |
parent | b2bbef92e42dc83fefc98f88b27c7429859f79e0 (diff) | |
parent | c10d39d47152a8feec9ddd2754bf0bd78de42fcb (diff) | |
download | cts-android12-mainline-mediaprovider-release.tar.gz |
Merge cherrypicks of [17950696] into sparse-8561228-L61200000954771861.android-mainline-12.0.0_r121aml_mpr_311911090android12-mainline-mediaprovider-release
Change-Id: Iffb2c16d8e904f55b127497c97aa399ac63d3d15
4 files changed, 147 insertions, 305 deletions
diff --git a/tests/PhotoPicker/src/android/photopicker/cts/PhotoPickerBaseTest.java b/tests/PhotoPicker/src/android/photopicker/cts/PhotoPickerBaseTest.java index deba5f14226..79d4b2bebb5 100644 --- a/tests/PhotoPicker/src/android/photopicker/cts/PhotoPickerBaseTest.java +++ b/tests/PhotoPicker/src/android/photopicker/cts/PhotoPickerBaseTest.java @@ -16,13 +16,17 @@ package android.photopicker.cts; +import android.Manifest; import android.app.Instrumentation; import android.content.Context; import android.content.Intent; +import android.provider.DeviceConfig; import androidx.test.InstrumentationRegistry; import androidx.test.uiautomator.UiDevice; +import com.android.modules.utils.build.SdkLevel; + import org.junit.Before; /** diff --git a/tests/PhotoPicker/src/android/photopicker/cts/PhotoPickerPickImagesIntentTest.java b/tests/PhotoPicker/src/android/photopicker/cts/PhotoPickerPickImagesIntentTest.java deleted file mode 100644 index 802acd5e93a..00000000000 --- a/tests/PhotoPicker/src/android/photopicker/cts/PhotoPickerPickImagesIntentTest.java +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package android.photopicker.cts; - -import static android.photopicker.cts.util.PhotoPickerAssertionsUtils.assertPersistedGrant; -import static android.photopicker.cts.util.PhotoPickerAssertionsUtils.assertPickerUriFormat; -import static android.photopicker.cts.util.PhotoPickerAssertionsUtils.assertRedactedReadOnlyAccess; -import static android.photopicker.cts.util.PhotoPickerFilesUtils.createImages; -import static android.photopicker.cts.util.PhotoPickerFilesUtils.deleteMedia; -import static android.photopicker.cts.util.PhotoPickerUiUtils.SHORT_TIMEOUT; -import static android.photopicker.cts.util.PhotoPickerUiUtils.clickAndWait; -import static android.photopicker.cts.util.PhotoPickerUiUtils.findAddButton; -import static android.photopicker.cts.util.PhotoPickerUiUtils.findItemList; - -import static com.google.common.truth.Truth.assertThat; -import static com.google.common.truth.Truth.assertWithMessage; - -import android.app.Activity; -import android.content.ClipData; -import android.content.Intent; -import android.net.Uri; -import android.provider.MediaStore; - -import androidx.test.ext.junit.runners.AndroidJUnit4; -import androidx.test.uiautomator.UiObject; -import androidx.test.uiautomator.UiSelector; - -import org.junit.After; -import org.junit.Test; -import org.junit.runner.RunWith; - -import java.util.ArrayList; -import java.util.List; - -/** - * Photo Picker tests for {@link MediaStore#ACTION_PICK_IMAGES} intent exclusively - */ -@RunWith(AndroidJUnit4.class) -public class PhotoPickerPickImagesIntentTest extends PhotoPickerBaseTest { - - private List<Uri> mUriList = new ArrayList<>(); - - @After - public void tearDown() throws Exception { - for (Uri uri : mUriList) { - deleteMedia(uri, mContext); - } - mUriList.clear(); - - if (mActivity != null) { - mActivity.finish(); - } - } - - @Test - public void testMultiSelect_invalidParam() throws Exception { - final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); - intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, MediaStore.getPickImagesMaxLimit() + 1); - mActivity.startActivityForResult(intent, REQUEST_CODE); - final GetResultActivity.Result res = mActivity.getResult(); - assertThat(res.resultCode).isEqualTo(Activity.RESULT_CANCELED); - } - - @Test - public void testMultiSelect_invalidNegativeParam() throws Exception { - final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); - intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, -1); - mActivity.startActivityForResult(intent, REQUEST_CODE); - final GetResultActivity.Result res = mActivity.getResult(); - assertThat(res.resultCode).isEqualTo(Activity.RESULT_CANCELED); - } - - @Test - public void testMultiSelect_returnsNotMoreThanMax() throws Exception { - final int maxCount = 2; - final int imageCount = maxCount + 1; - createImages(imageCount, mContext.getUserId(), mUriList); - final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); - intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, maxCount); - mActivity.startActivityForResult(intent, REQUEST_CODE); - - final List<UiObject> itemList = findItemList(imageCount); - final int itemCount = itemList.size(); - assertThat(itemCount).isEqualTo(imageCount); - // Select maxCount + 1 item - for (int i = 0; i < itemCount; i++) { - clickAndWait(mDevice, itemList.get(i)); - } - - UiObject snackbarTextView = mDevice.findObject(new UiSelector().text( - "Select up to 2 items")); - assertWithMessage("Timed out while waiting for snackbar to appear").that( - snackbarTextView.waitForExists(SHORT_TIMEOUT)).isTrue(); - - assertWithMessage("Timed out waiting for snackbar to disappear").that( - snackbarTextView.waitUntilGone(SHORT_TIMEOUT)).isTrue(); - - clickAndWait(mDevice, findAddButton()); - - final ClipData clipData = mActivity.getResult().data.getClipData(); - final int count = clipData.getItemCount(); - assertThat(count).isEqualTo(maxCount); - } - - @Test - public void testDoesNotRespectExtraAllowMultiple() throws Exception { - final int imageCount = 2; - createImages(imageCount, mContext.getUserId(), mUriList); - final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); - intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); - mActivity.startActivityForResult(intent, REQUEST_CODE); - - final List<UiObject> itemList = findItemList(imageCount); - final int itemCount = itemList.size(); - assertThat(itemCount).isEqualTo(imageCount); - // Select 1 item - clickAndWait(mDevice, itemList.get(0)); - - final Uri uri = mActivity.getResult().data.getData(); - assertPickerUriFormat(uri, mContext.getUserId()); - assertPersistedGrant(uri, mContext.getContentResolver()); - assertRedactedReadOnlyAccess(uri); - } -} diff --git a/tests/PhotoPicker/src/android/photopicker/cts/PhotoPickerTest.java b/tests/PhotoPicker/src/android/photopicker/cts/PhotoPickerTest.java index 47ade548718..92c96a6cadb 100644 --- a/tests/PhotoPicker/src/android/photopicker/cts/PhotoPickerTest.java +++ b/tests/PhotoPicker/src/android/photopicker/cts/PhotoPickerTest.java @@ -26,7 +26,6 @@ import static android.photopicker.cts.util.PhotoPickerFilesUtils.createVideos; import static android.photopicker.cts.util.PhotoPickerFilesUtils.deleteMedia; import static android.photopicker.cts.util.PhotoPickerUiUtils.REGEX_PACKAGE_NAME; import static android.photopicker.cts.util.PhotoPickerUiUtils.SHORT_TIMEOUT; -import static android.photopicker.cts.util.PhotoPickerUiUtils.clickAndWait; import static android.photopicker.cts.util.PhotoPickerUiUtils.findAddButton; import static android.photopicker.cts.util.PhotoPickerUiUtils.findItemList; import static android.photopicker.cts.util.PhotoPickerUiUtils.findPreviewAddButton; @@ -35,56 +34,32 @@ import static android.photopicker.cts.util.PhotoPickerUiUtils.findPreviewAddOrSe import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertWithMessage; +import android.app.Activity; import android.content.ClipData; import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.ResolveInfo; import android.net.Uri; import android.provider.MediaStore; -import androidx.test.InstrumentationRegistry; +import androidx.test.runner.AndroidJUnit4; import androidx.test.uiautomator.UiObject; import androidx.test.uiautomator.UiObjectNotFoundException; import androidx.test.uiautomator.UiSelector; import org.junit.After; -import org.junit.Before; import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameter; -import org.junit.runners.Parameterized.Parameters; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; /** * Photo Picker Device only tests for common flows. */ -@RunWith(Parameterized.class) +@RunWith(AndroidJUnit4.class) public class PhotoPickerTest extends PhotoPickerBaseTest { - - @Parameter(0) - public String mAction; - - @Parameters - public static Iterable<? extends Object> data() { - return PhotoPickerTest.getTestParameters(); - } - private List<Uri> mUriList = new ArrayList<>(); - @Before - public void setUp() throws Exception { - super.setUp(); - - if (mAction.equals(Intent.ACTION_GET_CONTENT)) { - clearDocumentsUiPackageData(); - } - } - @After public void tearDown() throws Exception { for (Uri uri : mUriList) { @@ -102,11 +77,11 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { final int itemCount = 1; createImages(itemCount, mContext.getUserId(), mUriList); - final Intent intent = new Intent(mAction); - launchPhotoPickerForIntent(intent); + final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); + mActivity.startActivityForResult(intent, REQUEST_CODE); final UiObject item = findItemList(itemCount).get(0); - clickAndWait(mDevice, item); + clickAndWait(item); final Uri uri = mActivity.getResult().data.getData(); assertPickerUriFormat(uri, mContext.getUserId()); @@ -119,16 +94,17 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { final int itemCount = 1; createImages(itemCount, mContext.getUserId(), mUriList, true); - final Intent intent = new Intent(mAction); - launchPhotoPickerForIntent(intent); + final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); + mActivity.startActivityForResult(intent, REQUEST_CODE); - UiObject albumsTab = mDevice.findObject(new UiSelector().text("Albums")); - clickAndWait(mDevice, albumsTab); + UiObject albumsTab = mDevice.findObject(new UiSelector().text( + "Albums")); + clickAndWait(albumsTab); final UiObject album = findItemList(1).get(0); - clickAndWait(mDevice, album); + clickAndWait(album); final UiObject item = findItemList(itemCount).get(0); - clickAndWait(mDevice, item); + clickAndWait(item); final Uri uri = mActivity.getResult().data.getData(); assertPickerUriFormat(uri, mContext.getUserId()); @@ -140,27 +116,27 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { final int videoCount = 2; createVideos(videoCount, mContext.getUserId(), mUriList); - Intent intent = new Intent(mAction); + final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); intent.setType("video/*"); - intent = addMultipleSelectionFlag(intent); - launchPhotoPickerForIntent(intent); + intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, MediaStore.getPickImagesMaxLimit()); + mActivity.startActivityForResult(intent, REQUEST_CODE); UiObject albumsTab = mDevice.findObject(new UiSelector().text( "Albums")); - clickAndWait(mDevice, albumsTab); + clickAndWait(albumsTab); final UiObject album = findItemList(1).get(0); - clickAndWait(mDevice, album); + clickAndWait(album); final List<UiObject> itemList = findItemList(videoCount); final int itemCount = itemList.size(); assertThat(itemCount).isEqualTo(videoCount); - for (UiObject uiObject : itemList) { - clickAndWait(mDevice, uiObject); + for (int i = 0; i < itemCount; i++) { + clickAndWait(itemList.get(i)); } - clickAndWait(mDevice, findViewSelectedButton()); + clickAndWait(findViewSelectedButton()); // Wait for playback to start. This is needed in some devices where playback // buffering -> ready state takes around 10s. @@ -173,8 +149,8 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { final int itemCount = 1; createImages(itemCount, mContext.getUserId(), mUriList); - final Intent intent = new Intent(mAction); - launchPhotoPickerForIntent(intent); + final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); + mActivity.startActivityForResult(intent, REQUEST_CODE); final UiObject item = findItemList(itemCount).get(0); item.longClick(); @@ -182,7 +158,7 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { final UiObject addButton = findPreviewAddOrSelectButton(); assertThat(addButton.waitForExists(1000)).isTrue(); - clickAndWait(mDevice, addButton); + clickAndWait(addButton); final Uri uri = mActivity.getResult().data.getData(); assertPickerUriFormat(uri, mContext.getUserId()); @@ -190,22 +166,91 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { } @Test + public void testMultiSelect_invalidParam() throws Exception { + final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); + intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, MediaStore.getPickImagesMaxLimit() + 1); + mActivity.startActivityForResult(intent, REQUEST_CODE); + final GetResultActivity.Result res = mActivity.getResult(); + assertThat(res.resultCode).isEqualTo(Activity.RESULT_CANCELED); + } + + @Test + public void testMultiSelect_invalidNegativeParam() throws Exception { + final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); + intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, -1); + mActivity.startActivityForResult(intent, REQUEST_CODE); + final GetResultActivity.Result res = mActivity.getResult(); + assertThat(res.resultCode).isEqualTo(Activity.RESULT_CANCELED); + } + + @Test + public void testMultiSelect_returnsNotMoreThanMax() throws Exception { + final int maxCount = 2; + final int imageCount = maxCount + 1; + createImages(imageCount, mContext.getUserId(), mUriList); + final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); + intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, maxCount); + mActivity.startActivityForResult(intent, REQUEST_CODE); + + final List<UiObject> itemList = findItemList(imageCount); + final int itemCount = itemList.size(); + assertThat(itemCount).isEqualTo(imageCount); + // Select maxCount + 1 item + for (int i = 0; i < itemCount; i++) { + clickAndWait(itemList.get(i)); + } + + UiObject snackbarTextView = mDevice.findObject(new UiSelector().text( + "Select up to 2 items")); + assertWithMessage("Timed out while waiting for snackbar to appear").that( + snackbarTextView.waitForExists(SHORT_TIMEOUT)).isTrue(); + + assertWithMessage("Timed out waiting for snackbar to disappear").that( + snackbarTextView.waitUntilGone(SHORT_TIMEOUT)).isTrue(); + + clickAndWait(findAddButton()); + + final ClipData clipData = mActivity.getResult().data.getClipData(); + final int count = clipData.getItemCount(); + assertThat(count).isEqualTo(maxCount); + } + + @Test + public void testDoesNotRespectExtraAllowMultiple() throws Exception { + final int imageCount = 2; + createImages(imageCount, mContext.getUserId(), mUriList); + final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); + mActivity.startActivityForResult(intent, REQUEST_CODE); + + final List<UiObject> itemList = findItemList(imageCount); + final int itemCount = itemList.size(); + assertThat(itemCount).isEqualTo(imageCount); + // Select 1 item + clickAndWait(itemList.get(0)); + + final Uri uri = mActivity.getResult().data.getData(); + assertPickerUriFormat(uri, mContext.getUserId()); + assertPersistedGrant(uri, mContext.getContentResolver()); + assertRedactedReadOnlyAccess(uri); + } + + @Test public void testMultiSelect() throws Exception { final int imageCount = 4; createImages(imageCount, mContext.getUserId(), mUriList); - - Intent intent = new Intent(mAction); - intent = addMultipleSelectionFlag(intent); - launchPhotoPickerForIntent(intent); + final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); + intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, MediaStore.getPickImagesMaxLimit()); + mActivity.startActivityForResult(intent, REQUEST_CODE); final List<UiObject> itemList = findItemList(imageCount); final int itemCount = itemList.size(); assertThat(itemCount).isEqualTo(imageCount); - for (UiObject uiObject : itemList) { - clickAndWait(mDevice, uiObject); + for (int i = 0; i < itemCount; i++) { + clickAndWait(itemList.get(i)); } - clickAndWait(mDevice, findAddButton()); + clickAndWait(findAddButton()); final ClipData clipData = mActivity.getResult().data.getClipData(); final int count = clipData.getItemCount(); @@ -222,18 +267,17 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { public void testMultiSelect_longPress() throws Exception { final int videoCount = 3; createDNGVideos(videoCount, mContext.getUserId(), mUriList); - - Intent intent = new Intent(mAction); - intent = addMultipleSelectionFlag(intent); + final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); + intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, MediaStore.getPickImagesMaxLimit()); intent.setType("video/*"); - launchPhotoPickerForIntent(intent); + mActivity.startActivityForResult(intent, REQUEST_CODE); final List<UiObject> itemList = findItemList(videoCount); final int itemCount = itemList.size(); assertThat(itemCount).isEqualTo(videoCount); // Select one item from Photo grid - clickAndWait(mDevice, itemList.get(0)); + clickAndWait(itemList.get(0)); // Preview the item UiObject item = itemList.get(1); @@ -245,14 +289,14 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { .that(addOrSelectButton.waitForExists(1000)).isTrue(); // Select the item from Preview - clickAndWait(mDevice, addOrSelectButton); + clickAndWait(addOrSelectButton); mDevice.pressBack(); // Select one more item from Photo grid - clickAndWait(mDevice, itemList.get(2)); + clickAndWait(itemList.get(2)); - clickAndWait(mDevice, findAddButton()); + clickAndWait(findAddButton()); // Verify that all 3 items are returned final ClipData clipData = mActivity.getResult().data.getClipData(); @@ -270,19 +314,18 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { public void testMultiSelect_preview() throws Exception { final int imageCount = 4; createImages(imageCount, mContext.getUserId(), mUriList); - - Intent intent = new Intent(mAction); - intent = addMultipleSelectionFlag(intent); - launchPhotoPickerForIntent(intent); + final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); + intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, MediaStore.getPickImagesMaxLimit()); + mActivity.startActivityForResult(intent, REQUEST_CODE); final List<UiObject> itemList = findItemList(imageCount); final int itemCount = itemList.size(); assertThat(itemCount).isEqualTo(imageCount); - for (UiObject uiObject : itemList) { - clickAndWait(mDevice, uiObject); + for (int i = 0; i < itemCount; i++) { + clickAndWait(itemList.get(i)); } - clickAndWait(mDevice, findViewSelectedButton()); + clickAndWait(findViewSelectedButton()); // Swipe left three times swipeLeftAndWait(); @@ -290,10 +333,10 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { swipeLeftAndWait(); // Deselect one item - clickAndWait(mDevice, findPreviewSelectedCheckButton()); + clickAndWait(findPreviewSelectedCheckButton()); // Return selected items - clickAndWait(mDevice, findPreviewAddButton()); + clickAndWait(findPreviewAddButton()); final ClipData clipData = mActivity.getResult().data.getClipData(); final int count = clipData.getItemCount(); @@ -340,20 +383,20 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { // Test 2: Click Mute Button // Click to unmute the audio - clickAndWait(mDevice, muteButton); + clickAndWait(muteButton); // Check that mute button state is unmute, i.e., it shows `volume up` icon assertMuteButtonState(muteButton, /* isMuted */ false); // Click on the muteButton and check that mute button status is now 'mute' - clickAndWait(mDevice, muteButton); + clickAndWait(muteButton); assertMuteButtonState(muteButton, /* isMuted */ true); // Click on the muteButton and check that mute button status is now unmute - clickAndWait(mDevice, muteButton); + clickAndWait(muteButton); assertMuteButtonState(muteButton, /* isMuted */ false); // Test 3: Next preview resumes mute state // Go back and launch preview again mDevice.pressBack(); - clickAndWait(mDevice, findViewSelectedButton()); + clickAndWait(findViewSelectedButton()); // check that player controls are visible assertPlayerControlsVisible(playPauseButton, muteButton); @@ -384,7 +427,7 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { // Test 2: Swipe resumes mute state, with state of mute button 'volume up' / 'unmute' // Click muteButton again to check the next video resumes the previous video's mute state - clickAndWait(mDevice, muteButton); + clickAndWait(muteButton); assertMuteButtonState(muteButton, /* isMuted */ false); // check that next video resumed previous video's mute state swipeLeftAndWait(); @@ -410,7 +453,7 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { final UiObject playerView = findPlayerView(); // Click on StyledPlayerView to make the video controls visible - clickAndWait(mDevice, playerView); + clickAndWait(playerView); assertPlayerControlsVisible(playPauseButton, muteButton); // Wait for 1s and check that controls are still visible @@ -427,7 +470,7 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { assertPlayerControlsHidden(playPauseButton, muteButton); // Click on the StyledPlayerView and check that controls appear - clickAndWait(mDevice, playerView); + clickAndWait(playerView); assertPlayerControlsVisible(playPauseButton, muteButton); // Swipe left to check that controls are now visible on swipe @@ -450,20 +493,20 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { final String mimeType = "video/dng"; - Intent intent = new Intent(mAction); - intent = addMultipleSelectionFlag(intent); + final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); + intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, MediaStore.getPickImagesMaxLimit()); intent.setType(mimeType); - launchPhotoPickerForIntent(intent); + mActivity.startActivityForResult(intent, REQUEST_CODE); // find all items final List<UiObject> itemList = findItemList(-1); final int itemCount = itemList.size(); assertThat(itemCount).isAtLeast(videoCount); - for (UiObject uiObject : itemList) { - clickAndWait(mDevice, uiObject); + for (int i = 0; i < itemCount; i++) { + clickAndWait(itemList.get(i)); } - clickAndWait(mDevice, findAddButton()); + clickAndWait(findAddButton()); final ClipData clipData = mActivity.getResult().data.getClipData(); final int count = clipData.getItemCount(); @@ -496,38 +539,37 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { assertPlayerControlsAutoHide(playPauseButton, muteButton); // Click on StyledPlayerView to make the video controls visible - clickAndWait(mDevice, findPlayerView()); + clickAndWait(findPlayerView()); // PlayPause button is now pause button, click the button to pause the video. - clickAndWait(mDevice, playPauseButton); + clickAndWait(playPauseButton); // Wait for 1s and check that play button is not auto hidden assertPlayerControlsDontAutoHide(playPauseButton, muteButton); // PlayPause button is now play button, click the button to play the video. - clickAndWait(mDevice, playPauseButton); + clickAndWait(playPauseButton); // Check that pause button auto-hides in 1s. assertPlayerControlsAutoHide(playPauseButton, muteButton); } private void launchPreviewMultipleWithVideos(int videoCount) throws Exception { createVideos(videoCount, mContext.getUserId(), mUriList); - - Intent intent = new Intent(mAction); - intent = addMultipleSelectionFlag(intent); + final Intent intent = new Intent(MediaStore.ACTION_PICK_IMAGES); + intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, MediaStore.getPickImagesMaxLimit()); intent.setType("video/*"); - launchPhotoPickerForIntent(intent); + mActivity.startActivityForResult(intent, REQUEST_CODE); final List<UiObject> itemList = findItemList(videoCount); final int itemCount = itemList.size(); assertThat(itemCount).isEqualTo(videoCount); - for (UiObject uiObject : itemList) { - clickAndWait(mDevice, uiObject); + for (int i = 0; i < itemCount; i++) { + clickAndWait(itemList.get(i)); } - clickAndWait(mDevice, findViewSelectedButton()); + clickAndWait(findViewSelectedButton()); // Wait for playback to start. This is needed in some devices where playback // buffering -> ready state takes around 10s. @@ -540,7 +582,7 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { // Wait for 1s or Play/Pause button to hide playPauseButton.waitUntilGone(1000); // Click on StyledPlayerView to make the video controls visible - clickAndWait(mDevice, playerView); + clickAndWait(playerView); assertPlayerControlsVisible(playPauseButton, muteButton); } @@ -607,75 +649,15 @@ public class PhotoPickerTest extends PhotoPickerBaseTest { REGEX_PACKAGE_NAME + ":id/preview_video_image")); } + private void clickAndWait(UiObject uiObject) throws Exception { + uiObject.click(); + mDevice.waitForIdle(); + } + private void swipeLeftAndWait() { final int width = mDevice.getDisplayWidth(); final int height = mDevice.getDisplayHeight(); mDevice.swipe(15 * width / 20, height / 2, width / 20, height / 2, 10); mDevice.waitForIdle(); } - - - static List<String> getTestParameters() { - return Arrays.asList( - MediaStore.ACTION_PICK_IMAGES, - Intent.ACTION_GET_CONTENT - ); - } - - private Intent addMultipleSelectionFlag(Intent intent) { - switch (intent.getAction()) { - case MediaStore.ACTION_PICK_IMAGES: - intent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, - MediaStore.getPickImagesMaxLimit()); - break; - case Intent.ACTION_GET_CONTENT: - intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true); - break; - default: - // do nothing - } - - return intent; - } - - private void launchPhotoPickerForIntent(Intent intent) throws Exception { - switch (intent.getAction()) { - case MediaStore.ACTION_PICK_IMAGES: - mActivity.startActivityForResult(intent, REQUEST_CODE); - break; - case Intent.ACTION_GET_CONTENT: - if (intent.getType() == null) { - intent.setType("*/*"); - } - mActivity.startActivityForResult(intent, REQUEST_CODE); - findAndLaunchPicker(); - break; - default: - // do nothing - } - } - - /** - * Clears the DocumentsUI package data. - */ - private void clearDocumentsUiPackageData() throws Exception { - final PackageManager pm = mContext.getPackageManager(); - final Intent intent = new Intent(Intent.ACTION_GET_CONTENT); - intent.setType("*/*"); - final ResolveInfo ri = pm.resolveActivity(intent, 0); - InstrumentationRegistry.getInstrumentation().getUiAutomation() - .executeShellCommand("pm clear " + ri.activityInfo.packageName); - } - - private void findAndLaunchPicker() throws Exception { - mDevice.waitForIdle(); - UiObject photoPickerApp = new UiObject(new UiSelector().textMatches("Photo picker")); - - assertWithMessage("Timed out while waiting for Photo picker app to appear") - .that(photoPickerApp.waitForExists(SHORT_TIMEOUT)) - .isTrue(); - - clickAndWait(mDevice, photoPickerApp); - mDevice.waitForIdle(); - } } diff --git a/tests/PhotoPicker/src/android/photopicker/cts/util/PhotoPickerUiUtils.java b/tests/PhotoPicker/src/android/photopicker/cts/util/PhotoPickerUiUtils.java index 9da6c9c35bd..d20dcd6665b 100644 --- a/tests/PhotoPicker/src/android/photopicker/cts/util/PhotoPickerUiUtils.java +++ b/tests/PhotoPicker/src/android/photopicker/cts/util/PhotoPickerUiUtils.java @@ -20,7 +20,6 @@ import static com.google.common.truth.Truth.assertWithMessage; import android.text.format.DateUtils; -import androidx.test.uiautomator.UiDevice; import androidx.test.uiautomator.UiObject; import androidx.test.uiautomator.UiObjectNotFoundException; import androidx.test.uiautomator.UiScrollable; @@ -93,9 +92,4 @@ public class PhotoPickerUiUtils { return new UiObject(new UiSelector().resourceIdMatches( REGEX_PACKAGE_NAME + ":id/profile_button")); } - - public static void clickAndWait(UiDevice uiDevice, UiObject uiObject) throws Exception { - uiObject.click(); - uiDevice.waitForIdle(); - } } |