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