[Data Sharing] Add utils to find collaborations destroyed by tab removal

Add utility methods that check a list of tabs that are closing or being
ungrouped to see if any collaborations would be destroyed by the
operation. If so return the list of LocalTabGroupIds to which the
destruction will happen.

The output of these utilities will allow us to detect operations which
need interception and show a warning dialog and/or apply special
handling as specified by UX.

Bug: 345854441
Change-Id: I2468a6df2a48d5943f3176e1f9f3746001b25b13
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5844571
Commit-Queue: Calder Kitagawa <[email protected]>
Code-Coverage: [email protected] <[email protected]>
Reviewed-by: Sky Malice <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1352917}
diff --git a/chrome/browser/data_sharing/BUILD.gn b/chrome/browser/data_sharing/BUILD.gn
index 7b6ed7f..e31b55b 100644
--- a/chrome/browser/data_sharing/BUILD.gn
+++ b/chrome/browser/data_sharing/BUILD.gn
@@ -44,6 +44,7 @@
   android_library("tab_group_ui_java") {
     resources_package = "org.chromium.chrome.browser.data_sharing"
     sources = [
+      "android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabGroupUtils.java",
       "android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabManager.java",
       "android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabSwitcherDelegate.java",
       "android/java/src/org/chromium/chrome/browser/data_sharing/TabGridDialogShareBottomSheetContent.java",
@@ -61,6 +62,7 @@
       "//chrome/browser/tab_group:java",
       "//chrome/browser/tab_group_sync:factory_java",
       "//chrome/browser/tab_group_sync:java",
+      "//chrome/browser/tabmodel:java",
       "//chrome/browser/ui/android/strings:ui_strings_grd",
       "//components/browser_ui/bottomsheet/android:java",
       "//components/browser_ui/notifications/android:java",
@@ -184,6 +186,7 @@
   robolectric_library("junit") {
     sources = [
       "android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingNotificationManagerUnitTest.java",
+      "android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingTabGroupUtilsUnitTest.java",
       "android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesCoordinatorUnitTest.java",
     ]
     deps = [
@@ -192,9 +195,16 @@
       "//base:base_java",
       "//base:base_junit_test_support",
       "//chrome/browser/notifications:java",
+      "//chrome/browser/profiles/android:java",
+      "//chrome/browser/tab:java",
+      "//chrome/browser/tab_group_sync:factory_java",
+      "//chrome/browser/tabmodel:java",
+      "//chrome/test/android:chrome_java_unit_test_support",
       "//components/browser_ui/notifications/android:java",
       "//components/data_sharing/public:public_java",
+      "//components/saved_tab_groups:java",
       "//third_party/android_deps:robolectric_all_java",
+      "//third_party/androidx:androidx_annotation_annotation_java",
       "//third_party/androidx:androidx_test_core_java",
       "//third_party/junit:junit",
       "//third_party/mockito:mockito_java",