diff --git a/java/com/android/dialer/callintent/CallIntentBuilder.java b/java/com/android/dialer/callintent/CallIntentBuilder.java
index ff490c2..9d9fcf4 100644
--- a/java/com/android/dialer/callintent/CallIntentBuilder.java
+++ b/java/com/android/dialer/callintent/CallIntentBuilder.java
@@ -25,6 +25,7 @@
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.VisibleForTesting;
+import android.telecom.Call.Details;
 import android.telecom.PhoneAccount;
 import android.telecom.PhoneAccountHandle;
 import android.telecom.TelecomManager;
@@ -168,6 +169,7 @@
     return callSubject;
   }
 
+  /** Additional data the in call UI can read with {@link Details#getIntentExtras()} */
   public Bundle getOutgoingCallExtras() {
     return outgoingCallExtras;
   }
diff --git a/java/com/android/dialer/precall/impl/CallingAccountSelector.java b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
index b7f071d..a5dc6a0 100644
--- a/java/com/android/dialer/precall/impl/CallingAccountSelector.java
+++ b/java/com/android/dialer/precall/impl/CallingAccountSelector.java
@@ -159,6 +159,11 @@
                   LogUtil.i(
                       "CallingAccountSelector.processPreferredAccount", "Auto selected suggestion");
                   builder.setPhoneAccountHandle(result.getSuggestion().get().phoneAccountHandle);
+                  builder
+                      .getOutgoingCallExtras()
+                      .putString(
+                          SuggestionProvider.EXTRA_SIM_SUGGESTION_REASON,
+                          result.getSuggestion().get().reason.name());
                   pendingAction.finish();
                   return;
                 }
