summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/app
diff options
context:
space:
mode:
authortwyen <twyen@google.com>2018-05-01 14:53:14 -0700
committerWeijia Xu <weijiaxu@google.com>2018-05-04 06:14:46 +0000
commit34b1662b7532343341bbee22227e8ed82575864f (patch)
treeb58aa9f0742adf3808b07c9e195336552f1ca64c /java/com/android/dialer/app
parent27faa86cb0488d6c77dc5ff9946e58ae9ca40485 (diff)
Replace DuoConstants with interface.
They are not constant across different Duo implementations. TEST=TAP Bug: 76430187,78783816 Test: TAP PiperOrigin-RevId: 195001650 Change-Id: I4356d04c9eeac50fefd41e1142f3123591e93bc0
Diffstat (limited to 'java/com/android/dialer/app')
-rw-r--r--java/com/android/dialer/app/calllog/CallLogAdapter.java12
-rw-r--r--java/com/android/dialer/app/calllog/CallLogGroupBuilder.java12
-rw-r--r--java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java50
-rw-r--r--java/com/android/dialer/app/calllog/IntentProvider.java25
-rw-r--r--java/com/android/dialer/app/calllog/MissedCallNotifier.java4
5 files changed, 47 insertions, 56 deletions
diff --git a/java/com/android/dialer/app/calllog/CallLogAdapter.java b/java/com/android/dialer/app/calllog/CallLogAdapter.java
index b9bd23300..b99cef11f 100644
--- a/java/com/android/dialer/app/calllog/CallLogAdapter.java
+++ b/java/com/android/dialer/app/calllog/CallLogAdapter.java
@@ -76,7 +76,6 @@ import com.android.dialer.compat.android.provider.VoicemailCompat;
import com.android.dialer.configprovider.ConfigProviderBindings;
import com.android.dialer.duo.Duo;
import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.duo.DuoConstants;
import com.android.dialer.duo.DuoListener;
import com.android.dialer.enrichedcall.EnrichedCallCapabilities;
import com.android.dialer.enrichedcall.EnrichedCallComponent;
@@ -426,7 +425,10 @@ public class CallLogAdapter extends GroupingListAdapter
if (intentProvider == null) {
return false;
}
- return DuoConstants.PACKAGE_NAME.equals(intentProvider.getIntent(activity).getPackage());
+ return DuoComponent.get(activity)
+ .getDuo()
+ .getIntentType(intentProvider.getIntent(activity))
+ .isPresent();
}
};
@@ -568,7 +570,7 @@ public class CallLogAdapter extends GroupingListAdapter
new PhoneCallDetailsHelper(this.activity, resources, this.callLogCache);
callLogListItemHelper =
new CallLogListItemHelper(phoneCallDetailsHelper, resources, this.callLogCache);
- callLogGroupBuilder = new CallLogGroupBuilder(this);
+ callLogGroupBuilder = new CallLogGroupBuilder(activity.getApplicationContext(), this);
this.filteredNumberAsyncQueryHandler = Assert.isNotNull(filteredNumberAsyncQueryHandler);
contactsPreferences = new ContactsPreferences(this.activity);
@@ -1032,9 +1034,7 @@ public class CallLogAdapter extends GroupingListAdapter
String phoneAccountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
- if (DuoConstants.PHONE_ACCOUNT_COMPONENT_NAME
- .flattenToString()
- .equals(phoneAccountComponentName)) {
+ if (DuoComponent.get(activity).getDuo().isDuoAccount(phoneAccountComponentName)) {
entry.setIsDuoCall(true);
}
diff --git a/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java b/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java
index e4bae5e5f..26b3a6260 100644
--- a/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java
+++ b/java/com/android/dialer/app/calllog/CallLogGroupBuilder.java
@@ -16,6 +16,7 @@
package com.android.dialer.app.calllog;
+import android.content.Context;
import android.database.Cursor;
import android.support.annotation.Nullable;
import android.support.annotation.VisibleForTesting;
@@ -27,6 +28,7 @@ import com.android.dialer.calllogutils.CallbackActionHelper;
import com.android.dialer.calllogutils.CallbackActionHelper.CallbackAction;
import com.android.dialer.compat.AppCompatConstants;
import com.android.dialer.compat.telephony.TelephonyManagerCompat;
+import com.android.dialer.inject.ApplicationContext;
import com.android.dialer.phonenumbercache.CallLogQuery;
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
import java.util.Objects;
@@ -55,10 +57,13 @@ public class CallLogGroupBuilder {
public static final int DAY_GROUP_OTHER = 2;
/** Instance of the time object used for time calculations. */
private static final Time TIME = new Time();
+
+ private final Context appContext;
/** The object on which the groups are created. */
private final GroupCreator groupCreator;
- public CallLogGroupBuilder(GroupCreator groupCreator) {
+ public CallLogGroupBuilder(@ApplicationContext Context appContext, GroupCreator groupCreator) {
+ this.appContext = appContext;
this.groupCreator = groupCreator;
}
@@ -97,7 +102,7 @@ public class CallLogGroupBuilder {
int groupFeatures = cursor.getInt(CallLogQuery.FEATURES);
int groupCallbackAction =
CallbackActionHelper.getCallbackAction(
- groupNumber, groupFeatures, groupAccountComponentName);
+ appContext, groupNumber, groupFeatures, groupAccountComponentName);
groupCreator.setCallbackAction(firstRowId, groupCallbackAction);
// Instantiate other group values to those of the first call in the cursor.
@@ -126,7 +131,8 @@ public class CallLogGroupBuilder {
accountComponentName = cursor.getString(CallLogQuery.ACCOUNT_COMPONENT_NAME);
accountId = cursor.getString(CallLogQuery.ACCOUNT_ID);
callbackAction =
- CallbackActionHelper.getCallbackAction(number, callFeatures, accountComponentName);
+ CallbackActionHelper.getCallbackAction(
+ appContext, number, callFeatures, accountComponentName);
final boolean isSameNumber = equalNumbers(groupNumber, number);
final boolean isSamePostDialDigits = groupPostDialDigits.equals(numberPostDialDigits);
diff --git a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
index 3f7def953..54748387e 100644
--- a/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
+++ b/java/com/android/dialer/app/calllog/CallLogListItemViewHolder.java
@@ -78,7 +78,6 @@ import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.dialercontact.SimDetails;
import com.android.dialer.duo.Duo;
import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.duo.DuoConstants;
import com.android.dialer.lettertile.LetterTileDrawable;
import com.android.dialer.lettertile.LetterTileDrawable.ContactType;
import com.android.dialer.logging.ContactSource;
@@ -97,6 +96,7 @@ import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.util.CallUtil;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.UriUtils;
+import com.google.common.base.Optional;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.ref.WeakReference;
@@ -795,9 +795,10 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
}
private boolean showDuoPrimaryButton() {
+ Duo duo = DuoComponent.get(context).getDuo();
return accountHandle != null
- && accountHandle.getComponentName().equals(DuoConstants.PHONE_ACCOUNT_COMPONENT_NAME)
- && DuoComponent.get(context).getDuo().isReachable(context, number);
+ && duo.isDuoAccount(accountHandle)
+ && duo.isReachable(context, number);
}
private static boolean hasDialableChar(CharSequence number) {
@@ -1032,9 +1033,10 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
// We check to see if we are starting a Duo intent. The reason is Duo
// intents need to be started using startActivityForResult instead of the usual startActivity
- String packageName = intent.getPackage();
- if (DuoConstants.PACKAGE_NAME.equals(packageName)) {
- startDuoActivity(intent);
+ Optional<Duo.IntentType> duoIntentType =
+ DuoComponent.get(context).getDuo().getIntentType(intent);
+ if (duoIntentType.isPresent()) {
+ startDuoActivity(intent, duoIntentType.get());
} else if (OldCallDetailsActivity.isLaunchIntent(intent)) {
PerformanceReport.recordClick(UiAction.Type.OPEN_CALL_DETAIL);
((Activity) context)
@@ -1044,8 +1046,8 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
&& intent.getIntExtra(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, -1)
== VideoProfile.STATE_BIDIRECTIONAL) {
Logger.get(context).logImpression(DialerImpression.Type.IMS_VIDEO_REQUESTED_FROM_CALL_LOG);
- } else if (intent.getDataString() != null
- && intent.getDataString().contains(DuoConstants.PACKAGE_NAME)) {
+ } else if (intent.filterEquals(
+ DuoComponent.get(context).getDuo().getInstallDuoIntent().orNull())) {
Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_INSTALL);
}
@@ -1060,24 +1062,24 @@ public final class CallLogListItemViewHolder extends RecyclerView.ViewHolder
return false;
}
- private void startDuoActivity(Intent intent) {
- if (DuoConstants.DUO_ACTIVATE_ACTION.equals(intent.getAction())) {
- Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_ACTIVATE);
- } else if (DuoConstants.DUO_INVITE_ACTION.equals(intent.getAction())) {
- Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_INVITE);
- } else if (DuoConstants.DUO_CALL_ACTION.equals(intent.getAction())) {
- Logger.get(context)
- .logImpression(DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FROM_CALL_LOG);
- if (isNonContactEntry(info)) {
+ private void startDuoActivity(Intent intent, Duo.IntentType intentType) {
+ switch (intentType) {
+ case CALL:
Logger.get(context)
- .logImpression(
- DialerImpression.Type.LIGHTBRINGER_NON_CONTACT_VIDEO_REQUESTED_FROM_CALL_LOG);
- }
- } else {
- throw Assert.createIllegalStateFailException(
- "Duo intent with invalid action" + intent.getAction());
+ .logImpression(DialerImpression.Type.LIGHTBRINGER_VIDEO_REQUESTED_FROM_CALL_LOG);
+ if (isNonContactEntry(info)) {
+ Logger.get(context)
+ .logImpression(
+ DialerImpression.Type.LIGHTBRINGER_NON_CONTACT_VIDEO_REQUESTED_FROM_CALL_LOG);
+ }
+ break;
+ case INVITE:
+ Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_INVITE);
+ break;
+ case ACTIVATE:
+ Logger.get(context).logImpression(DialerImpression.Type.DUO_CALL_LOG_SET_UP_ACTIVATE);
+ break;
}
-
try {
Activity activity = (Activity) context;
activity.startActivityForResult(intent, ActivityRequestCodes.DIALTACTS_DUO);
diff --git a/java/com/android/dialer/app/calllog/IntentProvider.java b/java/com/android/dialer/app/calllog/IntentProvider.java
index a794c6290..1bc726f64 100644
--- a/java/com/android/dialer/app/calllog/IntentProvider.java
+++ b/java/com/android/dialer/app/calllog/IntentProvider.java
@@ -22,7 +22,6 @@ import android.content.Intent;
import android.net.Uri;
import android.provider.ContactsContract;
import android.support.annotation.Nullable;
-import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telephony.TelephonyManager;
import com.android.contacts.common.model.Contact;
@@ -33,7 +32,6 @@ import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.dialercontact.DialerContact;
import com.android.dialer.duo.DuoComponent;
-import com.android.dialer.duo.DuoConstants;
import com.android.dialer.precall.PreCall;
import com.android.dialer.util.IntentUtil;
import java.util.ArrayList;
@@ -99,7 +97,7 @@ public abstract class IntentProvider {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
- return DuoComponent.get(context).getDuo().getIntent(context, number);
+ return DuoComponent.get(context).getDuo().getCallIntent(number).orNull();
}
};
}
@@ -108,18 +106,7 @@ public abstract class IntentProvider {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
- return new Intent(
- Intent.ACTION_VIEW,
- new Uri.Builder()
- .scheme("https")
- .authority("play.google.com")
- .appendEncodedPath("store/apps/details")
- .appendQueryParameter("id", DuoConstants.PACKAGE_NAME)
- .appendQueryParameter(
- "referrer",
- "utm_source=dialer&utm_medium=text&utm_campaign=product") // This string is from
- // the Duo team
- .build());
+ return DuoComponent.get(context).getDuo().getInstallDuoIntent().orNull();
}
};
}
@@ -128,7 +115,7 @@ public abstract class IntentProvider {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
- return new Intent(DuoConstants.DUO_ACTIVATE_ACTION).setPackage(DuoConstants.PACKAGE_NAME);
+ return DuoComponent.get(context).getDuo().getActivateIntent().orNull();
}
};
}
@@ -137,11 +124,7 @@ public abstract class IntentProvider {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
- Intent intent =
- new Intent(DuoConstants.DUO_INVITE_ACTION)
- .setPackage(DuoConstants.PACKAGE_NAME)
- .setData(Uri.fromParts(PhoneAccount.SCHEME_TEL, number, null /* fragment */));
- return intent;
+ return DuoComponent.get(context).getDuo().getInviteIntent(number).orNull();
}
};
}
diff --git a/java/com/android/dialer/app/calllog/MissedCallNotifier.java b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
index 772feed53..2cd0f775c 100644
--- a/java/com/android/dialer/app/calllog/MissedCallNotifier.java
+++ b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
@@ -52,7 +52,7 @@ import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.common.concurrent.DialerExecutor.Worker;
import com.android.dialer.compat.android.provider.VoicemailCompat;
-import com.android.dialer.duo.DuoConstants;
+import com.android.dialer.duo.DuoComponent;
import com.android.dialer.enrichedcall.FuzzyPhoneNumberMatcher;
import com.android.dialer.notification.DialerNotificationManager;
import com.android.dialer.notification.NotificationChannelId;
@@ -275,7 +275,7 @@ public class MissedCallNotifier implements Worker<Pair<Integer, String>, Void> {
if (phoneAccount == null) {
continue;
}
- if (DuoConstants.PHONE_ACCOUNT_HANDLE.equals(phoneAccountHandle)) {
+ if (DuoComponent.get(context).getDuo().isDuoAccount(phoneAccountHandle)) {
iterator.remove();
continue;
}