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