diff options
author | Stephen Bird <sbird@cyngn.com> | 2016-04-07 18:32:42 -0700 |
---|---|---|
committer | Erica Chang <echang@cyngn.com> | 2016-04-26 22:46:22 -0700 |
commit | a8593b070835820e7504cfc740cefd287b1a1ec5 (patch) | |
tree | a3d72514ad4a8a6b0c616239d08a395e6b7d1277 | |
parent | 68cf084ceac4daccbbc16ad3335c3214d3934da6 (diff) | |
download | android_packages_apps_Contacts-a8593b070835820e7504cfc740cefd287b1a1ec5.tar.gz android_packages_apps_Contacts-a8593b070835820e7504cfc740cefd287b1a1ec5.tar.bz2 android_packages_apps_Contacts-a8593b070835820e7504cfc740cefd287b1a1ec5.zip |
[2/4] Update contacts for CallMethodHelper refactor
Change-Id: I9b165d9ddb3fd4e66657325447af08781c487a5d
10 files changed, 71 insertions, 214 deletions
diff --git a/src/com/android/contacts/ContactsApplication.java b/src/com/android/contacts/ContactsApplication.java index f0f86e9bc..caa3987d6 100644 --- a/src/com/android/contacts/ContactsApplication.java +++ b/src/com/android/contacts/ContactsApplication.java @@ -24,7 +24,6 @@ import android.content.ContentUris; import android.content.Context; import android.content.SharedPreferences; import android.os.AsyncTask; -import android.os.Bundle; import android.os.StrictMode; import android.preference.PreferenceManager; import android.provider.ContactsContract.Contacts; @@ -32,13 +31,11 @@ import android.util.Log; import com.android.contacts.common.ContactPhotoManager; import com.android.contacts.common.list.ContactListFilterController; -import com.android.contacts.common.model.AccountTypeManager; import com.android.contacts.common.testing.InjectedServices; import com.android.contacts.common.util.Constants; import com.android.contacts.commonbind.analytics.AnalyticsUtil; -import com.android.contacts.incall.InCallPluginHelper; import com.android.contacts.incall.InCallMetricsHelper; -import com.android.phone.common.incall.CallMethodHelper; +import com.android.phone.common.incall.ContactsDataSubscription; import com.google.common.annotations.VisibleForTesting; @@ -127,7 +124,7 @@ public final class ContactsApplication extends Application { } AnalyticsUtil.initialize(this); - InCallPluginHelper.init(this); + ContactsDataSubscription.init(this); InCallMetricsHelper.init(this); } diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java index 5df9ebe35..cb284a754 100644 --- a/src/com/android/contacts/activities/PeopleActivity.java +++ b/src/com/android/contacts/activities/PeopleActivity.java @@ -59,7 +59,6 @@ import android.widget.Toolbar; import com.android.contacts.ContactsActivity; import com.android.contacts.incall.InCallMetricsHelper; -import com.android.contacts.incall.InCallPluginHelper; import com.android.contacts.incall.InCallPluginInfo; import com.android.contacts.R; import com.android.contacts.activities.ActionBarAdapter.TabState; @@ -110,9 +109,10 @@ import com.android.contacts.common.vcard.ExportVCardActivity; import com.android.contacts.common.vcard.VCardCommonArguments; import com.android.contacts.util.DialogManager; import com.android.contactsbind.HelpUtils; -import com.android.phone.common.incall.CallMethodHelper; +import com.android.phone.common.incall.ContactsDataSubscription; import com.android.phone.common.incall.CallMethodInfo; -import com.android.phone.common.incall.CallMethodUtils; +import com.android.phone.common.incall.utils.CallMethodFilters; +import com.android.phone.common.incall.utils.CallMethodUtils; import java.util.HashMap; import java.util.List; @@ -543,7 +543,7 @@ public class PeopleActivity extends ContactsActivity implements @Override protected void onPause() { - InCallPluginHelper.unsubscribe(CALL_METHOD_HELPER_SUBSCRIBER_ID); + ContactsDataSubscription.get(this).unsubscribe(CALL_METHOD_HELPER_SUBSCRIBER_ID); mOptionsMenuContactsAvailable = false; mProviderStatusWatcher.stop(); super.onPause(); @@ -556,9 +556,9 @@ public class PeopleActivity extends ContactsActivity implements super.onResume(); onResumeInit(); - if (InCallPluginHelper.subscribe(CALL_METHOD_HELPER_SUBSCRIBER_ID, + if (ContactsDataSubscription.get(this).subscribe(CALL_METHOD_HELPER_SUBSCRIBER_ID, pluginsUpdatedReceiver)) { - InCallPluginHelper.refreshDynamicItems(); + ContactsDataSubscription.get(this).refreshDynamicItems(); } } @@ -1848,11 +1848,11 @@ public class PeopleActivity extends ContactsActivity implements return TabState.ALL; } - private CallMethodHelper.CallMethodReceiver pluginsUpdatedReceiver = - new CallMethodHelper.CallMethodReceiver() { + private ContactsDataSubscription.PluginChanged<CallMethodInfo> pluginsUpdatedReceiver = + new ContactsDataSubscription.PluginChanged<CallMethodInfo>() { @Override - public void onChanged(HashMap<ComponentName, CallMethodInfo> callMethodInfos) { - updatePlugins(callMethodInfos); + public void onChanged(HashMap<ComponentName, CallMethodInfo> pluginInfos) { + updatePlugins(pluginInfos); } }; @@ -1890,7 +1890,8 @@ public class PeopleActivity extends ContactsActivity implements private synchronized void updatePlugins(HashMap<ComponentName, CallMethodInfo> callMethodInfo) { HashMap<ComponentName, CallMethodInfo> newCmMap = (HashMap<ComponentName, - CallMethodInfo>) CallMethodHelper.getAllEnabledCallMethods(); + CallMethodInfo>) CallMethodFilters.getAllEnabledCallMethods( + ContactsDataSubscription.get(this)); if (DEBUG) Log.d(TAG, "updatePlugins newCmMap size:" + newCmMap.size()); boolean updateTabs = false; String lastSelectedTabTag = mTabTitles.get(mActionBarAdapter.getCurrentTab()).mTag; diff --git a/src/com/android/contacts/incall/CallMethodStatusReceiver.java b/src/com/android/contacts/incall/CallMethodStatusReceiver.java index ee86e1da5..281c49d09 100644 --- a/src/com/android/contacts/incall/CallMethodStatusReceiver.java +++ b/src/com/android/contacts/incall/CallMethodStatusReceiver.java @@ -16,6 +16,8 @@ package com.android.contacts.incall; +import com.android.phone.common.incall.ContactsDataSubscription; + import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; @@ -28,6 +30,6 @@ public class CallMethodStatusReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (DEBUG) Log.d(TAG, "plugin status changed"); - InCallPluginHelper.refresh(); + ContactsDataSubscription.get(context).refresh(); } } diff --git a/src/com/android/contacts/incall/InCallMetricsHelper.java b/src/com/android/contacts/incall/InCallMetricsHelper.java index 5b041a29e..a571214bb 100644 --- a/src/com/android/contacts/incall/InCallMetricsHelper.java +++ b/src/com/android/contacts/incall/InCallMetricsHelper.java @@ -32,6 +32,7 @@ import android.util.Log; import com.android.phone.common.ambient.AmbientConnection; import com.android.phone.common.incall.CallMethodInfo; +import com.android.phone.common.incall.ContactsDataSubscription; import com.cyanogen.ambient.analytics.AnalyticsServices; import com.cyanogen.ambient.analytics.Event; import com.cyanogen.ambient.incall.InCallServices; @@ -169,7 +170,8 @@ public class InCallMetricsHelper { Events event = cv.containsKey(Parameters.EVENT_NAME.toCol()) ? Events.valueOf(cv.getAsString(Parameters.EVENT_NAME.toCol())) : Events.UNKNOWN; - Set<String> plugins = InCallPluginHelper.getAllPluginComponentNames(); + Set<String> plugins = ContactsDataSubscription.get(context) + .getAllPluginComponentNames(); sendEvent(context, cat, event, getExtraFields(cat, event, cv), plugins); } } @@ -423,8 +425,8 @@ public class InCallMetricsHelper { if (!statsOptIn(context)) { return; } - HashMap<ComponentName, CallMethodInfo> plugins = InCallPluginHelper - .getAllCallMethods(); + HashMap<ComponentName, CallMethodInfo> plugins = ContactsDataSubscription.get + (context).getPluginInfo(); HashMap<String, String> pluginMap = new HashMap<String, String>(); for (CallMethodInfo cmi : plugins.values()) { if (DEBUG) { diff --git a/src/com/android/contacts/incall/InCallPluginHelper.java b/src/com/android/contacts/incall/InCallPluginHelper.java deleted file mode 100644 index f0106bab0..000000000 --- a/src/com/android/contacts/incall/InCallPluginHelper.java +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright (C) 2016 The CyanogenMod 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.contacts.incall; - -import android.content.ComponentName; -import android.content.Context; -import android.os.Handler; -import android.util.Log; - -import com.android.phone.common.ambient.AmbientConnection; -import com.android.phone.common.incall.CallMethodHelper; -import com.android.phone.common.incall.CallMethodInfo; -import com.cyanogen.ambient.common.api.PendingResult; -import com.cyanogen.ambient.common.api.ResultCallback; -import com.cyanogen.ambient.discovery.util.NudgeKey; -import com.cyanogen.ambient.incall.extension.InCallContactInfo; -import com.cyanogen.ambient.incall.InCallServices; -import com.cyanogen.ambient.incall.results.InstalledPluginsResult; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Set; - -public class InCallPluginHelper extends CallMethodHelper { - private static final String TAG = InCallPluginHelper.class.getSimpleName(); - - protected static synchronized InCallPluginHelper getInstance() { - if (sInstance == null) { - sInstance = new InCallPluginHelper(); - } - return (InCallPluginHelper) sInstance; - } - - public static void init(Context context) { - InCallPluginHelper helper = getInstance(); - helper.mContext = context; - helper.mClient = AmbientConnection.CLIENT.get(context); - helper.mInCallApi = InCallServices.getInstance(); - helper.mMainHandler = new Handler(context.getMainLooper()); - - refresh(); - } - - public static void refresh() { - updateCallPlugins(); - } - - public static void refreshDynamicItems() { - HashMap<ResultCallback, PendingResult> apiCallbacks = new HashMap<ResultCallback, - PendingResult>(); - for (ComponentName cn : mCallMethodInfos.keySet()) { - getCallMethodAuthenticated(cn, apiCallbacks); - getCallMethodAccountHandle(cn, apiCallbacks); - } - executeAll(apiCallbacks); - } - - public static void refreshPendingIntents(InCallContactInfo contactInfo) { - for (ComponentName cn : mCallMethodInfos.keySet()) { - getInviteIntent(cn, contactInfo); - getDirectorySearchIntent(cn, contactInfo.mLookupUri); - } - } - - protected static void updateCallPlugins() { - if (DEBUG) Log.d(TAG, "+++updateCallPlugins"); - getInstance().mInCallApi.getInstalledPlugins(getInstance().mClient) - .setResultCallback(new ResultCallback<InstalledPluginsResult>() { - @Override - public void onResult(InstalledPluginsResult installedPluginsResult) { - // got installed components - mInstalledPlugins = installedPluginsResult.components; - - synchronized (mCallMethodInfos) { - mCallMethodInfos.clear(); - } - - if (mInstalledPlugins == null || mInstalledPlugins.size() == 0) { - broadcast(); - return; - } - - HashMap<ResultCallback, PendingResult> apiCallbacks = - new HashMap<ResultCallback, PendingResult>(); - for (ComponentName cn : mInstalledPlugins) { - mCallMethodInfos.put(cn, new CallMethodInfo()); - getCallMethodInfo(cn, apiCallbacks); - getCallMethodMimeType(cn, apiCallbacks); - getCallMethodStatus(cn, apiCallbacks); - getCallMethodVideoCallableMimeType(cn, apiCallbacks); - getCallMethodImMimeType(cn, apiCallbacks); - getCallMethodAuthenticated(cn, apiCallbacks); - getLoginIntent(cn, apiCallbacks); - getNudgeConfiguration(cn, NudgeKey.INCALL_CONTACT_FRAGMENT_LOGIN, - apiCallbacks); - getNudgeConfiguration(cn, NudgeKey.INCALL_CONTACT_CARD_LOGIN, - apiCallbacks); - getNudgeConfiguration(cn, NudgeKey.INCALL_CONTACT_CARD_DOWNLOAD, - apiCallbacks); - getDefaultDirectorySearchIntent(cn, apiCallbacks); - // If you add any more callbacks, be sure to update - // EXPECTED_RESULT_CALLBACKS - // and EXPECTED_DYNAMIC_RESULT_CALLBACKS if the callback is dynamic - // with the proper count. - } - executeAll(apiCallbacks); - } - }); - } - - public static Set<String> getAllPluginComponentNames() { - Set<String> names = new HashSet<String>(); - HashMap<ComponentName, CallMethodInfo> plugins = InCallPluginHelper.getAllCallMethods(); - for (ComponentName cn : plugins.keySet()) { - names.add(cn.flattenToString()); - } - return names; - } -} diff --git a/src/com/android/contacts/incall/InCallPluginInfo.java b/src/com/android/contacts/incall/InCallPluginInfo.java index ec851e803..cca5c0048 100644 --- a/src/com/android/contacts/incall/InCallPluginInfo.java +++ b/src/com/android/contacts/incall/InCallPluginInfo.java @@ -66,7 +66,6 @@ public class InCallPluginInfo implements Parcelable { mCallMethodInfo.mLoginIconId = in.readInt(); mTabTag = in.readString(); mCallMethodInfo.mComponent = in.readParcelable(ComponentName.class.getClassLoader()); - mCallMethodInfo.mNudgeComponent = in.readParcelable(ComponentName.class.getClassLoader()); mCallMethodInfo.mDependentPackage = in.readString(); mCallMethodInfo.mMimeType = in.readString(); mCallMethodInfo.mImMimeType = in.readString(); @@ -86,7 +85,6 @@ public class InCallPluginInfo implements Parcelable { dest.writeInt(mCallMethodInfo.mLoginIconId); dest.writeString(mTabTag); dest.writeParcelable(mCallMethodInfo.mComponent, flags); - dest.writeParcelable(mCallMethodInfo.mNudgeComponent, flags); dest.writeString(mCallMethodInfo.mDependentPackage); dest.writeString(mCallMethodInfo.mMimeType); dest.writeString(mCallMethodInfo.mImMimeType); diff --git a/src/com/android/contacts/incall/InCallPluginUtils.java b/src/com/android/contacts/incall/InCallPluginUtils.java index 4c1828bf6..0c0ef9702 100644 --- a/src/com/android/contacts/incall/InCallPluginUtils.java +++ b/src/com/android/contacts/incall/InCallPluginUtils.java @@ -26,30 +26,21 @@ import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.net.Uri; import android.provider.ContactsContract; -import android.telephony.PhoneNumberUtils; import android.text.TextUtils; -import android.util.ArrayMap; import android.util.Log; import com.android.contacts.common.ContactPresenceIconUtil; import com.android.contacts.common.ContactStatusUtil; -import com.android.contacts.common.model.AccountTypeManager; import com.android.contacts.common.model.Contact; import com.android.contacts.common.model.RawContact; -import com.android.contacts.common.model.account.AccountType; -import com.android.contacts.common.model.account.AccountWithDataSet; import com.android.contacts.common.model.dataitem.DataItem; import com.android.contacts.common.util.DataStatus; import com.android.contacts.common.util.UriUtils; -import com.android.phone.common.ambient.AmbientConnection; -import com.android.phone.common.incall.CallMethodHelper; import com.android.phone.common.incall.CallMethodInfo; -import com.android.phone.common.util.StartInCallCallReceiver; -import com.cyanogen.ambient.common.api.AmbientApiClient; -import com.cyanogen.ambient.incall.InCallServices; +import com.android.phone.common.incall.ContactsDataSubscription; +import com.android.phone.common.incall.utils.CallMethodFilters; import com.cyanogen.ambient.incall.extension.InCallContactInfo; -import com.cyanogen.ambient.incall.extension.OriginCodes; -import com.cyanogen.ambient.incall.extension.StartCallRequest; + import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -169,10 +160,10 @@ public class InCallPluginUtils { return presenceInfo; } - public static ArrayList<ComponentName> gatherPluginHistory() { + public static ArrayList<ComponentName> gatherPluginHistory(Context context) { ArrayList<ComponentName> cnList = new ArrayList<ComponentName>(); - HashMap<ComponentName, CallMethodInfo> plugins = InCallPluginHelper - .getAllEnabledCallMethods(); + HashMap<ComponentName, CallMethodInfo> plugins = CallMethodFilters + .getAllEnabledCallMethods(ContactsDataSubscription.get(context)); for (ComponentName cn : plugins.keySet()) { cnList.add(cn); } diff --git a/src/com/android/contacts/interactions/CallLogInteractionsLoader.java b/src/com/android/contacts/interactions/CallLogInteractionsLoader.java index 43f163016..7035ffb1d 100644 --- a/src/com/android/contacts/interactions/CallLogInteractionsLoader.java +++ b/src/com/android/contacts/interactions/CallLogInteractionsLoader.java @@ -27,7 +27,8 @@ import android.provider.CallLog.Calls; import android.telephony.PhoneNumberUtils; import android.text.TextUtils; -import com.android.contacts.incall.InCallPluginHelper; +import com.android.phone.common.incall.ContactsDataSubscription; +import com.android.phone.common.incall.utils.CallMethodFilters; import com.google.common.annotations.VisibleForTesting; import com.android.contacts.common.util.PermissionsUtil; @@ -71,9 +72,9 @@ public class CallLogInteractionsLoader extends AsyncTaskLoader<List<ContactInter } } // add plugin entries - if (InCallPluginHelper.infoReady()) { - HashMap<ComponentName, CallMethodInfo> inCallPlugins = InCallPluginHelper - .getAllEnabledCallMethods(); + if (ContactsDataSubscription.infoReady()) { + HashMap<ComponentName, CallMethodInfo> inCallPlugins = CallMethodFilters + .getAllEnabledCallMethods(ContactsDataSubscription.get(getContext())); if (inCallPlugins != null) { for (ComponentName cn : inCallPlugins.keySet()) { List<String> accountList = mPluginAccountsMap.get(cn); @@ -172,8 +173,8 @@ public class CallLogInteractionsLoader extends AsyncTaskLoader<List<ContactInter { // PSTN dialed through a plugin if (cmi == null) { - cmi = InCallPluginHelper.getCallMethod(ComponentName.unflattenFromString - (interaction.getPluginPkgName())); + cmi = ContactsDataSubscription.get(mContext).getPluginIfExists(ComponentName + .unflattenFromString(interaction.getPluginPkgName())); } // No matching plugin, skip if (cmi == null) continue; diff --git a/src/com/android/contacts/list/PluginContactBrowseListFragment.java b/src/com/android/contacts/list/PluginContactBrowseListFragment.java index 29ef148e0..09060f251 100644 --- a/src/com/android/contacts/list/PluginContactBrowseListFragment.java +++ b/src/com/android/contacts/list/PluginContactBrowseListFragment.java @@ -58,7 +58,8 @@ import com.android.contacts.common.list.ContactListItemView; import com.android.contacts.common.list.DefaultContactListAdapter; import com.android.contacts.common.list.ProfileAndContactsLoader; import com.android.contacts.incall.InCallPluginUtils; -import com.android.phone.common.incall.CallMethodUtils; +import com.android.phone.common.incall.utils.CallMethodUtils; + import java.util.List; public class PluginContactBrowseListFragment extends ContactEntryListFragment<ContactListAdapter> diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java index 1b8a8daf2..b3a2e60e0 100644 --- a/src/com/android/contacts/quickcontact/QuickContactActivity.java +++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java @@ -53,7 +53,6 @@ import android.preference.PreferenceManager; import android.provider.CalendarContract; import android.os.Handler; import android.os.Message; -import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Email; import android.provider.ContactsContract.CommonDataKinds.Event; import android.provider.ContactsContract.CommonDataKinds.GroupMembership; @@ -153,7 +152,6 @@ import com.android.contacts.detail.ContactDisplayUtils; import com.android.contacts.editor.ContactEditorFragment; import com.android.contacts.editor.EditorIntents; import com.android.contacts.incall.InCallMetricsHelper; -import com.android.contacts.incall.InCallPluginHelper; import com.android.contacts.incall.InCallPluginUtils; import com.android.contacts.interactions.CalendarInteractionsLoader; import com.android.contacts.interactions.CallLogInteraction; @@ -174,9 +172,11 @@ import com.android.contacts.util.StructuredPostalUtils; import com.android.contacts.widget.MultiShrinkScroller; import com.android.contacts.widget.MultiShrinkScroller.MultiShrinkScrollerListener; import com.android.contacts.widget.QuickContactImageView; -import com.android.phone.common.incall.CallMethodHelper; +import com.android.phone.common.incall.ContactsDataSubscription; import com.android.phone.common.incall.CallMethodInfo; -import com.android.phone.common.incall.CallMethodUtils; +import com.android.phone.common.incall.utils.CallMethodFilters; +import com.android.phone.common.incall.utils.CallMethodUtils; +import com.android.phone.common.incall.utils.MimeTypeUtils; import com.cyanogen.ambient.discovery.util.NudgeKey; import com.cyanogen.ambient.incall.extension.OriginCodes; import com.cyanogen.ambient.plugin.PluginStatus; @@ -477,8 +477,9 @@ public class QuickContactActivity extends ContactsActivity implements CallMethodInfo cmi = null; if (entryTag.getEntry() == null || entryTag.getEntry().getCallMethodInfo() == null) { - cmi = InCallPluginHelper.getCallMethod(ComponentName.unflattenFromString( - intent.getStringExtra(InCallPluginUtils.KEY_COMPONENT))); + cmi = ContactsDataSubscription.get(QuickContactActivity.this) + .getPluginIfExists(ComponentName.unflattenFromString( + intent.getStringExtra(InCallPluginUtils.KEY_COMPONENT))); cmi.placeCall(OriginCodes.CONTACTS_CARD, intent.getStringExtra(InCallPluginUtils.KEY_NUMBER), getBaseContext(), false, false, @@ -1295,11 +1296,12 @@ public class QuickContactActivity extends ContactsActivity implements @Override protected void onResume() { super.onResume(); - if (InCallPluginHelper.subscribe(CALL_METHOD_SUBSCRIBER_ID, pluginsUpdatedReceiver)) { - if (DEBUG) Log.d(TAG, "InCallPluginHelper infoReady"); - InCallPluginHelper.refreshDynamicItems(); + if (ContactsDataSubscription.get(this) + .subscribe(CALL_METHOD_SUBSCRIBER_ID, pluginsUpdatedReceiver)) { + if (DEBUG) Log.d(TAG, "ContactsDataSubscription infoReady"); + ContactsDataSubscription.get(this).refreshDynamicItems(); } else { - if (DEBUG) Log.d(TAG, "InCallPluginHelper info NOT Ready"); + if (DEBUG) Log.d(TAG, "ContactsDataSubscription info NOT Ready"); } // If returning from a launched activity, repopulate the contact and about card if (mHasIntentLaunched) { @@ -1320,7 +1322,7 @@ public class QuickContactActivity extends ContactsActivity implements protected void onPause() { super.onPause(); - InCallPluginHelper.unsubscribe(CALL_METHOD_SUBSCRIBER_ID); + ContactsDataSubscription.get(this).unsubscribe(CALL_METHOD_SUBSCRIBER_ID); } private synchronized void populateContactAndAboutCard(Cp2DataCardModel cp2DataCardModel) { @@ -1505,11 +1507,15 @@ public class QuickContactActivity extends ContactsActivity implements final ResolveCache cache = ResolveCache.getInstance(this); Set<String> pluginMimeExcluded; Set<String> pluginMimeIncluded; - if (InCallPluginHelper.infoReady()) { + if (ContactsDataSubscription.infoReady()) { mCallMethodMap = (HashMap<ComponentName, CallMethodInfo>) - InCallPluginHelper.getAllEnabledAndHiddenCallMethods(); - pluginMimeExcluded = InCallPluginHelper.getAllEnabledVideoImMimeSet(); - pluginMimeIncluded = InCallPluginHelper.getAllEnabledVoiceMimeSet(); + CallMethodFilters.getAllEnabledAndHiddenCallMethods( + ContactsDataSubscription.get(this)); + pluginMimeExcluded = MimeTypeUtils.getAllEnabledVideoImMimeSet( + ContactsDataSubscription.get(this)); + pluginMimeIncluded = MimeTypeUtils.getAllEnabledVoiceMimeSet( + ContactsDataSubscription.get(this)); + if (DEBUG) { Log.d(TAG, "plugins size:" + mCallMethodMap.size()); Log.d(TAG, "mimeExcluded size:" + pluginMimeExcluded.size()); @@ -1610,7 +1616,7 @@ public class QuickContactActivity extends ContactsActivity implements } } } - if (!mContactData.isUserProfile() && InCallPluginHelper.infoReady() && mCallMethodMap + if (!mContactData.isUserProfile() && ContactsDataSubscription.infoReady() && mCallMethodMap .size() > 0) { addAllInCallPluginOtherEntries(contactCardEntries, pluginAccountsMap); } @@ -2469,7 +2475,8 @@ public class QuickContactActivity extends ContactsActivity implements if (DEBUG) Log.d(TAG, "checkAndBindContactData," + withBlockHelper + " " + onlyStartAsyncTask); // Update pending Intents - InCallPluginHelper.refreshPendingIntents(InCallPluginUtils.getInCallContactInfo(contact)); + ContactsDataSubscription.refreshPendingIntents( + InCallPluginUtils.getInCallContactInfo(contact)); if (mIsUpdating.get() && mEntriesAndActionsTask != null && !mEntriesAndActionsTask .isCancelled()) { @@ -3560,7 +3567,8 @@ public class QuickContactActivity extends ContactsActivity implements List<Entry> entries = new ArrayList<Entry>(); for (DataItem dataItem : dataItems) { CallMethodInfo cmi = - InCallPluginHelper.getMethodForMimeType(dataItem.getMimeType(), true); + CallMethodFilters.getMethodForMimeType(dataItem.getMimeType(), true, + ContactsDataSubscription.get(this)); Entry entry; RawContact rawContact = dataItemMap.get(dataItem); String contactAccountHandle = rawContact.getSourceId(); @@ -3625,7 +3633,8 @@ public class QuickContactActivity extends ContactsActivity implements return; } CallMethodInfo cmiStored = entry.getCallMethodInfo(); - CallMethodInfo cmi = InCallPluginHelper.getCallMethod(cmiStored.mComponent); + CallMethodInfo cmi = ContactsDataSubscription.get(this).getPluginIfExists(cmiStored + .mComponent); Intent intent = tag.getIntent(); if (cmi == null || intent == null) { return; @@ -3679,24 +3688,11 @@ public class QuickContactActivity extends ContactsActivity implements } else if (intent.getAction().equals(ACTION_INCALL_PLUGIN_INVITE)) { if (cmi.mInviteIntent != null) { cmi.mInviteIntent.send(); - } else { - cmi.mInviteIntent = InCallPluginHelper.getInviteIntentSync(cmi.mComponent, - InCallPluginUtils.getInCallContactInfo(mContactData)); - if (cmi.mInviteIntent != null) { - cmi.mInviteIntent.send(); - } } InCallMetricsHelper.increaseInviteCount(this, cmi.mComponent.flattenToString()); } else if (intent.getAction().equals(ACTION_INCALL_PLUGIN_DIRECTORY_SEARCH)) { if (cmi.mDirectorySearchIntent != null) { cmi.mDirectorySearchIntent.send(); - } else { - cmi.mDirectorySearchIntent = - InCallPluginHelper.getDirectorySearchIntentSync(cmi.mComponent, - InCallPluginUtils.getInCallContactInfo(mContactData).mLookupUri); - if (cmi.mDirectorySearchIntent != null) { - cmi.mDirectorySearchIntent.send(); - } } } } catch (PendingIntent.CanceledException e) { @@ -3732,11 +3728,11 @@ public class QuickContactActivity extends ContactsActivity implements mContactCard.setVisibility(View.VISIBLE); } - private CallMethodHelper.CallMethodReceiver pluginsUpdatedReceiver = - new CallMethodHelper.CallMethodReceiver() { + private ContactsDataSubscription.PluginChanged<CallMethodInfo> pluginsUpdatedReceiver = + new ContactsDataSubscription.PluginChanged<CallMethodInfo>() { @Override - public void onChanged(HashMap<ComponentName, CallMethodInfo> callMethodInfos) { - updatePlugins(callMethodInfos); + public void onChanged(HashMap<ComponentName, CallMethodInfo> pluginInfos) { + updatePlugins(pluginInfos); } }; @@ -3746,7 +3742,8 @@ public class QuickContactActivity extends ContactsActivity implements private void updatePlugins(HashMap<ComponentName, CallMethodInfo> callMethods) { if (DEBUG) Log.d(TAG, "+++updatePlugins"); HashMap<ComponentName, CallMethodInfo> newCmMap = (HashMap<ComponentName, CallMethodInfo>) - InCallPluginHelper.getAllEnabledAndHiddenCallMethods(); + CallMethodFilters.getAllEnabledAndHiddenCallMethods( + ContactsDataSubscription.get(this)); boolean updateNeeded = false; if (mContactData == null) { return; |