| /* |
| * 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.datamodel; |
| |
| import android.content.Context; |
| import android.database.sqlite.SQLiteDatabase; |
| import android.net.Uri; |
| import android.test.RenamingDelegatingContext; |
| |
| import com.android.messaging.datamodel.action.ActionService; |
| import com.android.messaging.datamodel.action.BackgroundWorker; |
| import com.android.messaging.datamodel.data.BlockedParticipantsData; |
| import com.android.messaging.datamodel.data.BlockedParticipantsData.BlockedParticipantsDataListener; |
| import com.android.messaging.datamodel.data.ContactListItemData; |
| import com.android.messaging.datamodel.data.ContactPickerData; |
| import com.android.messaging.datamodel.data.ContactPickerData.ContactPickerDataListener; |
| import com.android.messaging.datamodel.data.ConversationData; |
| import com.android.messaging.datamodel.data.ConversationData.ConversationDataListener; |
| import com.android.messaging.datamodel.data.ConversationListData; |
| import com.android.messaging.datamodel.data.ConversationListData.ConversationListDataListener; |
| import com.android.messaging.datamodel.data.DraftMessageData; |
| import com.android.messaging.datamodel.data.GalleryGridItemData; |
| import com.android.messaging.datamodel.data.LaunchConversationData; |
| import com.android.messaging.datamodel.data.LaunchConversationData.LaunchConversationDataListener; |
| import com.android.messaging.datamodel.data.MediaPickerData; |
| import com.android.messaging.datamodel.data.MessagePartData; |
| import com.android.messaging.datamodel.data.ParticipantData; |
| import com.android.messaging.datamodel.data.ParticipantListItemData; |
| import com.android.messaging.datamodel.data.PeopleAndOptionsData; |
| import com.android.messaging.datamodel.data.PeopleAndOptionsData.PeopleAndOptionsDataListener; |
| import com.android.messaging.datamodel.data.PeopleOptionsItemData; |
| import com.android.messaging.datamodel.data.SettingsData; |
| import com.android.messaging.datamodel.data.SettingsData.SettingsDataListener; |
| import com.android.messaging.datamodel.data.SubscriptionListData; |
| import com.android.messaging.datamodel.data.TestDataFactory; |
| import com.android.messaging.datamodel.data.VCardContactItemData; |
| import com.android.messaging.util.ConnectivityUtil; |
| |
| public class FakeDataModel extends DataModel { |
| private BackgroundWorker mWorker; |
| private ActionService mActionService; |
| private final DatabaseHelper mDatabaseHelper; |
| private ConversationListData mConversationListData; |
| private ContactPickerData mContactPickerData; |
| private MediaPickerData mMediaPickerData; |
| private PeopleAndOptionsData mPeopleAndOptionsData; |
| private ConnectivityUtil mConnectivityUtil; |
| private SyncManager mSyncManager; |
| private SettingsData mSettingsData; |
| private DraftMessageData mDraftMessageData; |
| |
| public FakeDataModel(final Context context) { |
| super(); |
| if (context instanceof RenamingDelegatingContext) { |
| mDatabaseHelper = DatabaseHelper.getNewInstanceForTest(context); |
| } else { |
| mDatabaseHelper = null; |
| } |
| } |
| |
| @Override |
| public BackgroundWorker getBackgroundWorkerForActionService() { |
| return mWorker; |
| } |
| |
| public FakeDataModel withBackgroundWorkerForActionService(final BackgroundWorker worker) { |
| mWorker = worker; |
| return this; |
| } |
| |
| public FakeDataModel withActionService(final ActionService ActionService) { |
| mActionService = ActionService; |
| return this; |
| } |
| |
| public FakeDataModel withConversationListData(final ConversationListData conversationListData) { |
| mConversationListData = conversationListData; |
| return this; |
| } |
| |
| public FakeDataModel withContactPickerData(final ContactPickerData contactPickerData) { |
| mContactPickerData = contactPickerData; |
| return this; |
| } |
| |
| public FakeDataModel withMediaPickerData(final MediaPickerData mediaPickerData) { |
| mMediaPickerData = mediaPickerData; |
| return this; |
| } |
| |
| public FakeDataModel withConnectivityUtil(final ConnectivityUtil connectivityUtil) { |
| mConnectivityUtil = connectivityUtil; |
| return this; |
| } |
| |
| public FakeDataModel withSyncManager(final SyncManager syncManager) { |
| mSyncManager = syncManager; |
| return this; |
| } |
| |
| public FakeDataModel withPeopleAndOptionsData(final PeopleAndOptionsData peopleAndOptionsData) { |
| mPeopleAndOptionsData = peopleAndOptionsData; |
| return this; |
| } |
| |
| public FakeDataModel withSettingsData(final SettingsData settingsData) { |
| mSettingsData = settingsData; |
| return this; |
| } |
| |
| public FakeDataModel withDraftMessageData(final DraftMessageData draftMessageData) { |
| mDraftMessageData = draftMessageData; |
| return this; |
| } |
| |
| @Override |
| public ConversationListData createConversationListData(final Context context, |
| final ConversationListDataListener listener, final boolean archivedMode) { |
| return mConversationListData; |
| } |
| |
| @Override |
| public ConversationData createConversationData(final Context context, |
| final ConversationDataListener listener, final String conversationId) { |
| throw new IllegalStateException("Add withXXX or mock this method"); |
| } |
| |
| @Override |
| public ContactListItemData createContactListItemData() { |
| // This is a lightweight data holder object for each individual list item for which |
| // we don't perform any data request, so we can directly return a new instance. |
| return new ContactListItemData(); |
| } |
| |
| @Override |
| public ContactPickerData createContactPickerData(final Context context, |
| final ContactPickerDataListener listener) { |
| return mContactPickerData; |
| } |
| |
| @Override |
| public MediaPickerData createMediaPickerData(final Context context) { |
| return mMediaPickerData; |
| } |
| |
| @Override |
| public GalleryGridItemData createGalleryGridItemData() { |
| // This is a lightweight data holder object for each individual grid item for which |
| // we don't perform any data request, so we can directly return a new instance. |
| return new GalleryGridItemData(); |
| } |
| |
| @Override |
| public LaunchConversationData createLaunchConversationData( |
| final LaunchConversationDataListener listener) { |
| return new LaunchConversationData(listener); |
| } |
| |
| @Override |
| public PeopleOptionsItemData createPeopleOptionsItemData(final Context context) { |
| return new PeopleOptionsItemData(context); |
| } |
| |
| @Override |
| public PeopleAndOptionsData createPeopleAndOptionsData(final String conversationId, |
| final Context context, final PeopleAndOptionsDataListener listener) { |
| return mPeopleAndOptionsData; |
| } |
| |
| @Override |
| public VCardContactItemData createVCardContactItemData(final Context context, |
| final MessagePartData data) { |
| return new VCardContactItemData(context, data); |
| } |
| |
| @Override |
| public VCardContactItemData createVCardContactItemData(final Context context, |
| final Uri vCardUri) { |
| return new VCardContactItemData(context, vCardUri); |
| } |
| |
| @Override |
| public ParticipantListItemData createParticipantListItemData( |
| final ParticipantData participant) { |
| return new ParticipantListItemData(participant); |
| } |
| |
| @Override |
| public SubscriptionListData createSubscriptonListData(Context context) { |
| return new SubscriptionListData(context); |
| } |
| |
| @Override |
| public SettingsData createSettingsData(Context context, SettingsDataListener listener) { |
| return mSettingsData; |
| } |
| |
| @Override |
| public DraftMessageData createDraftMessageData(String conversationId) { |
| return mDraftMessageData; |
| } |
| |
| @Override |
| public ActionService getActionService() { |
| return mActionService; |
| } |
| |
| @Override |
| public ConnectivityUtil getConnectivityUtil() { |
| return mConnectivityUtil; |
| } |
| |
| @Override |
| public SyncManager getSyncManager() { |
| return mSyncManager; |
| } |
| |
| @Override |
| public DatabaseWrapper getDatabase() { |
| // Note this will crash unless the application context is redirected... |
| // This is by design so that tests do not inadvertently use the real database |
| return mDatabaseHelper.getDatabase(); |
| } |
| |
| @Override |
| void onCreateTables(final SQLiteDatabase db) { |
| TestDataFactory.createTestData(db); |
| } |
| |
| @Override |
| public void onActivityResume() { |
| } |
| |
| @Override |
| public void onApplicationCreated() { |
| } |
| |
| @Override |
| public BlockedParticipantsData createBlockedParticipantsData(Context context, |
| BlockedParticipantsDataListener listener) { |
| return new BlockedParticipantsData(context, listener); |
| } |
| } |