blob: f4a659cf3af0f27b1ec38b0f20de5230e29d806f [file] [log] [blame]
Chihhang Chuang5eccd032019-12-20 16:40:38 +08001package com.android.customization.testing;
2
3import android.content.Context;
4
5import androidx.fragment.app.FragmentActivity;
6
7import com.android.customization.model.theme.OverlayManagerCompat;
8import com.android.customization.model.theme.ThemeBundleProvider;
9import com.android.customization.model.theme.ThemeManager;
10import com.android.customization.module.CustomizationInjector;
11import com.android.customization.module.CustomizationPreferences;
12import com.android.customization.module.ThemesUserEventLogger;
Alejandro Nijamkinabda67b2022-11-30 14:34:56 -080013import com.android.customization.picker.quickaffordance.data.repository.KeyguardQuickAffordancePickerRepository;
14import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor;
Alejandro Nijamkinc27b1d32022-12-21 15:27:35 -080015import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordanceSnapshotRestorer;
Alejandro Nijamkinabda67b2022-11-30 14:34:56 -080016import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderClient;
17import com.android.systemui.shared.quickaffordance.data.content.KeyguardQuickAffordanceProviderClientImpl;
Alejandro Nijamkin9825cdb2022-12-15 16:42:42 -080018import com.android.wallpaper.config.BaseFlags;
Chihhang Chuang5eccd032019-12-20 16:40:38 +080019import com.android.wallpaper.module.DrawableLayerResolver;
20import com.android.wallpaper.module.PackageStatusNotifier;
21import com.android.wallpaper.module.UserEventLogger;
Alejandro Nijamkinc27b1d32022-12-21 15:27:35 -080022import com.android.wallpaper.picker.undo.domain.interactor.SnapshotRestorer;
Chihhang Chuang5eccd032019-12-20 16:40:38 +080023import com.android.wallpaper.testing.TestInjector;
24
Alejandro Nijamkinc27b1d32022-12-21 15:27:35 -080025import java.util.HashMap;
26import java.util.Map;
27
Alejandro Nijamkinabda67b2022-11-30 14:34:56 -080028import kotlinx.coroutines.Dispatchers;
29
Chihhang Chuang5eccd032019-12-20 16:40:38 +080030/**
31 * Test implementation of the dependency injector.
32 */
33public class TestCustomizationInjector extends TestInjector implements CustomizationInjector {
34 private CustomizationPreferences mCustomizationPreferences;
35 private ThemeManager mThemeManager;
36 private PackageStatusNotifier mPackageStatusNotifier;
37 private DrawableLayerResolver mDrawableLayerResolver;
38 private UserEventLogger mUserEventLogger;
Alejandro Nijamkinabda67b2022-11-30 14:34:56 -080039 private KeyguardQuickAffordancePickerInteractor mKeyguardQuickAffordancePickerInteractor;
Alejandro Nijamkin9825cdb2022-12-15 16:42:42 -080040 private BaseFlags mFlags;
Alejandro Nijamkinc27b1d32022-12-21 15:27:35 -080041 private KeyguardQuickAffordanceProviderClient mKeyguardQuickAffordanceProviderClient;
42 private KeyguardQuickAffordanceSnapshotRestorer mKeyguardQuickAffordanceSnapshotRestorer;
Chihhang Chuang5eccd032019-12-20 16:40:38 +080043
44 @Override
45 public CustomizationPreferences getCustomizationPreferences(Context context) {
46 if (mCustomizationPreferences == null) {
47 mCustomizationPreferences = new TestDefaultCustomizationPreferences(context);
48 }
49 return mCustomizationPreferences;
50 }
51
52 @Override
53 public ThemeManager getThemeManager(
54 ThemeBundleProvider provider,
55 FragmentActivity activity,
Chihhang Chuang5eccd032019-12-20 16:40:38 +080056 OverlayManagerCompat overlayManagerCompat,
57 ThemesUserEventLogger logger) {
58 if (mThemeManager == null) {
Santiago Etchebehere1754f332020-04-09 19:17:19 -070059 mThemeManager = new TestThemeManager(provider, activity, overlayManagerCompat, logger);
Chihhang Chuang5eccd032019-12-20 16:40:38 +080060 }
61 return mThemeManager;
62 }
63
64 @Override
65 public PackageStatusNotifier getPackageStatusNotifier(Context context) {
66 if (mPackageStatusNotifier == null) {
67 mPackageStatusNotifier = new TestPackageStatusNotifier();
68 }
69 return mPackageStatusNotifier;
70 }
71
72 @Override
73 public DrawableLayerResolver getDrawableLayerResolver() {
74 if (mDrawableLayerResolver == null) {
75 mDrawableLayerResolver = new TestDrawableLayerResolver();
76 }
77 return mDrawableLayerResolver;
78 }
79
80 @Override
81 public UserEventLogger getUserEventLogger(Context unused) {
82 if (mUserEventLogger == null) {
83 mUserEventLogger = new TestThemesUserEventLogger();
84 }
85 return mUserEventLogger;
86 }
Alejandro Nijamkinabda67b2022-11-30 14:34:56 -080087
88 @Override
89 public KeyguardQuickAffordancePickerInteractor getKeyguardQuickAffordancePickerInteractor(
90 Context context) {
91 if (mKeyguardQuickAffordancePickerInteractor == null) {
92 final KeyguardQuickAffordanceProviderClient client =
93 new KeyguardQuickAffordanceProviderClientImpl(context, Dispatchers.getIO());
94 mKeyguardQuickAffordancePickerInteractor = new KeyguardQuickAffordancePickerInteractor(
95 new KeyguardQuickAffordancePickerRepository(client, Dispatchers.getIO()),
Alejandro Nijamkinc27b1d32022-12-21 15:27:35 -080096 client,
97 () -> getKeyguardQuickAffordanceSnapshotRestorer(context));
Alejandro Nijamkinabda67b2022-11-30 14:34:56 -080098 }
99 return mKeyguardQuickAffordancePickerInteractor;
100 }
Alejandro Nijamkin9825cdb2022-12-15 16:42:42 -0800101
102 @Override
103 public BaseFlags getFlags() {
104 if (mFlags == null) {
105 mFlags = new BaseFlags() {};
106 }
107
108 return mFlags;
109 }
Alejandro Nijamkinc27b1d32022-12-21 15:27:35 -0800110
111 @Override
112 public Map<Integer, SnapshotRestorer> getSnapshotRestorers(Context context) {
113 final Map<Integer, SnapshotRestorer> restorers = new HashMap<>();
114 restorers.put(
115 KEY_QUICK_AFFORDANCE_SNAPSHOT_RESTORER,
116 getKeyguardQuickAffordanceSnapshotRestorer(context));
117 return restorers;
118 }
119
120 /** Returns the {@link KeyguardQuickAffordanceProviderClient}. */
121 private KeyguardQuickAffordanceProviderClient getKeyguardQuickAffordancePickerProviderClient(
122 Context context) {
123 if (mKeyguardQuickAffordanceProviderClient == null) {
124 mKeyguardQuickAffordanceProviderClient =
125 new KeyguardQuickAffordanceProviderClientImpl(context, Dispatchers.getIO());
126 }
127
128 return mKeyguardQuickAffordanceProviderClient;
129 }
130
131 private KeyguardQuickAffordanceSnapshotRestorer getKeyguardQuickAffordanceSnapshotRestorer(
132 Context context) {
133 if (mKeyguardQuickAffordanceSnapshotRestorer == null) {
134 mKeyguardQuickAffordanceSnapshotRestorer = new KeyguardQuickAffordanceSnapshotRestorer(
135 getKeyguardQuickAffordancePickerInteractor(context),
136 getKeyguardQuickAffordancePickerProviderClient(context));
137 }
138
139 return mKeyguardQuickAffordanceSnapshotRestorer;
140 }
141
142 private static final int KEY_QUICK_AFFORDANCE_SNAPSHOT_RESTORER = 1;
Chihhang Chuang5eccd032019-12-20 16:40:38 +0800143}