summaryrefslogtreecommitdiff
path: root/java/com
diff options
context:
space:
mode:
authortwyen <twyen@google.com>2017-11-07 15:39:15 -0800
committerzachh <zachh@google.com>2017-11-11 23:15:49 +0000
commit0efc840171da8739359b326249978d0a44df540b (patch)
tree238f87ae39ac404331e96a8cbf138e333cb73afa /java/com
parent73d995ff88b3a8894c7463a21a24dcec3f8d68e4 (diff)
Hook up pre-call actions
This CL replaces all instance of CallIntentBuilder.build() with PreCall.getIntent(), which when run as an activity, will finish building the intent with user interaction. Bug: 64216442 Test: manual PiperOrigin-RevId: 174924323 Change-Id: If41868df4c7ed078d03bd3431fa85b8947056a01
Diffstat (limited to 'java/com')
-rw-r--r--java/com/android/contacts/common/dialog/CallSubjectDialog.java8
-rw-r--r--java/com/android/dialer/app/DialtactsActivity.java9
-rw-r--r--java/com/android/dialer/app/calllog/IntentProvider.java29
-rw-r--r--java/com/android/dialer/app/calllog/MissedCallNotifier.java6
-rw-r--r--java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java7
-rw-r--r--java/com/android/dialer/callcomposer/CallComposerActivity.java6
-rw-r--r--java/com/android/dialer/calldetails/CallDetailsActivity.java9
-rw-r--r--java/com/android/dialer/callintent/CallIntentBuilder.java5
-rw-r--r--java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java2
-rw-r--r--java/com/android/dialer/calllog/ui/menu/PrimaryAction.java2
-rw-r--r--java/com/android/dialer/calllogutils/CallLogIntents.java16
-rw-r--r--java/com/android/dialer/contactactions/IntentModule.java17
-rw-r--r--java/com/android/dialer/dialpadview/DialpadFragment.java11
-rw-r--r--java/com/android/dialer/interactions/PhoneNumberInteraction.java12
-rw-r--r--java/com/android/dialer/precall/PreCall.java9
-rw-r--r--java/com/android/dialer/precall/PreCallCoordinator.java3
-rw-r--r--java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java2
-rw-r--r--java/com/android/dialer/precall/impl/PreCallImpl.java3
-rw-r--r--java/com/android/dialer/searchfragment/list/NewSearchFragment.java8
-rw-r--r--java/com/android/dialer/searchfragment/list/SearchActionViewHolder.java5
-rw-r--r--java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java5
-rw-r--r--java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java5
-rw-r--r--java/com/android/incallui/disconnectdialog/VideoCallNotAvailablePrompt.java10
-rw-r--r--java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java8
24 files changed, 111 insertions, 86 deletions
diff --git a/java/com/android/contacts/common/dialog/CallSubjectDialog.java b/java/com/android/contacts/common/dialog/CallSubjectDialog.java
index 5c2ae2fa5..2ba2476a6 100644
--- a/java/com/android/contacts/common/dialog/CallSubjectDialog.java
+++ b/java/com/android/contacts/common/dialog/CallSubjectDialog.java
@@ -50,6 +50,7 @@ import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.common.LogUtil;
import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.lettertile.LetterTileDrawable;
+import com.android.dialer.precall.PreCall;
import com.android.dialer.util.ViewUtil;
import java.nio.charset.Charset;
import java.util.ArrayList;
@@ -148,13 +149,12 @@ public class CallSubjectDialog extends Activity {
@Override
public void onClick(View v) {
String subject = mCallSubjectView.getText().toString();
- Intent intent =
+ PreCall.start(
+ CallSubjectDialog.this,
new CallIntentBuilder(mNumber, CallInitiationType.Type.CALL_SUBJECT_DIALOG)
.setPhoneAccountHandle(mPhoneAccountHandle)
- .setCallSubject(subject)
- .build();
+ .setCallSubject(subject));
- getSystemService(TelecomManager.class).placeCall(intent.getData(), intent.getExtras());
mSubjectHistory.add(subject);
saveSubjectHistory(mSubjectHistory);
finish();
diff --git a/java/com/android/dialer/app/DialtactsActivity.java b/java/com/android/dialer/app/DialtactsActivity.java
index 089ffd389..3087a1768 100644
--- a/java/com/android/dialer/app/DialtactsActivity.java
+++ b/java/com/android/dialer/app/DialtactsActivity.java
@@ -121,6 +121,7 @@ import com.android.dialer.p13n.logging.P13nLogger;
import com.android.dialer.p13n.logging.P13nLogging;
import com.android.dialer.performancereport.PerformanceReport;
import com.android.dialer.postcall.PostCall;
+import com.android.dialer.precall.PreCall;
import com.android.dialer.proguard.UsedByReflection;
import com.android.dialer.searchfragment.list.NewSearchFragment;
import com.android.dialer.searchfragment.list.NewSearchFragment.SearchFragmentListener;
@@ -1515,14 +1516,12 @@ public class DialtactsActivity extends TransactionSafeActivity
// an error message.
phoneNumber = "";
}
-
- Intent intent =
+ PreCall.start(
+ this,
new CallIntentBuilder(phoneNumber, callSpecificAppData)
.setIsVideoCall(isVideoCall)
- .setAllowAssistedDial(callSpecificAppData.getAllowAssistedDialing())
- .build();
+ .setAllowAssistedDial(callSpecificAppData.getAllowAssistedDialing()));
- DialerUtils.startActivityWithErrorToast(this, intent);
mClearSearchOnPause = true;
}
diff --git a/java/com/android/dialer/app/calllog/IntentProvider.java b/java/com/android/dialer/app/calllog/IntentProvider.java
index 5180651da..0835d894c 100644
--- a/java/com/android/dialer/app/calllog/IntentProvider.java
+++ b/java/com/android/dialer/app/calllog/IntentProvider.java
@@ -32,6 +32,7 @@ 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.precall.PreCall;
import com.android.dialer.util.IntentUtil;
import java.util.ArrayList;
@@ -53,9 +54,10 @@ public abstract class IntentProvider {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
- return new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG)
- .setPhoneAccountHandle(accountHandle)
- .build();
+ return PreCall.getIntent(
+ context,
+ new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG)
+ .setPhoneAccountHandle(accountHandle));
}
};
}
@@ -65,9 +67,10 @@ public abstract class IntentProvider {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
- return new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG)
- .setAllowAssistedDial(true)
- .build();
+ return PreCall.getIntent(
+ context,
+ new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG)
+ .setAllowAssistedDial(true));
}
};
}
@@ -81,10 +84,11 @@ public abstract class IntentProvider {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
- return new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG)
- .setPhoneAccountHandle(accountHandle)
- .setIsVideoCall(true)
- .build();
+ return PreCall.getIntent(
+ context,
+ new CallIntentBuilder(number, CallInitiationType.Type.CALL_LOG)
+ .setPhoneAccountHandle(accountHandle)
+ .setIsVideoCall(true));
}
};
}
@@ -103,8 +107,9 @@ public abstract class IntentProvider {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
- return CallIntentBuilder.forVoicemail(phoneAccountHandle, CallInitiationType.Type.CALL_LOG)
- .build();
+ return PreCall.getIntent(
+ context,
+ CallIntentBuilder.forVoicemail(phoneAccountHandle, CallInitiationType.Type.CALL_LOG));
}
};
}
diff --git a/java/com/android/dialer/app/calllog/MissedCallNotifier.java b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
index 8e09cf8df..dd92bb4e2 100644
--- a/java/com/android/dialer/app/calllog/MissedCallNotifier.java
+++ b/java/com/android/dialer/app/calllog/MissedCallNotifier.java
@@ -60,6 +60,7 @@ import com.android.dialer.notification.NotificationChannelId;
import com.android.dialer.notification.NotificationManagerUtils;
import com.android.dialer.phonenumbercache.ContactInfo;
import com.android.dialer.phonenumberutil.PhoneNumberHelper;
+import com.android.dialer.precall.PreCall;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.IntentUtil;
import java.util.Iterator;
@@ -438,8 +439,9 @@ public class MissedCallNotifier implements Worker<Pair<Integer, String>, Void> {
cancelSingleMissedCallNotification(context, callUri);
DialerUtils.startActivityWithErrorToast(
context,
- new CallIntentBuilder(number, CallInitiationType.Type.MISSED_CALL_NOTIFICATION)
- .build()
+ PreCall.getIntent(
+ context,
+ new CallIntentBuilder(number, CallInitiationType.Type.MISSED_CALL_NOTIFICATION))
.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
diff --git a/java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java b/java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java
index 7cc6cda45..be7dccda8 100644
--- a/java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java
+++ b/java/com/android/dialer/app/voicemail/error/VoicemailErrorMessage.java
@@ -31,6 +31,7 @@ import com.android.dialer.common.Assert;
import com.android.dialer.common.PerAccountSharedPreferences;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
+import com.android.dialer.precall.PreCall;
import com.android.dialer.voicemail.settings.VoicemailChangePinActivity;
import com.android.voicemail.VoicemailClient;
import com.android.voicemail.VoicemailComponent;
@@ -165,10 +166,10 @@ public class VoicemailErrorMessage {
@Override
public void onClick(View v) {
Logger.get(context).logImpression(DialerImpression.Type.VVM_CALL_VOICEMAIL_CLICKED);
- context.startActivity(
+ PreCall.start(
+ context,
CallIntentBuilder.forVoicemail(
- phoneAccountHandle, CallInitiationType.Type.VOICEMAIL_ERROR_MESSAGE)
- .build());
+ phoneAccountHandle, CallInitiationType.Type.VOICEMAIL_ERROR_MESSAGE));
}
});
}
diff --git a/java/com/android/dialer/callcomposer/CallComposerActivity.java b/java/com/android/dialer/callcomposer/CallComposerActivity.java
index cd0c74124..0d47c7007 100644
--- a/java/com/android/dialer/callcomposer/CallComposerActivity.java
+++ b/java/com/android/dialer/callcomposer/CallComposerActivity.java
@@ -72,6 +72,7 @@ import com.android.dialer.enrichedcall.extensions.StateExtension;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
import com.android.dialer.multimedia.MultimediaData;
+import com.android.dialer.precall.PreCall;
import com.android.dialer.protos.ProtoParsers;
import com.android.dialer.storage.StorageComponent;
import com.android.dialer.telecom.TelecomUtil;
@@ -479,9 +480,8 @@ public class CallComposerActivity extends AppCompatActivity
}
private void placeTelecomCall() {
- TelecomUtil.placeCall(
- this,
- new CallIntentBuilder(contact.getNumber(), CallInitiationType.Type.CALL_COMPOSER).build());
+ PreCall.start(
+ this, new CallIntentBuilder(contact.getNumber(), CallInitiationType.Type.CALL_COMPOSER));
setResult(RESULT_OK);
finish();
}
diff --git a/java/com/android/dialer/calldetails/CallDetailsActivity.java b/java/com/android/dialer/calldetails/CallDetailsActivity.java
index 6ba31e624..7a117a3f1 100644
--- a/java/com/android/dialer/calldetails/CallDetailsActivity.java
+++ b/java/com/android/dialer/calldetails/CallDetailsActivity.java
@@ -50,8 +50,8 @@ import com.android.dialer.logging.Logger;
import com.android.dialer.logging.UiAction;
import com.android.dialer.performancereport.PerformanceReport;
import com.android.dialer.postcall.PostCall;
+import com.android.dialer.precall.PreCall;
import com.android.dialer.protos.ProtoParsers;
-import com.android.dialer.util.DialerUtils;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@@ -209,11 +209,10 @@ public class CallDetailsActivity extends AppCompatActivity
@Override
public void placeImsVideoCall(String phoneNumber) {
Logger.get(this).logImpression(DialerImpression.Type.CALL_DETAILS_IMS_VIDEO_CALL_BACK);
- DialerUtils.startActivityWithErrorToast(
+ PreCall.start(
this,
new CallIntentBuilder(phoneNumber, CallInitiationType.Type.CALL_DETAILS)
- .setIsVideoCall(true)
- .build());
+ .setIsVideoCall(true));
}
@Override
@@ -244,7 +243,7 @@ public class CallDetailsActivity extends AppCompatActivity
callIntentBuilder.setAllowAssistedDial(true);
}
- DialerUtils.startActivityWithErrorToast(this, callIntentBuilder.build());
+ PreCall.start(this, callIntentBuilder);
}
@NonNull
diff --git a/java/com/android/dialer/callintent/CallIntentBuilder.java b/java/com/android/dialer/callintent/CallIntentBuilder.java
index aabeabdc8..ff490c296 100644
--- a/java/com/android/dialer/callintent/CallIntentBuilder.java
+++ b/java/com/android/dialer/callintent/CallIntentBuilder.java
@@ -172,6 +172,11 @@ public class CallIntentBuilder implements Parcelable {
return outgoingCallExtras;
}
+ /**
+ * @deprecated Use {@link com.android.dialer.precall.PreCall#getIntent(android.content.Context,
+ * CallIntentBuilder)} instead.
+ */
+ @Deprecated
public Intent build() {
Intent intent = new Intent(Intent.ACTION_CALL, uri);
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
index 9ddb65df4..16147f604 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
@@ -138,7 +138,7 @@ final class NewCallLogViewHolder extends RecyclerView.ViewHolder {
private void setOnClickListenerForRow(CoalescedRow row) {
itemView.setOnClickListener(
(view) -> {
- Intent callbackIntent = CallLogIntents.getCallBackIntent(row);
+ Intent callbackIntent = CallLogIntents.getCallBackIntent(context, row);
if (callbackIntent != null) {
context.startActivity(callbackIntent);
}
diff --git a/java/com/android/dialer/calllog/ui/menu/PrimaryAction.java b/java/com/android/dialer/calllog/ui/menu/PrimaryAction.java
index 7077d0231..404c41787 100644
--- a/java/com/android/dialer/calllog/ui/menu/PrimaryAction.java
+++ b/java/com/android/dialer/calllog/ui/menu/PrimaryAction.java
@@ -42,7 +42,7 @@ final class PrimaryAction {
.build())
.setPrimaryText(CallLogEntryText.buildPrimaryText(context, row))
.setSecondaryText(CallLogEntryText.buildSecondaryTextForBottomSheet(context, row))
- .setIntent(CallLogIntents.getCallBackIntent(row))
+ .setIntent(CallLogIntents.getCallBackIntent(context, row))
.build();
}
}
diff --git a/java/com/android/dialer/calllogutils/CallLogIntents.java b/java/com/android/dialer/calllogutils/CallLogIntents.java
index 11308e607..b06fe6e93 100644
--- a/java/com/android/dialer/calllogutils/CallLogIntents.java
+++ b/java/com/android/dialer/calllogutils/CallLogIntents.java
@@ -15,6 +15,7 @@
*/
package com.android.dialer.calllogutils;
+import android.content.Context;
import android.content.Intent;
import android.provider.CallLog.Calls;
import android.support.annotation.Nullable;
@@ -22,6 +23,7 @@ import android.text.TextUtils;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.calllog.model.CoalescedRow;
+import com.android.dialer.precall.PreCall;
/** Provides intents related to call log entries. */
public final class CallLogIntents {
@@ -35,10 +37,9 @@ public final class CallLogIntents {
* @return null if the provided {@code row} doesn't have a number
*/
@Nullable
- public static Intent getCallBackIntent(CoalescedRow row) {
+ public static Intent getCallBackIntent(Context context, CoalescedRow row) {
// TODO(zachh): Do something with parsed values to make more dialable?
String originalNumber = row.number().getRawInput().getNumber();
-
// TODO(zachh): Make this more sophisticated, e.g. return null for non-dialable numbers?
if (TextUtils.isEmpty(originalNumber)) {
return null;
@@ -46,10 +47,11 @@ public final class CallLogIntents {
// TODO(zachh): More granular logging?
// TODO(zachh): Support assisted dialing.
- return new CallIntentBuilder(originalNumber, CallInitiationType.Type.CALL_LOG)
- .setPhoneAccountHandle(
- PhoneAccountUtils.getAccount(row.phoneAccountComponentName(), row.phoneAccountId()))
- .setIsVideoCall((row.features() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO)
- .build();
+ return PreCall.getIntent(
+ context,
+ new CallIntentBuilder(originalNumber, CallInitiationType.Type.CALL_LOG)
+ .setPhoneAccountHandle(
+ PhoneAccountUtils.getAccount(row.phoneAccountComponentName(), row.phoneAccountId()))
+ .setIsVideoCall((row.features() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO));
}
}
diff --git a/java/com/android/dialer/contactactions/IntentModule.java b/java/com/android/dialer/contactactions/IntentModule.java
index 5a4870cbe..57eb50a9b 100644
--- a/java/com/android/dialer/contactactions/IntentModule.java
+++ b/java/com/android/dialer/contactactions/IntentModule.java
@@ -24,6 +24,7 @@ import android.support.annotation.StringRes;
import android.telecom.PhoneAccountHandle;
import com.android.dialer.callintent.CallInitiationType.Type;
import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.precall.PreCall;
/**
* {@link ContactActionModule} useful for making easy to build modules based on starting an intent.
@@ -66,9 +67,10 @@ public class IntentModule implements ContactActionModule {
// TODO(zachh): Support post-dial digits; consider using DialerPhoneNumber.
return new IntentModule(
context,
- new CallIntentBuilder(number, initiationType)
- .setPhoneAccountHandle(phoneAccountHandle)
- .build(),
+ PreCall.getIntent(
+ context,
+ new CallIntentBuilder(number, initiationType)
+ .setPhoneAccountHandle(phoneAccountHandle)),
R.string.call,
R.drawable.quantum_ic_call_white_24);
}
@@ -81,10 +83,11 @@ public class IntentModule implements ContactActionModule {
// TODO(zachh): Support post-dial digits; consider using DialerPhoneNumber.
return new IntentModule(
context,
- new CallIntentBuilder(number, initiationType)
- .setPhoneAccountHandle(phoneAccountHandle)
- .setIsVideoCall(true)
- .build(),
+ PreCall.getIntent(
+ context,
+ new CallIntentBuilder(number, initiationType)
+ .setPhoneAccountHandle(phoneAccountHandle)
+ .setIsVideoCall(true)),
R.string.video_call,
R.drawable.quantum_ic_videocam_white_24);
}
diff --git a/java/com/android/dialer/dialpadview/DialpadFragment.java b/java/com/android/dialer/dialpadview/DialpadFragment.java
index 659d120b1..e85b57e33 100644
--- a/java/com/android/dialer/dialpadview/DialpadFragment.java
+++ b/java/com/android/dialer/dialpadview/DialpadFragment.java
@@ -83,10 +83,10 @@ import com.android.dialer.location.GeoUtil;
import com.android.dialer.logging.UiAction;
import com.android.dialer.oem.MotorolaUtils;
import com.android.dialer.performancereport.PerformanceReport;
+import com.android.dialer.precall.PreCall;
import com.android.dialer.proguard.UsedByReflection;
import com.android.dialer.telecom.TelecomUtil;
import com.android.dialer.util.CallUtil;
-import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.widget.FloatingActionButtonController;
import java.util.HashSet;
@@ -997,9 +997,8 @@ public class DialpadFragment extends Fragment
}
public void callVoicemail() {
- DialerUtils.startActivityWithErrorToast(
- getActivity(),
- CallIntentBuilder.forVoicemail(null, CallInitiationType.Type.DIALPAD).build());
+ PreCall.start(
+ getContext(), CallIntentBuilder.forVoicemail(null, CallInitiationType.Type.DIALPAD));
hideAndClearDialpad();
}
@@ -1049,9 +1048,7 @@ public class DialpadFragment extends Fragment
// Clear the digits just in case.
clearDialpad();
} else {
- final Intent intent =
- new CallIntentBuilder(number, CallInitiationType.Type.DIALPAD).build();
- DialerUtils.startActivityWithErrorToast(getActivity(), intent);
+ PreCall.start(getContext(), new CallIntentBuilder(number, CallInitiationType.Type.DIALPAD));
hideAndClearDialpad();
}
}
diff --git a/java/com/android/dialer/interactions/PhoneNumberInteraction.java b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
index 255f6c380..15c6ce899 100644
--- a/java/com/android/dialer/interactions/PhoneNumberInteraction.java
+++ b/java/com/android/dialer/interactions/PhoneNumberInteraction.java
@@ -60,6 +60,7 @@ import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
import com.android.dialer.logging.InteractionEvent;
import com.android.dialer.logging.Logger;
+import com.android.dialer.precall.PreCall;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.PermissionsUtil;
import com.android.dialer.util.TransactionSafeActivity;
@@ -183,10 +184,11 @@ public class PhoneNumberInteraction implements OnLoadCompleteListener<Cursor> {
break;
default:
intent =
- new CallIntentBuilder(phoneNumber, callSpecificAppData)
- .setIsVideoCall(isVideoCall)
- .setAllowAssistedDial(callSpecificAppData.getAllowAssistedDialing())
- .build();
+ PreCall.getIntent(
+ context,
+ new CallIntentBuilder(phoneNumber, callSpecificAppData)
+ .setIsVideoCall(isVideoCall)
+ .setAllowAssistedDial(callSpecificAppData.getAllowAssistedDialing()));
break;
}
DialerUtils.startActivityWithErrorToast(context, intent);
@@ -224,7 +226,7 @@ public class PhoneNumberInteraction implements OnLoadCompleteListener<Cursor> {
// crash when the user tries to use such a shortcut, check for this condition and ask the user
// for the permission.
if (!PermissionsUtil.hasPhonePermissions(mContext)) {
- LogUtil.i("PhoneNumberInteraction.startInteraction", "Need phone permissions: CALL_PHONE");
+ LogUtil.i("PhoneNumberInteraction.startInteraction", "Need phone permission: CALL_PHONE");
ActivityCompat.requestPermissions(
(Activity) mContext, new String[] {permission.CALL_PHONE}, REQUEST_CALL_PHONE);
return;
diff --git a/java/com/android/dialer/precall/PreCall.java b/java/com/android/dialer/precall/PreCall.java
index 93fd8e9b6..4f021f142 100644
--- a/java/com/android/dialer/precall/PreCall.java
+++ b/java/com/android/dialer/precall/PreCall.java
@@ -21,6 +21,7 @@ import android.content.Intent;
import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.util.DialerUtils;
import com.google.common.collect.ImmutableList;
/** Interface to prepare a {@link CallIntentBuilder} before placing the call with telecom. */
@@ -41,4 +42,12 @@ public interface PreCall {
@NonNull
@MainThread
Intent buildIntent(Context context, CallIntentBuilder builder);
+
+ static Intent getIntent(Context context, CallIntentBuilder builder) {
+ return PreCallComponent.get(context).getPreCall().buildIntent(context, builder);
+ }
+
+ static void start(Context context, CallIntentBuilder builder) {
+ DialerUtils.startActivityWithErrorToast(context, getIntent(context, builder));
+ }
}
diff --git a/java/com/android/dialer/precall/PreCallCoordinator.java b/java/com/android/dialer/precall/PreCallCoordinator.java
index b5e9e8594..40b909a51 100644
--- a/java/com/android/dialer/precall/PreCallCoordinator.java
+++ b/java/com/android/dialer/precall/PreCallCoordinator.java
@@ -19,6 +19,7 @@ package com.android.dialer.precall;
import android.app.Activity;
import android.support.annotation.MainThread;
import android.support.annotation.NonNull;
+import android.support.annotation.VisibleForTesting;
import com.android.dialer.callintent.CallIntentBuilder;
/**
@@ -27,6 +28,8 @@ import com.android.dialer.callintent.CallIntentBuilder;
*/
public interface PreCallCoordinator {
+ @VisibleForTesting public String EXTRA_CALL_INTENT_BUILDER = "extra_call_intent_builder";
+
@NonNull
CallIntentBuilder getBuilder();
diff --git a/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java b/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
index 25083ef0b..6302a2395 100644
--- a/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
+++ b/java/com/android/dialer/precall/impl/PreCallCoordinatorImpl.java
@@ -38,8 +38,6 @@ public class PreCallCoordinatorImpl implements PreCallCoordinator {
private static final String SAVED_STATE_CURRENT_ACTION = "current_action";
- static final String EXTRA_CALL_INTENT_BUILDER = "extra_call_intent_builder";
-
@NonNull private final Activity activity;
private CallIntentBuilder builder;
diff --git a/java/com/android/dialer/precall/impl/PreCallImpl.java b/java/com/android/dialer/precall/impl/PreCallImpl.java
index fc2eff8b1..21c5dc9e2 100644
--- a/java/com/android/dialer/precall/impl/PreCallImpl.java
+++ b/java/com/android/dialer/precall/impl/PreCallImpl.java
@@ -22,6 +22,7 @@ import android.support.annotation.NonNull;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.precall.PreCall;
import com.android.dialer.precall.PreCallAction;
+import com.android.dialer.precall.PreCallCoordinator;
import com.google.common.collect.ImmutableList;
import javax.inject.Inject;
@@ -40,7 +41,7 @@ public class PreCallImpl implements PreCall {
@Override
public Intent buildIntent(Context context, CallIntentBuilder builder) {
Intent intent = new Intent(context, PreCallActivity.class);
- intent.putExtra(PreCallCoordinatorImpl.EXTRA_CALL_INTENT_BUILDER, builder);
+ intent.putExtra(PreCallCoordinator.EXTRA_CALL_INTENT_BUILDER, builder);
return intent;
}
}
diff --git a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
index c0a6700eb..e797a0390 100644
--- a/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
+++ b/java/com/android/dialer/searchfragment/list/NewSearchFragment.java
@@ -58,6 +58,7 @@ import com.android.dialer.enrichedcall.EnrichedCallComponent;
import com.android.dialer.enrichedcall.EnrichedCallManager.CapabilitiesListener;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
+import com.android.dialer.precall.PreCall;
import com.android.dialer.searchfragment.common.RowClickListener;
import com.android.dialer.searchfragment.common.SearchCursor;
import com.android.dialer.searchfragment.cp2.SearchContactsCursorLoader;
@@ -483,12 +484,11 @@ public final class NewSearchFragment extends Fragment
.setCharactersInSearchString(query == null ? 0 : query.length())
.setAllowAssistedDialing(allowAssistedDial)
.build();
- Intent intent =
+ PreCall.start(
+ getContext(),
new CallIntentBuilder(phoneNumber, callSpecificAppData)
.setIsVideoCall(isVideoCall)
- .setAllowAssistedDial(allowAssistedDial)
- .build();
- DialerUtils.startActivityWithErrorToast(getActivity(), intent);
+ .setAllowAssistedDial(allowAssistedDial));
FragmentUtils.getParentUnsafe(this, SearchFragmentListener.class).onCallPlaced();
}
diff --git a/java/com/android/dialer/searchfragment/list/SearchActionViewHolder.java b/java/com/android/dialer/searchfragment/list/SearchActionViewHolder.java
index 62e5c72b0..b557a8259 100644
--- a/java/com/android/dialer/searchfragment/list/SearchActionViewHolder.java
+++ b/java/com/android/dialer/searchfragment/list/SearchActionViewHolder.java
@@ -31,6 +31,7 @@ import com.android.dialer.callintent.CallSpecificAppData;
import com.android.dialer.common.Assert;
import com.android.dialer.logging.DialerImpression;
import com.android.dialer.logging.Logger;
+import com.android.dialer.precall.PreCall;
import com.android.dialer.util.DialerUtils;
import com.android.dialer.util.IntentUtil;
import java.lang.annotation.Retention;
@@ -128,8 +129,8 @@ final class SearchActionViewHolder extends RecyclerView.ViewHolder implements On
.setPositionOfSelectedSearchResult(position)
.setCharactersInSearchString(query.length())
.build();
- intent = new CallIntentBuilder(query, callSpecificAppData).setIsVideoCall(true).build();
- DialerUtils.startActivityWithErrorToast(context, intent);
+ PreCall.start(
+ context, new CallIntentBuilder(query, callSpecificAppData).setIsVideoCall(true));
break;
case Action.SEND_SMS:
diff --git a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
index 2e1fd5e9d..f15b236dd 100644
--- a/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
+++ b/java/com/android/dialer/searchfragment/nearbyplaces/NearbyPlaceViewHolder.java
@@ -29,11 +29,11 @@ import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.lettertile.LetterTileDrawable;
+import com.android.dialer.precall.PreCall;
import com.android.dialer.searchfragment.common.Projections;
import com.android.dialer.searchfragment.common.QueryBoldingUtil;
import com.android.dialer.searchfragment.common.R;
import com.android.dialer.searchfragment.common.SearchCursor;
-import com.android.dialer.telecom.TelecomUtil;
/** ViewHolder for a nearby place row. */
public final class NearbyPlaceViewHolder extends RecyclerView.ViewHolder
@@ -93,7 +93,6 @@ public final class NearbyPlaceViewHolder extends RecyclerView.ViewHolder
@Override
public void onClick(View v) {
- TelecomUtil.placeCall(
- context, new CallIntentBuilder(number, CallInitiationType.Type.REGULAR_SEARCH).build());
+ PreCall.start(context, new CallIntentBuilder(number, CallInitiationType.Type.REGULAR_SEARCH));
}
}
diff --git a/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java b/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
index 339855fbb..9d369003d 100644
--- a/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
+++ b/java/com/android/dialer/searchfragment/remote/RemoteContactViewHolder.java
@@ -32,11 +32,11 @@ import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.contactphoto.ContactPhotoManager;
import com.android.dialer.lettertile.LetterTileDrawable;
+import com.android.dialer.precall.PreCall;
import com.android.dialer.searchfragment.common.Projections;
import com.android.dialer.searchfragment.common.QueryBoldingUtil;
import com.android.dialer.searchfragment.common.R;
import com.android.dialer.searchfragment.common.SearchCursor;
-import com.android.dialer.telecom.TelecomUtil;
/** ViewHolder for a nearby place row. */
public final class RemoteContactViewHolder extends RecyclerView.ViewHolder
@@ -132,7 +132,6 @@ public final class RemoteContactViewHolder extends RecyclerView.ViewHolder
@Override
public void onClick(View v) {
- TelecomUtil.placeCall(
- context, new CallIntentBuilder(number, CallInitiationType.Type.REGULAR_SEARCH).build());
+ PreCall.start(context, new CallIntentBuilder(number, CallInitiationType.Type.REGULAR_SEARCH));
}
}
diff --git a/java/com/android/incallui/disconnectdialog/VideoCallNotAvailablePrompt.java b/java/com/android/incallui/disconnectdialog/VideoCallNotAvailablePrompt.java
index 526d45ed7..099450ae8 100644
--- a/java/com/android/incallui/disconnectdialog/VideoCallNotAvailablePrompt.java
+++ b/java/com/android/incallui/disconnectdialog/VideoCallNotAvailablePrompt.java
@@ -19,7 +19,6 @@ package com.android.incallui.disconnectdialog;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
-import android.content.Intent;
import android.support.annotation.NonNull;
import android.telecom.DisconnectCause;
import android.telecom.PhoneAccountHandle;
@@ -28,7 +27,7 @@ import com.android.contacts.common.compat.telecom.TelecomManagerCompat;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
import com.android.dialer.common.LogUtil;
-import com.android.dialer.util.DialerUtils;
+import com.android.dialer.precall.PreCall;
import com.android.incallui.call.DialerCall;
/** Prompt user to make voice call if video call is not currently available. */
@@ -67,10 +66,9 @@ public class VideoCallNotAvailablePrompt implements DisconnectDialog {
private void makeVoiceCall(Context context, String number, PhoneAccountHandle accountHandle) {
LogUtil.enterBlock("VideoCallNotAvailablePrompt.makeVoiceCall");
- Intent intent =
+ PreCall.start(
+ context,
new CallIntentBuilder(number, CallInitiationType.Type.IMS_VIDEO_BLOCKED_FALLBACK_TO_VOICE)
- .setPhoneAccountHandle(accountHandle)
- .build();
- DialerUtils.startActivityWithErrorToast(context, intent);
+ .setPhoneAccountHandle(accountHandle));
}
}
diff --git a/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java b/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
index 2f8dc7ad8..3608c3602 100644
--- a/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
+++ b/java/com/android/voicemail/impl/sms/LegacyModeSmsHandler.java
@@ -28,6 +28,7 @@ import android.telephony.TelephonyManager;
import android.telephony.VisualVoicemailSms;
import com.android.dialer.callintent.CallInitiationType;
import com.android.dialer.callintent.CallIntentBuilder;
+import com.android.dialer.precall.PreCall;
import com.android.voicemail.VoicemailClient;
import com.android.voicemail.impl.OmtpConstants;
import com.android.voicemail.impl.OmtpVvmCarrierConfigHelper;
@@ -94,9 +95,10 @@ public class LegacyModeSmsHandler {
PendingIntent.getActivity(
context,
CALL_VOICEMAIL_REQUEST_CODE,
- CallIntentBuilder.forVoicemail(
- phoneAccountHandle, CallInitiationType.Type.LEGACY_VOICEMAIL_NOTIFICATION)
- .build(),
+ PreCall.getIntent(
+ context,
+ CallIntentBuilder.forVoicemail(
+ phoneAccountHandle, CallInitiationType.Type.LEGACY_VOICEMAIL_NOTIFICATION)),
PendingIntent.FLAG_UPDATE_CURRENT);
} else {
Intent launchVoicemailSettingsIntent =