From 8764dfb8c1720b6bc1f8e2fbe400477cb125b9af Mon Sep 17 00:00:00 2001 From: Andrey Epin Date: Thu, 1 Jun 2023 15:19:26 -0700 Subject: Always use file or image preview UI when sending files When sending files, always use the file preivew UI (or the image preview UI, when applicable) regardless of the intent type. Fix: 285174069 Test: manual testing, unit tests Change-Id: I6f27839427b58a09ffb397ba56c2ce8401380a21 --- .../intentresolver/contentpreview/MimeTypeClassifier.java | 7 ------- .../intentresolver/contentpreview/PreviewDataProvider.kt | 6 +----- .../intentresolver/contentpreview/PreviewDataProviderTest.kt | 11 ++++++++--- 3 files changed, 9 insertions(+), 15 deletions(-) (limited to 'java') diff --git a/java/src/com/android/intentresolver/contentpreview/MimeTypeClassifier.java b/java/src/com/android/intentresolver/contentpreview/MimeTypeClassifier.java index c86b0fe2..0c333b68 100644 --- a/java/src/com/android/intentresolver/contentpreview/MimeTypeClassifier.java +++ b/java/src/com/android/intentresolver/contentpreview/MimeTypeClassifier.java @@ -33,11 +33,4 @@ public interface MimeTypeClassifier { default boolean isVideoType(@Nullable String mimeType) { return (mimeType != null) && ClipDescription.compareMimeTypes(mimeType, "video/*"); } - - /** - * @return whether the specified {@code mimeType} is classified as "text" type - */ - default boolean isTextType(@Nullable String mimeType) { - return (mimeType != null) && ClipDescription.compareMimeTypes(mimeType, "text/*"); - } } diff --git a/java/src/com/android/intentresolver/contentpreview/PreviewDataProvider.kt b/java/src/com/android/intentresolver/contentpreview/PreviewDataProvider.kt index ae705369..8ab3a272 100644 --- a/java/src/com/android/intentresolver/contentpreview/PreviewDataProvider.kt +++ b/java/src/com/android/intentresolver/contentpreview/PreviewDataProvider.kt @@ -104,11 +104,7 @@ constructor( * that broadly covers all data being shared, such as '*' when sending an image * and text. We therefore should inspect each item for the preferred type, in order: * IMAGE, FILE, TEXT. */ - if ( - !targetIntent.isSend || - typeClassifier.isTextType(targetIntent.type) || - records.isEmpty() - ) { + if (!targetIntent.isSend || records.isEmpty()) { CONTENT_PREVIEW_TEXT } else { runBlocking(dispatcher) { diff --git a/java/tests/src/com/android/intentresolver/contentpreview/PreviewDataProviderTest.kt b/java/tests/src/com/android/intentresolver/contentpreview/PreviewDataProviderTest.kt index 2c47efa5..145b89ad 100644 --- a/java/tests/src/com/android/intentresolver/contentpreview/PreviewDataProviderTest.kt +++ b/java/tests/src/com/android/intentresolver/contentpreview/PreviewDataProviderTest.kt @@ -71,16 +71,21 @@ class PreviewDataProviderTest { } @Test - fun test_sendIntentWithTextMimeType_resolvesToTextPreviewUiSynchronously() { + fun test_sendSingleTextFileWithoutPreview_resolvesToFilePreviewUi() { + val uri = Uri.parse("content://org.pkg.app/notes.txt") val targetIntent = Intent(Intent.ACTION_SEND) .apply { + putExtra(Intent.EXTRA_STREAM, uri) type = "text/plain" } + whenever(contentResolver.getType(uri)).thenReturn("text/plain") val testSubject = PreviewDataProvider(targetIntent, contentResolver, mimeTypeClassifier, dispatcher) - assertThat(testSubject.previewType).isEqualTo(ContentPreviewType.CONTENT_PREVIEW_TEXT) - verify(contentResolver, never()).getType(any()) + assertThat(testSubject.previewType).isEqualTo(ContentPreviewType.CONTENT_PREVIEW_FILE) + assertThat(testSubject.uriCount).isEqualTo(1) + assertThat(testSubject.firstFileInfo?.uri).isEqualTo(uri) + verify(contentResolver, times(1)).getType(any()) } @Test -- cgit v1.2.3-59-g8ed1b