Badge contact photos in the new call log for video calls.

Bug: 70988682
Test: NewCallLogViewHolderTest
PiperOrigin-RevId: 190783830
Change-Id: Ib0b1ec23b7c278b83516019924b6c68ff12adaf9
diff --git a/assets/quantum/res/drawable/quantum_ic_videocam_vd_white_24.xml b/assets/quantum/res/drawable/quantum_ic_videocam_vd_white_24.xml
new file mode 100644
index 0000000..27420ca
--- /dev/null
+++ b/assets/quantum/res/drawable/quantum_ic_videocam_vd_white_24.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Copyright (C) 2017 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M17,10.5V7c0,-0.55 -0.45,-1 -1,-1H4c-0.55,0 -1,0.45 -1,1v10c0,0.55 0.45,1 1,1h12c0.55,0 1,-0.45 1,-1v-3.5l4,4v-11l-4,4z"/>
+</vector>
diff --git a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
index 713ca44..aa71ec4 100644
--- a/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
+++ b/java/com/android/dialer/calllog/ui/NewCallLogViewHolder.java
@@ -24,6 +24,7 @@
 import android.support.v7.widget.RecyclerView;
 import android.text.TextUtils;
 import android.view.View;
+import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.QuickContactBadge;
 import android.widget.TextView;
@@ -50,7 +51,8 @@
   private final TextView primaryTextView;
   private final TextView callCountTextView;
   private final TextView secondaryTextView;
-  private final QuickContactBadge quickContactBadge;
+  private final QuickContactBadge contactPhoto;
+  private final FrameLayout contactBadgeContainer;
   private final ImageView callTypeIcon;
   private final ImageView hdIcon;
   private final ImageView wifiIcon;
@@ -76,7 +78,8 @@
     primaryTextView = view.findViewById(R.id.primary_text);
     callCountTextView = view.findViewById(R.id.call_count);
     secondaryTextView = view.findViewById(R.id.secondary_text);
-    quickContactBadge = view.findViewById(R.id.quick_contact_photo);
+    contactPhoto = view.findViewById(R.id.quick_contact_photo);
+    contactBadgeContainer = view.findViewById(R.id.contact_badge_container);
     callTypeIcon = view.findViewById(R.id.call_type_icon);
     hdIcon = view.findViewById(R.id.hd_icon);
     wifiIcon = view.findViewById(R.id.wifi_icon);
@@ -152,11 +155,19 @@
 
   private void setPhoto(CoalescedRow row) {
     glidePhotoManager.loadQuickContactBadge(
-        quickContactBadge,
+        contactPhoto,
         NumberAttributesConverter.toPhotoInfoBuilder(row.getNumberAttributes())
             .setFormattedNumber(row.getFormattedNumber())
             .setIsVoicemail(row.getIsVoicemailCall())
             .build());
+
+    contactBadgeContainer.setVisibility(
+        shouldShowVideoCallIcon(row) ? View.VISIBLE : View.INVISIBLE);
+  }
+
+  private static boolean shouldShowVideoCallIcon(CoalescedRow row) {
+    return (row.getFeatures() & Calls.FEATURES_VIDEO) == Calls.FEATURES_VIDEO
+        && !row.getNumberAttributes().getIsSpam();
   }
 
   private void setFeatureIcons(CoalescedRow row) {
diff --git a/java/com/android/dialer/calllog/ui/res/drawable/contact_photo_badge_background.xml b/java/com/android/dialer/calllog/ui/res/drawable/contact_photo_badge_background.xml
new file mode 100644
index 0000000..4dcc705
--- /dev/null
+++ b/java/com/android/dialer/calllog/ui/res/drawable/contact_photo_badge_background.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2018 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="oval">
+
+  <solid android:color="@color/dialer_theme_color"/>
+  <stroke android:color="@color/background_dialer_white" android:width="2dp"/>
+</shape>
\ No newline at end of file
diff --git a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
index 093f866..2285431 100644
--- a/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
+++ b/java/com/android/dialer/calllog/ui/res/layout/new_call_log_entry.xml
@@ -21,14 +21,43 @@
     android:layout_height="wrap_content"
     android:minHeight="72dp">
 
-  <QuickContactBadge
-      android:id="@+id/quick_contact_photo"
-      android:layout_width="40dp"
-      android:layout_height="40dp"
-      android:layout_marginStart="16dp"
-      android:layout_marginEnd="16dp"
-      android:layout_centerVertical="true"
-      android:focusable="true"/>
+  <!-- Contact photo (including the optional video icon) -->
+  <FrameLayout
+    android:id="@+id/contact_photo_container"
+    android:layout_width="52dp"
+    android:layout_height="44dp"
+    android:layout_marginStart="10dp"
+    android:layout_marginEnd="10dp"
+    android:layout_centerVertical="true"
+    android:focusable="false">
+
+    <QuickContactBadge
+        android:id="@+id/quick_contact_photo"
+        android:layout_width="40dp"
+        android:layout_height="40dp"
+        android:layout_gravity="center"
+        android:focusable="true"/>
+
+    <FrameLayout
+        android:id="@+id/contact_badge_container"
+        android:layout_width="22dp"
+        android:layout_height="22dp"
+        android:layout_gravity="bottom|end">
+
+      <ImageView
+          android:id="@+id/contact_badge_background"
+          android:layout_width="match_parent"
+          android:layout_height="match_parent"
+          android:src="@drawable/contact_photo_badge_background"/>
+
+      <ImageView
+          android:id="@+id/video_call_icon"
+          android:layout_width="13dp"
+          android:layout_height="13dp"
+          android:layout_gravity="center"
+          android:src="@drawable/quantum_ic_videocam_vd_white_24"/>
+    </FrameLayout>
+  </FrameLayout>
 
   <!-- The frame layout is necessary to avoid clipping the icons and ellipsize the text when the
        content is too wide to fit.
@@ -37,7 +66,7 @@
       android:id="@+id/primary_row"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
-      android:layout_toEndOf="@+id/quick_contact_photo"
+      android:layout_toEndOf="@+id/contact_photo_container"
       android:layout_toStartOf="@+id/menu_button">
 
     <LinearLayout
@@ -98,7 +127,7 @@
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/primary_row"
-      android:layout_toEndOf="@+id/quick_contact_photo"
+      android:layout_toEndOf="@+id/contact_photo_container"
       android:orientation="horizontal">
 
     <ImageView
@@ -124,7 +153,7 @@
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/secondary_row"
-      android:layout_toEndOf="@+id/quick_contact_photo"
+      android:layout_toEndOf="@+id/contact_photo_container"
       android:ellipsize="end"
       android:singleLine="true"
       android:visibility="gone"/>