diff options
author | Rohit Yengisetty <rohit@cyngn.com> | 2016-03-16 12:09:54 -0700 |
---|---|---|
committer | Richard MacGregor <rmacgregor@cyngn.com> | 2016-03-25 11:42:18 -0700 |
commit | 58ba3f3fa3b352af3db0b342dac0ecd7cb04b4cf (patch) | |
tree | efbf63d9b7d622229d30ac2890125f4780d61e5e | |
parent | 8d3697c95e8ad5b224b754037adf64c494d1fd6c (diff) | |
download | android_packages_apps_ContactsCommon-58ba3f3fa3b352af3db0b342dac0ecd7cb04b4cf.tar.gz android_packages_apps_ContactsCommon-58ba3f3fa3b352af3db0b342dac0ecd7cb04b4cf.tar.bz2 android_packages_apps_ContactsCommon-58ba3f3fa3b352af3db0b342dac0ecd7cb04b4cf.zip |
LookupProviderImpl : add synchronization around ProviderInfo
Change-Id: Ib02feae696a2aebd6d2e744b0214e95c5c90a6dc
-rw-r--r-- | info_lookup/src/com/cyanogen/lookup/phonenumber/provider/LookupProviderImpl.java | 47 |
1 files changed, 27 insertions, 20 deletions
diff --git a/info_lookup/src/com/cyanogen/lookup/phonenumber/provider/LookupProviderImpl.java b/info_lookup/src/com/cyanogen/lookup/phonenumber/provider/LookupProviderImpl.java index 9836d3f1..246097bc 100644 --- a/info_lookup/src/com/cyanogen/lookup/phonenumber/provider/LookupProviderImpl.java +++ b/info_lookup/src/com/cyanogen/lookup/phonenumber/provider/LookupProviderImpl.java @@ -83,7 +83,9 @@ public class LookupProviderImpl implements LookupProvider { @Override public void onChange(boolean selfChange, Uri uri) { if (uri != null) { - mProviderInfo = CallerInfoHelper.getActiveProviderInfo(mContext); + synchronized (LookupProviderImpl.this) { + mProviderInfo = CallerInfoHelper.getActiveProviderInfo(mContext); + } } } }; @@ -133,27 +135,32 @@ public class LookupProviderImpl implements LookupProvider { result.setResultCallback(new ResultCallback<LookupByNumberResult>() { @Override public void onResult(LookupByNumberResult lookupByNumberResult) { + synchronized (LookupProviderImpl.this) { + if (mProviderInfo == null) { + // lookup provider has been inactivated + return; + } - if (!lookupByNumberResult.getStatus().isSuccess()) { - return; - } - CallerInfo callerInfo = lookupByNumberResult.getCallerInfo(); + if (!lookupByNumberResult.getStatus().isSuccess()) { + return; + } - if (!hasUsableInfo(callerInfo)) { - return; - } + CallerInfo callerInfo = lookupByNumberResult.getCallerInfo(); + if (!hasUsableInfo(callerInfo)) { + return; + } - // map caller info to LookupResponse - LookupResponse lookupResponse = new LookupResponse(); - lookupResponse.mProviderName = mProviderInfo.getTitle(); - lookupResponse.mName = callerInfo.getName(); - lookupResponse.mNumber = callerInfo.getNumber(); - lookupResponse.mAddress = callerInfo.getAddress(); - lookupResponse.mPhotoUrl = callerInfo.getPhotoUrl(); - lookupResponse.mAttributionLogo = mProviderInfo.getBadgeLogo(); - lookupResponse.mSpamCount = callerInfo.getSpamCount(); - - request.mCallback.onNewInfo(request, lookupResponse); + // map caller info to LookupResponse + LookupResponse lookupResponse = new LookupResponse(); + lookupResponse.mProviderName = mProviderInfo.getTitle(); + lookupResponse.mName = callerInfo.getName(); + lookupResponse.mNumber = callerInfo.getNumber(); + lookupResponse.mAddress = callerInfo.getAddress(); + lookupResponse.mPhotoUrl = callerInfo.getPhotoUrl(); + lookupResponse.mAttributionLogo = mProviderInfo.getBadgeLogo(); + lookupResponse.mSpamCount = callerInfo.getSpamCount(); + request.mCallback.onNewInfo(request, lookupResponse); + } } }); } @@ -245,7 +252,7 @@ public class LookupProviderImpl implements LookupProvider { } @Override - public String getUniqueIdentifier() { + public synchronized String getUniqueIdentifier() { if (mProviderInfo != null) { return mProviderInfo.getPackageName(); } |