| /* |
| * Copyright (C) 2015 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.messaging; |
| |
| import android.content.Context; |
| |
| import com.android.messaging.datamodel.DataModel; |
| import com.android.messaging.datamodel.MemoryCacheManager; |
| import com.android.messaging.datamodel.ParticipantRefresh.ContactContentObserver; |
| import com.android.messaging.datamodel.media.MediaCacheManager; |
| import com.android.messaging.datamodel.media.MediaResourceManager; |
| import com.android.messaging.sms.BugleCarrierConfigValuesLoader; |
| import com.android.messaging.ui.UIIntents; |
| import com.android.messaging.util.Assert; |
| import com.android.messaging.util.BugleGservices; |
| import com.android.messaging.util.BuglePrefs; |
| import com.android.messaging.util.MediaUtil; |
| import com.android.messaging.util.PhoneUtils; |
| import com.google.common.annotations.VisibleForTesting; |
| |
| public abstract class Factory { |
| |
| // Making this volatile because on the unit tests, setInstance is called from a unit test |
| // thread, and then it's read on the UI thread. |
| private static volatile Factory sInstance; |
| @VisibleForTesting |
| protected static boolean sRegistered; |
| @VisibleForTesting |
| protected static boolean sInitialized; |
| |
| public static Factory get() { |
| return sInstance; |
| } |
| |
| protected static void setInstance(final Factory factory) { |
| // Not allowed to call this after real application initialization is complete |
| Assert.isTrue(!sRegistered); |
| Assert.isTrue(!sInitialized); |
| sInstance = factory; |
| } |
| public abstract void onRequiredPermissionsAcquired(); |
| |
| public abstract Context getApplicationContext(); |
| public abstract DataModel getDataModel(); |
| public abstract BugleGservices getBugleGservices(); |
| public abstract BuglePrefs getApplicationPrefs(); |
| public abstract BuglePrefs getSubscriptionPrefs(int subId); |
| public abstract BuglePrefs getWidgetPrefs(); |
| public abstract UIIntents getUIIntents(); |
| public abstract MemoryCacheManager getMemoryCacheManager(); |
| public abstract MediaResourceManager getMediaResourceManager(); |
| public abstract MediaCacheManager getMediaCacheManager(); |
| public abstract ContactContentObserver getContactContentObserver(); |
| public abstract PhoneUtils getPhoneUtils(int subId); |
| public abstract MediaUtil getMediaUtil(); |
| public abstract BugleCarrierConfigValuesLoader getCarrierConfigValuesLoader(); |
| // Note this needs to run from any thread |
| public abstract void reclaimMemory(); |
| |
| public abstract void onActivityResume(); |
| } |