summaryrefslogtreecommitdiffstats
path: root/info_lookup
diff options
context:
space:
mode:
authorRohit Yengisetty <rohit@cyngn.com>2016-03-07 10:42:09 -0600
committerRichard MacGregor <rmacgregor@cyngn.com>2016-03-25 11:42:19 -0700
commitf5e144db9e251ba6248de9e71ab6fdd10424d998 (patch)
tree417a9c12026ec84f75e96a935cb5cb7f25bd4c27 /info_lookup
parent1e182c5a08517f5503c3a45eadbc53369ebd6974 (diff)
downloadpackages_apps_ContactsCommon-f5e144db9e251ba6248de9e71ab6fdd10424d998.tar.gz
packages_apps_ContactsCommon-f5e144db9e251ba6248de9e71ab6fdd10424d998.tar.bz2
packages_apps_ContactsCommon-f5e144db9e251ba6248de9e71ab6fdd10424d998.zip
Provide implementations for new LookupProvider APIs
- adding blockingFetchInfo - propagating result codes via StatusCode - add AmbientSDK AAR dependency Change-Id: I3e9586dc860b3d566e19aafff9aec09927799c0a
Diffstat (limited to 'info_lookup')
-rw-r--r--info_lookup/src/com/cyanogen/lookup/phonenumber/provider/LookupProviderImpl.java92
1 files changed, 62 insertions, 30 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 246097bc..9681e077 100644
--- a/info_lookup/src/com/cyanogen/lookup/phonenumber/provider/LookupProviderImpl.java
+++ b/info_lookup/src/com/cyanogen/lookup/phonenumber/provider/LookupProviderImpl.java
@@ -32,6 +32,7 @@ import com.cyanogen.ambient.callerinfo.util.CallerInfoHelper;
import com.cyanogen.ambient.callerinfo.util.ProviderInfo;
import com.cyanogen.ambient.common.CyanogenAmbientUtil;
import com.cyanogen.ambient.common.api.AmbientApiClient;
+import com.cyanogen.ambient.common.api.CommonStatusCodes;
import com.cyanogen.ambient.common.api.PendingResult;
import com.cyanogen.ambient.common.api.Result;
import com.cyanogen.ambient.common.api.ResultCallback;
@@ -39,9 +40,12 @@ import com.cyanogen.ambient.common.api.Status;
import com.cyanogen.lookup.phonenumber.contract.LookupProvider;
import com.cyanogen.lookup.phonenumber.request.LookupRequest;
import com.cyanogen.lookup.phonenumber.response.LookupResponse;
+import com.cyanogen.lookup.phonenumber.response.StatusCode;
+
+import java.util.concurrent.TimeUnit;
/**
- * @author Rohit Yengisetty
+ * Implementation of {@link LookupProvider} that delegates calls to Ambient
*/
public class LookupProviderImpl implements LookupProvider {
@@ -105,6 +109,31 @@ public class LookupProviderImpl implements LookupProvider {
@Override
public void fetchInfo(final LookupRequest request) {
+ PendingResult<LookupByNumberResult> pendingResult = issueAmbientRequest(request);
+ if (pendingResult != null) {
+ pendingResult.setResultCallback(new ResultCallback<LookupByNumberResult>() {
+ @Override
+ public void onResult(LookupByNumberResult lookupByNumberResult) {
+ LookupResponse lookupResponse = createLookupResponse(lookupByNumberResult);
+ request.mCallback.onNewInfo(request, lookupResponse);
+ }
+ });
+ }
+ }
+
+ @Override
+ public LookupResponse blockingFetchInfo(final LookupRequest request) {
+ PendingResult<LookupByNumberResult> pendingResult = issueAmbientRequest(request);
+ if (pendingResult != null) {
+ LookupByNumberResult lookupResult = pendingResult.await(5L, TimeUnit.SECONDS);
+ LookupResponse lookupResponse = createLookupResponse(lookupResult);
+ return lookupResponse;
+ }
+
+ return null;
+ }
+
+ private PendingResult<LookupByNumberResult> issueAmbientRequest(LookupRequest request) {
String number = request.mPhoneNumber;
if (!TextUtils.isEmpty(number) && mAmbientClient != null &&
(mAmbientClient.isConnecting() || mAmbientClient.isConnected())) {
@@ -128,42 +157,45 @@ public class LookupProviderImpl implements LookupProvider {
break;
}
com.cyanogen.ambient.callerinfo.extension.LookupRequest ambientRequest =
- new com.cyanogen.ambient.callerinfo.extension.LookupRequest(number, originCode);
+ new com.cyanogen.ambient.callerinfo.extension.LookupRequest(number,
+ com.cyanogen.ambient.callerinfo.extension.LookupRequest.ORIGIN_CODE_HISTORY);
PendingResult<LookupByNumberResult> result = CallerInfoServices.CallerInfoApi.
lookupByNumber(mAmbientClient, ambientRequest);
- result.setResultCallback(new ResultCallback<LookupByNumberResult>() {
- @Override
- public void onResult(LookupByNumberResult lookupByNumberResult) {
- synchronized (LookupProviderImpl.this) {
- if (mProviderInfo == null) {
- // lookup provider has been inactivated
- return;
- }
+ return result;
+ }
- if (!lookupByNumberResult.getStatus().isSuccess()) {
- return;
- }
+ return null;
+ }
- CallerInfo callerInfo = lookupByNumberResult.getCallerInfo();
- if (!hasUsableInfo(callerInfo)) {
- return;
- }
+ private LookupResponse createLookupResponse(LookupByNumberResult lookupByNumberResult) {
+ LookupResponse lookupResponse = new LookupResponse();
+ CallerInfo callerInfo = lookupByNumberResult.getCallerInfo();
+ int lookupStatusCode = lookupByNumberResult.getStatus().getStatusCode();
- // 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);
- }
- }
- });
+ // always include Provider information
+ lookupResponse.mProviderName = mProviderInfo.getTitle();
+ lookupResponse.mAttributionLogo = mProviderInfo.getBadgeLogo();
+
+ if (lookupStatusCode == CommonStatusCodes.RESOLUTION_REQUIRED) {
+ lookupResponse.mStatusCode = StatusCode.CONFIG_ERROR;
+ }
+ else if (!lookupByNumberResult.getStatus().isSuccess()) {
+ lookupResponse.mStatusCode = StatusCode.FAIL;
+ } else if (!hasUsableInfo(callerInfo)) {
+ lookupResponse.mStatusCode = StatusCode.NO_RESULT;
+ } else {
+ lookupResponse.mStatusCode = StatusCode.SUCCESS;
+ // map CallerInfo to LookupResponse
+ lookupResponse.mName = callerInfo.getName();
+ lookupResponse.mNumber = callerInfo.getNumber();
+ lookupResponse.mAddress = callerInfo.getAddress();
+ lookupResponse.mPhotoUrl = callerInfo.getPhotoUrl();
+ lookupResponse.mSpamCount = callerInfo.getSpamCount();
+ lookupResponse.mIsSpam = callerInfo.isSpam();
}
+
+ return lookupResponse;
}
private boolean hasUsableInfo(CallerInfo callerInfo) {