summaryrefslogtreecommitdiff
path: root/java/tests/src
diff options
context:
space:
mode:
author Andrey Epin <ayepin@google.com> 2023-04-07 17:54:25 -0700
committer Andrey Epin <ayepin@google.com> 2023-04-07 21:27:10 -0700
commit8ae8c4a3f25cc5c0da3196fa0a3f0f07dfe87066 (patch)
tree0ee2d068212a705a246095cc45dff4249ad47b24 /java/tests/src
parenta36c4deb98e45aa0994b3f5fe2937fb112d03451 (diff)
Hide thumbnail prview if no preview has loaded
In a case when a text is shared along with an image and image preview has failed to load, text exclusion from sharing does not hides the text but just greys it out (TextView marked disabled). This is to avoid unpleasant collapsing animation, something we'd need to address separately. Bug: 274643406 Test: manual testing Change-Id: I9fb9ce530afc1b31b2e075e15392bba256f36048
Diffstat (limited to 'java/tests/src')
-rw-r--r--java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java5
-rw-r--r--java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java6
-rw-r--r--java/tests/src/com/android/intentresolver/TestPreviewImageLoader.kt12
-rw-r--r--java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java131
4 files changed, 113 insertions, 41 deletions
diff --git a/java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java b/java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java
index f9093b8f..2a4d654a 100644
--- a/java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java
+++ b/java/tests/src/com/android/intentresolver/ChooserActivityOverrideData.java
@@ -24,7 +24,6 @@ import static org.mockito.Mockito.when;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.database.Cursor;
-import android.graphics.Bitmap;
import android.os.UserHandle;
import com.android.intentresolver.AbstractMultiProfilePagerAdapter.CrossProfileIntentsChecker;
@@ -64,7 +63,7 @@ public class ChooserActivityOverrideData {
public boolean isImageType;
public Cursor resolverCursor;
public boolean resolverForceException;
- public Bitmap previewThumbnail;
+ public ImageLoader imageLoader;
public ChooserActivityLogger chooserActivityLogger;
public int alternateProfileSetting;
public Resources resources;
@@ -83,7 +82,7 @@ public class ChooserActivityOverrideData {
onSafelyStartInternalCallback = null;
isVoiceInteraction = null;
createPackageManager = null;
- previewThumbnail = null;
+ imageLoader = null;
isImageType = false;
resolverCursor = null;
resolverForceException = false;
diff --git a/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java b/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java
index 8886892f..dc9baade 100644
--- a/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java
+++ b/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java
@@ -194,9 +194,9 @@ public class ChooserWrapperActivity
@Override
protected ImageLoader createPreviewImageLoader() {
- return new TestPreviewImageLoader(
- super.createPreviewImageLoader(),
- () -> sOverrides.previewThumbnail);
+ return sOverrides.imageLoader == null
+ ? super.createPreviewImageLoader()
+ : sOverrides.imageLoader;
}
@Override
diff --git a/java/tests/src/com/android/intentresolver/TestPreviewImageLoader.kt b/java/tests/src/com/android/intentresolver/TestPreviewImageLoader.kt
index cfe041dd..2f240d58 100644
--- a/java/tests/src/com/android/intentresolver/TestPreviewImageLoader.kt
+++ b/java/tests/src/com/android/intentresolver/TestPreviewImageLoader.kt
@@ -21,18 +21,12 @@ import android.net.Uri
import java.util.function.Consumer
internal class TestPreviewImageLoader(
- private val imageLoader: ImageLoader,
- private val imageOverride: () -> Bitmap?
+ private val bitmaps: Map<Uri, Bitmap>
) : ImageLoader {
override fun loadImage(uri: Uri, callback: Consumer<Bitmap?>) {
- val override = imageOverride()
- if (override != null) {
- callback.accept(override)
- } else {
- imageLoader.loadImage(uri, callback)
- }
+ callback.accept(bitmaps[uri])
}
- override suspend fun invoke(uri: Uri): Bitmap? = imageOverride() ?: imageLoader(uri)
+ override suspend fun invoke(uri: Uri): Bitmap? = bitmaps[uri]
override fun prePopulate(uris: List<Uri>) = Unit
}
diff --git a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java
index 39357a4d..0a60b8c7 100644
--- a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java
+++ b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java
@@ -26,6 +26,7 @@ import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.hasSibling;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
+import static androidx.test.espresso.matcher.ViewMatchers.isEnabled;
import static androidx.test.espresso.matcher.ViewMatchers.withEffectiveVisibility;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
@@ -125,6 +126,7 @@ import org.mockito.Mockito;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -422,10 +424,12 @@ public class UnbundledChooserActivityTest {
@Test
public void visiblePreviewTitleAndThumbnail() throws InterruptedException {
String previewTitle = "My Content Preview Title";
- Intent sendIntent = createSendTextIntentWithPreview(previewTitle,
- Uri.parse("android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240));
- ChooserActivityOverrideData.getInstance().previewThumbnail = createBitmap();
+ Uri uri = Uri.parse(
+ "android.resource://com.android.frameworks.coretests/"
+ + R.drawable.test320x240);
+ Intent sendIntent = createSendTextIntentWithPreview(previewTitle, uri);
+ ChooserActivityOverrideData.getInstance().imageLoader =
+ createImageLoader(uri, createBitmap());
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
setupResolverControllers(resolvedComponentInfos);
@@ -688,10 +692,12 @@ public class UnbundledChooserActivityTest {
@Test
public void testImagePlusTextSharing_ExcludeText() {
- Intent sendIntent = createSendImageIntent(
- Uri.parse("android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240));
- ChooserActivityOverrideData.getInstance().previewThumbnail = createBitmap();
+ Uri uri = Uri.parse(
+ "android.resource://com.android.frameworks.coretests/"
+ + R.drawable.test320x240);
+ Intent sendIntent = createSendImageIntent(uri);
+ ChooserActivityOverrideData.getInstance().imageLoader =
+ createImageLoader(uri, createBitmap());
ChooserActivityOverrideData.getInstance().isImageType = true;
sendIntent.putExtra(Intent.EXTRA_TEXT, "https://google.com/search?q=google");
@@ -728,10 +734,12 @@ public class UnbundledChooserActivityTest {
@Test
public void testImagePlusTextSharing_RemoveAndAddBackText() {
- Intent sendIntent = createSendImageIntent(
- Uri.parse("android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240));
- ChooserActivityOverrideData.getInstance().previewThumbnail = createBitmap();
+ Uri uri = Uri.parse(
+ "android.resource://com.android.frameworks.coretests/"
+ + R.drawable.test320x240);
+ Intent sendIntent = createSendImageIntent(uri);
+ ChooserActivityOverrideData.getInstance().imageLoader =
+ createImageLoader(uri, createBitmap());
ChooserActivityOverrideData.getInstance().isImageType = true;
final String text = "https://google.com/search?q=google";
sendIntent.putExtra(Intent.EXTRA_TEXT, text);
@@ -772,10 +780,12 @@ public class UnbundledChooserActivityTest {
@Test
public void testImagePlusTextSharing_TextExclusionDoesNotAffectAlternativeIntent() {
- Intent sendIntent = createSendImageIntent(
- Uri.parse("android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240));
- ChooserActivityOverrideData.getInstance().previewThumbnail = createBitmap();
+ Uri uri = Uri.parse(
+ "android.resource://com.android.frameworks.coretests/"
+ + R.drawable.test320x240);
+ Intent sendIntent = createSendImageIntent(uri);
+ ChooserActivityOverrideData.getInstance().imageLoader =
+ createImageLoader(uri, createBitmap());
ChooserActivityOverrideData.getInstance().isImageType = true;
sendIntent.putExtra(Intent.EXTRA_TEXT, "https://google.com/search?q=google");
@@ -815,6 +825,42 @@ public class UnbundledChooserActivityTest {
}
@Test
+ public void testImagePlusTextSharing_failedThumbnailAndExcludedText_textRemainsVisible() {
+ Uri uri = Uri.parse(
+ "android.resource://com.android.frameworks.coretests/"
+ + R.drawable.test320x240);
+ Intent sendIntent = createSendImageIntent(uri);
+ ChooserActivityOverrideData.getInstance().imageLoader =
+ new TestPreviewImageLoader(Collections.emptyMap());
+ ChooserActivityOverrideData.getInstance().isImageType = true;
+ sendIntent.putExtra(Intent.EXTRA_TEXT, "https://google.com/search?q=google");
+
+ List<ResolvedComponentInfo> resolvedComponentInfos = Arrays.asList(
+ ResolverDataProvider.createResolvedComponentInfo(
+ new ComponentName("org.imageviewer", "ImageTarget"),
+ sendIntent, PERSONAL_USER_HANDLE),
+ ResolverDataProvider.createResolvedComponentInfo(
+ new ComponentName("org.textviewer", "UriTarget"),
+ new Intent("VIEW_TEXT"), PERSONAL_USER_HANDLE)
+ );
+
+ setupResolverControllers(resolvedComponentInfos);
+
+ mActivityRule.launchActivity(Intent.createChooser(sendIntent, null));
+ waitForIdle();
+
+ onView(withId(R.id.include_text_action))
+ .check(matches(isDisplayed()))
+ .perform(click());
+ waitForIdle();
+
+ onView(withId(R.id.scrollable_image_preview))
+ .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE)));
+ onView(withId(com.android.internal.R.id.content_preview_text))
+ .check(matches(allOf(isDisplayed(), not(isEnabled()))));
+ }
+
+ @Test
public void copyTextToClipboard() throws Exception {
Intent sendIntent = createSendTextIntent();
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -879,11 +925,12 @@ public class UnbundledChooserActivityTest {
@Test @Ignore
public void testEditImageLogs() throws Exception {
- Intent sendIntent = createSendImageIntent(
- Uri.parse("android.resource://com.android.frameworks.coretests/"
- + R.drawable.test320x240));
-
- ChooserActivityOverrideData.getInstance().previewThumbnail = createBitmap();
+ Uri uri = Uri.parse(
+ "android.resource://com.android.frameworks.coretests/"
+ + R.drawable.test320x240);
+ Intent sendIntent = createSendImageIntent(uri);
+ ChooserActivityOverrideData.getInstance().imageLoader =
+ createImageLoader(uri, createBitmap());
ChooserActivityOverrideData.getInstance().isImageType = true;
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -910,7 +957,8 @@ public class UnbundledChooserActivityTest {
uris.add(uri);
Intent sendIntent = createSendUriIntentWithPreview(uris);
- ChooserActivityOverrideData.getInstance().previewThumbnail = createBitmap();
+ ChooserActivityOverrideData.getInstance().imageLoader =
+ createImageLoader(uri, createBitmap());
ChooserActivityOverrideData.getInstance().isImageType = true;
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -933,6 +981,29 @@ public class UnbundledChooserActivityTest {
}
@Test
+ public void allThumbnailsFailedToLoad_hidePreview() {
+ Uri uri = Uri.parse("android.resource://com.android.frameworks.coretests/"
+ + R.drawable.test320x240);
+
+ ArrayList<Uri> uris = new ArrayList<>();
+ uris.add(uri);
+ uris.add(uri);
+
+ Intent sendIntent = createSendUriIntentWithPreview(uris);
+ ChooserActivityOverrideData.getInstance().imageLoader =
+ new TestPreviewImageLoader(Collections.emptyMap());
+ ChooserActivityOverrideData.getInstance().isImageType = true;
+
+ List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
+
+ setupResolverControllers(resolvedComponentInfos);
+ mActivityRule.launchActivity(Intent.createChooser(sendIntent, null));
+ waitForIdle();
+ onView(withId(R.id.scrollable_image_preview))
+ .check(matches(withEffectiveVisibility(ViewMatchers.Visibility.GONE)));
+ }
+
+ @Test
public void testManyVisibleImagePreview_ScrollableImagePreview() {
Uri uri = Uri.parse("android.resource://com.android.frameworks.coretests/"
+ R.drawable.test320x240);
@@ -950,7 +1021,8 @@ public class UnbundledChooserActivityTest {
uris.add(uri);
Intent sendIntent = createSendUriIntentWithPreview(uris);
- ChooserActivityOverrideData.getInstance().previewThumbnail = createBitmap();
+ ChooserActivityOverrideData.getInstance().imageLoader =
+ createImageLoader(uri, createBitmap());
ChooserActivityOverrideData.getInstance().isImageType = true;
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -980,7 +1052,8 @@ public class UnbundledChooserActivityTest {
Intent sendIntent = createSendUriIntentWithPreview(uris);
sendIntent.putExtra(Intent.EXTRA_TEXT, sharedText);
- ChooserActivityOverrideData.getInstance().previewThumbnail = createBitmap();
+ ChooserActivityOverrideData.getInstance().imageLoader =
+ createImageLoader(uri, createBitmap());
ChooserActivityOverrideData.getInstance().isImageType = true;
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -1004,7 +1077,8 @@ public class UnbundledChooserActivityTest {
Intent sendIntent = createSendUriIntentWithPreview(uris);
sendIntent.putExtra(Intent.EXTRA_TEXT, sharedText);
- ChooserActivityOverrideData.getInstance().previewThumbnail = createBitmap();
+ ChooserActivityOverrideData.getInstance().imageLoader =
+ createImageLoader(uri, createBitmap());
ChooserActivityOverrideData.getInstance().isImageType = true;
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -1093,7 +1167,8 @@ public class UnbundledChooserActivityTest {
uris.add(uri);
Intent sendIntent = createSendUriIntentWithPreview(uris);
- ChooserActivityOverrideData.getInstance().previewThumbnail = createBitmap();
+ ChooserActivityOverrideData.getInstance().imageLoader =
+ createImageLoader(uri, createBitmap());
ChooserActivityOverrideData.getInstance().isImageType = true;
List<ResolvedComponentInfo> resolvedComponentInfos = createResolvedComponentsForTest(2);
@@ -2866,4 +2941,8 @@ public class UnbundledChooserActivityTest {
};
return shortcutLoaders;
}
+
+ private static ImageLoader createImageLoader(Uri uri, Bitmap bitmap) {
+ return new TestPreviewImageLoader(Collections.singletonMap(uri, bitmap));
+ }
}