diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
index 3b21a60..cdc0858 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
@@ -189,7 +189,7 @@
   }
 
   private void setPhoto(CoalescedRow row) {
-    contactPhotoView.setPhoto(PhotoInfoBuilder.fromCoalescedRow(row).build());
+    contactPhotoView.setPhoto(PhotoInfoBuilder.fromCoalescedRow(activity, row).build());
   }
 
   private void setFeatureIcons(CoalescedRow row) {
diff --git a/java/com/android/dialer/calllog/ui/menu/BottomSheetHeader.java b/java/com/android/dialer/calllog/ui/menu/BottomSheetHeader.java
index 25ae476..6d0b795 100644
--- a/java/com/android/dialer/calllog/ui/menu/BottomSheetHeader.java
+++ b/java/com/android/dialer/calllog/ui/menu/BottomSheetHeader.java
@@ -28,7 +28,7 @@
   static HistoryItemBottomSheetHeaderInfo fromRow(Context context, CoalescedRow row) {
     return HistoryItemBottomSheetHeaderInfo.newBuilder()
         .setNumber(row.getNumber())
-        .setPhotoInfo(PhotoInfoBuilder.fromCoalescedRow(row))
+        .setPhotoInfo(PhotoInfoBuilder.fromCoalescedRow(context, row))
         .setPrimaryText(CallLogEntryText.buildPrimaryText(context, row).toString())
         .setSecondaryText(
             CallLogEntryText.buildSecondaryTextForBottomSheet(context, row).toString())
diff --git a/java/com/android/dialer/calllog/ui/menu/Modules.java b/java/com/android/dialer/calllog/ui/menu/Modules.java
index ded4958..7c6c65c 100644
--- a/java/com/android/dialer/calllog/ui/menu/Modules.java
+++ b/java/com/android/dialer/calllog/ui/menu/Modules.java
@@ -88,7 +88,7 @@
       Context context, CoalescedRow row) {
     return CallDetailsHeaderInfo.newBuilder()
         .setDialerPhoneNumber(row.getNumber())
-        .setPhotoInfo(PhotoInfoBuilder.fromCoalescedRow(row))
+        .setPhotoInfo(PhotoInfoBuilder.fromCoalescedRow(context, row))
         .setPrimaryText(CallLogEntryText.buildPrimaryText(context, row).toString())
         .setSecondaryText(
             CallLogEntryText.buildSecondaryTextForBottomSheet(context, row).toString())
diff --git a/java/com/android/dialer/calllogutils/PhotoInfoBuilder.java b/java/com/android/dialer/calllogutils/PhotoInfoBuilder.java
index 0677c91..2e2e4ab 100644
--- a/java/com/android/dialer/calllogutils/PhotoInfoBuilder.java
+++ b/java/com/android/dialer/calllogutils/PhotoInfoBuilder.java
@@ -16,6 +16,7 @@
 
 package com.android.dialer.calllogutils;
 
+import android.content.Context;
 import android.provider.CallLog.Calls;
 import android.support.v4.os.BuildCompat;
 import com.android.dialer.NumberAttributes;
@@ -28,8 +29,9 @@
 public final class PhotoInfoBuilder {
 
   /** Returns a {@link PhotoInfo.Builder} with info from {@link CoalescedRow}. */
-  public static PhotoInfo.Builder fromCoalescedRow(CoalescedRow coalescedRow) {
+  public static PhotoInfo.Builder fromCoalescedRow(Context context, CoalescedRow coalescedRow) {
     return fromNumberAttributes(coalescedRow.getNumberAttributes())
+        .setName(CallLogEntryText.buildPrimaryText(context, coalescedRow).toString())
         .setFormattedNumber(coalescedRow.getFormattedNumber())
         .setIsVoicemail(coalescedRow.getIsVoicemailCall())
         .setIsSpam(
