Merge "Replace field injection with constructor injection." into main
diff --git a/src/com/android/customization/module/ThemePickerInjector.kt b/src/com/android/customization/module/ThemePickerInjector.kt
index b634df0..a022d00 100644
--- a/src/com/android/customization/module/ThemePickerInjector.kt
+++ b/src/com/android/customization/module/ThemePickerInjector.kt
@@ -65,13 +65,22 @@
import com.android.wallpaper.config.BaseFlags
import com.android.wallpaper.module.CustomizationSections
import com.android.wallpaper.module.FragmentFactory
+import com.android.wallpaper.module.NetworkStatusNotifier
+import com.android.wallpaper.module.PartnerProvider
import com.android.wallpaper.module.WallpaperPicker2Injector
+import com.android.wallpaper.module.WallpaperPreferences
+import com.android.wallpaper.module.logging.UserEventLogger
+import com.android.wallpaper.network.Requester
import com.android.wallpaper.picker.CustomizationPickerActivity
+import com.android.wallpaper.picker.category.wrapper.WallpaperCategoryWrapper
+import com.android.wallpaper.picker.customization.data.content.WallpaperClient
import com.android.wallpaper.picker.customization.data.repository.WallpaperColorsRepository
import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
import com.android.wallpaper.picker.di.modules.BackgroundDispatcher
import com.android.wallpaper.picker.di.modules.MainDispatcher
import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer
+import com.android.wallpaper.system.UiModeManagerWrapper
+import com.android.wallpaper.util.DisplayUtils
import dagger.Lazy
import javax.inject.Inject
import javax.inject.Singleton
@@ -85,7 +94,46 @@
@MainDispatcher private val mainScope: CoroutineScope,
@BackgroundDispatcher private val bgScope: CoroutineScope,
@BackgroundDispatcher private val bgDispatcher: CoroutineDispatcher,
-) : WallpaperPicker2Injector(mainScope), CustomizationInjector {
+ private val colorContrastSectionViewModelFactory: Lazy<ColorContrastSectionViewModel.Factory>,
+ private val keyguardQuickAffordancePickerInteractor:
+ Lazy<KeyguardQuickAffordancePickerInteractor>,
+ private val keyguardQuickAffordanceSnapshotRestorer:
+ Lazy<KeyguardQuickAffordanceSnapshotRestorer>,
+ private val themesUserEventLogger: Lazy<ThemesUserEventLogger>,
+ private val colorPickerInteractor: Lazy<ColorPickerInteractor>,
+ private val colorPickerSnapshotRestorer: Lazy<ColorPickerSnapshotRestorer>,
+ private val clockRegistry: Lazy<ClockRegistry>,
+ private val secureSettingsRepository: Lazy<SecureSettingsRepository>,
+ private val systemSettingsRepository: Lazy<SystemSettingsRepository>,
+ private val clockPickerInteractor: Lazy<ClockPickerInteractor>,
+ private val clockPickerSnapshotRestorer: Lazy<ClockPickerSnapshotRestorer>,
+ displayUtils: Lazy<DisplayUtils>,
+ requester: Lazy<Requester>,
+ networkStatusNotifier: Lazy<NetworkStatusNotifier>,
+ partnerProvider: Lazy<PartnerProvider>,
+ val uiModeManager: Lazy<UiModeManagerWrapper>,
+ userEventLogger: Lazy<UserEventLogger>,
+ injectedWallpaperClient: Lazy<WallpaperClient>,
+ private val injectedWallpaperInteractor: Lazy<WallpaperInteractor>,
+ prefs: Lazy<WallpaperPreferences>,
+ wallpaperColorsRepository: Lazy<WallpaperColorsRepository>,
+ defaultWallpaperCategoryWrapper: Lazy<WallpaperCategoryWrapper>,
+) :
+ WallpaperPicker2Injector(
+ mainScope,
+ displayUtils,
+ requester,
+ networkStatusNotifier,
+ partnerProvider,
+ uiModeManager,
+ userEventLogger,
+ injectedWallpaperClient,
+ injectedWallpaperInteractor,
+ prefs,
+ wallpaperColorsRepository,
+ defaultWallpaperCategoryWrapper,
+ ),
+ CustomizationInjector {
private var customizationSections: CustomizationSections? = null
private var keyguardQuickAffordancePickerViewModelFactory:
KeyguardQuickAffordancePickerViewModel.Factory? =
@@ -106,24 +154,6 @@
private var gridSnapshotRestorer: GridSnapshotRestorer? = null
private var gridScreenViewModelFactory: GridScreenViewModel.Factory? = null
- // Injected objects, sorted by type
- @Inject
- lateinit var colorContrastSectionViewModelFactory: Lazy<ColorContrastSectionViewModel.Factory>
- @Inject
- lateinit var keyguardQuickAffordancePickerInteractor:
- Lazy<KeyguardQuickAffordancePickerInteractor>
- @Inject
- lateinit var keyguardQuickAffordanceSnapshotRestorer:
- Lazy<KeyguardQuickAffordanceSnapshotRestorer>
- @Inject lateinit var themesUserEventLogger: Lazy<ThemesUserEventLogger>
- @Inject lateinit var colorPickerInteractor: Lazy<ColorPickerInteractor>
- @Inject lateinit var colorPickerSnapshotRestorer: Lazy<ColorPickerSnapshotRestorer>
- @Inject lateinit var clockRegistry: Lazy<ClockRegistry>
- @Inject lateinit var secureSettingsRepository: Lazy<SecureSettingsRepository>
- @Inject lateinit var systemSettingsRepository: Lazy<SystemSettingsRepository>
- @Inject lateinit var clockPickerInteractor: Lazy<ClockPickerInteractor>
- @Inject lateinit var clockPickerSnapshotRestorer: Lazy<ClockPickerSnapshotRestorer>
-
override fun getCustomizationSections(activity: ComponentActivity): CustomizationSections {
val appContext = activity.applicationContext
val clockViewFactory = getClockViewFactory(activity)
diff --git a/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt b/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt
index 4e97599..a550119 100644
--- a/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt
+++ b/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt
@@ -14,10 +14,17 @@
import com.android.customization.picker.clock.ui.viewmodel.ClockSettingsViewModel
import com.android.customization.picker.color.ui.viewmodel.ColorPickerViewModel
import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor
+import com.android.wallpaper.module.NetworkStatusNotifier
+import com.android.wallpaper.module.PartnerProvider
+import com.android.wallpaper.module.WallpaperPreferences
import com.android.wallpaper.module.logging.UserEventLogger
+import com.android.wallpaper.network.Requester
import com.android.wallpaper.picker.category.wrapper.WallpaperCategoryWrapper
import com.android.wallpaper.picker.customization.data.repository.WallpaperColorsRepository
+import com.android.wallpaper.picker.customization.domain.interactor.WallpaperInteractor
+import com.android.wallpaper.testing.FakeWallpaperClient
import com.android.wallpaper.testing.TestInjector
+import com.android.wallpaper.util.DisplayUtils
import javax.inject.Inject
import javax.inject.Singleton
@@ -27,7 +34,27 @@
constructor(
private val customPrefs: TestDefaultCustomizationPreferences,
private val themesUserEventLogger: ThemesUserEventLogger,
-) : TestInjector(themesUserEventLogger), CustomizationInjector {
+ displayUtils: DisplayUtils,
+ requester: Requester,
+ networkStatusNotifier: NetworkStatusNotifier,
+ partnerProvider: PartnerProvider,
+ wallpaperClient: FakeWallpaperClient,
+ injectedWallpaperInteractor: WallpaperInteractor,
+ prefs: WallpaperPreferences,
+ private val fakeWallpaperCategoryWrapper: WallpaperCategoryWrapper,
+) :
+ TestInjector(
+ themesUserEventLogger,
+ displayUtils,
+ requester,
+ networkStatusNotifier,
+ partnerProvider,
+ wallpaperClient,
+ injectedWallpaperInteractor,
+ prefs,
+ fakeWallpaperCategoryWrapper,
+ ),
+ CustomizationInjector {
/////////////////
// CustomizationInjector implementations
/////////////////
@@ -82,6 +109,6 @@
}
override fun getWallpaperCategoryWrapper(): WallpaperCategoryWrapper {
- return super.fakeWallpaperCategoryWrapper
+ return fakeWallpaperCategoryWrapper
}
}
diff --git a/tests/robotests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt b/tests/robotests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
index 870d9f5..63c27ed 100644
--- a/tests/robotests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
+++ b/tests/robotests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt
@@ -33,6 +33,11 @@
import com.android.systemui.shared.keyguard.shared.model.KeyguardQuickAffordanceSlots
import com.android.themepicker.R
import com.android.wallpaper.module.InjectorProvider
+import com.android.wallpaper.module.NetworkStatusNotifier
+import com.android.wallpaper.module.PartnerProvider
+import com.android.wallpaper.module.WallpaperPreferences
+import com.android.wallpaper.network.Requester
+import com.android.wallpaper.picker.category.wrapper.WallpaperCategoryWrapper
import com.android.wallpaper.picker.common.icon.ui.viewmodel.Icon
import com.android.wallpaper.picker.common.text.ui.viewmodel.Text
import com.android.wallpaper.picker.customization.data.repository.WallpaperRepository
@@ -43,6 +48,8 @@
import com.android.wallpaper.testing.TestInjector
import com.android.wallpaper.testing.TestWallpaperPreferences
import com.android.wallpaper.testing.collectLastValue
+import com.android.wallpaper.util.DisplayUtils
+import com.android.wallpaper.util.DisplaysProvider
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertWithMessage
import kotlinx.coroutines.Dispatchers
@@ -56,6 +63,7 @@
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.Mockito.mock
import org.robolectric.RobolectricTestRunner
@OptIn(ExperimentalCoroutinesApi::class)
@@ -75,7 +83,6 @@
@Before
fun setUp() {
- InjectorProvider.setInjector(TestInjector(logger))
context = ApplicationProvider.getApplicationContext()
val testDispatcher = StandardTestDispatcher()
testScope = TestScope(testDispatcher)
@@ -100,8 +107,21 @@
client = FakeWallpaperClient(),
wallpaperPreferences = TestWallpaperPreferences(),
backgroundDispatcher = testDispatcher,
- ),
+ )
)
+ InjectorProvider.setInjector(
+ TestInjector(
+ logger,
+ DisplayUtils(context, mock(DisplaysProvider::class.java)),
+ mock(Requester::class.java),
+ mock(NetworkStatusNotifier::class.java),
+ mock(PartnerProvider::class.java),
+ FakeWallpaperClient(),
+ wallpaperInteractor,
+ mock(WallpaperPreferences::class.java),
+ mock(WallpaperCategoryWrapper::class.java),
+ )
+ )
underTest =
KeyguardQuickAffordancePickerViewModel.Factory(
context = context,
@@ -348,12 +368,12 @@
icon1 =
Icon.Loaded(
FakeCustomizationProviderClient.ICON_1,
- Text.Loaded("Left shortcut")
+ Text.Loaded("Left shortcut"),
),
icon2 =
Icon.Loaded(
FakeCustomizationProviderClient.ICON_3,
- Text.Loaded("Right shortcut")
+ Text.Loaded("Right shortcut"),
),
)
)
@@ -376,7 +396,7 @@
icon1 =
Icon.Loaded(
FakeCustomizationProviderClient.ICON_1,
- Text.Loaded("Left shortcut")
+ Text.Loaded("Left shortcut"),
),
icon2 = null,
)
@@ -404,7 +424,7 @@
icon2 =
Icon.Loaded(
FakeCustomizationProviderClient.ICON_3,
- Text.Loaded("Right shortcut")
+ Text.Loaded("Right shortcut"),
),
)
)
@@ -465,11 +485,7 @@
assertThat(affordances).isNotNull()
affordances?.forEach { affordance ->
val nameMatchesSelectedName =
- Text.evaluationEquals(
- context,
- affordance.text,
- Text.Loaded(selectedAffordanceText),
- )
+ Text.evaluationEquals(context, affordance.text, Text.Loaded(selectedAffordanceText))
val isSelected: Boolean? = collectLastValue(affordance.isSelected).invoke()
assertWithMessage(
"Expected affordance with name \"${affordance.text}\" to have" +