summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andrey Yepin <ayepin@google.com> 2024-04-25 16:06:36 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-04-25 16:06:36 +0000
commit51babd2ede7355f9fb5a9cf957e12995df79bae5 (patch)
tree5333b3fb4203174745fb786edddcfd712d5c204a
parente962d14610e70b214e2b40159dfe588bccbbd4a3 (diff)
parentf7e74fcbe92dfddb5efb254bb7b21931c28bb125 (diff)
Merge "Remove obsolete headline views from preview UI variants" into main
-rw-r--r--java/res/layout/chooser_grid_preview_file.xml8
-rw-r--r--java/res/layout/chooser_grid_preview_files_text.xml8
-rw-r--r--java/res/layout/chooser_grid_preview_text.xml9
-rw-r--r--java/src/com/android/intentresolver/ChooserActivity.java2
-rw-r--r--java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java15
-rw-r--r--java/src/com/android/intentresolver/contentpreview/ContentPreviewUi.java2
-rw-r--r--java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java7
-rw-r--r--java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java6
-rw-r--r--java/src/com/android/intentresolver/contentpreview/NoContextPreviewUi.kt2
-rw-r--r--java/src/com/android/intentresolver/contentpreview/ShareouselContentPreviewUi.kt12
-rw-r--r--java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java7
-rw-r--r--java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java7
-rw-r--r--tests/unit/src/com/android/intentresolver/contentpreview/FileContentPreviewUiTest.kt36
-rw-r--r--tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt282
-rw-r--r--tests/unit/src/com/android/intentresolver/contentpreview/TextContentPreviewUiTest.kt45
-rw-r--r--tests/unit/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUiTest.kt234
16 files changed, 155 insertions, 527 deletions
diff --git a/java/res/layout/chooser_grid_preview_file.xml b/java/res/layout/chooser_grid_preview_file.xml
index 90832d23..4e8cf7ba 100644
--- a/java/res/layout/chooser_grid_preview_file.xml
+++ b/java/res/layout/chooser_grid_preview_file.xml
@@ -26,14 +26,6 @@
android:orientation="vertical"
android:background="?androidprv:attr/materialColorSurfaceContainer">
- <ViewStub
- android:id="@+id/chooser_headline_row_stub"
- android:layout="@layout/chooser_headline_row"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingHorizontal="@dimen/chooser_edge_margin_normal"
- android:layout_marginBottom="@dimen/chooser_view_spacing" />
-
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/java/res/layout/chooser_grid_preview_files_text.xml b/java/res/layout/chooser_grid_preview_files_text.xml
index e7747496..2756e800 100644
--- a/java/res/layout/chooser_grid_preview_files_text.xml
+++ b/java/res/layout/chooser_grid_preview_files_text.xml
@@ -25,14 +25,6 @@
android:orientation="vertical"
android:background="?androidprv:attr/materialColorSurfaceContainer">
- <ViewStub
- android:id="@+id/chooser_headline_row_stub"
- android:layout="@layout/chooser_headline_row"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingHorizontal="@dimen/chooser_edge_margin_normal"
- android:layout_marginBottom="@dimen/chooser_view_spacing" />
-
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
diff --git a/java/res/layout/chooser_grid_preview_text.xml b/java/res/layout/chooser_grid_preview_text.xml
index f3045c34..ee54c0ae 100644
--- a/java/res/layout/chooser_grid_preview_text.xml
+++ b/java/res/layout/chooser_grid_preview_text.xml
@@ -27,14 +27,6 @@
android:orientation="vertical"
android:background="?androidprv:attr/materialColorSurfaceContainer">
- <ViewStub
- android:id="@+id/chooser_headline_row_stub"
- android:layout="@layout/chooser_headline_row"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:paddingHorizontal="@dimen/chooser_edge_margin_normal"
- android:layout_marginBottom="@dimen/chooser_view_spacing" />
-
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
@@ -122,4 +114,3 @@
<include layout="@layout/chooser_action_row" />
</LinearLayout>
-
diff --git a/java/src/com/android/intentresolver/ChooserActivity.java b/java/src/com/android/intentresolver/ChooserActivity.java
index 0d792b6d..9328baf5 100644
--- a/java/src/com/android/intentresolver/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/ChooserActivity.java
@@ -1583,7 +1583,7 @@ public class ChooserActivity extends Hilt_ChooserActivity implements
getResources(),
getLayoutInflater(),
parent,
- findViewById(R.id.chooser_headline_row_container));
+ requireViewById(R.id.chooser_headline_row_container));
if (layout != null) {
adjustPreviewWidth(getResources().getConfiguration().orientation, layout);
diff --git a/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java
index 4cb30341..4b955c49 100644
--- a/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java
@@ -97,7 +97,6 @@ public final class ChooserContentPreviewUi {
@VisibleForTesting
final ContentPreviewUi mContentPreviewUi;
private final Supplier</*@Nullable*/ActionRow.Action> mModifyShareActionFactory;
- @Nullable
private View mHeadlineParent;
public ChooserContentPreviewUi(
@@ -226,15 +225,12 @@ public final class ChooserContentPreviewUi {
Resources resources,
LayoutInflater layoutInflater,
ViewGroup parent,
- @Nullable View headlineViewParent) {
+ View headlineViewParent) {
ViewGroup layout =
mContentPreviewUi.display(resources, layoutInflater, parent, headlineViewParent);
- mHeadlineParent = headlineViewParent == null ? layout : headlineViewParent;
- if (mHeadlineParent != null) {
- ContentPreviewUi.displayModifyShareAction(
- mHeadlineParent, mModifyShareActionFactory.get());
- }
+ mHeadlineParent = headlineViewParent;
+ ContentPreviewUi.displayModifyShareAction(mHeadlineParent, mModifyShareActionFactory.get());
return layout;
}
@@ -242,10 +238,7 @@ public final class ChooserContentPreviewUi {
* Update Modify Share Action, if it is inflated.
*/
public void updateModifyShareAction() {
- if (mHeadlineParent != null) {
- ContentPreviewUi.displayModifyShareAction(
- mHeadlineParent, mModifyShareActionFactory.get());
- }
+ ContentPreviewUi.displayModifyShareAction(mHeadlineParent, mModifyShareActionFactory.get());
}
private static TextContentPreviewUi createTextPreview(
diff --git a/java/src/com/android/intentresolver/contentpreview/ContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/ContentPreviewUi.java
index 71d5fc0b..8eaf3568 100644
--- a/java/src/com/android/intentresolver/contentpreview/ContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/ContentPreviewUi.java
@@ -48,7 +48,7 @@ public abstract class ContentPreviewUi {
Resources resources,
LayoutInflater layoutInflater,
ViewGroup parent,
- @Nullable View headlineViewParent);
+ View headlineViewParent);
protected static void updateViewWithImage(ImageView imageView, Bitmap image) {
if (image == null) {
diff --git a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java
index d127d929..1749c6f7 100644
--- a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java
@@ -76,7 +76,7 @@ class FileContentPreviewUi extends ContentPreviewUi {
Resources resources,
LayoutInflater layoutInflater,
ViewGroup parent,
- @Nullable View headlineViewParent) {
+ View headlineViewParent) {
return displayInternal(resources, layoutInflater, parent, headlineViewParent);
}
@@ -84,12 +84,9 @@ class FileContentPreviewUi extends ContentPreviewUi {
Resources resources,
LayoutInflater layoutInflater,
ViewGroup parent,
- @Nullable View headlineViewParent) {
+ View headlineViewParent) {
mContentPreview = (ViewGroup) layoutInflater.inflate(
R.layout.chooser_grid_preview_file, parent, false);
- if (headlineViewParent == null) {
- headlineViewParent = mContentPreview;
- }
inflateHeadline(headlineViewParent);
displayHeadline(headlineViewParent, mHeadlineGenerator.getFilesHeadline(mFileCount));
diff --git a/java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java
index 0367e9d5..b50f5bc8 100644
--- a/java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java
@@ -108,7 +108,7 @@ class FilesPlusTextContentPreviewUi extends ContentPreviewUi {
Resources resources,
LayoutInflater layoutInflater,
ViewGroup parent,
- @Nullable View headlineViewParent) {
+ View headlineViewParent) {
return displayInternal(layoutInflater, parent, headlineViewParent);
}
@@ -133,10 +133,10 @@ class FilesPlusTextContentPreviewUi extends ContentPreviewUi {
private ViewGroup displayInternal(
LayoutInflater layoutInflater,
ViewGroup parent,
- @Nullable View headlineViewParent) {
+ View headlineViewParent) {
mContentPreviewView = (ViewGroup) layoutInflater.inflate(
R.layout.chooser_grid_preview_files_text, parent, false);
- mHeadliveView = headlineViewParent == null ? mContentPreviewView : headlineViewParent;
+ mHeadliveView = headlineViewParent;
inflateHeadline(mHeadliveView);
final ActionRow actionRow =
diff --git a/java/src/com/android/intentresolver/contentpreview/NoContextPreviewUi.kt b/java/src/com/android/intentresolver/contentpreview/NoContextPreviewUi.kt
index 31a7006c..924e6499 100644
--- a/java/src/com/android/intentresolver/contentpreview/NoContextPreviewUi.kt
+++ b/java/src/com/android/intentresolver/contentpreview/NoContextPreviewUi.kt
@@ -29,7 +29,7 @@ internal class NoContextPreviewUi(private val type: Int) : ContentPreviewUi() {
resources: Resources?,
layoutInflater: LayoutInflater?,
parent: ViewGroup?,
- headlineViewParent: View?,
+ headlineViewParent: View,
): ViewGroup? {
Log.e(TAG, "Unexpected content preview type: $type")
return null
diff --git a/java/src/com/android/intentresolver/contentpreview/ShareouselContentPreviewUi.kt b/java/src/com/android/intentresolver/contentpreview/ShareouselContentPreviewUi.kt
index 5fce711c..57a51239 100644
--- a/java/src/com/android/intentresolver/contentpreview/ShareouselContentPreviewUi.kt
+++ b/java/src/com/android/intentresolver/contentpreview/ShareouselContentPreviewUi.kt
@@ -45,21 +45,17 @@ class ShareouselContentPreviewUi : ContentPreviewUi() {
resources: Resources,
layoutInflater: LayoutInflater,
parent: ViewGroup,
- headlineViewParent: View?,
+ headlineViewParent: View,
): ViewGroup = displayInternal(parent, headlineViewParent)
- private fun displayInternal(parent: ViewGroup, headlineViewParent: View?): ViewGroup {
- if (headlineViewParent != null) {
- inflateHeadline(headlineViewParent)
- }
+ private fun displayInternal(parent: ViewGroup, headlineViewParent: View): ViewGroup {
+ inflateHeadline(headlineViewParent)
return ComposeView(parent.context).apply {
setContent {
val vm: ChooserViewModel = viewModel()
val viewModel: ShareouselViewModel = vm.shareouselViewModel
- headlineViewParent?.let {
- LaunchedEffect(viewModel) { bindHeader(viewModel, headlineViewParent) }
- }
+ LaunchedEffect(viewModel) { bindHeader(viewModel, headlineViewParent) }
MaterialTheme(
colorScheme =
diff --git a/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java
index a7ae81b0..ae7ddcd9 100644
--- a/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java
@@ -82,19 +82,16 @@ class TextContentPreviewUi extends ContentPreviewUi {
Resources resources,
LayoutInflater layoutInflater,
ViewGroup parent,
- @Nullable View headlineViewParent) {
+ View headlineViewParent) {
return displayInternal(layoutInflater, parent, headlineViewParent);
}
private ViewGroup displayInternal(
LayoutInflater layoutInflater,
ViewGroup parent,
- @Nullable View headlineViewParent) {
+ View headlineViewParent) {
ViewGroup contentPreviewLayout = (ViewGroup) layoutInflater.inflate(
R.layout.chooser_grid_preview_text, parent, false);
- if (headlineViewParent == null) {
- headlineViewParent = contentPreviewLayout;
- }
inflateHeadline(headlineViewParent);
final ActionRow actionRow =
diff --git a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java
index 77252112..88311016 100644
--- a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java
+++ b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java
@@ -54,7 +54,6 @@ class UnifiedContentPreviewUi extends ContentPreviewUi {
private List<FileInfo> mFiles;
@Nullable
private ViewGroup mContentPreviewView;
- @Nullable
private View mHeadlineView;
UnifiedContentPreviewUi(
@@ -93,7 +92,7 @@ class UnifiedContentPreviewUi extends ContentPreviewUi {
Resources resources,
LayoutInflater layoutInflater,
ViewGroup parent,
- @Nullable View headlineViewParent) {
+ View headlineViewParent) {
return displayInternal(layoutInflater, parent, headlineViewParent);
}
@@ -109,10 +108,10 @@ class UnifiedContentPreviewUi extends ContentPreviewUi {
}
private ViewGroup displayInternal(
- LayoutInflater layoutInflater, ViewGroup parent, @Nullable View headlineViewParent) {
+ LayoutInflater layoutInflater, ViewGroup parent, View headlineViewParent) {
mContentPreviewView = (ViewGroup) layoutInflater.inflate(
R.layout.chooser_grid_preview_image, parent, false);
- mHeadlineView = headlineViewParent == null ? mContentPreviewView : headlineViewParent;
+ mHeadlineView = headlineViewParent;
inflateHeadline(mHeadlineView);
final ActionRow actionRow =
diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/FileContentPreviewUiTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/FileContentPreviewUiTest.kt
index 25e8b239..0e4e36ab 100644
--- a/tests/unit/src/com/android/intentresolver/contentpreview/FileContentPreviewUiTest.kt
+++ b/tests/unit/src/com/android/intentresolver/contentpreview/FileContentPreviewUiTest.kt
@@ -64,46 +64,24 @@ class FileContentPreviewUiTest {
val gridLayout =
layoutInflater.inflate(R.layout.chooser_grid_scrollable_preview, null, false)
as ViewGroup
+ val headlineRow = gridLayout.requireViewById<View>(R.id.chooser_headline_row_container)
+
+ assertThat(headlineRow.findViewById<View>(R.id.headline)).isNull()
+ assertThat(headlineRow.findViewById<View>(R.id.metadata)).isNull()
val previewView =
testSubject.display(
context.resources,
layoutInflater,
gridLayout,
- /*headlineViewParent=*/ null
+ headlineRow,
)
assertThat(previewView).isNotNull()
- val headlineView = previewView?.findViewById<TextView>(R.id.headline)
- assertThat(headlineView).isNotNull()
- assertThat(headlineView?.text).isEqualTo(text)
- val metadataView = previewView?.findViewById<TextView>(R.id.metadata)
- assertThat(metadataView?.text).isEqualTo(testMetadataText)
- }
-
- @Test
- fun test_displayWithExternalHeaderView() {
- val layoutInflater = LayoutInflater.from(context)
- val gridLayout =
- layoutInflater.inflate(R.layout.chooser_grid_scrollable_preview, null, false)
- as ViewGroup
- val externalHeaderView =
- gridLayout.requireViewById<View>(R.id.chooser_headline_row_container)
-
- assertThat(externalHeaderView.findViewById<View>(R.id.headline)).isNull()
- assertThat(externalHeaderView.findViewById<View>(R.id.metadata)).isNull()
-
- val previewView =
- testSubject.display(context.resources, layoutInflater, gridLayout, externalHeaderView)
-
- assertThat(previewView).isNotNull()
- assertThat(previewView.findViewById<View>(R.id.headline)).isNull()
- assertThat(previewView.findViewById<View>(R.id.metadata)).isNull()
-
- val headlineView = externalHeaderView.findViewById<TextView>(R.id.headline)
+ val headlineView = headlineRow.findViewById<TextView>(R.id.headline)
assertThat(headlineView).isNotNull()
assertThat(headlineView?.text).isEqualTo(text)
- val metadataView = externalHeaderView.findViewById<TextView>(R.id.metadata)
+ val metadataView = headlineRow.findViewById<TextView>(R.id.metadata)
assertThat(metadataView?.text).isEqualTo(testMetadataText)
}
}
diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt
index bd0a8efa..da0ddd12 100644
--- a/tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt
+++ b/tests/unit/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUiTest.kt
@@ -52,9 +52,13 @@ class FilesPlusTextContentPreviewUiTest {
private val actionFactory =
object : ChooserContentPreviewUi.ActionFactory {
override fun getEditButtonRunnable(): Runnable? = null
+
override fun getCopyButtonRunnable(): Runnable? = null
+
override fun createCustomActions(): List<ActionRow.Action> = emptyList()
+
override fun getModifyShareAction(): ActionRow.Action? = null
+
override fun getExcludeSharedTextAction(): Consumer<Boolean> = Consumer<Boolean> {}
}
private val imageLoader = mock<ImageLoader>()
@@ -70,200 +74,106 @@ class FilesPlusTextContentPreviewUiTest {
get() = getInstrumentation().context
@Test
- fun test_displayImagesPlusTextWithoutUriMetadata_showImagesHeadline() {
+ fun test_displayImagesPlusTextWithoutUriMetadataHeader_showImagesHeadline() {
val sharedFileCount = 2
- val previewView = testLoadingHeadline("image/*", sharedFileCount)
-
- verify(headlineGenerator, times(1)).getImagesHeadline(sharedFileCount)
- verifyPreviewHeadline(previewView, HEADLINE_IMAGES)
- verifyPreviewMetadata(previewView, testMetadataText)
- verifySharedText(previewView)
- }
-
- @Test
- fun test_displayImagesPlusTextWithoutUriMetadataExternalHeader_showImagesHeadline() {
- val sharedFileCount = 2
- val (previewView, headerParent) = testLoadingExternalHeadline("image/*", sharedFileCount)
+ val (previewView, headlineRow) = testLoadingHeadline("image/*", sharedFileCount)
+ assertWithMessage("Preview parent should not be null").that(previewView).isNotNull()
verify(headlineGenerator, times(1)).getImagesHeadline(sharedFileCount)
- verifyInternalHeadlineAbsence(previewView)
- verifyPreviewHeadline(headerParent, HEADLINE_IMAGES)
- verifyPreviewMetadata(headerParent, testMetadataText)
+ verifyPreviewHeadline(headlineRow, HEADLINE_IMAGES)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
verifySharedText(previewView)
}
@Test
- fun test_displayVideosPlusTextWithoutUriMetadata_showVideosHeadline() {
+ fun test_displayVideosPlusTextWithoutUriMetadataHeader_showVideosHeadline() {
val sharedFileCount = 2
- val previewView = testLoadingHeadline("video/*", sharedFileCount)
+ val (previewView, headlineRow) = testLoadingHeadline("video/*", sharedFileCount)
verify(headlineGenerator, times(1)).getVideosHeadline(sharedFileCount)
- verifyPreviewHeadline(previewView, HEADLINE_VIDEOS)
- verifyPreviewMetadata(previewView, testMetadataText)
- verifySharedText(previewView)
- }
-
- @Test
- fun test_displayVideosPlusTextWithoutUriMetadataExternalHeader_showVideosHeadline() {
- val sharedFileCount = 2
- val (previewView, headerParent) = testLoadingExternalHeadline("video/*", sharedFileCount)
-
- verify(headlineGenerator, times(1)).getVideosHeadline(sharedFileCount)
- verifyInternalHeadlineAbsence(previewView)
- verifyPreviewHeadline(headerParent, HEADLINE_VIDEOS)
- verifyPreviewMetadata(headerParent, testMetadataText)
- verifySharedText(previewView)
- }
-
- @Test
- fun test_displayDocsPlusTextWithoutUriMetadata_showFilesHeadline() {
- val sharedFileCount = 2
- val previewView = testLoadingHeadline("application/pdf", sharedFileCount)
-
- verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount)
- verifyPreviewHeadline(previewView, HEADLINE_FILES)
- verifyPreviewMetadata(previewView, testMetadataText)
- verifySharedText(previewView)
- }
-
- @Test
- fun test_displayDocsPlusTextWithoutUriMetadataExternalHeader_showFilesHeadline() {
- val sharedFileCount = 2
- val (previewView, headerParent) =
- testLoadingExternalHeadline("application/pdf", sharedFileCount)
-
- verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount)
- verifyInternalHeadlineAbsence(previewView)
- verifyPreviewHeadline(headerParent, HEADLINE_FILES)
- verifyPreviewMetadata(headerParent, testMetadataText)
+ assertWithMessage("Preview parent should not be null").that(previewView).isNotNull()
+ verifyPreviewHeadline(headlineRow, HEADLINE_VIDEOS)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
verifySharedText(previewView)
}
@Test
- fun test_displayMixedContentPlusTextWithoutUriMetadata_showFilesHeadline() {
+ fun test_displayDocsPlusTextWithoutUriMetadataHeader_showFilesHeadline() {
val sharedFileCount = 2
- val previewView = testLoadingHeadline("*/*", sharedFileCount)
+ val (previewView, headlineRow) = testLoadingHeadline("application/pdf", sharedFileCount)
verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount)
- verifyPreviewHeadline(previewView, HEADLINE_FILES)
- verifyPreviewMetadata(previewView, testMetadataText)
+ assertWithMessage("Preview parent should not be null").that(previewView).isNotNull()
+ verifyPreviewHeadline(headlineRow, HEADLINE_FILES)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
verifySharedText(previewView)
}
@Test
- fun test_displayMixedContentPlusTextWithoutUriMetadataExternalHeader_showFilesHeadline() {
+ fun test_displayMixedContentPlusTextWithoutUriMetadataHeader_showFilesHeadline() {
val sharedFileCount = 2
- val (previewView, headerParent) = testLoadingExternalHeadline("*/*", sharedFileCount)
+ val (previewView, headlineRow) = testLoadingHeadline("*/*", sharedFileCount)
verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount)
- verifyInternalHeadlineAbsence(previewView)
- verifyPreviewHeadline(headerParent, HEADLINE_FILES)
- verifyPreviewMetadata(headerParent, testMetadataText)
- verifySharedText(previewView)
- }
-
- @Test
- fun test_displayImagesPlusTextWithUriMetadataSet_showImagesHeadline() {
- val loadedFileMetadata = createFileInfosWithMimeTypes("image/png", "image/jpeg")
- val sharedFileCount = loadedFileMetadata.size
- val previewView = testLoadingHeadline("image/*", sharedFileCount, loadedFileMetadata)
-
- verify(headlineGenerator, times(1)).getImagesHeadline(sharedFileCount)
- verifyPreviewHeadline(previewView, HEADLINE_IMAGES)
- verifyPreviewMetadata(previewView, testMetadataText)
+ assertWithMessage("Preview parent should not be null").that(previewView).isNotNull()
+ verifyPreviewHeadline(headlineRow, HEADLINE_FILES)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
verifySharedText(previewView)
}
@Test
- fun test_displayImagesPlusTextWithUriMetadataSetExternalHeader_showImagesHeadline() {
+ fun test_displayImagesPlusTextWithUriMetadataSetHeader_showImagesHeadline() {
val loadedFileMetadata = createFileInfosWithMimeTypes("image/png", "image/jpeg")
val sharedFileCount = loadedFileMetadata.size
- val (previewView, headerParent) =
- testLoadingExternalHeadline("image/*", sharedFileCount, loadedFileMetadata)
+ val (previewView, headlineRow) =
+ testLoadingHeadline("image/*", sharedFileCount, loadedFileMetadata)
verify(headlineGenerator, times(1)).getImagesHeadline(sharedFileCount)
- verifyInternalHeadlineAbsence(previewView)
- verifyPreviewHeadline(headerParent, HEADLINE_IMAGES)
- verifyPreviewMetadata(headerParent, testMetadataText)
- verifySharedText(previewView)
- }
-
- @Test
- fun test_displayVideosPlusTextWithUriMetadataSet_showVideosHeadline() {
- val loadedFileMetadata = createFileInfosWithMimeTypes("video/mp4", "video/mp4")
- val sharedFileCount = loadedFileMetadata.size
- val previewView = testLoadingHeadline("video/*", sharedFileCount, loadedFileMetadata)
-
- verify(headlineGenerator, times(1)).getVideosHeadline(sharedFileCount)
- verifyPreviewHeadline(previewView, HEADLINE_VIDEOS)
- verifyPreviewMetadata(previewView, testMetadataText)
+ assertWithMessage("Preview parent should not be null").that(previewView).isNotNull()
+ verifyPreviewHeadline(headlineRow, HEADLINE_IMAGES)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
verifySharedText(previewView)
}
@Test
- fun test_displayVideosPlusTextWithUriMetadataSetExternalHeader_showVideosHeadline() {
+ fun test_displayVideosPlusTextWithUriMetadataSetHeader_showVideosHeadline() {
val loadedFileMetadata = createFileInfosWithMimeTypes("video/mp4", "video/mp4")
val sharedFileCount = loadedFileMetadata.size
- val (previewView, headerParent) =
- testLoadingExternalHeadline("video/*", sharedFileCount, loadedFileMetadata)
+ val (previewView, headlineRow) =
+ testLoadingHeadline("video/*", sharedFileCount, loadedFileMetadata)
verify(headlineGenerator, times(1)).getVideosHeadline(sharedFileCount)
- verifyInternalHeadlineAbsence(previewView)
- verifyPreviewHeadline(headerParent, HEADLINE_VIDEOS)
- verifyPreviewMetadata(headerParent, testMetadataText)
- verifySharedText(previewView)
- }
-
- @Test
- fun test_displayImagesAndVideosPlusTextWithUriMetadataSet_showFilesHeadline() {
- val loadedFileMetadata = createFileInfosWithMimeTypes("image/png", "video/mp4")
- val sharedFileCount = loadedFileMetadata.size
- val previewView = testLoadingHeadline("*/*", sharedFileCount, loadedFileMetadata)
-
- verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount)
- verifyPreviewHeadline(previewView, HEADLINE_FILES)
- verifyPreviewMetadata(previewView, testMetadataText)
+ assertWithMessage("Preview parent should not be null").that(previewView).isNotNull()
+ verifyPreviewHeadline(headlineRow, HEADLINE_VIDEOS)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
verifySharedText(previewView)
}
@Test
- fun test_displayImagesAndVideosPlusTextWithUriMetadataSetExternalHeader_showFilesHeadline() {
+ fun test_displayImagesAndVideosPlusTextWithUriMetadataSetHeader_showFilesHeadline() {
val loadedFileMetadata = createFileInfosWithMimeTypes("image/png", "video/mp4")
val sharedFileCount = loadedFileMetadata.size
- val (previewView, headerParent) =
- testLoadingExternalHeadline("*/*", sharedFileCount, loadedFileMetadata)
+ val (previewView, headlineRow) =
+ testLoadingHeadline("*/*", sharedFileCount, loadedFileMetadata)
verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount)
- verifyInternalHeadlineAbsence(previewView)
- verifyPreviewHeadline(headerParent, HEADLINE_FILES)
- verifyPreviewMetadata(headerParent, testMetadataText)
+ assertWithMessage("Preview parent should not be null").that(previewView).isNotNull()
+ verifyPreviewHeadline(headlineRow, HEADLINE_FILES)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
verifySharedText(previewView)
}
@Test
- fun test_displayDocsPlusTextWithUriMetadataSet_showFilesHeadline() {
+ fun test_displayDocsPlusTextWithUriMetadataSetHeader_showFilesHeadline() {
val loadedFileMetadata = createFileInfosWithMimeTypes("application/pdf", "application/pdf")
val sharedFileCount = loadedFileMetadata.size
- val previewView =
+ val (previewView, headlineRow) =
testLoadingHeadline("application/pdf", sharedFileCount, loadedFileMetadata)
verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount)
- verifyPreviewHeadline(previewView, HEADLINE_FILES)
- verifyPreviewMetadata(previewView, testMetadataText)
- verifySharedText(previewView)
- }
-
- @Test
- fun test_displayDocsPlusTextWithUriMetadataSetExternalHeader_showFilesHeadline() {
- val loadedFileMetadata = createFileInfosWithMimeTypes("application/pdf", "application/pdf")
- val sharedFileCount = loadedFileMetadata.size
- val (previewView, headerParent) =
- testLoadingExternalHeadline("application/pdf", sharedFileCount, loadedFileMetadata)
-
- verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount)
- verifyInternalHeadlineAbsence(previewView)
- verifyPreviewHeadline(headerParent, HEADLINE_FILES)
- verifyPreviewMetadata(headerParent, testMetadataText)
+ assertWithMessage("Preview parent should not be null").that(previewView).isNotNull()
+ verifyPreviewHeadline(headlineRow, HEADLINE_FILES)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
verifySharedText(previewView)
}
@@ -287,25 +197,30 @@ class FilesPlusTextContentPreviewUiTest {
val gridLayout =
layoutInflater.inflate(R.layout.chooser_grid_scrollable_preview, null, false)
as ViewGroup
+ val headlineRow = gridLayout.requireViewById<View>(R.id.chooser_headline_row_container)
- val previewView =
- testSubject.display(context.resources, LayoutInflater.from(context), gridLayout, null)
+ testSubject.display(
+ context.resources,
+ LayoutInflater.from(context),
+ gridLayout,
+ headlineRow
+ )
verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount)
verify(headlineGenerator, never()).getImagesHeadline(sharedFileCount)
- verifyPreviewHeadline(previewView, HEADLINE_FILES)
- verifyPreviewMetadata(previewView, testMetadataText)
+ verifyPreviewHeadline(headlineRow, HEADLINE_FILES)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
testSubject.updatePreviewMetadata(createFileInfosWithMimeTypes("image/png", "image/jpg"))
verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount)
verify(headlineGenerator, times(1)).getImagesHeadline(sharedFileCount)
- verifyPreviewHeadline(previewView, HEADLINE_IMAGES)
- verifyPreviewMetadata(previewView, testMetadataText)
+ verifyPreviewHeadline(headlineRow, HEADLINE_IMAGES)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
}
@Test
- fun test_uriMetadataIsMoreSpecificThanIntentMimeTypeExternalHeader_headlineGetsUpdated() {
+ fun test_uriMetadataIsMoreSpecificThanIntentMimeTypeHeader_headlineGetsUpdated() {
val sharedFileCount = 2
val testSubject =
FilesPlusTextContentPreviewUi(
@@ -324,14 +239,13 @@ class FilesPlusTextContentPreviewUiTest {
val gridLayout =
layoutInflater.inflate(R.layout.chooser_grid_scrollable_preview, null, false)
as ViewGroup
- val externalHeaderView =
- gridLayout.requireViewById<View>(R.id.chooser_headline_row_container)
+ val headlineRow = gridLayout.requireViewById<View>(R.id.chooser_headline_row_container)
- assertWithMessage("External headline should not be inflated by default")
- .that(externalHeaderView.findViewById<View>(R.id.headline))
+ assertWithMessage("Headline should not be inflated by default")
+ .that(headlineRow.findViewById<View>(R.id.headline))
.isNull()
- assertWithMessage("External metadata should not be inflated by default")
- .that(externalHeaderView.findViewById<View>(R.id.metadata))
+ assertWithMessage("Metadata should not be inflated by default")
+ .that(headlineRow.findViewById<View>(R.id.metadata))
.isNull()
val previewView =
@@ -339,59 +253,27 @@ class FilesPlusTextContentPreviewUiTest {
context.resources,
LayoutInflater.from(context),
gridLayout,
- externalHeaderView
+ headlineRow
)
verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount)
verify(headlineGenerator, never()).getImagesHeadline(sharedFileCount)
- verifyInternalHeadlineAbsence(previewView)
- verifyPreviewHeadline(externalHeaderView, HEADLINE_FILES)
- verifyPreviewMetadata(externalHeaderView, testMetadataText)
+ assertWithMessage("Preview parent should not be null").that(previewView).isNotNull()
+ verifyPreviewHeadline(headlineRow, HEADLINE_FILES)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
testSubject.updatePreviewMetadata(createFileInfosWithMimeTypes("image/png", "image/jpg"))
verify(headlineGenerator, times(1)).getFilesHeadline(sharedFileCount)
verify(headlineGenerator, times(1)).getImagesHeadline(sharedFileCount)
- verifyPreviewHeadline(externalHeaderView, HEADLINE_IMAGES)
- verifyPreviewMetadata(externalHeaderView, testMetadataText)
+ verifyPreviewHeadline(headlineRow, HEADLINE_IMAGES)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
}
private fun testLoadingHeadline(
intentMimeType: String,
sharedFileCount: Int,
loadedFileMetadata: List<FileInfo>? = null,
- ): ViewGroup? {
- val testSubject =
- FilesPlusTextContentPreviewUi(
- testScope,
- /*isSingleImage=*/ false,
- sharedFileCount,
- SHARED_TEXT,
- intentMimeType,
- actionFactory,
- imageLoader,
- DefaultMimeTypeClassifier,
- headlineGenerator,
- testMetadataText,
- )
- val layoutInflater = LayoutInflater.from(context)
- val gridLayout =
- layoutInflater.inflate(R.layout.chooser_grid_scrollable_preview, null, false)
- as ViewGroup
-
- loadedFileMetadata?.let(testSubject::updatePreviewMetadata)
- return testSubject.display(
- context.resources,
- LayoutInflater.from(context),
- gridLayout,
- /*headlineViewParent=*/ null
- )
- }
-
- private fun testLoadingExternalHeadline(
- intentMimeType: String,
- sharedFileCount: Int,
- loadedFileMetadata: List<FileInfo>? = null,
): Pair<ViewGroup?, View> {
val testSubject =
FilesPlusTextContentPreviewUi(
@@ -410,15 +292,14 @@ class FilesPlusTextContentPreviewUiTest {
val gridLayout =
layoutInflater.inflate(R.layout.chooser_grid_scrollable_preview, null, false)
as ViewGroup
- val externalHeaderView =
- gridLayout.requireViewById<View>(R.id.chooser_headline_row_container)
+ val headlineRow = gridLayout.requireViewById<View>(R.id.chooser_headline_row_container)
- assertWithMessage("External headline should not be inflated by default")
- .that(externalHeaderView.findViewById<View>(R.id.headline))
+ assertWithMessage("Headline should not be inflated by default")
+ .that(headlineRow.findViewById<View>(R.id.headline))
.isNull()
- assertWithMessage("External metadata should not be inflated by default")
- .that(externalHeaderView.findViewById<View>(R.id.metadata))
+ assertWithMessage("Metadata should not be inflated by default")
+ .that(headlineRow.findViewById<View>(R.id.metadata))
.isNull()
loadedFileMetadata?.let(testSubject::updatePreviewMetadata)
@@ -426,8 +307,8 @@ class FilesPlusTextContentPreviewUiTest {
context.resources,
LayoutInflater.from(context),
gridLayout,
- externalHeaderView
- ) to externalHeaderView
+ headlineRow
+ ) to headlineRow
}
private fun createFileInfosWithMimeTypes(vararg mimeTypes: String): List<FileInfo> {
@@ -457,13 +338,4 @@ class FilesPlusTextContentPreviewUiTest {
private fun verifySharedText(previewView: ViewGroup?) {
verifyTextViewText(previewView, R.id.content_preview_text, SHARED_TEXT)
}
-
- private fun verifyInternalHeadlineAbsence(previewView: ViewGroup?) {
- assertWithMessage("Preview parent should not be null").that(previewView).isNotNull()
- assertWithMessage(
- "Preview headline should not be inflated when an external headline is used"
- )
- .that(previewView?.findViewById<View>(R.id.headline))
- .isNull()
- }
}
diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/TextContentPreviewUiTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/TextContentPreviewUiTest.kt
index 0416d71a..9a15f90a 100644
--- a/tests/unit/src/com/android/intentresolver/contentpreview/TextContentPreviewUiTest.kt
+++ b/tests/unit/src/com/android/intentresolver/contentpreview/TextContentPreviewUiTest.kt
@@ -44,9 +44,13 @@ class TextContentPreviewUiTest {
private val actionFactory =
object : ChooserContentPreviewUi.ActionFactory {
override fun getEditButtonRunnable(): Runnable? = null
+
override fun getCopyButtonRunnable(): Runnable? = null
+
override fun createCustomActions(): List<ActionRow.Action> = emptyList()
+
override fun getModifyShareAction(): ActionRow.Action? = null
+
override fun getExcludeSharedTextAction(): Consumer<Boolean> = Consumer<Boolean> {}
}
private val imageLoader = mock<ImageLoader>()
@@ -79,47 +83,21 @@ class TextContentPreviewUiTest {
val gridLayout =
layoutInflater.inflate(R.layout.chooser_grid_scrollable_preview, null, false)
as ViewGroup
+ val headlineRow = gridLayout.requireViewById<View>(R.id.chooser_headline_row_container)
val previewView =
testSubject.display(
context.resources,
layoutInflater,
gridLayout,
- /*headlineViewParent=*/ null
+ headlineRow,
)
assertThat(previewView).isNotNull()
- val headlineView = previewView?.findViewById<TextView>(R.id.headline)
- assertThat(headlineView).isNotNull()
- assertThat(headlineView?.text).isEqualTo(text)
- val metadataView = previewView?.findViewById<TextView>(R.id.metadata)
- assertThat(metadataView).isNotNull()
- assertThat(metadataView?.text).isEqualTo(testMetadataText)
- }
-
- @Test
- fun test_displayWithExternalHeaderView_externalHeaderIsDisplayed() {
- val layoutInflater = LayoutInflater.from(context)
- val gridLayout =
- layoutInflater.inflate(R.layout.chooser_grid_scrollable_preview, null, false)
- as ViewGroup
- val externalHeaderView =
- gridLayout.requireViewById<View>(R.id.chooser_headline_row_container)
-
- assertThat(externalHeaderView.findViewById<View>(R.id.headline)).isNull()
- assertThat(externalHeaderView.findViewById<View>(R.id.metadata)).isNull()
-
- val previewView =
- testSubject.display(context.resources, layoutInflater, gridLayout, externalHeaderView)
-
- assertThat(previewView).isNotNull()
- assertThat(previewView.findViewById<View>(R.id.headline)).isNull()
- assertThat(previewView.findViewById<View>(R.id.metadata)).isNull()
-
- val headlineView = externalHeaderView.findViewById<TextView>(R.id.headline)
+ val headlineView = headlineRow.findViewById<TextView>(R.id.headline)
assertThat(headlineView).isNotNull()
assertThat(headlineView?.text).isEqualTo(text)
- val metadataView = externalHeaderView.findViewById<TextView>(R.id.metadata)
+ val metadataView = headlineRow.findViewById<TextView>(R.id.metadata)
assertThat(metadataView).isNotNull()
assertThat(metadataView?.text).isEqualTo(testMetadataText)
}
@@ -130,6 +108,7 @@ class TextContentPreviewUiTest {
val gridLayout =
layoutInflater.inflate(R.layout.chooser_grid_scrollable_preview, null, false)
as ViewGroup
+ val headlineRow = gridLayout.requireViewById<View>(R.id.chooser_headline_row_container)
val albumSubject =
TextContentPreviewUi(
@@ -149,14 +128,14 @@ class TextContentPreviewUiTest {
context.resources,
layoutInflater,
gridLayout,
- /*headlineViewParent=*/ null
+ headlineRow,
)
assertThat(previewView).isNotNull()
- val headlineView = previewView?.findViewById<TextView>(R.id.headline)
+ val headlineView = headlineRow.findViewById<TextView>(R.id.headline)
assertThat(headlineView).isNotNull()
assertThat(headlineView?.text).isEqualTo(albumHeadline)
- val metadataView = previewView?.findViewById<TextView>(R.id.metadata)
+ val metadataView = headlineRow.findViewById<TextView>(R.id.metadata)
assertThat(metadataView).isNotNull()
assertThat(metadataView?.text).isEqualTo(testMetadataText)
}
diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUiTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUiTest.kt
index 07575be0..98e6c381 100644
--- a/tests/unit/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUiTest.kt
+++ b/tests/unit/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUiTest.kt
@@ -67,235 +67,100 @@ class UnifiedContentPreviewUiTest {
get() = getInstrumentation().context
@Test
- fun test_displayImagesWithoutUriMetadata_showImagesHeadline() {
- testLoadingHeadline("image/*", files = null) { previewView ->
+ fun test_displayImagesWithoutUriMetadataHeader_showImagesHeadline() {
+ testLoadingHeadline("image/*", files = null) { headlineRow ->
verify(headlineGenerator, times(1)).getImagesHeadline(2)
- verifyPreviewHeadline(previewView, IMAGE_HEADLINE)
- verifyPreviewMetadata(previewView, testMetadataText)
+ verifyPreviewHeadline(headlineRow, IMAGE_HEADLINE)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
}
}
@Test
- fun test_displayImagesWithoutUriMetadataExternalHeader_showImagesHeadline() {
- testLoadingExternalHeadline("image/*", files = null) { externalHeaderView ->
- verify(headlineGenerator, times(1)).getImagesHeadline(2)
- verifyPreviewHeadline(externalHeaderView, IMAGE_HEADLINE)
- verifyPreviewMetadata(externalHeaderView, testMetadataText)
- }
- }
-
- @Test
- fun test_displayVideosWithoutUriMetadata_showImagesHeadline() {
- testLoadingHeadline("video/*", files = null) { previewView ->
- verify(headlineGenerator, times(1)).getVideosHeadline(2)
- verifyPreviewHeadline(previewView, VIDEO_HEADLINE)
- verifyPreviewMetadata(previewView, testMetadataText)
- }
- }
-
- @Test
- fun test_displayVideosWithoutUriMetadataExternalHeader_showImagesHeadline() {
- testLoadingExternalHeadline("video/*", files = null) { externalHeaderView ->
+ fun test_displayVideosWithoutUriMetadataHeader_showImagesHeadline() {
+ testLoadingHeadline("video/*", files = null) { headlineRow ->
verify(headlineGenerator, times(1)).getVideosHeadline(2)
- verifyPreviewHeadline(externalHeaderView, VIDEO_HEADLINE)
- verifyPreviewMetadata(externalHeaderView, testMetadataText)
+ verifyPreviewHeadline(headlineRow, VIDEO_HEADLINE)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
}
}
@Test
- fun test_displayDocumentsWithoutUriMetadata_showImagesHeadline() {
- testLoadingHeadline("application/pdf", files = null) { previewView ->
+ fun test_displayDocumentsWithoutUriMetadataHeader_showImagesHeadline() {
+ testLoadingHeadline("application/pdf", files = null) { headlineRow ->
verify(headlineGenerator, times(1)).getFilesHeadline(2)
- verifyPreviewHeadline(previewView, FILES_HEADLINE)
- verifyPreviewMetadata(previewView, testMetadataText)
+ verifyPreviewHeadline(headlineRow, FILES_HEADLINE)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
}
}
@Test
- fun test_displayDocumentsWithoutUriMetadataExternalHeader_showImagesHeadline() {
- testLoadingExternalHeadline("application/pdf", files = null) { externalHeaderView ->
+ fun test_displayMixedContentWithoutUriMetadataHeader_showImagesHeadline() {
+ testLoadingHeadline("*/*", files = null) { headlineRow ->
verify(headlineGenerator, times(1)).getFilesHeadline(2)
- verifyPreviewHeadline(externalHeaderView, FILES_HEADLINE)
- verifyPreviewMetadata(externalHeaderView, testMetadataText)
- }
- }
-
- @Test
- fun test_displayMixedContentWithoutUriMetadata_showImagesHeadline() {
- testLoadingHeadline("*/*", files = null) { previewView ->
- verify(headlineGenerator, times(1)).getFilesHeadline(2)
- verifyPreviewHeadline(previewView, FILES_HEADLINE)
- verifyPreviewMetadata(previewView, testMetadataText)
- }
- }
-
- @Test
- fun test_displayMixedContentWithoutUriMetadataExternalHeader_showImagesHeadline() {
- testLoadingExternalHeadline("*/*", files = null) { externalHeader ->
- verify(headlineGenerator, times(1)).getFilesHeadline(2)
- verifyPreviewHeadline(externalHeader, FILES_HEADLINE)
- verifyPreviewMetadata(externalHeader, testMetadataText)
- }
- }
-
- @Test
- fun test_displayImagesWithUriMetadataSet_showImagesHeadline() {
- val uri = Uri.parse("content://pkg.app/image.png")
- val files =
- listOf(
- FileInfo.Builder(uri).withMimeType("image/png").build(),
- FileInfo.Builder(uri).withMimeType("image/jpeg").build(),
- )
- testLoadingHeadline("image/*", files) { preivewView ->
- verify(headlineGenerator, times(1)).getImagesHeadline(2)
- verifyPreviewHeadline(preivewView, IMAGE_HEADLINE)
+ verifyPreviewHeadline(headlineRow, FILES_HEADLINE)
+ verifyPreviewMetadata(headlineRow, testMetadataText)
}
}
@Test
- fun test_displayImagesWithUriMetadataSetExternalHeader_showImagesHeadline() {
+ fun test_displayImagesWithUriMetadataSetHeader_showImagesHeadline() {
val uri = Uri.parse("content://pkg.app/image.png")
val files =
listOf(
FileInfo.Builder(uri).withMimeType("image/png").build(),
FileInfo.Builder(uri).withMimeType("image/jpeg").build(),
)
- testLoadingExternalHeadline("image/*", files) { externalHeader ->
+ testLoadingHeadline("image/*", files) { headlineRow ->
verify(headlineGenerator, times(1)).getImagesHeadline(2)
- verifyPreviewHeadline(externalHeader, IMAGE_HEADLINE)
+ verifyPreviewHeadline(headlineRow, IMAGE_HEADLINE)
}
}
@Test
- fun test_displayVideosWithUriMetadataSet_showImagesHeadline() {
+ fun test_displayVideosWithUriMetadataSetHeader_showImagesHeadline() {
val uri = Uri.parse("content://pkg.app/image.png")
val files =
listOf(
FileInfo.Builder(uri).withMimeType("video/mp4").build(),
FileInfo.Builder(uri).withMimeType("video/mp4").build(),
)
- testLoadingHeadline("video/*", files) { previewView ->
+ testLoadingHeadline("video/*", files) { headlineRow ->
verify(headlineGenerator, times(1)).getVideosHeadline(2)
- verifyPreviewHeadline(previewView, VIDEO_HEADLINE)
+ verifyPreviewHeadline(headlineRow, VIDEO_HEADLINE)
}
}
@Test
- fun test_displayVideosWithUriMetadataSetExternalHeader_showImagesHeadline() {
- val uri = Uri.parse("content://pkg.app/image.png")
- val files =
- listOf(
- FileInfo.Builder(uri).withMimeType("video/mp4").build(),
- FileInfo.Builder(uri).withMimeType("video/mp4").build(),
- )
- testLoadingExternalHeadline("video/*", files) { externalHeader ->
- verify(headlineGenerator, times(1)).getVideosHeadline(2)
- verifyPreviewHeadline(externalHeader, VIDEO_HEADLINE)
- }
- }
-
- @Test
- fun test_displayImagesAndVideosWithUriMetadataSet_showImagesHeadline() {
+ fun test_displayImagesAndVideosWithUriMetadataSetHeader_showImagesHeadline() {
val uri = Uri.parse("content://pkg.app/image.png")
val files =
listOf(
FileInfo.Builder(uri).withMimeType("image/png").build(),
FileInfo.Builder(uri).withMimeType("video/mp4").build(),
)
- testLoadingHeadline("*/*", files) { previewView ->
+ testLoadingHeadline("*/*", files) { headlineRow ->
verify(headlineGenerator, times(1)).getFilesHeadline(2)
- verifyPreviewHeadline(previewView, FILES_HEADLINE)
+ verifyPreviewHeadline(headlineRow, FILES_HEADLINE)
}
}
@Test
- fun test_displayImagesAndVideosWithUriMetadataSetExternalHeader_showImagesHeadline() {
- val uri = Uri.parse("content://pkg.app/image.png")
- val files =
- listOf(
- FileInfo.Builder(uri).withMimeType("image/png").build(),
- FileInfo.Builder(uri).withMimeType("video/mp4").build(),
- )
- testLoadingExternalHeadline("*/*", files) { externalHeader ->
- verify(headlineGenerator, times(1)).getFilesHeadline(2)
- verifyPreviewHeadline(externalHeader, FILES_HEADLINE)
- }
- }
-
- @Test
- fun test_displayDocumentsWithUriMetadataSet_showImagesHeadline() {
+ fun test_displayDocumentsWithUriMetadataSetHeader_showImagesHeadline() {
val uri = Uri.parse("content://pkg.app/image.png")
val files =
listOf(
FileInfo.Builder(uri).withMimeType("application/pdf").build(),
FileInfo.Builder(uri).withMimeType("application/pdf").build(),
)
- testLoadingHeadline("application/pdf", files) { previewView ->
+ testLoadingHeadline("application/pdf", files) { headlineRow ->
verify(headlineGenerator, times(1)).getFilesHeadline(2)
- verifyPreviewHeadline(previewView, FILES_HEADLINE)
- }
- }
-
- @Test
- fun test_displayDocumentsWithUriMetadataSetExternalHeader_showImagesHeadline() {
- val uri = Uri.parse("content://pkg.app/image.png")
- val files =
- listOf(
- FileInfo.Builder(uri).withMimeType("application/pdf").build(),
- FileInfo.Builder(uri).withMimeType("application/pdf").build(),
- )
- testLoadingExternalHeadline("application/pdf", files) { externalHeader ->
- verify(headlineGenerator, times(1)).getFilesHeadline(2)
- verifyPreviewHeadline(externalHeader, FILES_HEADLINE)
+ verifyPreviewHeadline(headlineRow, FILES_HEADLINE)
}
}
private fun testLoadingHeadline(
intentMimeType: String,
files: List<FileInfo>?,
- verificationBlock: (ViewGroup?) -> Unit,
- ) {
- testScope.runTest {
- val endMarker = FileInfo.Builder(Uri.EMPTY).build()
- val emptySourceFlow = MutableSharedFlow<FileInfo>(replay = 1)
- val testSubject =
- UnifiedContentPreviewUi(
- testScope,
- /*isSingleImage=*/ false,
- intentMimeType,
- actionFactory,
- imageLoader,
- DefaultMimeTypeClassifier,
- object : TransitionElementStatusCallback {
- override fun onTransitionElementReady(name: String) = Unit
- override fun onAllTransitionElementsReady() = Unit
- },
- files?.let { it.asFlow() } ?: emptySourceFlow.takeWhile { it !== endMarker },
- /*itemCount=*/ 2,
- headlineGenerator,
- testMetadataText,
- )
- val layoutInflater = LayoutInflater.from(context)
- val gridLayout =
- layoutInflater.inflate(R.layout.chooser_grid_scrollable_preview, null, false)
- as ViewGroup
-
- val previewView =
- testSubject.display(
- context.resources,
- LayoutInflater.from(context),
- gridLayout,
- /*headlineViewParent=*/ null
- )
- emptySourceFlow.tryEmit(endMarker)
-
- verificationBlock(previewView)
- }
- }
-
- private fun testLoadingExternalHeadline(
- intentMimeType: String,
- files: List<FileInfo>?,
verificationBlock: (View?) -> Unit,
) {
testScope.runTest {
@@ -322,26 +187,20 @@ class UnifiedContentPreviewUiTest {
val gridLayout =
layoutInflater.inflate(R.layout.chooser_grid_scrollable_preview, null, false)
as ViewGroup
- val externalHeaderView =
- gridLayout.requireViewById<View>(R.id.chooser_headline_row_container)
+ val headlineRow = gridLayout.requireViewById<View>(R.id.chooser_headline_row_container)
- assertWithMessage("External headline should not be inflated by default")
- .that(externalHeaderView.findViewById<View>(R.id.headline))
+ assertWithMessage("Headline row should not be inflated by default")
+ .that(headlineRow.findViewById<View>(R.id.headline))
.isNull()
- val previewView =
- testSubject.display(
- context.resources,
- LayoutInflater.from(context),
- gridLayout,
- externalHeaderView,
- )
-
+ testSubject.display(
+ context.resources,
+ LayoutInflater.from(context),
+ gridLayout,
+ headlineRow,
+ )
emptySourceFlow.tryEmit(endMarker)
-
- verifyInternalHeadlineAbsence(previewView)
- verifyInternalMetadataAbsence(previewView)
- verificationBlock(externalHeaderView)
+ verificationBlock(headlineRow)
}
}
@@ -363,21 +222,4 @@ class UnifiedContentPreviewUiTest {
private fun verifyPreviewMetadata(headerViewParent: View?, expectedText: CharSequence) {
verifyTextViewText(headerViewParent, R.id.metadata, expectedText)
}
-
- private fun verifyInternalHeadlineAbsence(previewView: ViewGroup?) {
- assertWithMessage("Preview parent should not be null").that(previewView).isNotNull()
- assertWithMessage(
- "Preview headline should not be inflated when an external headline is used"
- )
- .that(previewView?.findViewById<View>(R.id.headline))
- .isNull()
- }
- private fun verifyInternalMetadataAbsence(previewView: ViewGroup?) {
- assertWithMessage("Preview parent should not be null").that(previewView).isNotNull()
- assertWithMessage(
- "Preview metadata should not be inflated when an external metadata is used"
- )
- .that(previewView?.findViewById<View>(R.id.metadata))
- .isNull()
- }
}