summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Bird <sbird@cyngn.com>2016-04-07 18:32:42 -0700
committerErica Chang <echang@cyngn.com>2016-04-26 22:46:22 -0700
commita8593b070835820e7504cfc740cefd287b1a1ec5 (patch)
treea3d72514ad4a8a6b0c616239d08a395e6b7d1277
parent68cf084ceac4daccbbc16ad3335c3214d3934da6 (diff)
downloadandroid_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
-rw-r--r--src/com/android/contacts/ContactsApplication.java7
-rw-r--r--src/com/android/contacts/activities/PeopleActivity.java23
-rw-r--r--src/com/android/contacts/incall/CallMethodStatusReceiver.java4
-rw-r--r--src/com/android/contacts/incall/InCallMetricsHelper.java8
-rw-r--r--src/com/android/contacts/incall/InCallPluginHelper.java133
-rw-r--r--src/com/android/contacts/incall/InCallPluginInfo.java2
-rw-r--r--src/com/android/contacts/incall/InCallPluginUtils.java21
-rw-r--r--src/com/android/contacts/interactions/CallLogInteractionsLoader.java13
-rw-r--r--src/com/android/contacts/list/PluginContactBrowseListFragment.java3
-rw-r--r--src/com/android/contacts/quickcontact/QuickContactActivity.java71
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;