Merge "Add phone account id and component name to NUI VM Pre-call."
diff --git a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java b/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java
index df47159..52f3d0a 100644
--- a/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java
+++ b/java/com/android/dialer/voicemail/listui/NewVoicemailMediaPlayerView.java
@@ -46,6 +46,7 @@
 import com.android.dialer.common.concurrent.DialerExecutor.Worker;
 import com.android.dialer.common.concurrent.DialerExecutorComponent;
 import com.android.dialer.precall.PreCall;
+import com.android.dialer.telecom.TelecomUtil;
 import com.android.dialer.voicemail.listui.NewVoicemailViewHolder.NewVoicemailViewHolderListener;
 import com.android.dialer.voicemail.model.VoicemailEntry;
 import java.util.Locale;
@@ -68,6 +69,8 @@
   private TextView voicemailLoadingStatusView;
   private Uri voicemailUri;
   private String numberVoicemailFrom;
+  private String phoneAccountId;
+  private String phoneAccountComponentName;
   private FragmentManager fragmentManager;
   private NewVoicemailViewHolder newVoicemailViewHolder;
   private NewVoicemailMediaPlayer mediaPlayer;
@@ -122,6 +125,8 @@
     voicemailUri = null;
     voicemailLoadingStatusView.setVisibility(GONE);
     numberVoicemailFrom = null;
+    phoneAccountId = null;
+    phoneAccountComponentName = null;
   }
 
   /**
@@ -152,6 +157,8 @@
     Uri uri = Uri.parse(voicemailEntryFromAdapter.voicemailUri());
 
     numberVoicemailFrom = voicemailEntryFromAdapter.number().getNormalizedNumber();
+    phoneAccountId = voicemailEntryFromAdapter.phoneAccountId();
+    phoneAccountComponentName = voicemailEntryFromAdapter.phoneAccountComponentName();
 
     Assert.isNotNull(viewHolder);
     Assert.isNotNull(uri);
@@ -510,7 +517,6 @@
         }
       };
 
-  // TODO(uabdullah): Add phone account handle (a bug)
   private final View.OnClickListener phoneButtonListener =
       new View.OnClickListener() {
         @Override
@@ -525,7 +531,11 @@
               !TextUtils.isEmpty(numberVoicemailFrom),
               "number cannot be empty:" + numberVoicemailFrom);
           PreCall.start(
-              getContext(), new CallIntentBuilder(numberVoicemailFrom, Type.VOICEMAIL_LOG));
+              getContext(),
+              new CallIntentBuilder(numberVoicemailFrom, Type.VOICEMAIL_LOG)
+                  .setPhoneAccountHandle(
+                      TelecomUtil.composePhoneAccountHandle(
+                          phoneAccountComponentName, phoneAccountId)));
         }
       };
 
diff --git a/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java b/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
index 11e7888..5f717cf 100644
--- a/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
+++ b/java/com/android/dialer/voicemail/listui/VoicemailCursorLoader.java
@@ -45,7 +45,9 @@
         AnnotatedCallLog.VOICEMAIL_URI,
         AnnotatedCallLog.IS_READ,
         AnnotatedCallLog.NUMBER_ATTRIBUTES,
-        AnnotatedCallLog.TRANSCRIPTION_STATE
+        AnnotatedCallLog.TRANSCRIPTION_STATE,
+        AnnotatedCallLog.PHONE_ACCOUNT_COMPONENT_NAME,
+        AnnotatedCallLog.PHONE_ACCOUNT_ID,
       };
 
   // Indexes for VOICEMAIL_COLUMNS
@@ -61,6 +63,8 @@
   private static final int IS_READ = 9;
   private static final int NUMBER_ATTRIBUTES = 10;
   private static final int TRANSCRIPTION_STATE = 11;
+  private static final int PHONE_ACCOUNT_COMPONENT_NAME = 12;
+  private static final int PHONE_ACCOUNT_ID = 13;
 
   // TODO(zachh): Optimize indexes
   VoicemailCursorLoader(Context context) {
@@ -108,6 +112,8 @@
         .setIsRead(cursor.getInt(IS_READ))
         .setNumberAttributes(numberAttributes)
         .setTranscriptionState(cursor.getInt(TRANSCRIPTION_STATE))
+        .setPhoneAccountComponentName(cursor.getString(PHONE_ACCOUNT_COMPONENT_NAME))
+        .setPhoneAccountId(cursor.getString(PHONE_ACCOUNT_ID))
         .build();
   }
 
diff --git a/java/com/android/dialer/voicemail/model/VoicemailEntry.java b/java/com/android/dialer/voicemail/model/VoicemailEntry.java
index 5830fb1..2f554b1 100644
--- a/java/com/android/dialer/voicemail/model/VoicemailEntry.java
+++ b/java/com/android/dialer/voicemail/model/VoicemailEntry.java
@@ -68,6 +68,12 @@
 
   public abstract int transcriptionState();
 
+  @Nullable
+  public abstract String phoneAccountComponentName();
+
+  @Nullable
+  public abstract String phoneAccountId();
+
   /** Builder for {@link VoicemailEntry}. */
   @AutoValue.Builder
   public abstract static class Builder {
@@ -96,6 +102,11 @@
 
     public abstract Builder setTranscriptionState(int transcriptionState);
 
+    public abstract Builder setPhoneAccountComponentName(
+        @Nullable String phoneAccountComponentName);
+
+    public abstract Builder setPhoneAccountId(@Nullable String phoneAccountId);
+
     public abstract VoicemailEntry build();
   }
 }