summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mark Renouf <mrenouf@google.com> 2024-05-03 14:35:34 -0400
committer Mark Renouf <mrenouf@google.com> 2024-05-03 18:41:37 +0000
commita5b9e757f907d1e8adba3c16a30ee70d988045f6 (patch)
tree5491ffe06a0505ef1d10c78c93048148cbd68cf9
parent5b6870398d1c573a946736f3fca8273678de46f2 (diff)
Fix Kotlin code style
Command: find . -name '*.kt' | xargs $ANDROID_BUILD_TOP/external/ktfmt/ktfmt.py Flag: TEST_ONLY Bug: NONE Test: compile Change-Id: I5a39029649aa80d88448ecb697bacce518b6bd84
-rw-r--r--tests/integration/src/com/android/intentresolver/v2/data/repository/PlaceholderTest.kt4
-rw-r--r--tests/unit/src/com/android/intentresolver/TargetPresentationGetterTest.kt374
-rw-r--r--tests/unit/src/com/android/intentresolver/chooser/ImmutableTargetInfoTest.kt303
-rw-r--r--tests/unit/src/com/android/intentresolver/shortcuts/ShortcutToChooserTargetConverterTest.kt84
4 files changed, 412 insertions, 353 deletions
diff --git a/tests/integration/src/com/android/intentresolver/v2/data/repository/PlaceholderTest.kt b/tests/integration/src/com/android/intentresolver/v2/data/repository/PlaceholderTest.kt
index b66a1906..af2836aa 100644
--- a/tests/integration/src/com/android/intentresolver/v2/data/repository/PlaceholderTest.kt
+++ b/tests/integration/src/com/android/intentresolver/v2/data/repository/PlaceholderTest.kt
@@ -21,7 +21,5 @@ import org.junit.Test
class PlaceholderTest {
/** Allows this test target to function while tests are being developed. */
- @Test
- fun placeHolder() {
- }
+ @Test fun placeHolder() {}
}
diff --git a/tests/unit/src/com/android/intentresolver/TargetPresentationGetterTest.kt b/tests/unit/src/com/android/intentresolver/TargetPresentationGetterTest.kt
index e62672a3..92848b2c 100644
--- a/tests/unit/src/com/android/intentresolver/TargetPresentationGetterTest.kt
+++ b/tests/unit/src/com/android/intentresolver/TargetPresentationGetterTest.kt
@@ -16,189 +16,211 @@
package com.android.intentresolver
-import com.android.intentresolver.ResolverDataProvider
import com.google.common.truth.Truth.assertThat
import org.junit.Test
/**
* Unit tests for the various implementations of {@link TargetPresentationGetter}.
+ *
* TODO: consider expanding to cover icon logic (not just labels/sublabels).
* TODO: these are conceptually "acceptance tests" that provide comprehensive coverage of the
- * apparent variations in the legacy implementation. The tests probably don't have to be so
- * exhaustive if we're able to impose a simpler design on the implementation.
+ * apparent variations in the legacy implementation. The tests probably don't have to be so
+ * exhaustive if we're able to impose a simpler design on the implementation.
*/
class TargetPresentationGetterTest {
- fun makeResolveInfoPresentationGetter(
- withSubstitutePermission: Boolean,
- appLabel: String,
- activityLabel: String,
- resolveInfoLabel: String): TargetPresentationGetter {
- val testPackageInfo = ResolverDataProvider.createPackageManagerMockedInfo(
- withSubstitutePermission, appLabel, activityLabel, resolveInfoLabel)
- val factory = TargetPresentationGetter.Factory(testPackageInfo.ctx, 100)
- return factory.makePresentationGetter(testPackageInfo.resolveInfo)
- }
-
- fun makeActivityInfoPresentationGetter(
- withSubstitutePermission: Boolean,
- appLabel: String?,
- activityLabel: String?): TargetPresentationGetter {
- val testPackageInfo = ResolverDataProvider.createPackageManagerMockedInfo(
- withSubstitutePermission, appLabel, activityLabel, "")
- val factory = TargetPresentationGetter.Factory(testPackageInfo.ctx, 100)
- return factory.makePresentationGetter(testPackageInfo.activityInfo)
- }
-
- @Test
- fun testActivityInfoLabels_noSubstitutePermission_distinctRequestedLabelAndSublabel() {
- val presentationGetter = makeActivityInfoPresentationGetter(
- false, "app_label", "activity_label")
- assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
- assertThat(presentationGetter.getSubLabel()).isEqualTo("activity_label")
- }
-
- @Test
- fun testActivityInfoLabels_noSubstitutePermission_sameRequestedLabelAndSublabel() {
- val presentationGetter = makeActivityInfoPresentationGetter(
- false, "app_label", "app_label")
- assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
- // Without the substitute permission, there's no logic to dedupe the labels.
- // TODO: this matches our observations in the legacy code, but is it the right behavior? It
- // seems like {@link ResolverListAdapter.ViewHolder#bindLabel()} has some logic to dedupe in
- // the UI at least, but maybe that logic should be pulled back to the "presentation"?
- assertThat(presentationGetter.getSubLabel()).isEqualTo("app_label")
- }
-
- @Test
- fun testActivityInfoLabels_noSubstitutePermission_nullRequestedLabel() {
- val presentationGetter = makeActivityInfoPresentationGetter(false, null, "activity_label")
- assertThat(presentationGetter.getLabel()).isNull()
- assertThat(presentationGetter.getSubLabel()).isEqualTo("activity_label")
- }
-
- @Test
- fun testActivityInfoLabels_noSubstitutePermission_emptyRequestedLabel() {
- val presentationGetter = makeActivityInfoPresentationGetter(false, "", "activity_label")
- assertThat(presentationGetter.getLabel()).isEqualTo("")
- assertThat(presentationGetter.getSubLabel()).isEqualTo("activity_label")
- }
-
- @Test
- fun testActivityInfoLabels_noSubstitutePermission_emptyRequestedSublabel() {
- val presentationGetter = makeActivityInfoPresentationGetter(false, "app_label", "")
- assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
- // Without the substitute permission, empty sublabels are passed through as-is.
- assertThat(presentationGetter.getSubLabel()).isEqualTo("")
- }
-
- @Test
- fun testActivityInfoLabels_withSubstitutePermission_distinctRequestedLabelAndSublabel() {
- val presentationGetter = makeActivityInfoPresentationGetter(
- true, "app_label", "activity_label")
- assertThat(presentationGetter.getLabel()).isEqualTo("activity_label")
- // With the substitute permission, the same ("activity") label is requested as both the label
- // and sublabel, even though the other value ("app_label") was distinct. Thus this behaves the
- // same as a dupe.
- assertThat(presentationGetter.getSubLabel()).isEqualTo(null)
- }
-
- @Test
- fun testActivityInfoLabels_withSubstitutePermission_sameRequestedLabelAndSublabel() {
- val presentationGetter = makeActivityInfoPresentationGetter(
- true, "app_label", "app_label")
- assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
- // With the substitute permission, duped sublabels get converted to nulls.
- assertThat(presentationGetter.getSubLabel()).isNull()
- }
-
- @Test
- fun testActivityInfoLabels_withSubstitutePermission_nullRequestedLabel() {
- val presentationGetter = makeActivityInfoPresentationGetter(true, "app_label", null)
- assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
- // With the substitute permission, null inputs are a special case that produces null outputs
- // (i.e., they're not simply passed-through from the inputs).
- assertThat(presentationGetter.getSubLabel()).isNull()
- }
-
- @Test
- fun testActivityInfoLabels_withSubstitutePermission_emptyRequestedLabel() {
- val presentationGetter = makeActivityInfoPresentationGetter(true, "app_label", "")
- // Empty "labels" are taken as-is and (unlike nulls) don't prompt a fallback to the sublabel.
- // Thus (as in the previous case with substitute permission & "distinct" labels), this is
- // treated as a dupe.
- assertThat(presentationGetter.getLabel()).isEqualTo("")
- assertThat(presentationGetter.getSubLabel()).isNull()
- }
-
- @Test
- fun testActivityInfoLabels_withSubstitutePermission_emptyRequestedSublabel() {
- val presentationGetter = makeActivityInfoPresentationGetter(true, "", "activity_label")
- assertThat(presentationGetter.getLabel()).isEqualTo("activity_label")
- // With the substitute permission, empty sublabels get converted to nulls.
- assertThat(presentationGetter.getSubLabel()).isNull()
- }
-
- @Test
- fun testResolveInfoLabels_noSubstitutePermission_distinctRequestedLabelAndSublabel() {
- val presentationGetter = makeResolveInfoPresentationGetter(
- false, "app_label", "activity_label", "resolve_info_label")
- assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
- assertThat(presentationGetter.getSubLabel()).isEqualTo("resolve_info_label")
- }
-
- @Test
- fun testResolveInfoLabels_noSubstitutePermission_sameRequestedLabelAndSublabel() {
- val presentationGetter = makeResolveInfoPresentationGetter(
- false, "app_label", "activity_label", "app_label")
- assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
- // Without the substitute permission, there's no logic to dedupe the labels.
- // TODO: this matches our observations in the legacy code, but is it the right behavior? It
- // seems like {@link ResolverListAdapter.ViewHolder#bindLabel()} has some logic to dedupe in
- // the UI at least, but maybe that logic should be pulled back to the "presentation"?
- assertThat(presentationGetter.getSubLabel()).isEqualTo("app_label")
- }
-
- @Test
- fun testResolveInfoLabels_noSubstitutePermission_emptyRequestedSublabel() {
- val presentationGetter = makeResolveInfoPresentationGetter(
- false, "app_label", "activity_label", "")
- assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
- // Without the substitute permission, empty sublabels are passed through as-is.
- assertThat(presentationGetter.getSubLabel()).isEqualTo("")
- }
-
- @Test
- fun testResolveInfoLabels_withSubstitutePermission_distinctRequestedLabelAndSublabel() {
- val presentationGetter = makeResolveInfoPresentationGetter(
- true, "app_label", "activity_label", "resolve_info_label")
- assertThat(presentationGetter.getLabel()).isEqualTo("activity_label")
- assertThat(presentationGetter.getSubLabel()).isEqualTo("resolve_info_label")
- }
-
- @Test
- fun testResolveInfoLabels_withSubstitutePermission_sameRequestedLabelAndSublabel() {
- val presentationGetter = makeResolveInfoPresentationGetter(
- true, "app_label", "activity_label", "activity_label")
- assertThat(presentationGetter.getLabel()).isEqualTo("activity_label")
- // With the substitute permission, duped sublabels get converted to nulls.
- assertThat(presentationGetter.getSubLabel()).isNull()
- }
-
- @Test
- fun testResolveInfoLabels_withSubstitutePermission_emptyRequestedSublabel() {
- val presentationGetter = makeResolveInfoPresentationGetter(
- true, "app_label", "activity_label", "")
- assertThat(presentationGetter.getLabel()).isEqualTo("activity_label")
- // With the substitute permission, empty sublabels get converted to nulls.
- assertThat(presentationGetter.getSubLabel()).isNull()
- }
-
- @Test
- fun testResolveInfoLabels_withSubstitutePermission_emptyRequestedLabelAndSublabel() {
- val presentationGetter = makeResolveInfoPresentationGetter(
- true, "app_label", "", "")
- assertThat(presentationGetter.getLabel()).isEqualTo("")
- // With the substitute permission, empty sublabels get converted to nulls.
- assertThat(presentationGetter.getSubLabel()).isNull()
- }
+ fun makeResolveInfoPresentationGetter(
+ withSubstitutePermission: Boolean,
+ appLabel: String,
+ activityLabel: String,
+ resolveInfoLabel: String
+ ): TargetPresentationGetter {
+ val testPackageInfo =
+ ResolverDataProvider.createPackageManagerMockedInfo(
+ withSubstitutePermission,
+ appLabel,
+ activityLabel,
+ resolveInfoLabel
+ )
+ val factory = TargetPresentationGetter.Factory(testPackageInfo.ctx, 100)
+ return factory.makePresentationGetter(testPackageInfo.resolveInfo)
+ }
+
+ fun makeActivityInfoPresentationGetter(
+ withSubstitutePermission: Boolean,
+ appLabel: String?,
+ activityLabel: String?
+ ): TargetPresentationGetter {
+ val testPackageInfo =
+ ResolverDataProvider.createPackageManagerMockedInfo(
+ withSubstitutePermission,
+ appLabel,
+ activityLabel,
+ ""
+ )
+ val factory = TargetPresentationGetter.Factory(testPackageInfo.ctx, 100)
+ return factory.makePresentationGetter(testPackageInfo.activityInfo)
+ }
+
+ @Test
+ fun testActivityInfoLabels_noSubstitutePermission_distinctRequestedLabelAndSublabel() {
+ val presentationGetter =
+ makeActivityInfoPresentationGetter(false, "app_label", "activity_label")
+ assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
+ assertThat(presentationGetter.getSubLabel()).isEqualTo("activity_label")
+ }
+
+ @Test
+ fun testActivityInfoLabels_noSubstitutePermission_sameRequestedLabelAndSublabel() {
+ val presentationGetter = makeActivityInfoPresentationGetter(false, "app_label", "app_label")
+ assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
+ // Without the substitute permission, there's no logic to dedupe the labels.
+ // TODO: this matches our observations in the legacy code, but is it the right behavior? It
+ // seems like {@link ResolverListAdapter.ViewHolder#bindLabel()} has some logic to dedupe in
+ // the UI at least, but maybe that logic should be pulled back to the "presentation"?
+ assertThat(presentationGetter.getSubLabel()).isEqualTo("app_label")
+ }
+
+ @Test
+ fun testActivityInfoLabels_noSubstitutePermission_nullRequestedLabel() {
+ val presentationGetter = makeActivityInfoPresentationGetter(false, null, "activity_label")
+ assertThat(presentationGetter.getLabel()).isNull()
+ assertThat(presentationGetter.getSubLabel()).isEqualTo("activity_label")
+ }
+
+ @Test
+ fun testActivityInfoLabels_noSubstitutePermission_emptyRequestedLabel() {
+ val presentationGetter = makeActivityInfoPresentationGetter(false, "", "activity_label")
+ assertThat(presentationGetter.getLabel()).isEqualTo("")
+ assertThat(presentationGetter.getSubLabel()).isEqualTo("activity_label")
+ }
+
+ @Test
+ fun testActivityInfoLabels_noSubstitutePermission_emptyRequestedSublabel() {
+ val presentationGetter = makeActivityInfoPresentationGetter(false, "app_label", "")
+ assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
+ // Without the substitute permission, empty sublabels are passed through as-is.
+ assertThat(presentationGetter.getSubLabel()).isEqualTo("")
+ }
+
+ @Test
+ fun testActivityInfoLabels_withSubstitutePermission_distinctRequestedLabelAndSublabel() {
+ val presentationGetter =
+ makeActivityInfoPresentationGetter(true, "app_label", "activity_label")
+ assertThat(presentationGetter.getLabel()).isEqualTo("activity_label")
+ // With the substitute permission, the same ("activity") label is requested as both the
+ // label
+ // and sublabel, even though the other value ("app_label") was distinct. Thus this behaves
+ // the
+ // same as a dupe.
+ assertThat(presentationGetter.getSubLabel()).isEqualTo(null)
+ }
+
+ @Test
+ fun testActivityInfoLabels_withSubstitutePermission_sameRequestedLabelAndSublabel() {
+ val presentationGetter = makeActivityInfoPresentationGetter(true, "app_label", "app_label")
+ assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
+ // With the substitute permission, duped sublabels get converted to nulls.
+ assertThat(presentationGetter.getSubLabel()).isNull()
+ }
+
+ @Test
+ fun testActivityInfoLabels_withSubstitutePermission_nullRequestedLabel() {
+ val presentationGetter = makeActivityInfoPresentationGetter(true, "app_label", null)
+ assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
+ // With the substitute permission, null inputs are a special case that produces null outputs
+ // (i.e., they're not simply passed-through from the inputs).
+ assertThat(presentationGetter.getSubLabel()).isNull()
+ }
+
+ @Test
+ fun testActivityInfoLabels_withSubstitutePermission_emptyRequestedLabel() {
+ val presentationGetter = makeActivityInfoPresentationGetter(true, "app_label", "")
+ // Empty "labels" are taken as-is and (unlike nulls) don't prompt a fallback to the
+ // sublabel.
+ // Thus (as in the previous case with substitute permission & "distinct" labels), this is
+ // treated as a dupe.
+ assertThat(presentationGetter.getLabel()).isEqualTo("")
+ assertThat(presentationGetter.getSubLabel()).isNull()
+ }
+
+ @Test
+ fun testActivityInfoLabels_withSubstitutePermission_emptyRequestedSublabel() {
+ val presentationGetter = makeActivityInfoPresentationGetter(true, "", "activity_label")
+ assertThat(presentationGetter.getLabel()).isEqualTo("activity_label")
+ // With the substitute permission, empty sublabels get converted to nulls.
+ assertThat(presentationGetter.getSubLabel()).isNull()
+ }
+
+ @Test
+ fun testResolveInfoLabels_noSubstitutePermission_distinctRequestedLabelAndSublabel() {
+ val presentationGetter =
+ makeResolveInfoPresentationGetter(
+ false,
+ "app_label",
+ "activity_label",
+ "resolve_info_label"
+ )
+ assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
+ assertThat(presentationGetter.getSubLabel()).isEqualTo("resolve_info_label")
+ }
+
+ @Test
+ fun testResolveInfoLabels_noSubstitutePermission_sameRequestedLabelAndSublabel() {
+ val presentationGetter =
+ makeResolveInfoPresentationGetter(false, "app_label", "activity_label", "app_label")
+ assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
+ // Without the substitute permission, there's no logic to dedupe the labels.
+ // TODO: this matches our observations in the legacy code, but is it the right behavior? It
+ // seems like {@link ResolverListAdapter.ViewHolder#bindLabel()} has some logic to dedupe in
+ // the UI at least, but maybe that logic should be pulled back to the "presentation"?
+ assertThat(presentationGetter.getSubLabel()).isEqualTo("app_label")
+ }
+
+ @Test
+ fun testResolveInfoLabels_noSubstitutePermission_emptyRequestedSublabel() {
+ val presentationGetter =
+ makeResolveInfoPresentationGetter(false, "app_label", "activity_label", "")
+ assertThat(presentationGetter.getLabel()).isEqualTo("app_label")
+ // Without the substitute permission, empty sublabels are passed through as-is.
+ assertThat(presentationGetter.getSubLabel()).isEqualTo("")
+ }
+
+ @Test
+ fun testResolveInfoLabels_withSubstitutePermission_distinctRequestedLabelAndSublabel() {
+ val presentationGetter =
+ makeResolveInfoPresentationGetter(
+ true,
+ "app_label",
+ "activity_label",
+ "resolve_info_label"
+ )
+ assertThat(presentationGetter.getLabel()).isEqualTo("activity_label")
+ assertThat(presentationGetter.getSubLabel()).isEqualTo("resolve_info_label")
+ }
+
+ @Test
+ fun testResolveInfoLabels_withSubstitutePermission_sameRequestedLabelAndSublabel() {
+ val presentationGetter =
+ makeResolveInfoPresentationGetter(true, "app_label", "activity_label", "activity_label")
+ assertThat(presentationGetter.getLabel()).isEqualTo("activity_label")
+ // With the substitute permission, duped sublabels get converted to nulls.
+ assertThat(presentationGetter.getSubLabel()).isNull()
+ }
+
+ @Test
+ fun testResolveInfoLabels_withSubstitutePermission_emptyRequestedSublabel() {
+ val presentationGetter =
+ makeResolveInfoPresentationGetter(true, "app_label", "activity_label", "")
+ assertThat(presentationGetter.getLabel()).isEqualTo("activity_label")
+ // With the substitute permission, empty sublabels get converted to nulls.
+ assertThat(presentationGetter.getSubLabel()).isNull()
+ }
+
+ @Test
+ fun testResolveInfoLabels_withSubstitutePermission_emptyRequestedLabelAndSublabel() {
+ val presentationGetter = makeResolveInfoPresentationGetter(true, "app_label", "", "")
+ assertThat(presentationGetter.getLabel()).isEqualTo("")
+ // With the substitute permission, empty sublabels get converted to nulls.
+ assertThat(presentationGetter.getSubLabel()).isNull()
+ }
}
diff --git a/tests/unit/src/com/android/intentresolver/chooser/ImmutableTargetInfoTest.kt b/tests/unit/src/com/android/intentresolver/chooser/ImmutableTargetInfoTest.kt
index 6712bf31..35b3f637 100644
--- a/tests/unit/src/com/android/intentresolver/chooser/ImmutableTargetInfoTest.kt
+++ b/tests/unit/src/com/android/intentresolver/chooser/ImmutableTargetInfoTest.kt
@@ -23,17 +23,17 @@ import android.content.ComponentName
import android.content.Intent
import android.os.Bundle
import android.os.UserHandle
-import com.android.intentresolver.createShortcutInfo
-import com.android.intentresolver.mock
+import androidx.test.platform.app.InstrumentationRegistry
import com.android.intentresolver.ResolverActivity
import com.android.intentresolver.ResolverDataProvider
+import com.android.intentresolver.createShortcutInfo
+import com.android.intentresolver.mock
import com.google.common.truth.Truth.assertThat
import org.junit.Test
-import androidx.test.platform.app.InstrumentationRegistry
class ImmutableTargetInfoTest {
- private val PERSONAL_USER_HANDLE: UserHandle = InstrumentationRegistry
- .getInstrumentation().getTargetContext().getUser()
+ private val PERSONAL_USER_HANDLE: UserHandle =
+ InstrumentationRegistry.getInstrumentation().getTargetContext().getUser()
private val resolvedIntent = Intent("resolved")
private val targetIntent = Intent("target")
@@ -46,61 +46,62 @@ class ImmutableTargetInfoTest {
private val displayIconHolder: TargetInfo.IconHolder = mock()
private val sourceIntent1 = Intent("source1")
private val sourceIntent2 = Intent("source2")
- private val displayTarget1 = DisplayResolveInfo.newDisplayResolveInfo(
- Intent("display1"),
- ResolverDataProvider.createResolveInfo(2, 0, PERSONAL_USER_HANDLE),
- "display1 label",
- "display1 extended info",
- Intent("display1_resolved")
- )
- private val displayTarget2 = DisplayResolveInfo.newDisplayResolveInfo(
- Intent("display2"),
- ResolverDataProvider.createResolveInfo(3, 0, PERSONAL_USER_HANDLE),
- "display2 label",
- "display2 extended info",
- Intent("display2_resolved")
- )
- private val directShareShortcutInfo = createShortcutInfo(
- "shortcutid", ResolverDataProvider.createComponentName(4), 4)
- private val directShareAppTarget = AppTarget(
- AppTargetId("apptargetid"),
- "test.directshare",
- "target",
- UserHandle.CURRENT)
- private val displayResolveInfo = DisplayResolveInfo.newDisplayResolveInfo(
- Intent("displayresolve"),
- ResolverDataProvider.createResolveInfo(5, 0, PERSONAL_USER_HANDLE),
- "displayresolve label",
- "displayresolve extended info",
- Intent("display_resolved")
- )
+ private val displayTarget1 =
+ DisplayResolveInfo.newDisplayResolveInfo(
+ Intent("display1"),
+ ResolverDataProvider.createResolveInfo(2, 0, PERSONAL_USER_HANDLE),
+ "display1 label",
+ "display1 extended info",
+ Intent("display1_resolved")
+ )
+ private val displayTarget2 =
+ DisplayResolveInfo.newDisplayResolveInfo(
+ Intent("display2"),
+ ResolverDataProvider.createResolveInfo(3, 0, PERSONAL_USER_HANDLE),
+ "display2 label",
+ "display2 extended info",
+ Intent("display2_resolved")
+ )
+ private val directShareShortcutInfo =
+ createShortcutInfo("shortcutid", ResolverDataProvider.createComponentName(4), 4)
+ private val directShareAppTarget =
+ AppTarget(AppTargetId("apptargetid"), "test.directshare", "target", UserHandle.CURRENT)
+ private val displayResolveInfo =
+ DisplayResolveInfo.newDisplayResolveInfo(
+ Intent("displayresolve"),
+ ResolverDataProvider.createResolveInfo(5, 0, PERSONAL_USER_HANDLE),
+ "displayresolve label",
+ "displayresolve extended info",
+ Intent("display_resolved")
+ )
private val hashProvider: ImmutableTargetInfo.TargetHashProvider = mock()
@Test
- fun testBasicProperties() { // Fields that are reflected back w/o logic.
+ fun testBasicProperties() { // Fields that are reflected back w/o logic.
// TODO: we could consider passing copies of all the values into the builder so that we can
// verify that they're not mutated (e.g. no extras added to the intents). For now that
// should be obvious from the implementation.
- val info = ImmutableTargetInfo.newBuilder()
- .setResolvedIntent(resolvedIntent)
- .setTargetIntent(targetIntent)
- .setReferrerFillInIntent(referrerFillInIntent)
- .setResolvedComponentName(resolvedComponentName)
- .setChooserTargetComponentName(chooserTargetComponentName)
- .setResolveInfo(resolveInfo)
- .setDisplayLabel(displayLabel)
- .setExtendedInfo(extendedInfo)
- .setDisplayIconHolder(displayIconHolder)
- .setAlternateSourceIntents(listOf(sourceIntent1, sourceIntent2))
- .setAllDisplayTargets(listOf(displayTarget1, displayTarget2))
- .setIsSuspended(true)
- .setIsPinned(true)
- .setModifiedScore(42.0f)
- .setDirectShareShortcutInfo(directShareShortcutInfo)
- .setDirectShareAppTarget(directShareAppTarget)
- .setDisplayResolveInfo(displayResolveInfo)
- .setHashProvider(hashProvider)
- .build()
+ val info =
+ ImmutableTargetInfo.newBuilder()
+ .setResolvedIntent(resolvedIntent)
+ .setTargetIntent(targetIntent)
+ .setReferrerFillInIntent(referrerFillInIntent)
+ .setResolvedComponentName(resolvedComponentName)
+ .setChooserTargetComponentName(chooserTargetComponentName)
+ .setResolveInfo(resolveInfo)
+ .setDisplayLabel(displayLabel)
+ .setExtendedInfo(extendedInfo)
+ .setDisplayIconHolder(displayIconHolder)
+ .setAlternateSourceIntents(listOf(sourceIntent1, sourceIntent2))
+ .setAllDisplayTargets(listOf(displayTarget1, displayTarget2))
+ .setIsSuspended(true)
+ .setIsPinned(true)
+ .setModifiedScore(42.0f)
+ .setDirectShareShortcutInfo(directShareShortcutInfo)
+ .setDirectShareAppTarget(directShareAppTarget)
+ .setDisplayResolveInfo(displayResolveInfo)
+ .setHashProvider(hashProvider)
+ .build()
assertThat(info.resolvedIntent).isEqualTo(resolvedIntent)
assertThat(info.targetIntent).isEqualTo(targetIntent)
@@ -111,8 +112,8 @@ class ImmutableTargetInfoTest {
assertThat(info.displayLabel).isEqualTo(displayLabel)
assertThat(info.extendedInfo).isEqualTo(extendedInfo)
assertThat(info.displayIconHolder).isEqualTo(displayIconHolder)
- assertThat(info.allSourceIntents).containsExactly(
- resolvedIntent, sourceIntent1, sourceIntent2)
+ assertThat(info.allSourceIntents)
+ .containsExactly(resolvedIntent, sourceIntent1, sourceIntent2)
assertThat(info.allDisplayTargets).containsExactly(displayTarget1, displayTarget2)
assertThat(info.isSuspended).isTrue()
assertThat(info.isPinned).isTrue()
@@ -134,26 +135,27 @@ class ImmutableTargetInfoTest {
fun testToBuilderPreservesBasicProperties() {
// Note this is set up exactly as in `testBasicProperties`, but the assertions will be made
// against a *copy* of the object instead.
- val infoToCopyFrom = ImmutableTargetInfo.newBuilder()
- .setResolvedIntent(resolvedIntent)
- .setTargetIntent(targetIntent)
- .setReferrerFillInIntent(referrerFillInIntent)
- .setResolvedComponentName(resolvedComponentName)
- .setChooserTargetComponentName(chooserTargetComponentName)
- .setResolveInfo(resolveInfo)
- .setDisplayLabel(displayLabel)
- .setExtendedInfo(extendedInfo)
- .setDisplayIconHolder(displayIconHolder)
- .setAlternateSourceIntents(listOf(sourceIntent1, sourceIntent2))
- .setAllDisplayTargets(listOf(displayTarget1, displayTarget2))
- .setIsSuspended(true)
- .setIsPinned(true)
- .setModifiedScore(42.0f)
- .setDirectShareShortcutInfo(directShareShortcutInfo)
- .setDirectShareAppTarget(directShareAppTarget)
- .setDisplayResolveInfo(displayResolveInfo)
- .setHashProvider(hashProvider)
- .build()
+ val infoToCopyFrom =
+ ImmutableTargetInfo.newBuilder()
+ .setResolvedIntent(resolvedIntent)
+ .setTargetIntent(targetIntent)
+ .setReferrerFillInIntent(referrerFillInIntent)
+ .setResolvedComponentName(resolvedComponentName)
+ .setChooserTargetComponentName(chooserTargetComponentName)
+ .setResolveInfo(resolveInfo)
+ .setDisplayLabel(displayLabel)
+ .setExtendedInfo(extendedInfo)
+ .setDisplayIconHolder(displayIconHolder)
+ .setAlternateSourceIntents(listOf(sourceIntent1, sourceIntent2))
+ .setAllDisplayTargets(listOf(displayTarget1, displayTarget2))
+ .setIsSuspended(true)
+ .setIsPinned(true)
+ .setModifiedScore(42.0f)
+ .setDirectShareShortcutInfo(directShareShortcutInfo)
+ .setDirectShareAppTarget(directShareAppTarget)
+ .setDisplayResolveInfo(displayResolveInfo)
+ .setHashProvider(hashProvider)
+ .build()
val info = infoToCopyFrom.toBuilder().build()
@@ -166,8 +168,8 @@ class ImmutableTargetInfoTest {
assertThat(info.displayLabel).isEqualTo(displayLabel)
assertThat(info.extendedInfo).isEqualTo(extendedInfo)
assertThat(info.displayIconHolder).isEqualTo(displayIconHolder)
- assertThat(info.allSourceIntents).containsExactly(
- resolvedIntent, sourceIntent1, sourceIntent2)
+ assertThat(info.allSourceIntents)
+ .containsExactly(resolvedIntent, sourceIntent1, sourceIntent2)
assertThat(info.allDisplayTargets).containsExactly(displayTarget1, displayTarget2)
assertThat(info.isSuspended).isTrue()
assertThat(info.isPinned).isTrue()
@@ -199,12 +201,13 @@ class ImmutableTargetInfoTest {
val referrerFillInIntent = Intent("REFERRER_FILL_IN")
referrerFillInIntent.setPackage("referrer")
- val info = ImmutableTargetInfo.newBuilder()
- .setResolvedIntent(originalIntent)
- .setReferrerFillInIntent(referrerFillInIntent)
- .build()
+ val info =
+ ImmutableTargetInfo.newBuilder()
+ .setResolvedIntent(originalIntent)
+ .setReferrerFillInIntent(referrerFillInIntent)
+ .build()
- assertThat(info.baseIntentToSend.getPackage()).isEqualTo("original") // Only fill if empty.
+ assertThat(info.baseIntentToSend.getPackage()).isEqualTo("original") // Only fill if empty.
assertThat(info.baseIntentToSend.action).isEqualTo("REFERRER_FILL_IN")
}
@@ -216,9 +219,8 @@ class ImmutableTargetInfoTest {
val refinementIntent = Intent()
refinementIntent.putExtra("REFINEMENT", true)
- val originalInfo = ImmutableTargetInfo.newBuilder()
- .setResolvedIntent(originalIntent)
- .build()
+ val originalInfo =
+ ImmutableTargetInfo.newBuilder().setResolvedIntent(originalIntent).build()
val info = checkNotNull(originalInfo.tryToCloneWithAppliedRefinement(refinementIntent))
assertThat(info?.baseIntentToSend?.getBooleanExtra("ORIGINAL", false)).isTrue()
@@ -234,20 +236,21 @@ class ImmutableTargetInfoTest {
referrerFillInIntent.setPackage("referrer_pkg")
referrerFillInIntent.setType("test/referrer")
- val infoWithReferrerFillIn = ImmutableTargetInfo.newBuilder()
- .setResolvedIntent(originalIntent)
- .setReferrerFillInIntent(referrerFillInIntent)
- .build()
+ val infoWithReferrerFillIn =
+ ImmutableTargetInfo.newBuilder()
+ .setResolvedIntent(originalIntent)
+ .setReferrerFillInIntent(referrerFillInIntent)
+ .build()
val refinementIntent = Intent("REFINE_ME")
- refinementIntent.setPackage("original") // Has to match for refinement.
+ refinementIntent.setPackage("original") // Has to match for refinement.
val info =
checkNotNull(infoWithReferrerFillIn.tryToCloneWithAppliedRefinement(refinementIntent))
- assertThat(info?.baseIntentToSend?.getPackage()).isEqualTo("original") // Set all along.
- assertThat(info?.baseIntentToSend?.action).isEqualTo("REFINE_ME") // Refinement wins.
- assertThat(info?.baseIntentToSend?.type).isEqualTo("test/referrer") // Left for referrer.
+ assertThat(info?.baseIntentToSend?.getPackage()).isEqualTo("original") // Set all along.
+ assertThat(info?.baseIntentToSend?.action).isEqualTo("REFINE_ME") // Refinement wins.
+ assertThat(info?.baseIntentToSend?.type).isEqualTo("test/referrer") // Left for referrer.
}
@Test
@@ -260,10 +263,11 @@ class ImmutableTargetInfoTest {
val refinementIntent2 = Intent("REFINE_ME")
refinementIntent2.putExtra("TEST2", "2")
- val originalInfo = ImmutableTargetInfo.newBuilder()
- .setResolvedIntent(originalIntent)
- .setReferrerFillInIntent(referrerFillInIntent)
- .build()
+ val originalInfo =
+ ImmutableTargetInfo.newBuilder()
+ .setResolvedIntent(originalIntent)
+ .setReferrerFillInIntent(referrerFillInIntent)
+ .build()
val refined1 = checkNotNull(originalInfo.tryToCloneWithAppliedRefinement(refinementIntent1))
// Cloned clone.
@@ -292,13 +296,15 @@ class ImmutableTargetInfoTest {
val extraMatch = Intent("REFINE_ME")
extraMatch.putExtra("extraMatch", true)
- val originalInfo = ImmutableTargetInfo.newBuilder()
- .setResolvedIntent(originalIntent)
- .setAllSourceIntents(listOf(
- originalIntent, mismatchedAlternate, targetAlternate, extraMatch))
- .build()
+ val originalInfo =
+ ImmutableTargetInfo.newBuilder()
+ .setResolvedIntent(originalIntent)
+ .setAllSourceIntents(
+ listOf(originalIntent, mismatchedAlternate, targetAlternate, extraMatch)
+ )
+ .build()
- val refinement = Intent("REFINE_ME") // First match is `targetAlternate`
+ val refinement = Intent("REFINE_ME") // First match is `targetAlternate`
refinement.putExtra("refinement", true)
val refinedResult = checkNotNull(originalInfo.tryToCloneWithAppliedRefinement(refinement))
@@ -320,10 +326,11 @@ class ImmutableTargetInfoTest {
val mismatchedAlternate = Intent("DOESNT_MATCH")
mismatchedAlternate.putExtra("mismatchedAlternate", true)
- val originalInfo = ImmutableTargetInfo.newBuilder()
- .setResolvedIntent(originalIntent)
- .setAllSourceIntents(listOf(originalIntent, mismatchedAlternate))
- .build()
+ val originalInfo =
+ ImmutableTargetInfo.newBuilder()
+ .setResolvedIntent(originalIntent)
+ .setAllSourceIntents(listOf(originalIntent, mismatchedAlternate))
+ .build()
val refinement = Intent("PROPOSED_REFINEMENT")
assertThat(originalInfo.tryToCloneWithAppliedRefinement(refinement)).isNull()
@@ -331,9 +338,10 @@ class ImmutableTargetInfoTest {
@Test
fun testLegacySubclassRelationships_empty() {
- val info = ImmutableTargetInfo.newBuilder()
- .setLegacyType(ImmutableTargetInfo.LegacyTargetType.EMPTY_TARGET_INFO)
- .build()
+ val info =
+ ImmutableTargetInfo.newBuilder()
+ .setLegacyType(ImmutableTargetInfo.LegacyTargetType.EMPTY_TARGET_INFO)
+ .build()
assertThat(info.isEmptyTargetInfo).isTrue()
assertThat(info.isPlaceHolderTargetInfo).isFalse()
@@ -346,9 +354,10 @@ class ImmutableTargetInfoTest {
@Test
fun testLegacySubclassRelationships_placeholder() {
- val info = ImmutableTargetInfo.newBuilder()
- .setLegacyType(ImmutableTargetInfo.LegacyTargetType.PLACEHOLDER_TARGET_INFO)
- .build()
+ val info =
+ ImmutableTargetInfo.newBuilder()
+ .setLegacyType(ImmutableTargetInfo.LegacyTargetType.PLACEHOLDER_TARGET_INFO)
+ .build()
assertThat(info.isEmptyTargetInfo).isFalse()
assertThat(info.isPlaceHolderTargetInfo).isTrue()
@@ -361,9 +370,10 @@ class ImmutableTargetInfoTest {
@Test
fun testLegacySubclassRelationships_selectable() {
- val info = ImmutableTargetInfo.newBuilder()
- .setLegacyType(ImmutableTargetInfo.LegacyTargetType.SELECTABLE_TARGET_INFO)
- .build()
+ val info =
+ ImmutableTargetInfo.newBuilder()
+ .setLegacyType(ImmutableTargetInfo.LegacyTargetType.SELECTABLE_TARGET_INFO)
+ .build()
assertThat(info.isEmptyTargetInfo).isFalse()
assertThat(info.isPlaceHolderTargetInfo).isFalse()
@@ -376,9 +386,10 @@ class ImmutableTargetInfoTest {
@Test
fun testLegacySubclassRelationships_displayResolveInfo() {
- val info = ImmutableTargetInfo.newBuilder()
- .setLegacyType(ImmutableTargetInfo.LegacyTargetType.DISPLAY_RESOLVE_INFO)
- .build()
+ val info =
+ ImmutableTargetInfo.newBuilder()
+ .setLegacyType(ImmutableTargetInfo.LegacyTargetType.DISPLAY_RESOLVE_INFO)
+ .build()
assertThat(info.isEmptyTargetInfo).isFalse()
assertThat(info.isPlaceHolderTargetInfo).isFalse()
@@ -391,9 +402,10 @@ class ImmutableTargetInfoTest {
@Test
fun testLegacySubclassRelationships_multiDisplayResolveInfo() {
- val info = ImmutableTargetInfo.newBuilder()
- .setLegacyType(ImmutableTargetInfo.LegacyTargetType.MULTI_DISPLAY_RESOLVE_INFO)
- .build()
+ val info =
+ ImmutableTargetInfo.newBuilder()
+ .setLegacyType(ImmutableTargetInfo.LegacyTargetType.MULTI_DISPLAY_RESOLVE_INFO)
+ .build()
assertThat(info.isEmptyTargetInfo).isFalse()
assertThat(info.isPlaceHolderTargetInfo).isFalse()
@@ -406,13 +418,17 @@ class ImmutableTargetInfoTest {
@Test
fun testActivityStarter_correctNumberOfInvocations_startAsCaller() {
- val activityStarter = object : TestActivityStarter() {
- override fun startAsUser(
- target: TargetInfo, activity: Activity, options: Bundle, user: UserHandle
- ): Boolean {
- throw RuntimeException("Wrong API used: startAsUser")
+ val activityStarter =
+ object : TestActivityStarter() {
+ override fun startAsUser(
+ target: TargetInfo,
+ activity: Activity,
+ options: Bundle,
+ user: UserHandle
+ ): Boolean {
+ throw RuntimeException("Wrong API used: startAsUser")
+ }
}
- }
val info = ImmutableTargetInfo.newBuilder().setActivityStarter(activityStarter).build()
val activity: ResolverActivity = mock()
@@ -431,12 +447,17 @@ class ImmutableTargetInfoTest {
@Test
fun testActivityStarter_correctNumberOfInvocations_startAsUser() {
- val activityStarter = object : TestActivityStarter() {
- override fun startAsCaller(
- target: TargetInfo, activity: Activity, options: Bundle, userId: Int): Boolean {
- throw RuntimeException("Wrong API used: startAsCaller")
+ val activityStarter =
+ object : TestActivityStarter() {
+ override fun startAsCaller(
+ target: TargetInfo,
+ activity: Activity,
+ options: Bundle,
+ userId: Int
+ ): Boolean {
+ throw RuntimeException("Wrong API used: startAsCaller")
+ }
}
- }
val info = ImmutableTargetInfo.newBuilder().setActivityStarter(activityStarter).build()
val activity: Activity = mock()
@@ -466,7 +487,7 @@ class ImmutableTargetInfoTest {
info2.startAsUser(mock(), Bundle(), UserHandle.of(42))
assertThat(activityStarter.lastInvocationTargetInfo).isEqualTo(info2)
- assertThat(activityStarter.totalInvocations).isEqualTo(3) // Instance is still shared.
+ assertThat(activityStarter.totalInvocations).isEqualTo(3) // Instance is still shared.
}
}
@@ -479,7 +500,11 @@ private open class TestActivityStarter : ImmutableTargetInfo.TargetActivityStart
var lastInvocationAsCaller = false
override fun startAsCaller(
- target: TargetInfo, activity: Activity, options: Bundle, userId: Int): Boolean {
+ target: TargetInfo,
+ activity: Activity,
+ options: Bundle,
+ userId: Int
+ ): Boolean {
++totalInvocations
lastInvocationTargetInfo = target
lastInvocationActivity = activity
@@ -490,7 +515,11 @@ private open class TestActivityStarter : ImmutableTargetInfo.TargetActivityStart
}
override fun startAsUser(
- target: TargetInfo, activity: Activity, options: Bundle, user: UserHandle): Boolean {
+ target: TargetInfo,
+ activity: Activity,
+ options: Bundle,
+ user: UserHandle
+ ): Boolean {
++totalInvocations
lastInvocationTargetInfo = target
lastInvocationActivity = activity
diff --git a/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutToChooserTargetConverterTest.kt b/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutToChooserTargetConverterTest.kt
index e0de005d..ce6ef477 100644
--- a/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutToChooserTargetConverterTest.kt
+++ b/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutToChooserTargetConverterTest.kt
@@ -32,9 +32,9 @@ private const val PACKAGE = "org.package"
class ShortcutToChooserTargetConverterTest {
private val testSubject = ShortcutToChooserTargetConverter()
- private val ranks = arrayOf(3 ,7, 1 ,3)
- private val shortcuts = ranks
- .foldIndexed(ArrayList<ShareShortcutInfo>(ranks.size)) { i, acc, rank ->
+ private val ranks = arrayOf(3, 7, 1, 3)
+ private val shortcuts =
+ ranks.foldIndexed(ArrayList<ShareShortcutInfo>(ranks.size)) { i, acc, rank ->
val id = i + 1
acc.add(
createShareShortcutInfo(
@@ -54,13 +54,14 @@ class ShortcutToChooserTargetConverterTest {
val appTargetCache = HashMap<ChooserTarget, AppTarget>()
val shortcutInfoCache = HashMap<ChooserTarget, ShortcutInfo>()
- var chooserTargets = testSubject.convertToChooserTarget(
- shortcuts,
- shortcuts,
- appTargets,
- appTargetCache,
- shortcutInfoCache,
- )
+ var chooserTargets =
+ testSubject.convertToChooserTarget(
+ shortcuts,
+ shortcuts,
+ appTargets,
+ appTargetCache,
+ shortcutInfoCache,
+ )
assertCorrectShortcutToChooserTargetConversion(
shortcuts,
@@ -77,13 +78,14 @@ class ShortcutToChooserTargetConverterTest {
appTargetCache.clear()
shortcutInfoCache.clear()
- chooserTargets = testSubject.convertToChooserTarget(
- subset,
- shortcuts,
- appTargets,
- appTargetCache,
- shortcutInfoCache,
- )
+ chooserTargets =
+ testSubject.convertToChooserTarget(
+ subset,
+ shortcuts,
+ appTargets,
+ appTargetCache,
+ shortcutInfoCache,
+ )
assertCorrectShortcutToChooserTargetConversion(
shortcuts,
@@ -102,17 +104,20 @@ class ShortcutToChooserTargetConverterTest {
val expectedScoreAllShortcuts = floatArrayOf(1.0f, 0.99f, 0.99f, 0.98f)
val shortcutInfoCache = HashMap<ChooserTarget, ShortcutInfo>()
- var chooserTargets = testSubject.convertToChooserTarget(
- shortcuts,
- shortcuts,
- null,
- null,
- shortcutInfoCache,
- )
+ var chooserTargets =
+ testSubject.convertToChooserTarget(
+ shortcuts,
+ shortcuts,
+ null,
+ null,
+ shortcutInfoCache,
+ )
assertCorrectShortcutToChooserTargetConversion(
- shortcuts, chooserTargets,
- expectedOrderAllShortcuts, expectedScoreAllShortcuts
+ shortcuts,
+ chooserTargets,
+ expectedOrderAllShortcuts,
+ expectedScoreAllShortcuts
)
assertShortcutInfoCache(chooserTargets, shortcutInfoCache)
@@ -124,17 +129,20 @@ class ShortcutToChooserTargetConverterTest {
val expectedScoreSubset = floatArrayOf(1.0f, 0.99f, 0.98f)
shortcutInfoCache.clear()
- chooserTargets = testSubject.convertToChooserTarget(
- subset,
- shortcuts,
- null,
- null,
- shortcutInfoCache,
- )
+ chooserTargets =
+ testSubject.convertToChooserTarget(
+ subset,
+ shortcuts,
+ null,
+ null,
+ shortcutInfoCache,
+ )
assertCorrectShortcutToChooserTargetConversion(
- shortcuts, chooserTargets,
- expectedOrderSubset, expectedScoreSubset
+ shortcuts,
+ chooserTargets,
+ expectedOrderSubset,
+ expectedScoreSubset
)
assertShortcutInfoCache(chooserTargets, shortcutInfoCache)
}
@@ -158,7 +166,8 @@ class ShortcutToChooserTargetConverterTest {
}
private fun assertAppTargetCache(
- chooserTargets: List<ChooserTarget>, cache: Map<ChooserTarget, AppTarget>
+ chooserTargets: List<ChooserTarget>,
+ cache: Map<ChooserTarget, AppTarget>
) {
for (ct in chooserTargets) {
val target = cache[ct]
@@ -167,7 +176,8 @@ class ShortcutToChooserTargetConverterTest {
}
private fun assertShortcutInfoCache(
- chooserTargets: List<ChooserTarget>, cache: Map<ChooserTarget, ShortcutInfo>
+ chooserTargets: List<ChooserTarget>,
+ cache: Map<ChooserTarget, ShortcutInfo>
) {
for (ct in chooserTargets) {
val si = cache[ct]