[Shared Tab Group] Add small sizing for face piles

Deprecate CLICKABLE type.

Bug: 363349945
Change-Id: I3286f8e7808a18c68e8f93c1fbfadd32767f2457
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5980925
Auto-Submit: Hailey Wang <[email protected]>
Reviewed-by: Calder Kitagawa <[email protected]>
Reviewed-by: Sky Malice <[email protected]>
Commit-Queue: Hailey Wang <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1377082}
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator.java
index e5d0eca..1c19c64 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogCoordinator.java
@@ -167,7 +167,7 @@
                 mSharedImageTilesCoordinator =
                         new SharedImageTilesCoordinator(
                                 activity,
-                                SharedImageTilesType.CLICKABLE,
+                                SharedImageTilesType.DEFAULT,
                                 SharedImageTilesColor.DYNAMIC,
                                 dataSharingService);
             }
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupColorViewProvider.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupColorViewProvider.java
index 3c94897..c024ad0 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupColorViewProvider.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupColorViewProvider.java
@@ -188,7 +188,7 @@
         mSharedImageTilesCoordinator =
                 new SharedImageTilesCoordinator(
                         mContext,
-                        SharedImageTilesType.DEFAULT,
+                        SharedImageTilesType.SMALL,
                         SharedImageTilesColor.DEFAULT,
                         mDataSharingService);
         mSharedImageTilesCoordinator.updateCollaborationId(collaborationId);
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java
index c49f2ac..2465d09 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUiCoordinator.java
@@ -235,7 +235,7 @@
                 sharedImageTilesCoordinator =
                         new SharedImageTilesCoordinator(
                                 activity,
-                                SharedImageTilesType.CLICKABLE,
+                                SharedImageTilesType.DEFAULT,
                                 SharedImageTilesColor.DYNAMIC,
                                 dataSharingService);
                 FrameLayout container =
diff --git a/chrome/browser/data_sharing/BUILD.gn b/chrome/browser/data_sharing/BUILD.gn
index cc5b2a26..15ddc13 100644
--- a/chrome/browser/data_sharing/BUILD.gn
+++ b/chrome/browser/data_sharing/BUILD.gn
@@ -40,7 +40,9 @@
       "android/java/res/layout/shared_image_tiles.xml",
       "android/java/res/layout/shared_image_tiles_icon.xml",
       "android/java/res/values/dimens.xml",
+      "android/java/res/values/styles.xml",
     ]
