summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
author Andrey Yepin <ayepin@google.com> 2024-08-07 11:22:19 -0700
committer Andrey Yepin <ayepin@google.com> 2024-08-13 14:35:47 -0700
commite70191e44f659a10e913ffb20335c959bf43a39c (patch)
treebfc6f44a431903de0cad9e4a4dbbd8d5f85b0f45 /tests
parent35f0119787662f8d742aac4eb17d0992f78a4254 (diff)
Use nested scope for ShortcutLoader
Use a nested coroutine scope for each ShortcutLoader instance and close it when the instance is stopped being used. Fix: 358135601 Test: atest IntentResolver-tests-unit Test: manual testing checking the logs Flag: com.android.intentresolver.fix_shortcut_loader_job_leak Change-Id: I84bbca75612f153193b03e24bfc0cb8842a8d3e2
Diffstat (limited to 'tests')
-rw-r--r--tests/unit/src/com/android/intentresolver/shortcuts/ShortcutLoaderTest.kt30
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutLoaderTest.kt b/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutLoaderTest.kt
index fbdc062b..9c84cdcf 100644
--- a/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutLoaderTest.kt
+++ b/tests/unit/src/com/android/intentresolver/shortcuts/ShortcutLoaderTest.kt
@@ -26,7 +26,10 @@ import android.content.pm.PackageManager.ApplicationInfoFlags
import android.content.pm.ShortcutManager
import android.os.UserHandle
import android.os.UserManager
+import android.platform.test.annotations.EnableFlags
+import android.platform.test.flag.junit.SetFlagsRule
import androidx.test.filters.SmallTest
+import com.android.intentresolver.Flags.FLAG_FIX_SHORTCUT_LOADER_JOB_LEAK
import com.android.intentresolver.chooser.DisplayResolveInfo
import com.android.intentresolver.createAppTarget
import com.android.intentresolver.createShareShortcutInfo
@@ -42,6 +45,7 @@ import org.junit.Assert.assertArrayEquals
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
+import org.junit.Rule
import org.junit.Test
import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
@@ -56,6 +60,8 @@ import org.mockito.kotlin.whenever
@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
class ShortcutLoaderTest {
+ @get:Rule val flagRule = SetFlagsRule()
+
private val appInfo =
ApplicationInfo().apply {
enabled = true
@@ -465,6 +471,30 @@ class ShortcutLoaderTest {
testAlwaysCallSystemForMainProfile(isQuietModeEnabled = true)
}
+ @Test
+ @EnableFlags(FLAG_FIX_SHORTCUT_LOADER_JOB_LEAK)
+ fun test_ShortcutLoaderDestroyed_appPredictorCallbackUnregisteredAndWatchdogCancelled() {
+ scope.runTest {
+ val testSubject =
+ ShortcutLoader(
+ context,
+ backgroundScope,
+ appPredictor,
+ UserHandle.of(0),
+ true,
+ intentFilter,
+ dispatcher,
+ callback
+ )
+
+ testSubject.updateAppTargets(appTargets)
+ testSubject.destroy()
+
+ verify(appPredictor, times(1)).registerPredictionUpdates(any(), any())
+ verify(appPredictor, times(1)).unregisterPredictionUpdates(any())
+ }
+ }
+
private fun testDisabledWorkProfileDoNotCallSystem(
isUserRunning: Boolean = true,
isUserUnlocked: Boolean = true,