summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andrey Epin <ayepin@google.com> 2024-04-23 12:45:19 -0700
committer Andrey Epin <ayepin@google.com> 2024-04-23 13:01:28 -0700
commitf7e74fcbe92dfddb5efb254bb7b21931c28bb125 (patch)
tree980f02e3add0c41073d8fec6c4923036d341bc1e
parentb67d4b095c88dc715b9bedde8f873af0f4ac04f3 (diff)
Remove obsolete headline views from preview UI variants
With scrollable preview's been released, headline views within preview variants are obsolete and can be deleted. Bug: 287102904 Test: atest IntentResolver-tests-unit Test: atest IntentResolver-tests-activity Test: manual functionality smoke test Change-Id: I26ad0afc4e3801c57025044107121bacff6dc860
-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 c7b8acbe..75447cc2 100644
--- a/java/src/com/android/intentresolver/ChooserActivity.java
+++ b/java/src/com/android/intentresolver/ChooserActivity.java
@@ -1567,7 +1567,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()
- }
}