Add application name to expanded conversation view

Bug: 150905003
Test: manual
Change-Id: Ibb16717028498c508beda423a76375499a6f6ad9
diff --git a/core/java/com/android/internal/widget/ConversationLayout.java b/core/java/com/android/internal/widget/ConversationLayout.java
index f9aae0f..49cf3e0 100644
--- a/core/java/com/android/internal/widget/ConversationLayout.java
+++ b/core/java/com/android/internal/widget/ConversationLayout.java
@@ -133,6 +133,7 @@
     private boolean mExpandable = true;
     private int mContentMarginEnd;
     private Rect mMessagingClipRect;
+    private TextView mAppName;
 
     public ConversationLayout(@NonNull Context context) {
         super(context);
@@ -202,6 +203,7 @@
                 R.string.conversation_title_fallback_one_to_one);
         mFallbackGroupChatName = getResources().getString(
                 R.string.conversation_title_fallback_group_chat);
+        mAppName = findViewById(R.id.app_name_text);
     }
 
     @RemotableViewMethod
@@ -384,6 +386,7 @@
         }
         updateIconPositionAndSize();
         updateImageMessages();
+        updateAppName();
     }
 
     private void updateImageMessages() {
@@ -462,6 +465,10 @@
         topView.setImageIcon(secondLastIcon);
     }
 
+    private void updateAppName() {
+        mAppName.setVisibility(mIsCollapsed ? GONE : VISIBLE);
+    }
+
     /**
      * update the icon position and sizing
      */
diff --git a/core/res/res/layout/notification_template_material_conversation.xml b/core/res/res/layout/notification_template_material_conversation.xml
index f79ea62..0c4be1a 100644
--- a/core/res/res/layout/notification_template_material_conversation.xml
+++ b/core/res/res/layout/notification_template_material_conversation.xml
@@ -174,6 +174,17 @@
                     />
                 </LinearLayout>
 
+                <!-- App Name -->
+                <TextView
+                    android:id="@+id/app_name_text"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_marginStart="@dimen/conversation_content_start"
+                    android:paddingBottom="16dp"
+                    android:textSize="12sp"
+                    android:textAppearance="@style/TextAppearance.DeviceDefault.Notification"
+                />
+
                 <!-- Messages -->
                 <com.android.internal.widget.MessagingLinearLayout
                     android:id="@+id/notification_messaging"
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapper.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapper.kt
index 53b00f0..e70124c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapper.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationConversationTemplateViewWrapper.kt
@@ -52,28 +52,22 @@
     private lateinit var imageMessageContainer: ViewGroup
     private lateinit var messagingLinearLayout: MessagingLinearLayout
     private lateinit var importanceRing: View
+    private lateinit var appName: View
 
     private fun resolveViews() {
         messagingLinearLayout = conversationLayout.messagingLinearLayout
         imageMessageContainer = conversationLayout.imageMessageContainer
-        conversationIcon = conversationLayout.requireViewById(
-                com.android.internal.R.id.conversation_icon
-        )
-        conversationBadge = conversationLayout.requireViewById(
-                com.android.internal.R.id.conversation_icon_badge
-        )
-        conversationBadgeBg = conversationLayout.requireViewById(
-                com.android.internal.R.id.conversation_icon_badge_bg
-        )
-        expandButton = conversationLayout.requireViewById(
-                com.android.internal.R.id.expand_button
-        )
-        expandButtonContainer = conversationLayout.requireViewById(
-                com.android.internal.R.id.expand_button_container
-        )
-        importanceRing = conversationLayout.requireViewById(
-                com.android.internal.R.id.conversation_icon_badge_ring
-        )
+        with(conversationLayout) {
+            conversationIcon = requireViewById(com.android.internal.R.id.conversation_icon)
+            conversationBadge = requireViewById(com.android.internal.R.id.conversation_icon_badge)
+            conversationBadgeBg =
+                    requireViewById(com.android.internal.R.id.conversation_icon_badge_bg)
+            expandButton = requireViewById(com.android.internal.R.id.expand_button)
+            expandButtonContainer =
+                    requireViewById(com.android.internal.R.id.expand_button_container)
+            importanceRing = requireViewById(com.android.internal.R.id.conversation_icon_badge_ring)
+            appName = requireViewById(com.android.internal.R.id.app_name_text)
+        }
     }
 
     override fun onContentUpdated(row: ExpandableNotificationRow) {
@@ -87,7 +81,7 @@
         // This also clears the existing types
         super.updateTransformedTypes()
 
-        addTransformedViews(messagingLinearLayout)
+        addTransformedViews(messagingLinearLayout, appName)
 
         // Let's ignore the image message container since that is transforming as part of the
         // messages already