summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sunny Goyal <sunnygoyal@google.com> 2024-09-18 19:55:15 -0700
committer Sunny Goyal <sunnygoyal@google.com> 2024-09-18 19:57:45 -0700
commit6952e28dff44a02244f104aae45f9d0e6fa9166f (patch)
treee1fd5c10ad3943795789ec63982e1ee4ac04f094
parent619ddfbde2504696106c9c6704a6d667ea724b5d (diff)
Replace atomicfu with AtomicReference
atomicfu internally replaces it with AtomicReference during compile This avoids an additional preprocessing step during compile, and also makes the gradle setup easier Bug: 368177559 Test: Presubmit Flag: EXEMPT refactor Change-Id: I6840e0687b78b38df7ac5d187bf147e0c5a33e24
-rw-r--r--java/src/com/android/intentresolver/shortcuts/ShortcutLoader.kt38
-rw-r--r--tests/unit/src/com/android/intentresolver/contentpreview/PreviewImageLoaderTest.kt45
2 files changed, 41 insertions, 42 deletions
diff --git a/java/src/com/android/intentresolver/shortcuts/ShortcutLoader.kt b/java/src/com/android/intentresolver/shortcuts/ShortcutLoader.kt
index 1fedee30..828d8561 100644
--- a/java/src/com/android/intentresolver/shortcuts/ShortcutLoader.kt
+++ b/java/src/com/android/intentresolver/shortcuts/ShortcutLoader.kt
@@ -41,8 +41,8 @@ import com.android.intentresolver.chooser.DisplayResolveInfo
import com.android.intentresolver.measurements.Tracer
import com.android.intentresolver.measurements.runTracing
import java.util.concurrent.Executor
+import java.util.concurrent.atomic.AtomicReference
import java.util.function.Consumer
-import kotlinx.atomicfu.atomic
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.CoroutineStart
@@ -78,20 +78,20 @@ constructor(
private val isPersonalProfile: Boolean,
private val targetIntentFilter: IntentFilter?,
private val dispatcher: CoroutineDispatcher,
- private val callback: Consumer<Result>
+ private val callback: Consumer<Result>,
) {
private val scope =
if (fixShortcutLoaderJobLeak()) parentScope.createChildScope() else parentScope
private val shortcutToChooserTargetConverter = ShortcutToChooserTargetConverter()
private val userManager = context.getSystemService(Context.USER_SERVICE) as UserManager
- private val appPredictorWatchdog = atomic<Job?>(null)
+ private val appPredictorWatchdog = AtomicReference<Job?>(null)
private val appPredictorCallback =
ScopedAppTargetListCallback(scope) { onAppPredictorCallback(it) }.toAppPredictorCallback()
private val appTargetSource =
MutableSharedFlow<Array<DisplayResolveInfo>?>(
replay = 1,
- onBufferOverflow = BufferOverflow.DROP_OLDEST
+ onBufferOverflow = BufferOverflow.DROP_OLDEST,
)
private val shortcutSource =
MutableSharedFlow<ShortcutData?>(replay = 1, onBufferOverflow = BufferOverflow.DROP_OLDEST)
@@ -108,7 +108,7 @@ constructor(
appPredictor: AppPredictor?,
userHandle: UserHandle,
targetIntentFilter: IntentFilter?,
- callback: Consumer<Result>
+ callback: Consumer<Result>,
) : this(
context,
scope,
@@ -117,7 +117,7 @@ constructor(
userHandle == UserHandle.of(ActivityManager.getCurrentUser()),
targetIntentFilter,
Dispatchers.IO,
- callback
+ callback,
)
init {
@@ -134,7 +134,7 @@ constructor(
appTargets,
shortcutData.shortcuts,
shortcutData.isFromAppPredictor,
- shortcutData.appPredictorTargets
+ shortcutData.appPredictorTargets,
)
}
}
@@ -230,7 +230,7 @@ constructor(
sendShareShortcutInfoList(
emptyList(),
isFromAppPredictor = false,
- appPredictorTargets = null
+ appPredictorTargets = null,
)
return
}
@@ -256,7 +256,7 @@ constructor(
@WorkerThread
private fun onAppPredictorCallback(appPredictorTargets: List<AppTarget>) {
- appPredictorWatchdog.value?.cancel()
+ appPredictorWatchdog.get()?.cancel()
endAppPredictorQueryTrace(userHandle)
Log.d(TAG, "[$id] receive app targets from AppPredictor")
if (appPredictorTargets.isEmpty() && shouldQueryDirectShareTargets()) {
@@ -288,7 +288,7 @@ constructor(
private fun sendShareShortcutInfoList(
shortcuts: List<ShareShortcutInfo>,
isFromAppPredictor: Boolean,
- appPredictorTargets: List<AppTarget>?
+ appPredictorTargets: List<AppTarget>?,
) {
shortcutSource.tryEmit(ShortcutData(shortcuts, isFromAppPredictor, appPredictorTargets))
}
@@ -297,7 +297,7 @@ constructor(
appTargets: Array<DisplayResolveInfo>,
shortcuts: List<ShareShortcutInfo>,
isFromAppPredictor: Boolean,
- appPredictorTargets: List<AppTarget>?
+ appPredictorTargets: List<AppTarget>?,
): Result {
if (appPredictorTargets != null && appPredictorTargets.size != shortcuts.size) {
throw RuntimeException(
@@ -324,7 +324,7 @@ constructor(
shortcuts,
appPredictorTargets,
directShareAppTargetCache,
- directShareShortcutInfoCache
+ directShareShortcutInfoCache,
)
val resultRecord = ShortcutResultInfo(displayResolveInfo, chooserTargets)
resultRecords.add(resultRecord)
@@ -334,7 +334,7 @@ constructor(
appTargets,
resultRecords.toTypedArray(),
directShareAppTargetCache,
- directShareShortcutInfoCache
+ directShareShortcutInfoCache,
)
}
@@ -354,7 +354,7 @@ constructor(
private class ShortcutData(
val shortcuts: List<ShareShortcutInfo>,
val isFromAppPredictor: Boolean,
- val appPredictorTargets: List<AppTarget>?
+ val appPredictorTargets: List<AppTarget>?,
)
/** Resolved shortcuts with corresponding app targets. */
@@ -368,7 +368,7 @@ constructor(
/** Shortcuts grouped by app target. */
val shortcutsByApp: Array<ShortcutResultInfo>,
val directShareAppTargetCache: Map<ChooserTarget, AppTarget>,
- val directShareShortcutInfoCache: Map<ChooserTarget, ShortcutInfo>
+ val directShareShortcutInfoCache: Map<ChooserTarget, ShortcutInfo>,
)
private fun endAppPredictorQueryTrace(userHandle: UserHandle) {
@@ -379,12 +379,12 @@ constructor(
/** Shortcuts grouped by app. */
class ShortcutResultInfo(
val appTarget: DisplayResolveInfo,
- val shortcuts: List<ChooserTarget?>
+ val shortcuts: List<ChooserTarget?>,
)
private class ShortcutsAppTargetsPair(
val shortcuts: List<ShareShortcutInfo>,
- val appTargets: List<AppTarget>?
+ val appTargets: List<AppTarget>?,
)
/** A wrapper around AppPredictor to facilitate unit-testing. */
@@ -393,7 +393,7 @@ constructor(
/** [AppPredictor.registerPredictionUpdates] */
open fun registerPredictionUpdates(
callbackExecutor: Executor,
- callback: AppPredictor.Callback
+ callback: AppPredictor.Callback,
) = mAppPredictor.registerPredictionUpdates(callbackExecutor, callback)
/** [AppPredictor.unregisterPredictionUpdates] */
@@ -418,7 +418,7 @@ constructor(
packageName,
PackageManager.ApplicationInfoFlags.of(
PackageManager.GET_META_DATA.toLong()
- )
+ ),
)
appInfo.enabled && (appInfo.flags and ApplicationInfo.FLAG_SUSPENDED) == 0
}
diff --git a/tests/unit/src/com/android/intentresolver/contentpreview/PreviewImageLoaderTest.kt b/tests/unit/src/com/android/intentresolver/contentpreview/PreviewImageLoaderTest.kt
index 8293264c..8c810058 100644
--- a/tests/unit/src/com/android/intentresolver/contentpreview/PreviewImageLoaderTest.kt
+++ b/tests/unit/src/com/android/intentresolver/contentpreview/PreviewImageLoaderTest.kt
@@ -21,7 +21,6 @@ import android.net.Uri
import android.util.Size
import com.google.common.truth.Truth.assertThat
import java.util.concurrent.atomic.AtomicInteger
-import kotlinx.atomicfu.atomic
import kotlinx.coroutines.CancellationException
import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.CoroutineScope
@@ -55,7 +54,7 @@ class PreviewImageLoaderTest {
1,
100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
val b1 = testSubject.invoke(uri, Size(200, 100))
@@ -78,7 +77,7 @@ class PreviewImageLoaderTest {
1,
100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
testSubject.invoke(uri, Size(200, 100), caching = false)
@@ -105,7 +104,7 @@ class PreviewImageLoaderTest {
1,
100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
val b1Deferred = async { testSubject.invoke(uri, Size(200, 100), caching = false) }
@@ -148,7 +147,7 @@ class PreviewImageLoaderTest {
cacheSize = 1,
defaultPreviewSize = 100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
val jobOne = launch { testSubject.invoke(uriOne, Size(200, 100)) }
@@ -189,7 +188,7 @@ class PreviewImageLoaderTest {
cacheSize = 1,
defaultPreviewSize = 100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
val job = launch { testSubject.invoke(uri, Size(200, 100), caching = false) }
@@ -214,7 +213,7 @@ class PreviewImageLoaderTest {
1,
100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
val b1 = testSubject.invoke(uri, Size(100, 100))
@@ -240,7 +239,7 @@ class PreviewImageLoaderTest {
1,
100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
val bitmap = testSubject.invoke(uri, Size(100, 100))
@@ -251,7 +250,7 @@ class PreviewImageLoaderTest {
fun test_requestHigherResImage_cancelsLowerResLoading() =
scope.runTest {
val uri = createUri(0)
- val cancelledRequestCount = atomic(0)
+ val cancelledRequestCount = AtomicInteger(0)
val imageLoadingStarted = CompletableDeferred<Unit>()
val bitmapDeferred = CompletableDeferred<Bitmap>()
val thumbnailLoader =
@@ -272,7 +271,7 @@ class PreviewImageLoaderTest {
1,
100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
val lowResSize = 100
@@ -283,7 +282,7 @@ class PreviewImageLoaderTest {
imageLoadingStarted.await()
val result = async { testSubject.invoke(uri, Size(highResSize, highResSize)) }
runCurrent()
- assertThat(cancelledRequestCount.value).isEqualTo(1)
+ assertThat(cancelledRequestCount.get()).isEqualTo(1)
bitmapDeferred.complete(createBitmap(highResSize, highResSize))
val bitmap = result.await()
@@ -308,7 +307,7 @@ class PreviewImageLoaderTest {
1,
100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
val b1 = testSubject.invoke(uri, Size(highResSize, highResSize))
@@ -333,7 +332,7 @@ class PreviewImageLoaderTest {
cacheSize = 1,
defaultPreviewSize,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
val b1 = testSubject(uri, Size(0, 0))
@@ -349,7 +348,7 @@ class PreviewImageLoaderTest {
scope.runTest {
val previewSize = Size(100, 100)
val uris = List(2) { createUri(it) }
- val loadingCount = atomic(0)
+ val loadingCount = AtomicInteger(0)
val thumbnailLoader =
FakeThumbnailLoader().apply {
for (uri in uris) {
@@ -365,19 +364,19 @@ class PreviewImageLoaderTest {
1,
100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
testSubject.prePopulate(uris.map { it to previewSize })
runCurrent()
- assertThat(loadingCount.value).isEqualTo(1)
+ assertThat(loadingCount.get()).isEqualTo(1)
assertThat(thumbnailLoader.invokeCalls).containsExactly(uris[0])
testSubject(uris[0], previewSize)
runCurrent()
- assertThat(loadingCount.value).isEqualTo(1)
+ assertThat(loadingCount.get()).isEqualTo(1)
}
@Test
@@ -402,7 +401,7 @@ class PreviewImageLoaderTest {
1,
100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
testSubject(uriOne, previewSize)
@@ -419,7 +418,7 @@ class PreviewImageLoaderTest {
scope.runTest {
val previewSize = Size(100, 100)
val uri = createUri(1)
- val loadingCount = atomic(0)
+ val loadingCount = AtomicInteger(0)
val thumbnailLoader =
FakeThumbnailLoader().apply {
fakeInvoke[uri] = {
@@ -433,13 +432,13 @@ class PreviewImageLoaderTest {
1,
100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
testSubject(uri, previewSize)
testSubject(uri, previewSize)
- assertThat(loadingCount.value).isEqualTo(2)
+ assertThat(loadingCount.get()).isEqualTo(2)
}
@Test(expected = CancellationException::class)
@@ -454,7 +453,7 @@ class PreviewImageLoaderTest {
1,
100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
imageLoaderScope.cancel()
testSubject(uri, Size(200, 200))
@@ -480,7 +479,7 @@ class PreviewImageLoaderTest {
1,
100,
thumbnailLoader,
- StandardTestDispatcher(scope.testScheduler)
+ StandardTestDispatcher(scope.testScheduler),
)
launch {