1 /*
2  * Copyright (C) 2017 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.module;
17 
18 import android.content.Context;
19 
20 import com.android.wallpaper.compat.WallpaperManagerCompat;
21 import com.android.wallpaper.network.Requester;
22 import com.android.wallpaper.network.WallpaperRequester;
23 import com.android.wallpaper.picker.individual.IndividualPickerFragment;
24 import com.android.wallpaper.util.DisplayUtils;
25 
26 /**
27  * Base implementation of Injector.
28  */
29 public abstract class BaseWallpaperInjector implements Injector {
30     private BitmapCropper mBitmapCropper;
31     private PartnerProvider mPartnerProvider;
32     private WallpaperPersister mWallpaperPersister;
33     private WallpaperPreferences mPrefs;
34     private WallpaperRefresher mWallpaperRefresher;
35     private Requester mRequester;
36     private WallpaperManagerCompat mWallpaperManagerCompat;
37     private WallpaperStatusChecker mWallpaperStatusChecker;
38     private CurrentWallpaperInfoFactory mCurrentWallpaperFactory;
39     private NetworkStatusNotifier mNetworkStatusNotifier;
40     private AlarmManagerWrapper mAlarmManagerWrapper;
41     private ExploreIntentChecker mExploreIntentChecker;
42     private SystemFeatureChecker mSystemFeatureChecker;
43     private FormFactorChecker mFormFactorChecker;
44     private PackageStatusNotifier mPackageStatusNotifier;
45     private LiveWallpaperInfoFactory mLiveWallpaperInfoFactory;
46     private DrawableLayerResolver mDrawableLayerResolver;
47     private CustomizationSections mCustomizationSections;
48     private DisplayUtils mDisplayUtils;
49 
50     @Override
getBitmapCropper()51     public synchronized BitmapCropper getBitmapCropper() {
52         if (mBitmapCropper == null) {
53             mBitmapCropper = new DefaultBitmapCropper();
54         }
55         return mBitmapCropper;
56     }
57 
58     @Override
getPartnerProvider(Context context)59     public synchronized PartnerProvider getPartnerProvider(Context context) {
60         if (mPartnerProvider == null) {
61             mPartnerProvider = new DefaultPartnerProvider(context.getApplicationContext());
62         }
63         return mPartnerProvider;
64     }
65 
66     @Override
getPreferences(Context context)67     public synchronized WallpaperPreferences getPreferences(Context context) {
68         if (mPrefs == null) {
69             mPrefs = new DefaultWallpaperPreferences(context.getApplicationContext());
70         }
71         return mPrefs;
72     }
73 
74     @Override
getWallpaperPersister(Context context)75     public synchronized WallpaperPersister getWallpaperPersister(Context context) {
76         if (mWallpaperPersister == null) {
77             mWallpaperPersister = new DefaultWallpaperPersister(context.getApplicationContext());
78         }
79         return mWallpaperPersister;
80     }
81 
82     @Override
getWallpaperRefresher(Context context)83     public synchronized WallpaperRefresher getWallpaperRefresher(Context context) {
84         if (mWallpaperRefresher == null) {
85             mWallpaperRefresher = new DefaultWallpaperRefresher(context.getApplicationContext());
86         }
87         return mWallpaperRefresher;
88     }
89 
90     @Override
getRequester(Context context)91     public synchronized Requester getRequester(Context context) {
92         if (mRequester == null) {
93             mRequester = new WallpaperRequester(context.getApplicationContext());
94         }
95         return mRequester;
96     }
97 
98     @Override
getWallpaperManagerCompat(Context context)99     public synchronized WallpaperManagerCompat getWallpaperManagerCompat(Context context) {
100         if (mWallpaperManagerCompat == null) {
101             mWallpaperManagerCompat = WallpaperManagerCompat.getInstance(context);
102         }
103         return mWallpaperManagerCompat;
104     }
105 
106     @Override
getWallpaperStatusChecker()107     public WallpaperStatusChecker getWallpaperStatusChecker() {
108         if (mWallpaperStatusChecker == null) {
109             mWallpaperStatusChecker = new DefaultWallpaperStatusChecker();
110         }
111         return mWallpaperStatusChecker;
112     }
113 
114     @Override
getCurrentWallpaperFactory(Context context)115     public synchronized CurrentWallpaperInfoFactory getCurrentWallpaperFactory(Context context) {
116         if (mCurrentWallpaperFactory == null) {
117             mCurrentWallpaperFactory =
118                     new DefaultCurrentWallpaperInfoFactory(context.getApplicationContext());
119         }
120         return mCurrentWallpaperFactory;
121     }
122 
123     @Override
getNetworkStatusNotifier(Context context)124     public synchronized NetworkStatusNotifier getNetworkStatusNotifier(Context context) {
125         if (mNetworkStatusNotifier == null) {
126             mNetworkStatusNotifier = new DefaultNetworkStatusNotifier(context.getApplicationContext());
127         }
128         return mNetworkStatusNotifier;
129     }
130 
131     @Override
getPackageStatusNotifier(Context context)132     public synchronized PackageStatusNotifier getPackageStatusNotifier(Context context) {
133         if (mPackageStatusNotifier == null) {
134             mPackageStatusNotifier = new DefaultPackageStatusNotifier(
135                     context.getApplicationContext());
136         }
137         return mPackageStatusNotifier;
138     }
139 
140     @Override
getAlarmManagerWrapper(Context context)141     public synchronized AlarmManagerWrapper getAlarmManagerWrapper(Context context) {
142         if (mAlarmManagerWrapper == null) {
143             mAlarmManagerWrapper = new DefaultAlarmManagerWrapper(context.getApplicationContext());
144         }
145         return mAlarmManagerWrapper;
146     }
147 
148     @Override
getExploreIntentChecker(Context context)149     public synchronized ExploreIntentChecker getExploreIntentChecker(Context context) {
150         if (mExploreIntentChecker == null) {
151             mExploreIntentChecker = new DefaultExploreIntentChecker(context.getApplicationContext());
152         }
153         return mExploreIntentChecker;
154     }
155 
156     @Override
getSystemFeatureChecker()157     public synchronized SystemFeatureChecker getSystemFeatureChecker() {
158         if (mSystemFeatureChecker == null) {
159             mSystemFeatureChecker = new DefaultSystemFeatureChecker();
160         }
161         return mSystemFeatureChecker;
162     }
163 
164     @Override
getFormFactorChecker(Context context)165     public synchronized FormFactorChecker getFormFactorChecker(Context context) {
166         if (mFormFactorChecker == null) {
167             mFormFactorChecker = new DefaultFormFactorChecker(context.getApplicationContext());
168         }
169         return mFormFactorChecker;
170     }
171 
172     @Override
getIndividualPickerFragment(String collectionId)173     public synchronized IndividualPickerFragment getIndividualPickerFragment(String collectionId) {
174         return IndividualPickerFragment.newInstance(collectionId);
175     }
176 
177     @Override
getLiveWallpaperInfoFactory(Context context)178     public LiveWallpaperInfoFactory getLiveWallpaperInfoFactory(Context context) {
179         if (mLiveWallpaperInfoFactory == null) {
180             mLiveWallpaperInfoFactory = new DefaultLiveWallpaperInfoFactory();
181         }
182         return mLiveWallpaperInfoFactory;
183     }
184 
185     @Override
getDrawableLayerResolver()186     public DrawableLayerResolver getDrawableLayerResolver() {
187         if (mDrawableLayerResolver == null) {
188             mDrawableLayerResolver = new DefaultDrawableLayerResolver();
189         }
190         return mDrawableLayerResolver;
191     }
192 
193     @Override
getCustomizationSections()194     public CustomizationSections getCustomizationSections() {
195         if (mCustomizationSections == null) {
196             mCustomizationSections = new WallpaperPickerSections();
197         }
198         return mCustomizationSections;
199     }
200 
201     @Override
getDisplayUtils(Context context)202     public DisplayUtils getDisplayUtils(Context context) {
203         if (mDisplayUtils == null) {
204             mDisplayUtils = new DisplayUtils(context.getApplicationContext());
205         }
206         return mDisplayUtils;
207     }
208 }
209