[Data Sharing] Use Manage rather than Share in COLLABORATION_ONLY
UX requested we use the string Manage if the collaboration ID exists
with no members. This CL implements that change.
Fixed: 374841539
Change-Id: I3c6d4f19dc788115dc94006422578bda7e29c6a5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5952945
Reviewed-by: Sky Malice <skym@chromium.org>
Commit-Queue: Calder Kitagawa <ckitagawa@chromium.org>
Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/heads/main@{#1372372}
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
index 19e28d9..5855717 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java
@@ -1072,9 +1072,16 @@
}
private void onGroupSharedStateChanged(@Nullable @GroupSharedState Integer groupSharedState) {
- if (groupSharedState == null
- || groupSharedState == GroupSharedState.NOT_SHARED
- || groupSharedState == GroupSharedState.COLLABORATION_ONLY) {
+ if (groupSharedState == null || groupSharedState == GroupSharedState.NOT_SHARED) {
+ mModel.set(
+ TabGridDialogProperties.SHARE_BUTTON_STRING_RES,
+ R.string.tab_grid_share_button_text);
+ mModel.set(TabGridDialogProperties.SHOW_SHARE_BUTTON, shouldShowShareButton());
+ mModel.set(TabGridDialogProperties.SHOW_IMAGE_TILES, false);
+ } else if (groupSharedState == GroupSharedState.COLLABORATION_ONLY) {
+ mModel.set(
+ TabGridDialogProperties.SHARE_BUTTON_STRING_RES,
+ R.string.tab_grid_manage_button_text);
mModel.set(TabGridDialogProperties.SHOW_SHARE_BUTTON, shouldShowShareButton());
mModel.set(TabGridDialogProperties.SHOW_IMAGE_TILES, false);
} else {
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogProperties.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogProperties.java
index 77971c2e..69d3d03 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogProperties.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogProperties.java
@@ -48,6 +48,8 @@
new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel.WritableBooleanPropertyKey SHOW_SHARE_BUTTON =
new PropertyModel.WritableBooleanPropertyKey();
+ public static final PropertyModel.WritableIntPropertyKey SHARE_BUTTON_STRING_RES =
+ new PropertyModel.WritableIntPropertyKey();
public static final PropertyModel.WritableBooleanPropertyKey SHOW_IMAGE_TILES =
new PropertyModel.WritableBooleanPropertyKey();
public static final WritableObjectPropertyKey<TabGridDialogView.VisibilityListener>
@@ -138,6 +140,7 @@
IS_DIALOG_VISIBLE,
IS_SHARE_SHEET_VISIBLE,
SHOW_SHARE_BUTTON,
+ SHARE_BUTTON_STRING_RES,
SHOW_IMAGE_TILES,
CONTENT_TOP_MARGIN,
APP_HEADER_HEIGHT,
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogToolbarView.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogToolbarView.java
index c34a222..625d7238 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogToolbarView.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogToolbarView.java
@@ -220,6 +220,14 @@
}
}
+ void setShareButtonStringRes(@StringRes int stringRes) {
+ if (mShareButtonContainer == null || mShareButton == null) return;
+
+ stringRes =
+ stringRes != Resources.ID_NULL ? stringRes : R.string.tab_grid_share_button_text;
+ mShareButton.setText(stringRes);
+ }
+
void setShareButtonClickListener(OnClickListener listener) {
if (mShareButton == null) return;
mShareButton.setOnClickListener(listener);
diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogViewBinder.java
index 34ac64f..0a77aa8 100644
--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogViewBinder.java
+++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogViewBinder.java
@@ -35,6 +35,7 @@
import static org.chromium.chrome.browser.tasks.tab_management.TabGridDialogProperties.PRIMARY_COLOR;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridDialogProperties.SCRIMVIEW_CLICK_RUNNABLE;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridDialogProperties.SHARE_BUTTON_CLICK_LISTENER;
+import static org.chromium.chrome.browser.tasks.tab_management.TabGridDialogProperties.SHARE_BUTTON_STRING_RES;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridDialogProperties.SHARE_IMAGE_TILES_CLICK_LISTENER;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridDialogProperties.SHOW_IMAGE_TILES;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridDialogProperties.SHOW_SHARE_BUTTON;
@@ -242,6 +243,8 @@
model.get(SHARE_IMAGE_TILES_CLICK_LISTENER));
} else if (SHOW_SHARE_BUTTON == propertyKey) {
viewHolder.toolbarView.setShareButtonVisibility(model.get(SHOW_SHARE_BUTTON));
+ } else if (SHARE_BUTTON_STRING_RES == propertyKey) {
+ viewHolder.toolbarView.setShareButtonStringRes(model.get(SHARE_BUTTON_STRING_RES));
} else if (SHOW_IMAGE_TILES == propertyKey) {
viewHolder.toolbarView.setImageTilesVisibility(model.get(SHOW_IMAGE_TILES));
} else if (TAB_GROUP_COLOR_ID == propertyKey) {
diff --git a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
index 542cb7521..f6cd0d1 100644
--- a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
+++ b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings.grd
@@ -211,6 +211,9 @@
<message name="IDS_TAB_GRID_SHARE_BUTTON_TEXT" desc="Text for sharing the current tab group from the tab group dialog toolbar.">
Share
</message>
+ <message name="IDS_TAB_GRID_MANAGE_BUTTON_TEXT" desc="Text for managing the sharing of the current tab group from the tab group dialog toolbar.">
+ Manage
+ </message>
<!-- Bottom Tab Strip strings -->
<message name="IDS_ACCESSIBILITY_BOTTOM_TAB_STRIP_EXPAND_TAB_SHEET" desc="Accessibility string for BottomTabStripToolbar button indicated visually by the '^' sign.">
diff --git a/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_TAB_GRID_MANAGE_BUTTON_TEXT.png.sha1 b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_TAB_GRID_MANAGE_BUTTON_TEXT.png.sha1
new file mode 100644
index 0000000..40777757
--- /dev/null
+++ b/chrome/android/features/tab_ui/java/strings/android_chrome_tab_ui_strings_grd/IDS_TAB_GRID_MANAGE_BUTTON_TEXT.png.sha1
@@ -0,0 +1 @@
+c9f55afca61f324b4bda8fbdf423685de2683942
\ No newline at end of file
diff --git a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogViewBinderTest.java b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogViewBinderTest.java
index d45be3a..8a60219 100644
--- a/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogViewBinderTest.java
+++ b/chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogViewBinderTest.java
@@ -75,6 +75,7 @@
import org.chromium.ui.modelutil.PropertyModelChangeProcessor;
import org.chromium.ui.test.util.BlankUiTestActivityTestCase;
import org.chromium.ui.text.EmptyTextWatcher;
+import org.chromium.ui.widget.ButtonCompat;
import org.chromium.ui.widget.ChromeImageView;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -89,7 +90,7 @@
@Rule public MockitoRule mMockitoRule = MockitoJUnit.rule();
private PropertyModel mModel;
- private PropertyModelChangeProcessor mMCP;
+ private PropertyModelChangeProcessor mMcp;
private TabGridDialogToolbarView mToolbarView;
private RecyclerView mContentView;
private TabGridDialogView mTabGridDialogView;
@@ -100,7 +101,7 @@
private ImageView mColorIcon;
private View mMainContent;
private @Nullable View mShareButtonContainer;
- private @Nullable View mShareButton;
+ private @Nullable ButtonCompat mShareButton;
private @Nullable View mImageTilesContainer;
private ImageView mHairline;
private ScrimCoordinator mScrimCoordinator;
@@ -173,7 +174,7 @@
.build();
mModel.set(TabGridDialogProperties.BINDING_TOKEN, mBindingToken);
- mMCP =
+ mMcp =
PropertyModelChangeProcessor.create(
mModel,
new TabGridDialogViewBinder.ViewHolder(
@@ -574,14 +575,22 @@
@UiThreadTest
@EnableFeatures(DATA_SHARING)
public void testShareButton() {
+ mModel.set(
+ TabGridDialogProperties.SHARE_BUTTON_STRING_RES,
+ R.string.tab_grid_share_button_text);
mModel.set(TabGridDialogProperties.SHOW_SHARE_BUTTON, false);
mModel.set(TabGridDialogProperties.SHARE_BUTTON_CLICK_LISTENER, mOnClickListener);
assertEquals(mShareButtonContainer.getVisibility(), View.GONE);
+ assertEquals("Share", mShareButton.getText());
+ mModel.set(
+ TabGridDialogProperties.SHARE_BUTTON_STRING_RES,
+ R.string.tab_grid_manage_button_text);
mModel.set(TabGridDialogProperties.SHOW_SHARE_BUTTON, true);
assertEquals(mShareButtonContainer.getVisibility(), View.VISIBLE);
assertEquals(mShareButton.getVisibility(), View.VISIBLE);
+ assertEquals("Manage", mShareButton.getText());
mShareButton.performClick();
diff --git a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediatorUnitTest.java b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediatorUnitTest.java
index 93f5549..5e49644c 100644
--- a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediatorUnitTest.java
+++ b/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediatorUnitTest.java
@@ -1600,6 +1600,9 @@
verify(mDialogController).removeMessageCardItem(MessageType.COLLABORATION_ACTIVITY);
verify(mSharedImageTilesCoordinator).updateCollaborationId(null);
assertTrue(mModel.get(TabGridDialogProperties.SHOW_SHARE_BUTTON));
+ assertEquals(
+ R.string.tab_grid_share_button_text,
+ mModel.get(TabGridDialogProperties.SHARE_BUTTON_STRING_RES));
assertFalse(mModel.get(TabGridDialogProperties.SHOW_IMAGE_TILES));
// Reset with null first as re-using the same TabGroupId does not reset the observer.
@@ -1610,6 +1613,9 @@
verify(mDialogController)
.addMessageCardItem(/* position= */ eq(0), mMessageCardModelCaptor.capture());
assertTrue(mModel.get(TabGridDialogProperties.SHOW_SHARE_BUTTON));
+ assertEquals(
+ R.string.tab_grid_manage_button_text,
+ mModel.get(TabGridDialogProperties.SHARE_BUTTON_STRING_RES));
assertFalse(mModel.get(TabGridDialogProperties.SHOW_IMAGE_TILES));
String text = mMessageCardModelCaptor.getValue().get(DESCRIPTION_TEXT).toString();
assertTrue(text, text.contains("3"));