summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
author Andrey Yepin <ayepin@google.com> 2024-08-23 17:06:51 -0700
committer Andrey Yepin <ayepin@google.com> 2024-09-17 12:32:53 -0700
commita2cecbe15fd16bb6567f29e7944888633e5b4d6b (patch)
tree55edd006b7053f6200fa4281d5e9e180407d1673 /tests
parent619ddfbde2504696106c9c6704a6d667ea724b5d (diff)
Do not store the initial intent's extra in the saved state.
CreationExtras's DEFAULT_ARGS_KEY vlaue gets saved in SavedStateHandle for each view model the activity creates. Thus by storing the ActivityModel in there we effectively duplicated the initial intent's extra in the activity's saved state 4 times: DEFAULT_ARGS_KEY contains the extras (put there by ComponentActivity) plus ActivityModel per two view models we created. This change makes Chooser and Resolver activities provide default CreationExtras with empty DEFAULT_ARGS_KEY values and stores ActivityModel in the new repository class (instead of the SavedStateHandle instance). Fix: 331897641 Test: manual testing with injected logging the values being put in the activity's saved state Test: atest IntentResolver-tests-unit Test: atest Intentresolver-tests-activity Flag: EXEMPT bugfix Change-Id: Ice2e51971476b2bb963f04275d7b180c85126288
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/src/com/android/intentresolver/ext/CreationExtrasExtTest.kt15
-rw-r--r--tests/unit/src/com/android/intentresolver/ui/model/ActivityModelTest.kt7
-rw-r--r--tests/unit/src/com/android/intentresolver/ui/viewmodel/ChooserRequestTest.kt8
-rw-r--r--tests/unit/src/com/android/intentresolver/ui/viewmodel/ResolverRequestTest.kt9
4 files changed, 26 insertions, 13 deletions
diff --git a/tests/unit/src/com/android/intentresolver/ext/CreationExtrasExtTest.kt b/tests/unit/src/com/android/intentresolver/ext/CreationExtrasExtTest.kt
index c09047a1..dbaee3d0 100644
--- a/tests/unit/src/com/android/intentresolver/ext/CreationExtrasExtTest.kt
+++ b/tests/unit/src/com/android/intentresolver/ext/CreationExtrasExtTest.kt
@@ -51,4 +51,19 @@ class CreationExtrasExtTest {
assertThat(defaultArgs).parcelable<Point>("POINT1").marshallsEquallyTo(Point(1, 1))
assertThat(defaultArgs).parcelable<Point>("POINT2").marshallsEquallyTo(Point(2, 2))
}
+
+ @Test
+ fun replaceDefaultArgs_replacesExisting() {
+ val creationExtras: CreationExtras =
+ MutableCreationExtras().apply {
+ set(DEFAULT_ARGS_KEY, bundleOf("POINT1" to Point(1, 1)))
+ }
+
+ val updated = creationExtras.replaceDefaultArgs("POINT2" to Point(2, 2))
+
+ val defaultArgs = updated[DEFAULT_ARGS_KEY]
+ assertThat(defaultArgs).doesNotContainKey("POINT1")
+ assertThat(defaultArgs).containsKey("POINT2")
+ assertThat(defaultArgs).parcelable<Point>("POINT2").marshallsEquallyTo(Point(2, 2))
+ }
}
diff --git a/tests/unit/src/com/android/intentresolver/ui/model/ActivityModelTest.kt b/tests/unit/src/com/android/intentresolver/ui/model/ActivityModelTest.kt
index 737f02fe..5f86159c 100644
--- a/tests/unit/src/com/android/intentresolver/ui/model/ActivityModelTest.kt
+++ b/tests/unit/src/com/android/intentresolver/ui/model/ActivityModelTest.kt
@@ -21,6 +21,7 @@ import android.content.Intent.ACTION_CHOOSER
import android.content.Intent.EXTRA_TEXT
import android.net.Uri
import com.android.intentresolver.ext.toParcelAndBack
+import com.android.intentresolver.shared.model.ActivityModel
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
import org.junit.Test
@@ -54,7 +55,7 @@ class ActivityModelTest {
intent = Intent(),
launchedFromUid = 1000,
launchedFromPackage = "other.example.com",
- referrer = Uri.parse("android-app://app.example.com")
+ referrer = Uri.parse("android-app://app.example.com"),
)
assertThat(launch1.referrerPackage).isEqualTo("app.example.com")
@@ -67,7 +68,7 @@ class ActivityModelTest {
intent = Intent(),
launchedFromUid = 1000,
launchedFromPackage = "example.com",
- referrer = Uri.parse("http://some.other.value")
+ referrer = Uri.parse("http://some.other.value"),
)
assertThat(launch.referrerPackage).isNull()
@@ -80,7 +81,7 @@ class ActivityModelTest {
intent = Intent(),
launchedFromUid = 1000,
launchedFromPackage = "example.com",
- referrer = null
+ referrer = null,
)
assertThat(launch.referrerPackage).isNull()
diff --git a/tests/unit/src/com/android/intentresolver/ui/viewmodel/ChooserRequestTest.kt b/tests/unit/src/com/android/intentresolver/ui/viewmodel/ChooserRequestTest.kt
index 01904c7f..7bd4edee 100644
--- a/tests/unit/src/com/android/intentresolver/ui/viewmodel/ChooserRequestTest.kt
+++ b/tests/unit/src/com/android/intentresolver/ui/viewmodel/ChooserRequestTest.kt
@@ -34,7 +34,7 @@ import androidx.core.os.bundleOf
import com.android.intentresolver.ContentTypeHint
import com.android.intentresolver.data.model.ChooserRequest
import com.android.intentresolver.inject.FakeChooserServiceFlags
-import com.android.intentresolver.ui.model.ActivityModel
+import com.android.intentresolver.shared.model.ActivityModel
import com.android.intentresolver.validation.Importance
import com.android.intentresolver.validation.Invalid
import com.android.intentresolver.validation.NoValue
@@ -45,7 +45,7 @@ import org.junit.Test
private fun createActivityModel(
targetIntent: Intent?,
referrer: Uri? = null,
- additionalIntents: List<Intent>? = null
+ additionalIntents: List<Intent>? = null,
) =
ActivityModel(
Intent(ACTION_CHOOSER).apply {
@@ -54,7 +54,7 @@ private fun createActivityModel(
},
launchedFromUid = 10000,
launchedFromPackage = "com.android.example",
- referrer = referrer ?: "android-app://com.android.example".toUri()
+ referrer = referrer ?: "android-app://com.android.example".toUri(),
)
class ChooserRequestTest {
@@ -245,7 +245,7 @@ class ChooserRequestTest {
val model = createActivityModel(Intent(ACTION_SEND))
model.intent.putExtra(
Intent.EXTRA_CHOOSER_CONTENT_TYPE_HINT,
- Intent.CHOOSER_CONTENT_TYPE_ALBUM
+ Intent.CHOOSER_CONTENT_TYPE_ALBUM,
)
val result = readChooserRequest(model, fakeChooserServiceFlags)
diff --git a/tests/unit/src/com/android/intentresolver/ui/viewmodel/ResolverRequestTest.kt b/tests/unit/src/com/android/intentresolver/ui/viewmodel/ResolverRequestTest.kt
index bd80235d..70512021 100644
--- a/tests/unit/src/com/android/intentresolver/ui/viewmodel/ResolverRequestTest.kt
+++ b/tests/unit/src/com/android/intentresolver/ui/viewmodel/ResolverRequestTest.kt
@@ -22,8 +22,8 @@ import android.os.UserHandle
import androidx.core.net.toUri
import androidx.core.os.bundleOf
import com.android.intentresolver.ResolverActivity.PROFILE_WORK
+import com.android.intentresolver.shared.model.ActivityModel
import com.android.intentresolver.shared.model.Profile.Type.WORK
-import com.android.intentresolver.ui.model.ActivityModel
import com.android.intentresolver.ui.model.ResolverRequest
import com.android.intentresolver.validation.Invalid
import com.android.intentresolver.validation.UncaughtException
@@ -34,15 +34,12 @@ import org.junit.Test
private val targetUri = Uri.parse("content://example.com/123")
-private fun createActivityModel(
- targetIntent: Intent,
- referrer: Uri? = null,
-) =
+private fun createActivityModel(targetIntent: Intent, referrer: Uri? = null) =
ActivityModel(
intent = targetIntent,
launchedFromUid = 10000,
launchedFromPackage = "com.android.example",
- referrer = referrer ?: "android-app://com.android.example".toUri()
+ referrer = referrer ?: "android-app://com.android.example".toUri(),
)
class ResolverRequestTest {