[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) {