From 36c8b53f677db00b28ab54ae0d4eb690d563528d Mon Sep 17 00:00:00 2001 From: calderwoodra Date: Fri, 23 Mar 2018 17:08:21 -0700 Subject: Bumped a few more tests to N. Bug: 73902692 Test: tap PiperOrigin-RevId: 190298092 Change-Id: Icb9f26a93b6e3c27a836442c48a9dd6f99124785 --- java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java | 2 +- java/com/android/dialer/persistentlog/PersistentLogFileHandler.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java index 3a7733436..917870ec7 100644 --- a/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java +++ b/java/com/android/dialer/app/voicemail/VoicemailPlaybackPresenter.java @@ -89,7 +89,7 @@ import javax.annotation.concurrent.ThreadSafe; * calls into this class from outside must be done from the main UI thread. */ @NotThreadSafe -@TargetApi(VERSION_CODES.M) +@TargetApi(VERSION_CODES.N) public class VoicemailPlaybackPresenter implements MediaPlayer.OnPreparedListener, MediaPlayer.OnCompletionListener, diff --git a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java b/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java index 8bd8335a2..a6067d368 100644 --- a/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java +++ b/java/com/android/dialer/persistentlog/PersistentLogFileHandler.java @@ -53,7 +53,7 @@ import java.util.List; * worker thread. */ @SuppressWarnings("AndroidApiChecker") // lambdas -@TargetApi(VERSION_CODES.M) +@TargetApi(VERSION_CODES.N) final class PersistentLogFileHandler { private static final String LOG_DIRECTORY = "persistent_log"; -- cgit v1.2.3 From efc3de47fd8394fd7f929f12bf7cbe0feb3a74cc Mon Sep 17 00:00:00 2001 From: twyen Date: Fri, 23 Mar 2018 17:39:25 -0700 Subject: Forward extras from pre call external receivers to placeCall(). All extras that CallIntentBuilder handles will be stripped and read into the builder. Other entries will be send to telecom when the intent is build. Renamed CallIntentBuilder.outGoingCallExtras for clarity. Bug: 72877810 Test: Unit tests PiperOrigin-RevId: 190301333 Change-Id: I9a8bf6664b270078d91dbfb3398f8990d243b9f8 --- .../dialer/callintent/CallIntentBuilder.java | 27 ++++++--- .../externalreceiver/LaunchPreCallActivity.java | 69 ++++++++++++++++++++++ .../dialer/precall/impl/AssistedDialAction.java | 6 +- .../precall/impl/CallingAccountSelector.java | 2 +- 4 files changed, 93 insertions(+), 11 deletions(-) diff --git a/java/com/android/dialer/callintent/CallIntentBuilder.java b/java/com/android/dialer/callintent/CallIntentBuilder.java index 9d9fcf4da..0f9f8905d 100644 --- a/java/com/android/dialer/callintent/CallIntentBuilder.java +++ b/java/com/android/dialer/callintent/CallIntentBuilder.java @@ -46,7 +46,8 @@ public class CallIntentBuilder implements Parcelable { private String callSubject; private boolean allowAssistedDial; - private final Bundle outgoingCallExtras = new Bundle(); + private final Bundle inCallUiIntentExtras = new Bundle(); + private final Bundle placeCallExtras = new Bundle(); private static int lightbringerButtonAppearInExpandedCallLogItemCount = 0; private static int lightbringerButtonAppearInCollapsedCallLogItemCount = 0; @@ -110,7 +111,7 @@ public class CallIntentBuilder implements Parcelable { isVideoCall = parcel.readInt() != 0; callSubject = parcel.readString(); allowAssistedDial = parcel.readInt() != 0; - outgoingCallExtras.putAll(parcel.readBundle(classLoader)); + inCallUiIntentExtras.putAll(parcel.readBundle(classLoader)); } public static CallIntentBuilder forVoicemail( @@ -170,8 +171,16 @@ public class CallIntentBuilder implements Parcelable { } /** Additional data the in call UI can read with {@link Details#getIntentExtras()} */ - public Bundle getOutgoingCallExtras() { - return outgoingCallExtras; + public Bundle getInCallUiIntentExtras() { + return inCallUiIntentExtras; + } + + /** + * Other extras that should be used with {@link TelecomManager#placeCall(Uri, Bundle)}. This will + * override everything set by the CallIntentBuilder + */ + public Bundle getPlaceCallExtras() { + return placeCallExtras; } /** @@ -186,11 +195,11 @@ public class CallIntentBuilder implements Parcelable { TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, isVideoCall ? VideoProfile.STATE_BIDIRECTIONAL : VideoProfile.STATE_AUDIO_ONLY); - outgoingCallExtras.putLong( + inCallUiIntentExtras.putLong( Constants.EXTRA_CALL_CREATED_TIME_MILLIS, SystemClock.elapsedRealtime()); - CallIntentParser.putCallSpecificAppData(outgoingCallExtras, callSpecificAppData); + CallIntentParser.putCallSpecificAppData(inCallUiIntentExtras, callSpecificAppData); - intent.putExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, outgoingCallExtras); + intent.putExtra(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, inCallUiIntentExtras); if (phoneAccountHandle != null) { intent.putExtra(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, phoneAccountHandle); @@ -200,6 +209,8 @@ public class CallIntentBuilder implements Parcelable { intent.putExtra(TelecomManager.EXTRA_CALL_SUBJECT, callSubject); } + intent.putExtras(placeCallExtras); + return intent; } @@ -257,7 +268,7 @@ public class CallIntentBuilder implements Parcelable { dest.writeInt(isVideoCall ? 1 : 0); dest.writeString(callSubject); dest.writeInt(allowAssistedDial ? 1 : 0); - dest.writeBundle(outgoingCallExtras); + dest.writeBundle(inCallUiIntentExtras); } public static final Creator CREATOR = diff --git a/java/com/android/dialer/precall/externalreceiver/LaunchPreCallActivity.java b/java/com/android/dialer/precall/externalreceiver/LaunchPreCallActivity.java index 6096d5192..bf7995a0c 100644 --- a/java/com/android/dialer/precall/externalreceiver/LaunchPreCallActivity.java +++ b/java/com/android/dialer/precall/externalreceiver/LaunchPreCallActivity.java @@ -23,13 +23,16 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.telecom.PhoneAccountHandle; import android.telecom.TelecomManager; +import android.telecom.VideoProfile; import com.android.dialer.callintent.CallInitiationType.Type; import com.android.dialer.callintent.CallIntentBuilder; +import com.android.dialer.common.LogUtil; import com.android.dialer.configprovider.ConfigProvider; import com.android.dialer.configprovider.ConfigProviderBindings; import com.android.dialer.logging.DialerImpression; import com.android.dialer.logging.Logger; import com.android.dialer.precall.PreCall; +import com.google.common.collect.ImmutableList; /** * Activity that forwards to {@link PreCall#start(Context, CallIntentBuilder)} so the pre-call flow @@ -50,6 +53,17 @@ public class LaunchPreCallActivity extends Activity { public static final String EXTRA_ALLOW_ASSISTED_DIAL = "allow_assisted_dial"; + private static final ImmutableList HANDLED_INTENT_EXTRAS = + ImmutableList.of( + TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE, + TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS, + TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE, + TelecomManager.EXTRA_CALL_SUBJECT, + EXTRA_PHONE_ACCOUNT_HANDLE, + EXTRA_IS_VIDEO_CALL, + EXTRA_CALL_SUBJECT, + EXTRA_ALLOW_ASSISTED_DIAL); + @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -72,7 +86,62 @@ public class LaunchPreCallActivity extends Activity { intent.getBooleanExtra( EXTRA_ALLOW_ASSISTED_DIAL, configProvider.getBoolean("assisted_dialing_default_precall_state", false))); + filterExtras(intent.getExtras(), builder); PreCall.start(this, builder); finish(); } + + /** + * Move key-value pairs that {@link CallIntentBuilder} can handle from {@code intentExtras} to + * {@code builder} + */ + private void filterExtras(@Nullable Bundle intentExtras, CallIntentBuilder builder) { + if (intentExtras == null) { + return; + } + Bundle bundle = new Bundle(); + bundle.putAll(intentExtras); + + if (intentExtras.containsKey(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE)) { + int videoState = intentExtras.getInt(TelecomManager.EXTRA_START_CALL_WITH_VIDEO_STATE); + switch (videoState) { + case VideoProfile.STATE_BIDIRECTIONAL: + builder.setIsVideoCall(true); + break; + case VideoProfile.STATE_AUDIO_ONLY: + builder.setIsVideoCall(false); + break; + case VideoProfile.STATE_RX_ENABLED: + case VideoProfile.STATE_TX_ENABLED: + LogUtil.w( + "LaunchPreCallActivity.filterExtras", + "unsupported video state " + videoState + ", overriding to STATE_BIDIRECTIONAL"); + builder.setIsVideoCall(true); + break; + default: + LogUtil.w("LaunchPreCallActivity.filterExtras", "unknown video state " + videoState); + builder.setIsVideoCall(false); + } + } + + if (intentExtras.containsKey(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS)) { + builder + .getInCallUiIntentExtras() + .putAll(intentExtras.getBundle(TelecomManager.EXTRA_OUTGOING_CALL_EXTRAS)); + } + + if (intentExtras.containsKey(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE)) { + builder.setPhoneAccountHandle( + intentExtras.getParcelable(TelecomManager.EXTRA_PHONE_ACCOUNT_HANDLE)); + } + + if (intentExtras.containsKey(TelecomManager.EXTRA_CALL_SUBJECT)) { + builder.setCallSubject(intentExtras.getString(TelecomManager.EXTRA_CALL_SUBJECT)); + } + + for (String handledKey : HANDLED_INTENT_EXTRAS) { + bundle.remove(handledKey); + } + builder.getPlaceCallExtras().putAll(bundle); + } } diff --git a/java/com/android/dialer/precall/impl/AssistedDialAction.java b/java/com/android/dialer/precall/impl/AssistedDialAction.java index 9ed37ac8c..e4e525559 100644 --- a/java/com/android/dialer/precall/impl/AssistedDialAction.java +++ b/java/com/android/dialer/precall/impl/AssistedDialAction.java @@ -69,10 +69,12 @@ public class AssistedDialAction implements PreCallAction { Optional transformedNumber = assistedDialingMediator.attemptAssistedDial(phoneNumber); if (transformedNumber.isPresent()) { - builder.getOutgoingCallExtras().putBoolean(TelephonyManagerCompat.USE_ASSISTED_DIALING, true); + builder + .getInCallUiIntentExtras() + .putBoolean(TelephonyManagerCompat.USE_ASSISTED_DIALING, true); Bundle assistedDialingExtras = transformedNumber.get().toBundle(); builder - .getOutgoingCallExtras() + .getInCallUiIntentExtras() .putBundle(TelephonyManagerCompat.ASSISTED_DIALING_EXTRAS, assistedDialingExtras); builder.setUri( CallUtil.getCallUri(Assert.isNotNull(transformedNumber.get().transformedNumber()))); diff --git a/java/com/android/dialer/precall/impl/CallingAccountSelector.java b/java/com/android/dialer/precall/impl/CallingAccountSelector.java index a5dc6a097..56b392b19 100644 --- a/java/com/android/dialer/precall/impl/CallingAccountSelector.java +++ b/java/com/android/dialer/precall/impl/CallingAccountSelector.java @@ -160,7 +160,7 @@ public class CallingAccountSelector implements PreCallAction { "CallingAccountSelector.processPreferredAccount", "Auto selected suggestion"); builder.setPhoneAccountHandle(result.getSuggestion().get().phoneAccountHandle); builder - .getOutgoingCallExtras() + .getInCallUiIntentExtras() .putString( SuggestionProvider.EXTRA_SIM_SUGGESTION_REASON, result.getSuggestion().get().reason.name()); -- cgit v1.2.3