From d5eb50ac083b03edf84c904e2ec16acb6ca50fdd Mon Sep 17 00:00:00 2001 From: Joshua Trask Date: Mon, 21 Nov 2022 12:38:14 -0500 Subject: Extract ChooserGridAdapter. As of ag/20463973 there's no major design changes required to lift this out of being an inner class, and this combines with ag/20455546 to pull *most* UI considerations out of `ChooserActivity` (namely, any that involve our "grid" except where those considerations are bridged across the `ChooserGridAdapter.ChooserActivityDelegate`). The testing changes were probably part of another CL that got included here accidentally, but they're improvements we can go ahead with anyways (switching some uses of mocks to real objects). Test: atest IntentResolverUnitTests Bug: 202167050 Change-Id: I4948bcd1fa58d4dbe44f7aef009db5f8864882de --- .../intentresolver/ChooserListAdapterTest.kt | 16 +++++--- .../intentresolver/ChooserWrapperActivity.java | 1 + .../intentresolver/ShortcutSelectionLogicTest.kt | 46 ++++++++++++---------- .../intentresolver/chooser/TargetInfoTest.kt | 20 ++++++---- 4 files changed, 49 insertions(+), 34 deletions(-) (limited to 'java/tests') diff --git a/java/tests/src/com/android/intentresolver/ChooserListAdapterTest.kt b/java/tests/src/com/android/intentresolver/ChooserListAdapterTest.kt index 6184cd1c..58f6b733 100644 --- a/java/tests/src/com/android/intentresolver/ChooserListAdapterTest.kt +++ b/java/tests/src/com/android/intentresolver/ChooserListAdapterTest.kt @@ -115,11 +115,16 @@ class ChooserListAdapterTest { verify(testTaskProvider, times(1)).invoke() } - private fun createSelectableTargetInfo(): TargetInfo { - val displayInfo: DisplayResolveInfo = mock() - whenever(displayInfo.getAllSourceIntents()).thenReturn(listOf(mock())) - return SelectableTargetInfo.newSelectableTargetInfo( - /* sourceInfo = */ displayInfo, + private fun createSelectableTargetInfo(): TargetInfo = + SelectableTargetInfo.newSelectableTargetInfo( + /* sourceInfo = */ DisplayResolveInfo.newDisplayResolveInfo( + Intent(), + ResolverDataProvider.createResolveInfo(2, 0), + "label", + "extended info", + Intent(), + /* resolveInfoPresentationGetter= */ null + ), /* backupResolveInfo = */ mock(), /* resolvedIntent = */ Intent(), /* chooserTarget = */ createChooserTarget( @@ -130,7 +135,6 @@ class ChooserListAdapterTest { /* appTarget */ null, /* referrerFillInIntent = */ Intent() ) - } private fun createView(): View { val view = FrameLayout(context) diff --git a/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java b/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java index 8c842786..04e727ba 100644 --- a/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java +++ b/java/tests/src/com/android/intentresolver/ChooserWrapperActivity.java @@ -42,6 +42,7 @@ import com.android.intentresolver.ResolverListAdapter.ResolveInfoPresentationGet import com.android.intentresolver.chooser.DisplayResolveInfo; import com.android.intentresolver.chooser.NotSelectableTargetInfo; import com.android.intentresolver.chooser.TargetInfo; +import com.android.intentresolver.grid.ChooserGridAdapter; import com.android.intentresolver.shortcuts.ShortcutLoader; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; diff --git a/java/tests/src/com/android/intentresolver/ShortcutSelectionLogicTest.kt b/java/tests/src/com/android/intentresolver/ShortcutSelectionLogicTest.kt index e114d38d..a8d6f978 100644 --- a/java/tests/src/com/android/intentresolver/ShortcutSelectionLogicTest.kt +++ b/java/tests/src/com/android/intentresolver/ShortcutSelectionLogicTest.kt @@ -18,6 +18,8 @@ package com.android.intentresolver import android.content.ComponentName import android.content.Context +import android.content.Intent +import android.content.pm.ResolveInfo import android.content.pm.ShortcutInfo import android.service.chooser.ChooserTarget import com.android.intentresolver.chooser.DisplayResolveInfo @@ -48,6 +50,22 @@ class ShortcutSelectionLogicTest { } } + private val baseDisplayInfo = DisplayResolveInfo.newDisplayResolveInfo( + Intent(), + ResolverDataProvider.createResolveInfo(3, 0), + "label", + "extended info", + Intent(), + /* resolveInfoPresentationGetter= */ null) + + private val otherBaseDisplayInfo = DisplayResolveInfo.newDisplayResolveInfo( + Intent(), + ResolverDataProvider.createResolveInfo(4, 0), + "label 2", + "extended info 2", + Intent(), + /* resolveInfoPresentationGetter= */ null) + private operator fun Map>.get(pkg: String, idx: Int) = this[pkg]?.get(idx) ?: error("missing package $pkg") @@ -60,11 +78,9 @@ class ShortcutSelectionLogicTest { /* maxShortcutTargetsPerApp = */ 1, /* applySharingAppLimits = */ false ) - val displayInfo: DisplayResolveInfo = mock() - whenever(displayInfo.getAllSourceIntents()).thenReturn(listOf(mock())) val isUpdated = testSubject.addServiceResults( - /* origTarget = */ displayInfo, + /* origTarget = */ baseDisplayInfo, /* origTargetScore = */ 0.1f, /* targets = */ listOf(sc1, sc2), /* isShortcutResult = */ true, @@ -94,11 +110,9 @@ class ShortcutSelectionLogicTest { /* maxShortcutTargetsPerApp = */ 1, /* applySharingAppLimits = */ true ) - val displayInfo: DisplayResolveInfo = mock() - whenever(displayInfo.getAllSourceIntents()).thenReturn(listOf(mock())) val isUpdated = testSubject.addServiceResults( - /* origTarget = */ displayInfo, + /* origTarget = */ baseDisplayInfo, /* origTargetScore = */ 0.1f, /* targets = */ listOf(sc1, sc2), /* isShortcutResult = */ true, @@ -128,11 +142,9 @@ class ShortcutSelectionLogicTest { /* maxShortcutTargetsPerApp = */ 1, /* applySharingAppLimits = */ false ) - val displayInfo: DisplayResolveInfo = mock() - whenever(displayInfo.getAllSourceIntents()).thenReturn(listOf(mock())) val isUpdated = testSubject.addServiceResults( - /* origTarget = */ displayInfo, + /* origTarget = */ baseDisplayInfo, /* origTargetScore = */ 0.1f, /* targets = */ listOf(sc1, sc2), /* isShortcutResult = */ true, @@ -164,13 +176,9 @@ class ShortcutSelectionLogicTest { /* maxShortcutTargetsPerApp = */ 1, /* applySharingAppLimits = */ true ) - val displayInfo: DisplayResolveInfo = mock() - whenever(displayInfo.getAllSourceIntents()).thenReturn(listOf(mock())) - val displayInfo2: DisplayResolveInfo = mock() - whenever(displayInfo2.getAllSourceIntents()).thenReturn(listOf(mock())) - val isUpdated = testSubject.addServiceResults( - /* origTarget = */ displayInfo, + testSubject.addServiceResults( + /* origTarget = */ baseDisplayInfo, /* origTargetScore = */ 0.1f, /* targets = */ listOf(pkgAsc1, pkgAsc2), /* isShortcutResult = */ true, @@ -183,7 +191,7 @@ class ShortcutSelectionLogicTest { /* serviceTargets = */ serviceResults ) testSubject.addServiceResults( - /* origTarget = */ displayInfo2, + /* origTarget = */ otherBaseDisplayInfo, /* origTargetScore = */ 0.2f, /* targets = */ listOf(pkgBsc1, pkgBsc2), /* isShortcutResult = */ true, @@ -212,11 +220,9 @@ class ShortcutSelectionLogicTest { /* maxShortcutTargetsPerApp = */ 1, /* applySharingAppLimits = */ false ) - val displayInfo: DisplayResolveInfo = mock() - whenever(displayInfo.getAllSourceIntents()).thenReturn(listOf(mock())) val isUpdated = testSubject.addServiceResults( - /* origTarget = */ displayInfo, + /* origTarget = */ baseDisplayInfo, /* origTargetScore = */ 0.1f, /* targets = */ listOf(sc1, sc2), /* isShortcutResult = */ true, @@ -258,7 +264,7 @@ class ShortcutSelectionLogicTest { } testSubject.addServiceResults( - /* origTarget = */ null, + /* origTarget = */ baseDisplayInfo, /* origTargetScore = */ 0f, /* targets = */ listOf(sc1, sc2, sc3), /* isShortcutResult = */ false, diff --git a/java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt b/java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt index c29de0be..7c2b07a9 100644 --- a/java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt +++ b/java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt @@ -28,7 +28,6 @@ import com.android.intentresolver.createChooserTarget import com.android.intentresolver.createShortcutInfo import com.android.intentresolver.mock import com.android.intentresolver.ResolverDataProvider -import com.android.intentresolver.whenever import com.google.common.truth.Truth.assertThat import org.junit.Test @@ -55,20 +54,25 @@ class TargetInfoTest { @Test fun testNewSelectableTargetInfo() { - val displayInfo: DisplayResolveInfo = mock() - whenever(displayInfo.getAllSourceIntents()).thenReturn(listOf(mock())) + val resolvedIntent = Intent() + val baseDisplayInfo = DisplayResolveInfo.newDisplayResolveInfo( + resolvedIntent, + ResolverDataProvider.createResolveInfo(1, 0), + "label", + "extended info", + resolvedIntent, + /* resolveInfoPresentationGetter= */ null) val chooserTarget = createChooserTarget( - "title", 0.3f, ResolverDataProvider.createComponentName(1), "test_shortcut_id") - val shortcutInfo = createShortcutInfo("id", ResolverDataProvider.createComponentName(2), 3) + "title", 0.3f, ResolverDataProvider.createComponentName(2), "test_shortcut_id") + val shortcutInfo = createShortcutInfo("id", ResolverDataProvider.createComponentName(3), 3) val appTarget = AppTarget( AppTargetId("id"), chooserTarget.componentName.packageName, chooserTarget.componentName.className, UserHandle.CURRENT) - val resolvedIntent = mock() val targetInfo = SelectableTargetInfo.newSelectableTargetInfo( - displayInfo, + baseDisplayInfo, mock(), resolvedIntent, chooserTarget, @@ -79,7 +83,7 @@ class TargetInfoTest { ) assertThat(targetInfo.isSelectableTargetInfo).isTrue() assertThat(targetInfo.isChooserTargetInfo).isTrue() // From legacy inheritance model. - assertThat(targetInfo.displayResolveInfo).isSameInstanceAs(displayInfo) + assertThat(targetInfo.displayResolveInfo).isSameInstanceAs(baseDisplayInfo) assertThat(targetInfo.chooserTargetComponentName).isEqualTo(chooserTarget.componentName) assertThat(targetInfo.directShareShortcutId).isEqualTo(shortcutInfo.id) assertThat(targetInfo.directShareShortcutInfo).isSameInstanceAs(shortcutInfo) -- cgit v1.2.3-59-g8ed1b