From 34b1662b7532343341bbee22227e8ed82575864f Mon Sep 17 00:00:00 2001 From: twyen Date: Tue, 1 May 2018 14:53:14 -0700 Subject: 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 --- .../android/dialer/app/calllog/CallLogAdapter.java | 12 +++--- .../dialer/app/calllog/CallLogGroupBuilder.java | 12 ++++-- .../app/calllog/CallLogListItemViewHolder.java | 50 +++++++++++----------- .../android/dialer/app/calllog/IntentProvider.java | 25 ++--------- .../dialer/app/calllog/MissedCallNotifier.java | 4 +- 5 files changed, 47 insertions(+), 56 deletions(-) (limited to 'java/com/android/dialer/app') 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 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, Void> { if (phoneAccount == null) { continue; } - if (DuoConstants.PHONE_ACCOUNT_HANDLE.equals(phoneAccountHandle)) { + if (DuoComponent.get(context).getDuo().isDuoAccount(phoneAccountHandle)) { iterator.remove(); continue; } -- cgit v1.2.3