summaryrefslogtreecommitdiff
path: root/java/tests/src
diff options
context:
space:
mode:
author Andrey Epin <ayepin@google.com> 2022-10-06 18:40:29 -0700
committer Andrey Epin <ayepin@google.com> 2022-11-04 16:00:15 -0700
commit0c7df5fef314e451cac57521b10e5f34cc269d92 (patch)
treecd6fb7fadc3a10b6589a293634ee3d840c533d96 /java/tests/src
parentd98c446b684a41d073a28093d139b94642f45ac9 (diff)
Simplify SelectableTargetInfo dependencies
Remove “functional” (Context, PackageManager, and SelectableTargetInfoCommunicator) and obsolete dependencies from SelectableTargetInfo. Changes to SelectableTargetInfo: 1. Fields mBadgeIcon, mBadgeContentDescriptor were never read and thus removed. 2. Values previously provided by SelectableTargetInfoCommunicator are inlined or pre-calculated: - getTargetIntent() used in the resolved intent calculation replaced with a pre-calculated resolved intent value (we can do it as target intent does not change); - getReferrerFillInIntent() passed as an argument (we can do it as the value does not change). 3. As ChooserListAdapter.LoadDirectShareIconTask was the only place that invoked SelectableTargetInfo#loadIcon(), icon loading logic, SelectableTargetInfo#getChooserTargetIconDrawable method, is moved over there and the related code is deleted from SelectableTargetInfo. 4. SelectableTargetInfo.SelectableTargetInfoCommunicator #makePresentatinGetter() removed as not used. Changes to TargetInfo (and related classes): 1. TargetInfo#setDrawableIcon() is added to the interface as a way for ChooserListAdapter#LoadDirectShareIconTask to update the icon. 2. NotSelectableTargetInfo#newPlaceHolderInfo() changed to receive a context that would be used by the target it creates. 3. After the aforementioned changes no implementation of the TargetInfo#getDisplayIcon actually uses its Context argument, thus it is deleted. 4. A default implementation added for TargetInfo#hasDisplayIcon method as all implementations, essentially, were the same. 5. TargetInfo#loadIcon removed as not used. Fix: 257285229 Test: manual functinality test Test: atest IntentResolverUnitTests Change-Id: I448ebed9c5346092ebca6c4e356830c55288d55b
Diffstat (limited to 'java/tests/src')
-rw-r--r--java/tests/src/com/android/intentresolver/ChooserListAdapterTest.kt31
-rw-r--r--java/tests/src/com/android/intentresolver/ShortcutSelectionLogicTest.kt28
-rw-r--r--java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt72
3 files changed, 81 insertions, 50 deletions
diff --git a/java/tests/src/com/android/intentresolver/ChooserListAdapterTest.kt b/java/tests/src/com/android/intentresolver/ChooserListAdapterTest.kt
index 6ca7c5d1..c43b014c 100644
--- a/java/tests/src/com/android/intentresolver/ChooserListAdapterTest.kt
+++ b/java/tests/src/com/android/intentresolver/ChooserListAdapterTest.kt
@@ -17,10 +17,9 @@
package com.android.intentresolver
import android.content.ComponentName
+import android.content.Intent
import android.content.pm.PackageManager
import android.content.pm.PackageManager.ResolveInfoFlags
-import android.os.Bundle
-import android.service.chooser.ChooserTarget
import android.view.View
import android.widget.FrameLayout
import android.widget.ImageView
@@ -71,7 +70,7 @@ class ChooserListAdapterTest {
chooserActivityLogger,
) {
override fun createLoadDirectShareIconTask(
- info: TargetInfo?
+ info: SelectableTargetInfo
): LoadDirectShareIconTask = taskProvider(info)
}
@@ -122,22 +121,16 @@ class ChooserListAdapterTest {
private fun createSelectableTargetInfo(): TargetInfo =
SelectableTargetInfo.newSelectableTargetInfo(
- context,
- null,
- createChooserTarget(),
- 1f,
- selectableTargetInfoCommunicator,
- null,
- null
- )
-
- private fun createChooserTarget(): ChooserTarget =
- ChooserTarget(
- "Title",
- null,
- 1f,
- ComponentName("package", "package.Class"),
- Bundle()
+ /* sourceInfo = */ mock(),
+ /* backupResolveInfo = */ mock(),
+ /* resolvedIntent = */ Intent(),
+ /* chooserTarget = */ createChooserTarget(
+ "Target", 0.5f, ComponentName("pkg", "Class"), "id-1"
+ ),
+ /* modifiedScore = */ 1f,
+ /* shortcutInfo = */ createShortcutInfo("id-1", ComponentName("pkg", "Class"), 1),
+ /* appTarget */ null,
+ /* referrerFillInIntent = */ Intent()
)
private fun createView(): View {
diff --git a/java/tests/src/com/android/intentresolver/ShortcutSelectionLogicTest.kt b/java/tests/src/com/android/intentresolver/ShortcutSelectionLogicTest.kt
index 8581ed0c..2c56e613 100644
--- a/java/tests/src/com/android/intentresolver/ShortcutSelectionLogicTest.kt
+++ b/java/tests/src/com/android/intentresolver/ShortcutSelectionLogicTest.kt
@@ -18,11 +18,10 @@ package com.android.intentresolver
import android.content.ComponentName
import android.content.Context
-import android.content.Intent
import android.content.pm.ShortcutInfo
import android.service.chooser.ChooserTarget
import com.android.intentresolver.chooser.TargetInfo
-import com.android.intentresolver.chooser.SelectableTargetInfo.SelectableTargetInfoCommunicator
+import androidx.test.filters.SmallTest
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Test
@@ -31,6 +30,7 @@ private const val PACKAGE_A = "package.a"
private const val PACKAGE_B = "package.b"
private const val CLASS_NAME = "./MainActivity"
+@SmallTest
class ShortcutSelectionLogicTest {
private val packageTargets = HashMap<String, Array<ChooserTarget>>().apply {
arrayOf(PACKAGE_A, PACKAGE_B).forEach { pkg ->
@@ -68,7 +68,8 @@ class ShortcutSelectionLogicTest {
/* directShareToShortcutInfos = */ emptyMap(),
/* directShareToAppTargets = */ emptyMap(),
/* userContext = */ mock(),
- /* mSelectableTargetInfoCommunicator = */ mock(),
+ /* targetIntent = */ mock(),
+ /* refererFillInIntent = */ mock(),
/* maxRankedTargets = */ 4,
/* serviceTargets = */ serviceResults
)
@@ -99,7 +100,8 @@ class ShortcutSelectionLogicTest {
/* directShareToShortcutInfos = */ emptyMap(),
/* directShareToAppTargets = */ emptyMap(),
/* userContext = */ mock(),
- /* mSelectableTargetInfoCommunicator = */ mock(),
+ /* targetIntent = */ mock(),
+ /* refererFillInIntent = */ mock(),
/* maxRankedTargets = */ 4,
/* serviceTargets = */ serviceResults
)
@@ -130,7 +132,8 @@ class ShortcutSelectionLogicTest {
/* directShareToShortcutInfos = */ emptyMap(),
/* directShareToAppTargets = */ emptyMap(),
/* userContext = */ mock(),
- /* mSelectableTargetInfoCommunicator = */ mock(),
+ /* targetIntent = */ mock(),
+ /* refererFillInIntent = */ mock(),
/* maxRankedTargets = */ 1,
/* serviceTargets = */ serviceResults
)
@@ -163,7 +166,8 @@ class ShortcutSelectionLogicTest {
/* directShareToShortcutInfos = */ emptyMap(),
/* directShareToAppTargets = */ emptyMap(),
/* userContext = */ mock(),
- /* mSelectableTargetInfoCommunicator = */ mock(),
+ /* targetIntent = */ mock(),
+ /* refererFillInIntent = */ mock(),
/* maxRankedTargets = */ 4,
/* serviceTargets = */ serviceResults
)
@@ -175,7 +179,8 @@ class ShortcutSelectionLogicTest {
/* directShareToShortcutInfos = */ emptyMap(),
/* directShareToAppTargets = */ emptyMap(),
/* userContext = */ mock(),
- /* mSelectableTargetInfoCommunicator = */ mock(),
+ /* targetIntent = */ mock(),
+ /* refererFillInIntent = */ mock(),
/* maxRankedTargets = */ 4,
/* serviceTargets = */ serviceResults
)
@@ -211,7 +216,8 @@ class ShortcutSelectionLogicTest {
),
/* directShareToAppTargets = */ emptyMap(),
/* userContext = */ mock(),
- /* mSelectableTargetInfoCommunicator = */ mock(),
+ /* targetIntent = */ mock(),
+ /* refererFillInIntent = */ mock(),
/* maxRankedTargets = */ 4,
/* serviceTargets = */ serviceResults
)
@@ -234,9 +240,6 @@ class ShortcutSelectionLogicTest {
/* maxShortcutTargetsPerApp = */ 1,
/* applySharingAppLimits = */ true
)
- val targetInfoCommunicator = mock<SelectableTargetInfoCommunicator> {
- whenever(targetIntent).thenReturn(Intent())
- }
val context = mock<Context> {
whenever(packageManager).thenReturn(mock())
}
@@ -249,7 +252,8 @@ class ShortcutSelectionLogicTest {
/* directShareToShortcutInfos = */ emptyMap(),
/* directShareToAppTargets = */ emptyMap(),
/* userContext = */ context,
- /* mSelectableTargetInfoCommunicator = */ targetInfoCommunicator,
+ /* targetIntent = */ mock(),
+ /* refererFillInIntent = */ mock(),
/* maxRankedTargets = */ 4,
/* serviceTargets = */ serviceResults
)
diff --git a/java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt b/java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt
index ae9c0f8d..11837e08 100644
--- a/java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt
+++ b/java/tests/src/com/android/intentresolver/chooser/TargetInfoTest.kt
@@ -18,16 +18,16 @@ package com.android.intentresolver.chooser
import android.app.prediction.AppTarget
import android.app.prediction.AppTargetId
+import android.content.ComponentName
import android.content.Intent
-import android.content.pm.ShortcutInfo
+import android.content.pm.ActivityInfo
+import android.content.pm.ResolveInfo
import android.os.UserHandle
-import android.service.chooser.ChooserTarget
import androidx.test.platform.app.InstrumentationRegistry
import com.android.intentresolver.createChooserTarget
import com.android.intentresolver.createShortcutInfo
import com.android.intentresolver.mock
import com.android.intentresolver.ResolverDataProvider
-import com.android.intentresolver.chooser.SelectableTargetInfo.SelectableTargetInfoCommunicator
import com.google.common.truth.Truth.assertThat
import org.junit.Test
@@ -40,12 +40,12 @@ class TargetInfoTest {
assertThat(info.isEmptyTargetInfo()).isTrue()
assertThat(info.isChooserTargetInfo()).isTrue() // From legacy inheritance model.
assertThat(info.hasDisplayIcon()).isFalse()
- assertThat(info.getDisplayIcon(context)).isNull()
+ assertThat(info.getDisplayIcon()).isNull()
}
@Test
fun testNewPlaceholderTargetInfo() {
- val info = NotSelectableTargetInfo.newPlaceHolderTargetInfo()
+ val info = NotSelectableTargetInfo.newPlaceHolderTargetInfo(context)
assertThat(info.isPlaceHolderTargetInfo()).isTrue()
assertThat(info.isChooserTargetInfo()).isTrue() // From legacy inheritance model.
assertThat(info.hasDisplayIcon()).isTrue()
@@ -57,34 +57,68 @@ class TargetInfoTest {
val displayInfo: DisplayResolveInfo = mock()
val chooserTarget = createChooserTarget(
"title", 0.3f, ResolverDataProvider.createComponentName(1), "test_shortcut_id")
- val selectableTargetInfoCommunicator: SelectableTargetInfoCommunicator = mock()
val shortcutInfo = createShortcutInfo("id", ResolverDataProvider.createComponentName(2), 3)
val appTarget = AppTarget(
AppTargetId("id"),
- chooserTarget.getComponentName().getPackageName(),
- chooserTarget.getComponentName().getClassName(),
+ chooserTarget.componentName.packageName,
+ chooserTarget.componentName.className,
UserHandle.CURRENT)
+ val resolvedIntent = mock<Intent>()
val targetInfo = SelectableTargetInfo.newSelectableTargetInfo(
- context,
displayInfo,
+ mock(),
+ resolvedIntent,
chooserTarget,
0.1f,
- selectableTargetInfoCommunicator,
shortcutInfo,
- appTarget)
- assertThat(targetInfo.isSelectableTargetInfo()).isTrue()
- assertThat(targetInfo.isChooserTargetInfo()).isTrue() // From legacy inheritance model.
- assertThat(targetInfo.getDisplayResolveInfo()).isSameInstanceAs(displayInfo)
- assertThat(targetInfo.getChooserTargetComponentName())
- .isEqualTo(chooserTarget.getComponentName())
- assertThat(targetInfo.getDirectShareShortcutId()).isEqualTo(shortcutInfo.getId())
- assertThat(targetInfo.getDirectShareShortcutInfo()).isSameInstanceAs(shortcutInfo)
- assertThat(targetInfo.getDirectShareAppTarget()).isSameInstanceAs(appTarget)
+ appTarget,
+ mock(),
+ )
+ assertThat(targetInfo.isSelectableTargetInfo).isTrue()
+ assertThat(targetInfo.isChooserTargetInfo).isTrue() // From legacy inheritance model.
+ assertThat(targetInfo.displayResolveInfo).isSameInstanceAs(displayInfo)
+ assertThat(targetInfo.chooserTargetComponentName).isEqualTo(chooserTarget.componentName)
+ assertThat(targetInfo.directShareShortcutId).isEqualTo(shortcutInfo.id)
+ assertThat(targetInfo.directShareShortcutInfo).isSameInstanceAs(shortcutInfo)
+ assertThat(targetInfo.directShareAppTarget).isSameInstanceAs(appTarget)
+ assertThat(targetInfo.resolvedIntent).isSameInstanceAs(resolvedIntent)
// TODO: make more meaningful assertions about the behavior of a selectable target.
}
@Test
+ fun test_SelectableTargetInfo_componentName_no_source_info() {
+ val chooserTarget = createChooserTarget(
+ "title", 0.3f, ResolverDataProvider.createComponentName(1), "test_shortcut_id")
+ val shortcutInfo = createShortcutInfo("id", ResolverDataProvider.createComponentName(2), 3)
+ val appTarget = AppTarget(
+ AppTargetId("id"),
+ chooserTarget.componentName.packageName,
+ chooserTarget.componentName.className,
+ UserHandle.CURRENT)
+ val pkgName = "org.package"
+ val className = "MainActivity"
+ val backupResolveInfo = ResolveInfo().apply {
+ activityInfo = ActivityInfo().apply {
+ packageName = pkgName
+ name = className
+ }
+ }
+
+ val targetInfo = SelectableTargetInfo.newSelectableTargetInfo(
+ null,
+ backupResolveInfo,
+ mock(),
+ chooserTarget,
+ 0.1f,
+ shortcutInfo,
+ appTarget,
+ mock(),
+ )
+ assertThat(targetInfo.resolvedComponentName).isEqualTo(ComponentName(pkgName, className))
+ }
+
+ @Test
fun testNewDisplayResolveInfo() {
val intent = Intent(Intent.ACTION_SEND)
intent.putExtra(Intent.EXTRA_TEXT, "testing intent sending")