Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ee238365 authored by Dave Mankoff's avatar Dave Mankoff Committed by Android (Google) Code Review
Browse files

Merge "Replace field injection with constructor injection." into main

parents b8cea837 65d5aa7e
Loading
Loading
Loading
Loading
+49 −19
Original line number Diff line number Diff line
@@ -65,13 +65,22 @@ import com.android.systemui.shared.settings.data.repository.SystemSettingsReposi
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 @@ constructor(
    @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 @@ constructor(
    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)
+29 −2
Original line number Diff line number Diff line
@@ -14,10 +14,17 @@ import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewMode
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 @@ open class TestCustomizationInjector
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 @@ constructor(
    }

    override fun getWallpaperCategoryWrapper(): WallpaperCategoryWrapper {
        return super.fakeWallpaperCategoryWrapper
        return fakeWallpaperCategoryWrapper
    }
}
+27 −11
Original line number Diff line number Diff line
@@ -33,6 +33,11 @@ import com.android.systemui.shared.customization.data.content.FakeCustomizationP
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.TestCurrentWallpaperInfoFactory
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.After
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 @@ class KeyguardQuickAffordancePickerViewModelTest {

    @Before
    fun setUp() {
        InjectorProvider.setInjector(TestInjector(logger))
        context = ApplicationProvider.getApplicationContext()
        val testDispatcher = StandardTestDispatcher()
        testScope = TestScope(testDispatcher)
@@ -100,7 +107,20 @@ class KeyguardQuickAffordancePickerViewModelTest {
                        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(
@@ -348,12 +368,12 @@ class KeyguardQuickAffordancePickerViewModelTest {
                        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 @@ class KeyguardQuickAffordancePickerViewModelTest {
                        icon1 =
                            Icon.Loaded(
                                FakeCustomizationProviderClient.ICON_1,
                                Text.Loaded("Left shortcut")
                                Text.Loaded("Left shortcut"),
                            ),
                        icon2 = null,
                    )
@@ -404,7 +424,7 @@ class KeyguardQuickAffordancePickerViewModelTest {
                        icon2 =
                            Icon.Loaded(
                                FakeCustomizationProviderClient.ICON_3,
                                Text.Loaded("Right shortcut")
                                Text.Loaded("Right shortcut"),
                            ),
                    )
                )
@@ -465,11 +485,7 @@ class KeyguardQuickAffordancePickerViewModelTest {
        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" +