Loading src/com/android/customization/module/ThemePickerInjector.kt +49 −19 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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? = Loading @@ -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) Loading tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt +29 −2 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 ///////////////// Loading Loading @@ -82,6 +109,6 @@ constructor( } override fun getWallpaperCategoryWrapper(): WallpaperCategoryWrapper { return super.fakeWallpaperCategoryWrapper return fakeWallpaperCategoryWrapper } } tests/robotests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt +27 −11 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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) Loading @@ -75,7 +83,6 @@ class KeyguardQuickAffordancePickerViewModelTest { @Before fun setUp() { InjectorProvider.setInjector(TestInjector(logger)) context = ApplicationProvider.getApplicationContext() val testDispatcher = StandardTestDispatcher() testScope = TestScope(testDispatcher) Loading @@ -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( Loading Loading @@ -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"), ), ) ) Loading @@ -376,7 +396,7 @@ class KeyguardQuickAffordancePickerViewModelTest { icon1 = Icon.Loaded( FakeCustomizationProviderClient.ICON_1, Text.Loaded("Left shortcut") Text.Loaded("Left shortcut"), ), icon2 = null, ) Loading Loading @@ -404,7 +424,7 @@ class KeyguardQuickAffordancePickerViewModelTest { icon2 = Icon.Loaded( FakeCustomizationProviderClient.ICON_3, Text.Loaded("Right shortcut") Text.Loaded("Right shortcut"), ), ) ) Loading Loading @@ -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" + Loading Loading
src/com/android/customization/module/ThemePickerInjector.kt +49 −19 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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? = Loading @@ -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) Loading
tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt +29 −2 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 ///////////////// Loading Loading @@ -82,6 +109,6 @@ constructor( } override fun getWallpaperCategoryWrapper(): WallpaperCategoryWrapper { return super.fakeWallpaperCategoryWrapper return fakeWallpaperCategoryWrapper } }
tests/robotests/src/com/android/customization/model/picker/quickaffordance/ui/viewmodel/KeyguardQuickAffordancePickerViewModelTest.kt +27 −11 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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) Loading @@ -75,7 +83,6 @@ class KeyguardQuickAffordancePickerViewModelTest { @Before fun setUp() { InjectorProvider.setInjector(TestInjector(logger)) context = ApplicationProvider.getApplicationContext() val testDispatcher = StandardTestDispatcher() testScope = TestScope(testDispatcher) Loading @@ -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( Loading Loading @@ -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"), ), ) ) Loading @@ -376,7 +396,7 @@ class KeyguardQuickAffordancePickerViewModelTest { icon1 = Icon.Loaded( FakeCustomizationProviderClient.ICON_1, Text.Loaded("Left shortcut") Text.Loaded("Left shortcut"), ), icon2 = null, ) Loading Loading @@ -404,7 +424,7 @@ class KeyguardQuickAffordancePickerViewModelTest { icon2 = Icon.Loaded( FakeCustomizationProviderClient.ICON_3, Text.Loaded("Right shortcut") Text.Loaded("Right shortcut"), ), ) ) Loading Loading @@ -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" + Loading