[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"));