1 /*
2  * Copyright (C) 2019 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.wallpaper.testing;
17 
18 import android.content.Context;
19 import android.content.Intent;
20 import android.net.Uri;
21 
22 import androidx.fragment.app.Fragment;
23 
24 import com.android.wallpaper.compat.WallpaperManagerCompat;
25 import com.android.wallpaper.model.CategoryProvider;
26 import com.android.wallpaper.model.WallpaperInfo;
27 import com.android.wallpaper.module.AlarmManagerWrapper;
28 import com.android.wallpaper.module.BitmapCropper;
29 import com.android.wallpaper.module.CurrentWallpaperInfoFactory;
30 import com.android.wallpaper.module.CustomizationSections;
31 import com.android.wallpaper.module.DefaultLiveWallpaperInfoFactory;
32 import com.android.wallpaper.module.DrawableLayerResolver;
33 import com.android.wallpaper.module.ExploreIntentChecker;
34 import com.android.wallpaper.module.FormFactorChecker;
35 import com.android.wallpaper.module.Injector;
36 import com.android.wallpaper.module.LiveWallpaperInfoFactory;
37 import com.android.wallpaper.module.LoggingOptInStatusProvider;
38 import com.android.wallpaper.module.NetworkStatusNotifier;
39 import com.android.wallpaper.module.PackageStatusNotifier;
40 import com.android.wallpaper.module.PartnerProvider;
41 import com.android.wallpaper.module.SystemFeatureChecker;
42 import com.android.wallpaper.module.UserEventLogger;
43 import com.android.wallpaper.module.WallpaperPersister;
44 import com.android.wallpaper.module.WallpaperPreferences;
45 import com.android.wallpaper.module.WallpaperRefresher;
46 import com.android.wallpaper.module.WallpaperRotationRefresher;
47 import com.android.wallpaper.module.WallpaperStatusChecker;
48 import com.android.wallpaper.monitor.PerformanceMonitor;
49 import com.android.wallpaper.network.Requester;
50 import com.android.wallpaper.picker.ImagePreviewFragment;
51 import com.android.wallpaper.picker.individual.IndividualPickerFragment;
52 import com.android.wallpaper.util.DisplayUtils;
53 
54 /**
55  * Test implementation of the dependency injector.
56  */
57 public class TestInjector implements Injector {
58 
59     private BitmapCropper mBitmapCropper;
60     private CategoryProvider mCategoryProvider;
61     private PartnerProvider mPartnerProvider;
62     private WallpaperPreferences mPrefs;
63     private WallpaperPersister mWallpaperPersister;
64     private WallpaperRefresher mWallpaperRefresher;
65     private Requester mRequester;
66     private WallpaperManagerCompat mWallpaperManagerCompat;
67     private CurrentWallpaperInfoFactory mCurrentWallpaperInfoFactory;
68     private NetworkStatusNotifier mNetworkStatusNotifier;
69     private AlarmManagerWrapper mAlarmManagerWrapper;
70     private UserEventLogger mUserEventLogger;
71     private ExploreIntentChecker mExploreIntentChecker;
72     private SystemFeatureChecker mSystemFeatureChecker;
73     private FormFactorChecker mFormFactorChecker;
74     private WallpaperRotationRefresher mWallpaperRotationRefresher;
75     private PerformanceMonitor mPerformanceMonitor;
76     private LoggingOptInStatusProvider mLoggingOptInStatusProvider;
77 
78     @Override
getBitmapCropper()79     public BitmapCropper getBitmapCropper() {
80         if (mBitmapCropper == null) {
81             mBitmapCropper = new com.android.wallpaper.testing.TestBitmapCropper();
82         }
83         return mBitmapCropper;
84     }
85 
86     @Override
getCategoryProvider(Context context)87     public CategoryProvider getCategoryProvider(Context context) {
88         if (mCategoryProvider == null) {
89             mCategoryProvider = new TestCategoryProvider();
90         }
91         return mCategoryProvider;
92     }
93 
94     @Override
getPartnerProvider(Context context)95     public PartnerProvider getPartnerProvider(Context context) {
96         if (mPartnerProvider == null) {
97             mPartnerProvider = new TestPartnerProvider();
98         }
99         return mPartnerProvider;
100     }
101 
102     @Override
getPreferences(Context context)103     public WallpaperPreferences getPreferences(Context context) {
104         if (mPrefs == null) {
105             mPrefs = new TestWallpaperPreferences();
106         }
107         return mPrefs;
108     }
109 
110     @Override
getWallpaperPersister(Context context)111     public WallpaperPersister getWallpaperPersister(Context context) {
112         if (mWallpaperPersister == null) {
113             mWallpaperPersister = new TestWallpaperPersister(context.getApplicationContext());
114         }
115         return mWallpaperPersister;
116     }
117 
118     @Override
getWallpaperRefresher(Context context)119     public WallpaperRefresher getWallpaperRefresher(Context context) {
120         if (mWallpaperRefresher == null) {
121             mWallpaperRefresher = new TestWallpaperRefresher(context.getApplicationContext());
122         }
123         return mWallpaperRefresher;
124     }
125 
126     @Override
getRequester(Context unused)127     public Requester getRequester(Context unused) {
128         return null;
129     }
130 
131     @Override
getWallpaperManagerCompat(Context context)132     public WallpaperManagerCompat getWallpaperManagerCompat(Context context) {
133         if (mWallpaperManagerCompat == null) {
134             mWallpaperManagerCompat = new com.android.wallpaper.testing.TestWallpaperManagerCompat(
135                     context.getApplicationContext());
136         }
137         return mWallpaperManagerCompat;
138     }
139 
140     @Override
getWallpaperStatusChecker()141     public WallpaperStatusChecker getWallpaperStatusChecker() {
142         return null;
143     }
144 
145     @Override
getCurrentWallpaperFactory(Context context)146     public CurrentWallpaperInfoFactory getCurrentWallpaperFactory(Context context) {
147         if (mCurrentWallpaperInfoFactory == null) {
148             mCurrentWallpaperInfoFactory =
149                     new TestCurrentWallpaperInfoFactory(context.getApplicationContext());
150         }
151         return mCurrentWallpaperInfoFactory;
152     }
153 
154     @Override
getLoggingOptInStatusProvider(Context context)155     public LoggingOptInStatusProvider getLoggingOptInStatusProvider(Context context) {
156         if (mLoggingOptInStatusProvider == null) {
157             mLoggingOptInStatusProvider = new TestLoggingOptInStatusProvider();
158         }
159         return mLoggingOptInStatusProvider;
160     }
161 
162     @Override
getNetworkStatusNotifier(Context context)163     public NetworkStatusNotifier getNetworkStatusNotifier(Context context) {
164         if (mNetworkStatusNotifier == null) {
165             mNetworkStatusNotifier = new TestNetworkStatusNotifier();
166         }
167         return mNetworkStatusNotifier;
168     }
169 
170     @Override
getAlarmManagerWrapper(Context unused)171     public AlarmManagerWrapper getAlarmManagerWrapper(Context unused) {
172         if (mAlarmManagerWrapper == null) {
173             mAlarmManagerWrapper = new TestAlarmManagerWrapper();
174         }
175         return mAlarmManagerWrapper;
176     }
177 
178     @Override
getUserEventLogger(Context unused)179     public UserEventLogger getUserEventLogger(Context unused) {
180         if (mUserEventLogger == null) {
181             mUserEventLogger = new com.android.wallpaper.testing.TestUserEventLogger();
182         }
183         return mUserEventLogger;
184     }
185 
186     @Override
getExploreIntentChecker(Context unused)187     public ExploreIntentChecker getExploreIntentChecker(Context unused) {
188         if (mExploreIntentChecker == null) {
189             mExploreIntentChecker = new TestExploreIntentChecker();
190         }
191         return mExploreIntentChecker;
192     }
193 
194     @Override
getSystemFeatureChecker()195     public SystemFeatureChecker getSystemFeatureChecker() {
196         if (mSystemFeatureChecker == null) {
197             mSystemFeatureChecker = new com.android.wallpaper.testing.TestSystemFeatureChecker();
198         }
199         return mSystemFeatureChecker;
200     }
201 
202     @Override
getFormFactorChecker(Context unused)203     public FormFactorChecker getFormFactorChecker(Context unused) {
204         if (mFormFactorChecker == null) {
205             mFormFactorChecker = new TestFormFactorChecker();
206         }
207         return mFormFactorChecker;
208     }
209 
210     @Override
getWallpaperRotationRefresher()211     public WallpaperRotationRefresher getWallpaperRotationRefresher() {
212         if (mWallpaperRotationRefresher == null) {
213             mWallpaperRotationRefresher = (context, listener) -> {
214                 // Not implemented
215                 listener.onError();
216             };
217         }
218         return mWallpaperRotationRefresher;
219     }
220 
221     @Override
getPreviewFragment(Context context, WallpaperInfo wallpaperInfo, int mode, boolean viewAsHome, boolean viewFullScreen, boolean testingModeEnabled)222     public Fragment getPreviewFragment(Context context, WallpaperInfo wallpaperInfo, int mode,
223             boolean viewAsHome, boolean viewFullScreen, boolean testingModeEnabled) {
224         return ImagePreviewFragment.newInstance(wallpaperInfo, mode, viewAsHome,
225                 viewFullScreen, testingModeEnabled);
226     }
227 
228     @Override
getPackageStatusNotifier(Context context)229     public PackageStatusNotifier getPackageStatusNotifier(Context context) {
230         return null;
231     }
232 
233     @Override
getIndividualPickerFragment(String collectionId)234     public IndividualPickerFragment getIndividualPickerFragment(String collectionId) {
235         return IndividualPickerFragment.newInstance(collectionId);
236     }
237 
238     @Override
getLiveWallpaperInfoFactory(Context context)239     public LiveWallpaperInfoFactory getLiveWallpaperInfoFactory(Context context) {
240         return new DefaultLiveWallpaperInfoFactory();
241     }
242 
243     @Override
getDrawableLayerResolver()244     public DrawableLayerResolver getDrawableLayerResolver() {
245         return null;
246     }
247 
248     @Override
getDeepLinkRedirectIntent(Context context, Uri uri)249     public Intent getDeepLinkRedirectIntent(Context context, Uri uri) {
250         return null;
251     }
252 
253     @Override
getDownloadableIntentAction()254     public String getDownloadableIntentAction() {
255         return null;
256     }
257 
258     @Override
getPerformanceMonitor()259     public PerformanceMonitor getPerformanceMonitor() {
260         if (mPerformanceMonitor == null) {
261             mPerformanceMonitor = new TestPerformanceMonitor();
262         }
263         return mPerformanceMonitor;
264     }
265 
266     @Override
getCustomizationSections()267     public CustomizationSections getCustomizationSections() {
268         return null;
269     }
270 
271     @Override
getDisplayUtils(Context context)272     public DisplayUtils getDisplayUtils(Context context) {
273         return null;
274     }
275 }
276