+    deps = [ "//components/browser_ui/styles/android:java_resources" ]
   }
 
   android_library("tab_group_ui_java") {
diff --git a/chrome/browser/data_sharing/android/java/res/layout/shared_image_tiles.xml b/chrome/browser/data_sharing/android/java/res/layout/shared_image_tiles.xml
index fce178e..2babcfb 100644
--- a/chrome/browser/data_sharing/android/java/res/layout/shared_image_tiles.xml
+++ b/chrome/browser/data_sharing/android/java/res/layout/shared_image_tiles.xml
@@ -22,18 +22,16 @@
         android:layout_height="@dimen/shared_image_tiles_icon_total_height"
         android:layout_marginEnd="@dimen/shared_image_tiles_overlap_margin_negative"
         android:minWidth="@dimen/shared_image_tiles_icon_total_height"
-        android:orientation="vertical"
         android:background="@drawable/round_image_filled"
-        android:focusable="false"
         android:visibility="gone" >
 
         <TextView
             android:id="@+id/tiles_count"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
+            android:layout_gravity="center"
             android:paddingStart="@dimen/shared_image_tiles_overlap_margin"
             android:paddingEnd="@dimen/shared_image_tiles_overlap_margin"
-            android:layout_gravity="center"
             android:textAppearance="@style/TextAppearance.TextAccentMediumThick.Primary"
             android:gravity="center"
             android:visibility="gone"/>
diff --git a/chrome/browser/data_sharing/android/java/res/layout/shared_image_tiles_icon.xml b/chrome/browser/data_sharing/android/java/res/layout/shared_image_tiles_icon.xml
index ff3c630..f90e650 100644
--- a/chrome/browser/data_sharing/android/java/res/layout/shared_image_tiles_icon.xml
+++ b/chrome/browser/data_sharing/android/java/res/layout/shared_image_tiles_icon.xml
@@ -8,14 +8,15 @@
 <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="@dimen/shared_image_tiles_icon_total_height"
+    android:layout_width="wrap_content"
     android:layout_height="@dimen/shared_image_tiles_icon_total_height"
+    android:minWidth="@dimen/shared_image_tiles_icon_total_height"
     android:background="@drawable/round_image_filled"
     android:layout_marginEnd="@dimen/shared_image_tiles_overlap_margin_negative" >
 
     <FrameLayout
         android:id="@+id/shared_image_tiles_avatar_container"
-        android:layout_width="@dimen/shared_image_tiles_icon_height"
-        android:layout_height="@dimen/shared_image_tiles_icon_height"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
         android:layout_gravity="center"/>
 </FrameLayout>
diff --git a/chrome/browser/data_sharing/android/java/res/values/dimens.xml b/chrome/browser/data_sharing/android/java/res/values/dimens.xml
index 78577170..165e38b 100644
--- a/chrome/browser/data_sharing/android/java/res/values/dimens.xml
+++ b/chrome/browser/data_sharing/android/java/res/values/dimens.xml
@@ -11,6 +11,9 @@
     <dimen name="shared_image_tiles_icon_radius">16dp</dimen>
     <dimen name="shared_image_tiles_icon_height">28dp</dimen>
     <dimen name="shared_image_tiles_icon_total_height">32dp</dimen>
+    <dimen name="small_shared_image_tiles_icon_height">16dp</dimen>
+    <dimen name="small_shared_image_tiles_icon_total_height">20dp</dimen>
+    <dimen name="small_shared_image_tiles_text_size">10sp</dimen>
     <dimen name="shared_image_tiles_overlap_margin">8dp</dimen>
     <dimen name="shared_image_tiles_overlap_margin_negative">-6dp</dimen>
 
diff --git a/chrome/browser/data_sharing/android/java/res/values/styles.xml b/chrome/browser/data_sharing/android/java/res/values/styles.xml
new file mode 100644
index 0000000..ba04c4e
--- /dev/null
+++ b/chrome/browser/data_sharing/android/java/res/values/styles.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!--
+Copyright 2024 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file.
+-->
+
+<resources xmlns:tools="http://schemas.android.com/tools">
+    <style name="TextAppearance.SharedImageTilesSmall">
+        <item name="android:textSize">@dimen/small_shared_image_tiles_text_size</item>
+        <item name="android:textStyle">bold</item>
+    </style>
+</resources>
diff --git a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesCoordinator.java b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesCoordinator.java
index 1b69184..ae9b7d6 100644
--- a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesCoordinator.java
+++ b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesCoordinator.java
@@ -38,6 +38,7 @@
     private final Context mContext;
     private final PropertyModel mModel;
     private final SharedImageTilesView mView;
+    private final @SharedImageTilesType int mType;
     private final @NonNull DataSharingService mDataSharingService;
     private @NonNull String mCollaborationId;
     private int mAvailableMemberCount;
@@ -62,6 +63,7 @@
                         .build();
         mContext = context;
         mDataSharingService = dataSharingService;
+        mType = type;
 
         mView =
                 (SharedImageTilesView)
@@ -122,8 +124,14 @@
                 };
 
         List<ViewGroup> iconViews = getAllIconViews();
+        int sizeInDp =
+                (mType == SharedImageTilesType.SMALL)
+                        ? R.dimen.small_shared_image_tiles_icon_height
+                        : R.dimen.shared_image_tiles_icon_height;
         AvatarConfig config =
-                new AvatarConfig.Builder().setAvatarSizeInPixels(getAvatarSizeInPixels()).build();
+                new AvatarConfig.Builder()
+                        .setAvatarSizeInPixels(getAvatarSizeInPixels(sizeInDp))
+                        .build();
 
         dataSharingUiDelegate.showAvatars(
                 mContext,
@@ -133,9 +141,8 @@
                 config);
     }
 
-    private int getAvatarSizeInPixels() {
-        return mContext.getResources()
-                .getDimensionPixelSize(R.dimen.shared_image_tiles_icon_height);
+    private int getAvatarSizeInPixels(int sizeInDp) {
+        return mContext.getResources().getDimensionPixelSize(sizeInDp);
     }
 
     /** Populate the shared_image_tiles container with the specific icons. */
@@ -161,6 +168,9 @@
                     SharedImageTilesProperties.REMAINING_TILES,
                     mAvailableMemberCount - maxTilesToShowWithNumberTile);
         }
+
+        // Re-style everything.
+        mModel.set(SharedImageTilesProperties.TYPE, mType);
     }
 
     /** Get the view component of SharedImageTiles. */
