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.DefaultLiveWallpaperInfoFactory; 31 import com.android.wallpaper.module.DrawableLayerResolver; 32 import com.android.wallpaper.module.ExploreIntentChecker; 33 import com.android.wallpaper.module.FormFactorChecker; 34 import com.android.wallpaper.module.Injector; 35 import com.android.wallpaper.module.LiveWallpaperInfoFactory; 36 import com.android.wallpaper.module.LoggingOptInStatusProvider; 37 import com.android.wallpaper.module.NetworkStatusNotifier; 38 import com.android.wallpaper.module.PackageStatusNotifier; 39 import com.android.wallpaper.module.PartnerProvider; 40 import com.android.wallpaper.module.SystemFeatureChecker; 41 import com.android.wallpaper.module.UserEventLogger; 42 import com.android.wallpaper.module.WallpaperPersister; 43 import com.android.wallpaper.module.WallpaperPreferences; 44 import com.android.wallpaper.module.WallpaperRefresher; 45 import com.android.wallpaper.module.WallpaperRotationRefresher; 46 import com.android.wallpaper.monitor.PerformanceMonitor; 47 import com.android.wallpaper.network.Requester; 48 import com.android.wallpaper.picker.ImagePreviewFragment; 49 import com.android.wallpaper.picker.individual.IndividualPickerFragment; 50 51 /** 52 * Test implementation of the dependency injector. 53 */ 54 public class TestInjector implements Injector { 55 56 private BitmapCropper mBitmapCropper; 57 private CategoryProvider mCategoryProvider; 58 private PartnerProvider mPartnerProvider; 59 private WallpaperPreferences mPrefs; 60 private WallpaperPersister mWallpaperPersister; 61 private WallpaperRefresher mWallpaperRefresher; 62 private Requester mRequester; 63 private WallpaperManagerCompat mWallpaperManagerCompat; 64 private CurrentWallpaperInfoFactory mCurrentWallpaperInfoFactory; 65 private NetworkStatusNotifier mNetworkStatusNotifier; 66 private AlarmManagerWrapper mAlarmManagerWrapper; 67 private UserEventLogger mUserEventLogger; 68 private ExploreIntentChecker mExploreIntentChecker; 69 private SystemFeatureChecker mSystemFeatureChecker; 70 private FormFactorChecker mFormFactorChecker; 71 private WallpaperRotationRefresher mWallpaperRotationRefresher; 72 private PerformanceMonitor mPerformanceMonitor; 73 private LoggingOptInStatusProvider mLoggingOptInStatusProvider; 74 75 @Override getBitmapCropper()76 public BitmapCropper getBitmapCropper() { 77 if (mBitmapCropper == null) { 78 mBitmapCropper = new com.android.wallpaper.testing.TestBitmapCropper(); 79 } 80 return mBitmapCropper; 81 } 82 83 @Override getCategoryProvider(Context context)84 public CategoryProvider getCategoryProvider(Context context) { 85 if (mCategoryProvider == null) { 86 mCategoryProvider = new TestCategoryProvider(); 87 } 88 return mCategoryProvider; 89 } 90 91 @Override getPartnerProvider(Context context)92 public PartnerProvider getPartnerProvider(Context context) { 93 if (mPartnerProvider == null) { 94 mPartnerProvider = new TestPartnerProvider(); 95 } 96 return mPartnerProvider; 97 } 98 99 @Override getPreferences(Context context)100 public WallpaperPreferences getPreferences(Context context) { 101 if (mPrefs == null) { 102 mPrefs = new TestWallpaperPreferences(); 103 } 104 return mPrefs; 105 } 106 107 @Override getWallpaperPersister(Context context)108 public WallpaperPersister getWallpaperPersister(Context context) { 109 if (mWallpaperPersister == null) { 110 mWallpaperPersister = new TestWallpaperPersister(context.getApplicationContext()); 111 } 112 return mWallpaperPersister; 113 } 114 115 @Override getWallpaperRefresher(Context context)116 public WallpaperRefresher getWallpaperRefresher(Context context) { 117 if (mWallpaperRefresher == null) { 118 mWallpaperRefresher = new TestWallpaperRefresher(context.getApplicationContext()); 119 } 120 return mWallpaperRefresher; 121 } 122 123 @Override getRequester(Context unused)124 public Requester getRequester(Context unused) { 125 return null; 126 } 127 128 @Override getWallpaperManagerCompat(Context context)129 public WallpaperManagerCompat getWallpaperManagerCompat(Context context) { 130 if (mWallpaperManagerCompat == null) { 131 mWallpaperManagerCompat = new com.android.wallpaper.testing.TestWallpaperManagerCompat( 132 context.getApplicationContext()); 133 } 134 return mWallpaperManagerCompat; 135 } 136 137 @Override getCurrentWallpaperFactory(Context context)138 public CurrentWallpaperInfoFactory getCurrentWallpaperFactory(Context context) { 139 if (mCurrentWallpaperInfoFactory == null) { 140 mCurrentWallpaperInfoFactory = 141 new TestCurrentWallpaperInfoFactory(context.getApplicationContext()); 142 } 143 return mCurrentWallpaperInfoFactory; 144 } 145 146 @Override getLoggingOptInStatusProvider(Context context)147 public LoggingOptInStatusProvider getLoggingOptInStatusProvider(Context context) { 148 if (mLoggingOptInStatusProvider == null) { 149 mLoggingOptInStatusProvider = new TestLoggingOptInStatusProvider(); 150 } 151 return mLoggingOptInStatusProvider; 152 } 153 154 @Override getNetworkStatusNotifier(Context context)155 public NetworkStatusNotifier getNetworkStatusNotifier(Context context) { 156 if (mNetworkStatusNotifier == null) { 157 mNetworkStatusNotifier = new TestNetworkStatusNotifier(); 158 } 159 return mNetworkStatusNotifier; 160 } 161 162 @Override getAlarmManagerWrapper(Context unused)163 public AlarmManagerWrapper getAlarmManagerWrapper(Context unused) { 164 if (mAlarmManagerWrapper == null) { 165 mAlarmManagerWrapper = new TestAlarmManagerWrapper(); 166 } 167 return mAlarmManagerWrapper; 168 } 169 170 @Override getUserEventLogger(Context unused)171 public UserEventLogger getUserEventLogger(Context unused) { 172 if (mUserEventLogger == null) { 173 mUserEventLogger = new com.android.wallpaper.testing.TestUserEventLogger(); 174 } 175 return mUserEventLogger; 176 } 177 178 @Override getExploreIntentChecker(Context unused)179 public ExploreIntentChecker getExploreIntentChecker(Context unused) { 180 if (mExploreIntentChecker == null) { 181 mExploreIntentChecker = new TestExploreIntentChecker(); 182 } 183 return mExploreIntentChecker; 184 } 185 186 @Override getSystemFeatureChecker()187 public SystemFeatureChecker getSystemFeatureChecker() { 188 if (mSystemFeatureChecker == null) { 189 mSystemFeatureChecker = new com.android.wallpaper.testing.TestSystemFeatureChecker(); 190 } 191 return mSystemFeatureChecker; 192 } 193 194 @Override getFormFactorChecker(Context unused)195 public FormFactorChecker getFormFactorChecker(Context unused) { 196 if (mFormFactorChecker == null) { 197 mFormFactorChecker = new TestFormFactorChecker(); 198 } 199 return mFormFactorChecker; 200 } 201 202 @Override getWallpaperRotationRefresher()203 public WallpaperRotationRefresher getWallpaperRotationRefresher() { 204 if (mWallpaperRotationRefresher == null) { 205 mWallpaperRotationRefresher = (context, listener) -> { 206 // Not implemented 207 listener.onError(); 208 }; 209 } 210 return mWallpaperRotationRefresher; 211 } 212 213 @Override getPreviewFragment(Context context, WallpaperInfo wallpaperInfo, int mode, boolean viewAsHome, boolean testingModeEnabled)214 public Fragment getPreviewFragment(Context context, WallpaperInfo wallpaperInfo, int mode, 215 boolean viewAsHome, boolean testingModeEnabled) { 216 return ImagePreviewFragment.newInstance(wallpaperInfo, mode, viewAsHome, 217 testingModeEnabled); 218 } 219 220 @Override getPackageStatusNotifier(Context context)221 public PackageStatusNotifier getPackageStatusNotifier(Context context) { 222 return null; 223 } 224 225 @Override getIndividualPickerFragment(String collectionId)226 public IndividualPickerFragment getIndividualPickerFragment(String collectionId) { 227 return IndividualPickerFragment.newInstance(collectionId); 228 } 229 230 @Override getLiveWallpaperInfoFactory(Context context)231 public LiveWallpaperInfoFactory getLiveWallpaperInfoFactory(Context context) { 232 return new DefaultLiveWallpaperInfoFactory(); 233 } 234 235 @Override getDrawableLayerResolver()236 public DrawableLayerResolver getDrawableLayerResolver() { 237 return null; 238 } 239 240 @Override getDeepLinkRedirectIntent(Context context, Uri uri)241 public Intent getDeepLinkRedirectIntent(Context context, Uri uri) { 242 return null; 243 } 244 245 @Override getPerformanceMonitor()246 public PerformanceMonitor getPerformanceMonitor() { 247 if (mPerformanceMonitor == null) { 248 mPerformanceMonitor = new TestPerformanceMonitor(); 249 } 250 return mPerformanceMonitor; 251 } 252 } 253