diff --git a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
index 189279e..a09bfd4 100644
--- a/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
+++ b/java/com/android/dialer/app/calllog/PhoneCallDetailsHelper.java
@@ -89,7 +89,7 @@
     views.callTypeIcons.setShowVideo(
         (details.features & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO);
     views.callTypeIcons.setShowHd(
-        MotorolaUtils.shouldShowHdIconInCallLog(mContext, details.features));
+        (details.features & Calls.FEATURES_HD_CALL) == Calls.FEATURES_HD_CALL);
     views.callTypeIcons.setShowWifi(
         MotorolaUtils.shouldShowWifiIconInCallLog(mContext, details.features));
     views.callTypeIcons.requestLayout();
diff --git a/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java b/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
index b98dce7..c65bb91 100644
--- a/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
+++ b/java/com/android/dialer/calldetails/CallDetailsEntryViewHolder.java
@@ -98,7 +98,8 @@
     callTypeIcon.clear();
     callTypeIcon.add(callType);
     callTypeIcon.setShowVideo(isVideoCall);
-    callTypeIcon.setShowHd(MotorolaUtils.shouldShowHdIconInCallLog(context, entry.getFeatures()));
+    callTypeIcon.setShowHd(
+        (entry.getFeatures() & Calls.FEATURES_HD_CALL) == Calls.FEATURES_HD_CALL);
     callTypeIcon.setShowWifi(
         MotorolaUtils.shouldShowWifiIconInCallLog(context, entry.getFeatures()));
 
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
index 4e59301..9ddb65d 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
@@ -115,7 +115,7 @@
   private void setPrimaryCallTypes(CoalescedRow row) {
     // Only HD and Wifi icons are shown following the primary text.
     primaryCallTypeIconsView.setShowHd(
-        MotorolaUtils.shouldShowHdIconInCallLog(context, row.features()));
+        (row.features() & Calls.FEATURES_HD_CALL) == Calls.FEATURES_HD_CALL);
     primaryCallTypeIconsView.setShowWifi(
         MotorolaUtils.shouldShowWifiIconInCallLog(context, row.features()));
   }
diff --git a/java/com/android/dialer/calllogutils/CallTypeIconsView.java b/java/com/android/dialer/calllogutils/CallTypeIconsView.java
index 58e4acf..bf33faa 100644
--- a/java/com/android/dialer/calllogutils/CallTypeIconsView.java
+++ b/java/com/android/dialer/calllogutils/CallTypeIconsView.java
@@ -24,6 +24,7 @@
 import android.graphics.PorterDuff;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
+import android.support.annotation.VisibleForTesting;
 import android.util.AttributeSet;
 import android.view.View;
 import com.android.dialer.compat.AppCompatConstants;
@@ -117,6 +118,11 @@
     }
   }
 
+  @VisibleForTesting
+  public boolean isHdShown() {
+    return mShowHd;
+  }
+
   public void setShowWifi(boolean showWifi) {
     mShowWifi = showWifi;
     if (showWifi) {
diff --git a/java/com/android/dialer/oem/MotorolaUtils.java b/java/com/android/dialer/oem/MotorolaUtils.java
index a2757d3..5a0800e 100644
--- a/java/com/android/dialer/oem/MotorolaUtils.java
+++ b/java/com/android/dialer/oem/MotorolaUtils.java
@@ -32,8 +32,6 @@
       "hd_codec_blinking_icon_when_connecting_enabled";
   private static final String CONFIG_HD_CODEC_SHOW_ICON_IN_NOTIFICATION_ENABLED =
       "hd_codec_show_icon_in_notification_enabled";
-  private static final String CONFIG_HD_CODEC_SHOW_ICON_IN_CALL_LOG_ENABLED =
-      "hd_codec_show_icon_in_call_log_enabled";
   private static final String CONFIG_WIFI_CALL_SHOW_ICON_IN_CALL_LOG_ENABLED =
       "wifi_call_show_icon_in_call_log_enabled";
 
@@ -80,13 +78,6 @@
         && isSupportingSprintHdCodec(context);
   }
 
-  public static boolean shouldShowHdIconInCallLog(Context context, int features) {
-    return ConfigProviderBindings.get(context)
-            .getBoolean(CONFIG_HD_CODEC_SHOW_ICON_IN_CALL_LOG_ENABLED, true)
-        && (features & Calls.FEATURES_HD_CALL) == Calls.FEATURES_HD_CALL
-        && isSupportingSprintHdCodec(context);
-  }
-
   public static boolean shouldShowWifiIconInCallLog(Context context, int features) {
     return ConfigProviderBindings.get(context)
             .getBoolean(CONFIG_WIFI_CALL_SHOW_ICON_IN_CALL_LOG_ENABLED, true)