diff --git a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesProperties.java b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesProperties.java
index e3e2a90..6dde4bb 100644
--- a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesProperties.java
+++ b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesProperties.java
@@ -14,12 +14,14 @@
             new PropertyModel.WritableBooleanPropertyKey();
     public static final PropertyModel.ReadableIntPropertyKey COLOR_THEME =
             new PropertyModel.ReadableIntPropertyKey();
+    public static final PropertyModel.WritableIntPropertyKey TYPE =
+            new PropertyModel.WritableIntPropertyKey();
     public static final PropertyModel.WritableIntPropertyKey ICON_TILES =
             new PropertyModel.WritableIntPropertyKey();
     public static final PropertyModel.WritableIntPropertyKey REMAINING_TILES =
             new PropertyModel.WritableIntPropertyKey();
 
     public static final PropertyKey[] ALL_KEYS = {
-        IS_LOADING, COLOR_THEME, ICON_TILES, REMAINING_TILES
+        IS_LOADING, COLOR_THEME, TYPE, ICON_TILES, REMAINING_TILES
     };
 }
diff --git a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesType.java b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesType.java
index bf8a8414..f7722aa 100644
--- a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesType.java
+++ b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesType.java
@@ -9,12 +9,12 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
-@IntDef({SharedImageTilesType.DEFAULT, SharedImageTilesType.CLICKABLE})
+@IntDef({SharedImageTilesType.DEFAULT, SharedImageTilesType.SMALL})
 @Retention(RetentionPolicy.SOURCE)
 public @interface SharedImageTilesType {
     /** Standard SharedImageTiles behavior. */
     int DEFAULT = 0;
 
-    /** Clickable with add person button. */
-    int CLICKABLE = 1;
+    /** Smaller variant. */
+    int SMALL = 1;
 }
diff --git a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesView.java b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesView.java
index 313911a..93346d20 100644
--- a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesView.java
+++ b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesView.java
@@ -10,10 +10,13 @@
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.ViewGroup;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import androidx.annotation.ColorInt;
+import androidx.annotation.DimenRes;
+import androidx.annotation.StyleRes;
 
 import org.chromium.components.browser_ui.styles.SemanticColorUtils;
 
@@ -59,6 +62,34 @@
         }
     }
 
+    void setType(@SharedImageTilesType int type) {
+        switch (type) {
+            case SharedImageTilesType.DEFAULT:
+                setChildViewSize(
+                        R.dimen.shared_image_tiles_icon_total_height,
+                        R.style.TextAppearance_TextAccentMediumThick_Primary);
+                break;
+            case SharedImageTilesType.SMALL:
+                setChildViewSize(
+                        R.dimen.small_shared_image_tiles_icon_total_height,
+                        R.style.TextAppearance_SharedImageTilesSmall);
+                break;
+        }
+    }
+
+    void setChildViewSize(@DimenRes int iconSizeDp, @StyleRes int textStyle) {
+        int iconSizePx = mContext.getResources().getDimensionPixelSize(iconSizeDp);
+        // Loop through all child views.
+        for (int i = 0; i < getChildCount(); i++) {
+            ViewGroup viewGroup = (ViewGroup) getChildAt(i);
+            viewGroup.getLayoutParams().height = iconSizePx;
+            viewGroup.setMinimumWidth(iconSizePx);
+        }
+
+        // Set sizing for the number tile.
+        mCountTileView.setTextAppearance(textStyle);
+    }
+
     void resetIconTiles(int count) {
         // Remove all child icon views and hide last view, which is the count tile or the button
         // tile.
diff --git a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesViewBinder.java b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesViewBinder.java
index cf581bc..d4f39d85 100644
--- a/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesViewBinder.java
+++ b/chrome/browser/data_sharing/android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesViewBinder.java
@@ -8,6 +8,7 @@
 import static org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesProperties.ICON_TILES;
 import static org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesProperties.IS_LOADING;
 import static org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesProperties.REMAINING_TILES;
+import static org.chromium.chrome.browser.data_sharing.ui.shared_image_tiles.SharedImageTilesProperties.TYPE;
 
 import org.chromium.ui.modelutil.PropertyKey;
 import org.chromium.ui.modelutil.PropertyModel;
@@ -21,6 +22,8 @@
             // TODO(b/324909919): Set loading state for shared_image_tiles view.
         } else if (COLOR_THEME == propertyKey) {
             view.setColorTheme(model.get(COLOR_THEME));
+        } else if (TYPE == propertyKey) {
+            view.setType(model.get(TYPE));
         } else if (ICON_TILES == propertyKey) {
             view.resetIconTiles(model.get(ICON_TILES));
         } else if (REMAINING_TILES == propertyKey) {