Add dispatcher module for Hilt injection (2/3)
Make Injector injectable so the existing dependencies can be access by the new classes via injecting Injector, and the existing classes can use the new class via Injector by injecting new classes into Injector.
Inject dispatchers for both world.
Bug: 288128417
Test: launch picker
Change-Id: I05d7db38891fd5320d3efc857499e3774d8da7db
diff --git a/src/com/android/customization/module/ThemePickerInjector.kt b/src/com/android/customization/module/ThemePickerInjector.kt
index 423e19a..25a69b5 100644
--- a/src/com/android/customization/module/ThemePickerInjector.kt
+++ b/src/com/android/customization/module/ThemePickerInjector.kt
@@ -68,6 +68,8 @@
import com.android.systemui.shared.clocks.ClockRegistry
import com.android.systemui.shared.customization.data.content.CustomizationProviderClient
import com.android.systemui.shared.customization.data.content.CustomizationProviderClientImpl
+import com.android.wallpaper.dispatchers.BackgroundDispatcher
+import com.android.wallpaper.dispatchers.MainDispatcher
import com.android.wallpaper.model.LiveWallpaperInfo
import com.android.wallpaper.model.WallpaperColorsViewModel
import com.android.wallpaper.model.WallpaperInfo
@@ -85,9 +87,19 @@
import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
import com.android.wallpaper.util.ScreenSizeCalculator
-import kotlinx.coroutines.Dispatchers
+import javax.inject.Inject
+import javax.inject.Singleton
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.CoroutineScope
-open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInjector {
+@Singleton
+open class ThemePickerInjector
+@Inject
+internal constructor(
+ @MainDispatcher private val mainScope: CoroutineScope,
+ @MainDispatcher private val mainDispatcher: CoroutineDispatcher,
+ @BackgroundDispatcher private val bgDispatcher: CoroutineDispatcher,
+) : WallpaperPicker2Injector(mainScope, bgDispatcher), CustomizationInjector {
private var customizationSections: CustomizationSections? = null
private var userEventLogger: UserEventLogger? = null
private var prefs: WallpaperPreferences? = null
@@ -250,7 +262,7 @@
wallpaperManager = WallpaperManager.getInstance(appContext)
),
wallpaperPreferences = getPreferences(context = appContext),
- backgroundDispatcher = Dispatchers.IO,
+ backgroundDispatcher = bgDispatcher,
),
shouldHandleReload = {
TextUtils.equals(
@@ -290,7 +302,7 @@
val client = getKeyguardQuickAffordancePickerProviderClient(context)
val appContext = context.applicationContext
return KeyguardQuickAffordancePickerInteractor(
- KeyguardQuickAffordancePickerRepository(client, Dispatchers.IO),
+ KeyguardQuickAffordancePickerRepository(client, bgDispatcher),
client
) {
getKeyguardQuickAffordanceSnapshotRestorer(appContext)
@@ -301,7 +313,7 @@
context: Context
): CustomizationProviderClient {
return customizationProviderClient
- ?: CustomizationProviderClientImpl(context.applicationContext, Dispatchers.IO).also {
+ ?: CustomizationProviderClientImpl(context.applicationContext, bgDispatcher).also {
customizationProviderClient = it
}
}
@@ -336,7 +348,7 @@
repository =
NotificationsRepository(
scope = getApplicationCoroutineScope(),
- backgroundDispatcher = Dispatchers.IO,
+ backgroundDispatcher = bgDispatcher,
secureSettingsRepository = getSecureSettingsRepository(context),
),
snapshotRestorer = { getNotificationsSnapshotRestorer(appContext) },
@@ -360,8 +372,8 @@
?: ClockRegistryProvider(
context = context.applicationContext,
coroutineScope = getApplicationCoroutineScope(),
- mainDispatcher = Dispatchers.Main,
- backgroundDispatcher = Dispatchers.IO,
+ mainDispatcher = mainDispatcher,
+ backgroundDispatcher = bgDispatcher,
)
.also { clockRegistryProvider = it })
.get()
@@ -378,7 +390,7 @@
secureSettingsRepository = getSecureSettingsRepository(appContext),
registry = getClockRegistry(appContext),
scope = getApplicationCoroutineScope(),
- mainDispatcher = Dispatchers.Main,
+ mainDispatcher = mainDispatcher,
),
snapshotRestorer = { getClockPickerSnapshotRestorer(appContext) },
)
@@ -400,7 +412,7 @@
interactor: ClockPickerInteractor,
): ClockCarouselViewModel.Factory {
return clockCarouselViewModelFactory
- ?: ClockCarouselViewModel.Factory(interactor, Dispatchers.IO).also {
+ ?: ClockCarouselViewModel.Factory(interactor, bgDispatcher).also {
clockCarouselViewModelFactory = it
}
}
@@ -495,7 +507,7 @@
?: DarkModeSnapshotRestorer(
context = appContext,
manager = appContext.getSystemService(Context.UI_MODE_SERVICE) as UiModeManager,
- backgroundDispatcher = Dispatchers.IO,
+ backgroundDispatcher = bgDispatcher,
)
.also { darkModeSnapshotRestorer = it }
}
@@ -570,7 +582,7 @@
GridRepositoryImpl(
applicationScope = getApplicationCoroutineScope(),
manager = GridOptionsManager.getInstance(context),
- backgroundDispatcher = Dispatchers.IO,
+ backgroundDispatcher = bgDispatcher,
),
snapshotRestorer = { getGridSnapshotRestorer(appContext) },
)
diff --git a/src_override/com/android/customization/picker/CustomizationPickerApplication.java b/src_override/com/android/customization/picker/CustomizationPickerApplication.java
index 2e549ff..08303d9 100644
--- a/src_override/com/android/customization/picker/CustomizationPickerApplication.java
+++ b/src_override/com/android/customization/picker/CustomizationPickerApplication.java
@@ -22,16 +22,21 @@
import dagger.hilt.android.HiltAndroidApp;
+import javax.inject.Inject;
+
/**
* Application subclass that initializes the injector.
*/
@HiltAndroidApp(Application.class)
public class CustomizationPickerApplication extends Hilt_CustomizationPickerApplication {
+
+ @Inject ThemePickerInjector mInjector;
+
@Override
public void onCreate() {
super.onCreate();
// Initialize the injector.
- InjectorProvider.setInjector(new ThemePickerInjector());
+ InjectorProvider.setInjector(mInjector);
}
}