diff --git a/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java b/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java
index cfa37c8..f710f73 100644
--- a/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java
+++ b/java/com/android/dialer/preferredsim/suggestion/SuggestionProvider.java
@@ -30,6 +30,8 @@
 /** Provides hints to the user when selecting a SIM to make a call. */
 public interface SuggestionProvider {
 
+  String EXTRA_SIM_SUGGESTION_REASON = "sim_suggestion_reason";
+
   /** The reason the suggestion is made. */
   enum Reason {
     UNKNOWN,
diff --git a/java/com/android/incallui/CallCardPresenter.java b/java/com/android/incallui/CallCardPresenter.java
index 8eb07c5..49f819b 100644
--- a/java/com/android/incallui/CallCardPresenter.java
+++ b/java/com/android/incallui/CallCardPresenter.java
@@ -54,6 +54,7 @@
 import com.android.dialer.oem.MotorolaUtils;
 import com.android.dialer.phonenumberutil.PhoneNumberHelper;
 import com.android.dialer.postcall.PostCall;
+import com.android.dialer.preferredsim.suggestion.SuggestionProvider;
 import com.android.incallui.ContactInfoCache.ContactCacheEntry;
 import com.android.incallui.ContactInfoCache.ContactInfoCacheCallback;
 import com.android.incallui.InCallPresenter.InCallDetailsListener;
@@ -478,6 +479,7 @@
                   .setSessionModificationState(primary.getVideoTech().getSessionModificationState())
                   .setDisconnectCause(primary.getDisconnectCause())
                   .setConnectionLabel(getConnectionLabel())
+                  .setSimSuggestionReason(getSimSuggestionReason())
                   .setConnectionIcon(getCallStateIcon())
                   .setGatewayNumber(getGatewayNumber())
                   .setCallSubject(shouldShowCallSubject(primary) ? primary.getCallSubject() : null)
@@ -988,6 +990,21 @@
     return primary.getCallProviderLabel();
   }
 
+  @Nullable
+  private SuggestionProvider.Reason getSimSuggestionReason() {
+    String value =
+        primary.getIntentExtras().getString(SuggestionProvider.EXTRA_SIM_SUGGESTION_REASON);
+    if (value == null) {
+      return null;
+    }
+    try {
+      return SuggestionProvider.Reason.valueOf(value);
+    } catch (IllegalArgumentException e) {
+      LogUtil.e("CallCardPresenter.getConnectionLabel", "unknown reason " + value);
+      return null;
+    }
+  }
+
   private Drawable getCallStateIcon() {
     // Return connection icon if one exists.
     StatusHints statusHints = primary.getStatusHints();
diff --git a/java/com/android/incallui/contactgrid/ContactGridManager.java b/java/com/android/incallui/contactgrid/ContactGridManager.java
index 327eaf2..d8b1f50 100644
--- a/java/com/android/incallui/contactgrid/ContactGridManager.java
+++ b/java/com/android/incallui/contactgrid/ContactGridManager.java
@@ -244,6 +244,10 @@
       statusTextView.setText(info.label);
       statusTextView.setVisibility(View.VISIBLE);
       statusTextView.setSingleLine(info.labelIsSingleLine);
+      // Required to start the marquee
+      // This will send a AccessibilityEvent.TYPE_VIEW_SELECTED, but has no observable effect on
+      // talkback.
+      statusTextView.setSelected(true);
     }
 
     if (info.icon == null) {
diff --git a/java/com/android/incallui/contactgrid/TopRow.java b/java/com/android/incallui/contactgrid/TopRow.java
index f551092..89300ca 100644
--- a/java/com/android/incallui/contactgrid/TopRow.java
+++ b/java/com/android/incallui/contactgrid/TopRow.java
@@ -166,7 +166,22 @@
 
   private static CharSequence getLabelForDialing(Context context, PrimaryCallState state) {
     if (!TextUtils.isEmpty(state.connectionLabel()) && !state.isWifi()) {
-      return context.getString(R.string.incall_calling_via_template, state.connectionLabel());
+      CharSequence label = getCallingViaLabel(context, state);
+
+      if (state.isAssistedDialed() && state.assistedDialingExtras() != null) {
+        LogUtil.i("TopRow.getLabelForDialing", "using assisted dialing with via label.");
+        String countryCode =
+            String.valueOf(state.assistedDialingExtras().transformedNumberCountryCallingCode());
+        label =
+            TextUtils.concat(
+                label,
+                " • ",
+                context.getString(
+                    R.string.incall_connecting_assited_dialed_component,
+                    countryCode,
+                    state.assistedDialingExtras().userHomeCountryCode()));
+      }
+      return label;
     } else {
       if (state.isVideoCall()) {
         if (state.isWifi()) {
@@ -189,6 +204,22 @@
     }
   }
 
+  private static CharSequence getCallingViaLabel(Context context, PrimaryCallState state) {
+    if (state.simSuggestionReason() != null) {
+      switch (state.simSuggestionReason()) {
+        case FREQUENT:
+          return context.getString(
+              R.string.incall_calling_on_recent_choice_template, state.connectionLabel());
+        case INTRA_CARRIER:
+          return context.getString(
+              R.string.incall_calling_on_same_carrier_template, state.connectionLabel());
+        default:
+          break;
+      }
+    }
+    return context.getString(R.string.incall_calling_via_template, state.connectionLabel());
+  }
+
   private static CharSequence getConnectionLabel(PrimaryCallState state) {
     if (!TextUtils.isEmpty(state.connectionLabel())
         && (isAccount(state) || state.isWifi() || state.isConference())) {
diff --git a/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_top_row.xml b/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_top_row.xml
index 42066f2..2f9ca3e 100644
--- a/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_top_row.xml
+++ b/java/com/android/incallui/contactgrid/res/layout/incall_contactgrid_top_row.xml
@@ -40,6 +40,8 @@
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:singleLine="true"
+    android:ellipsize="marquee"
+    android:scrollHorizontally="true"
     android:textAppearance="@style/Dialer.Incall.TextAppearance"
     tools:text="Captain Holt"/>
 </LinearLayout>
diff --git a/java/com/android/incallui/contactgrid/res/values/strings.xml b/java/com/android/incallui/contactgrid/res/values/strings.xml
index c6bdb11..7c0f5a6 100644
--- a/java/com/android/incallui/contactgrid/res/values/strings.xml
+++ b/java/com/android/incallui/contactgrid/res/values/strings.xml
@@ -20,6 +20,14 @@
      [CHAR LIMIT=40] -->
   <string name="incall_calling_via_template">Calling via <xliff:g id="provider_name">%s</xliff:g></string>
 
+  <!-- Title displayed in the overlay for outgoing calls when the provider is automatically chosen
+         because it is the same provider the callee is using. [CHAR LIMIT=60] -->
+  <string name="incall_calling_on_same_carrier_template">Calling on same carrier <xliff:g id="provider_name">%s</xliff:g></string>
+
+  <!-- Title displayed in the overlay for outgoing calls when the provider is automatically chosen
+         because the user has selected it multiple times.  [CHAR LIMIT=60] -->
+  <string name="incall_calling_on_recent_choice_template">Calling on recent choice <xliff:g id="provider_name">%s</xliff:g></string>
+
   <!-- Displayed above the contact name during an outgoing phone call. Indicates that the call is
        in the connecting stage. -->
   <string name="incall_connecting">Calling…</string>
@@ -27,6 +35,9 @@
   <!-- Display information related to assisted dialing, for example Calling using +1 (US)… -->
   <string name="incall_connecting_assited_dialed">Calling using +<xliff:g example="1" id="ad_country_code">%1$s</xliff:g> (<xliff:g example="1" id="ad_user_home_locale">%2$s</xliff:g>)\u2026</string>
 
+  <!-- String appended to the outgoing call title for additional information related to assisted dialing, for example "Calling via <CARRIER> • Using +1 (US)… "-->
+  <string name="incall_connecting_assited_dialed_component">Using +<xliff:g example="1" id="ad_country_code">%1$s</xliff:g> (<xliff:g example="1" id="ad_user_home_locale">%2$s</xliff:g>)\u2026</string>
+
   <!-- Displayed above the contact name when an external call is being pulled to the local
        device. -->
   <string name="incall_transferring">Transferring…</string>
diff --git a/java/com/android/incallui/incall/protocol/PrimaryCallState.java b/java/com/android/incallui/incall/protocol/PrimaryCallState.java
index 1d536e9..1d23036 100644
--- a/java/com/android/incallui/incall/protocol/PrimaryCallState.java
+++ b/java/com/android/incallui/incall/protocol/PrimaryCallState.java
@@ -23,6 +23,7 @@
 import android.text.TextUtils;
 import com.android.dialer.assisteddialing.TransformationInfo;
 import com.android.dialer.common.Assert;
+import com.android.dialer.preferredsim.suggestion.SuggestionProvider;
 import com.android.incallui.call.DialerCall;
 import com.android.incallui.call.DialerCall.State;
 import com.android.incallui.videotech.utils.SessionModificationState;
@@ -60,6 +61,9 @@
   public abstract String connectionLabel();
 
   @Nullable
+  public abstract SuggestionProvider.Reason simSuggestionReason();
+
+  @Nullable
   public abstract Drawable connectionIcon();
 
   @Nullable
@@ -141,6 +145,8 @@
 
     public abstract Builder setConnectionLabel(String connectionLabel);
 
+    public abstract Builder setSimSuggestionReason(SuggestionProvider.Reason reason);
+
     public abstract Builder setConnectionIcon(Drawable connectionIcon);
 
     public abstract Builder setGatewayNumber(String gatewayNumber);
