From 4242645b8b044c05646a0b49d256967f1fd68cc8 Mon Sep 17 00:00:00 2001 From: Erica Chang Date: Tue, 3 May 2016 18:20:48 -0700 Subject: Contacts : only refresh ENABLED plugins onResume Since we only request refreshDynamicItems if there are ENABLED plugins, there would not be a callback that calls updatePlugin. In that case we'll manually call updatePlugin to manually check if any plugin related UI components need to be updated (eg. the current UI may show a plugin that's already gone into DISABLED/HIDDEN state) CD-616 Change-Id: I469960212e67844a63661e855daa7097ac186a05 --- .../contacts/activities/PeopleActivity.java | 13 +++++++---- .../quickcontact/QuickContactActivity.java | 26 +++++++++++++--------- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java index 1f4a00dd1..4528eab98 100644 --- a/src/com/android/contacts/activities/PeopleActivity.java +++ b/src/com/android/contacts/activities/PeopleActivity.java @@ -556,9 +556,15 @@ public class PeopleActivity extends ContactsActivity implements super.onResume(); onResumeInit(); - if (ContactsDataSubscription.get(this).subscribe(CALL_METHOD_HELPER_SUBSCRIBER_ID, + ContactsDataSubscription dataSubscription = ContactsDataSubscription.get(this); + if (dataSubscription.subscribe(CALL_METHOD_HELPER_SUBSCRIBER_ID, pluginsUpdatedReceiver)) { - ContactsDataSubscription.get(this).refreshDynamicItems(); + if (CallMethodFilters.getAllEnabledCallMethods(dataSubscription).size() > 0) { + dataSubscription.refreshDynamicItems(); + } else { + // double check if the UI needs to update in case of plugin state changes + updatePlugins(null); + } } } @@ -1892,8 +1898,7 @@ public class PeopleActivity extends ContactsActivity implements } } - private synchronized void updatePlugins(HashMap - callMethodInfo) { + private synchronized void updatePlugins(HashMap callMethodInfo) { HashMap newCmMap = (HashMap) CallMethodFilters.getAllEnabledCallMethods( ContactsDataSubscription.get(this)); diff --git a/src/com/android/contacts/quickcontact/QuickContactActivity.java b/src/com/android/contacts/quickcontact/QuickContactActivity.java index f0885273c..a655329f2 100644 --- a/src/com/android/contacts/quickcontact/QuickContactActivity.java +++ b/src/com/android/contacts/quickcontact/QuickContactActivity.java @@ -1292,10 +1292,17 @@ public class QuickContactActivity extends ContactsActivity implements @Override protected void onResume() { super.onResume(); - if (ContactsDataSubscription.get(this) - .subscribe(CALL_METHOD_SUBSCRIBER_ID, pluginsUpdatedReceiver)) { + ContactsDataSubscription dataSubscription = ContactsDataSubscription.get(this); + if (dataSubscription.subscribe(CALL_METHOD_SUBSCRIBER_ID, pluginsUpdatedReceiver)) { if (DEBUG) Log.d(TAG, "ContactsDataSubscription infoReady"); - ContactsDataSubscription.get(this).refreshDynamicItems(); + if (CallMethodFilters.getAllEnabledCallMethods(dataSubscription).size() > 0) { + // only refresh if there are ENABLED plugins + dataSubscription.refreshDynamicItems(); + } else { + // double check if UI needs update in case plugin status changes between + // ENABLED and DISABLED or ENABLED and HIDDEN or DISABLED and HIDDEN + updatePlugins(null); + } } else { if (DEBUG) Log.d(TAG, "ContactsDataSubscription info NOT Ready"); } @@ -1503,13 +1510,11 @@ public class QuickContactActivity extends ContactsActivity implements final ResolveCache cache = ResolveCache.getInstance(this); Set pluginMimeExcluded; Set pluginMimeIncluded; + ContactsDataSubscription subscription = ContactsDataSubscription.get(this); if (ContactsDataSubscription.infoReady()) { - mCallMethodMap = CallMethodFilters.getAllEnabledAndHiddenCallMethods( - ContactsDataSubscription.get(this)); - pluginMimeExcluded = MimeTypeUtils.getAllEnabledVideoImMimeSet( - ContactsDataSubscription.get(this)); - pluginMimeIncluded = MimeTypeUtils.getAllEnabledVoiceMimeSet( - ContactsDataSubscription.get(this)); + mCallMethodMap = CallMethodFilters.getAllEnabledAndHiddenCallMethods(subscription); + pluginMimeExcluded = MimeTypeUtils.getAllEnabledVideoImMimeSet(subscription); + pluginMimeIncluded = MimeTypeUtils.getAllEnabledVoiceMimeSet(subscription); if (DEBUG) { Log.d(TAG, "plugins size:" + mCallMethodMap.size()); @@ -3782,7 +3787,8 @@ public class QuickContactActivity extends ContactsActivity implements if (newCmMap.containsKey(cn)) { // Check if update needed CallMethodInfo newCmi = newCmMap.remove(cn); - if (newCmi.mIsAuthenticated != cmi.mIsAuthenticated) { + if (newCmi.mStatus != cmi.mStatus || + newCmi.mIsAuthenticated != cmi.mIsAuthenticated) { updateNeeded = true; } } else { -- cgit v1.2.3