Implement instant share browser messages.

Some parts of actions and data in the strings are not finished as it
relies on more information to be plumbed into the message first.

The tests re-use shared test helper logic, which needed to be moved to
be accessible from share code.

Bug: 369163940
Change-Id: I732d2b10195d76a6c49b68794c9f562c1ecc5c82
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5906783
Commit-Queue: Shakti Sahu <[email protected]>
Reviewed-by: Calder Kitagawa <[email protected]>
Auto-Submit: Sky Malice <[email protected]>
Reviewed-by: Shakti Sahu <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1364269}
diff --git a/chrome/browser/data_sharing/BUILD.gn b/chrome/browser/data_sharing/BUILD.gn
index 0093dc9..f095ab8 100644
--- a/chrome/browser/data_sharing/BUILD.gn
+++ b/chrome/browser/data_sharing/BUILD.gn
@@ -20,6 +20,7 @@
 
     deps = [
       ":java",
+      ":messages_java",
       "//base:base_java",
       "//base:service_loader_java",
       "//build/android:build_java",
@@ -84,7 +85,6 @@
     sources = [
       "android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingImplFactory.java",
       "android/java/src/org/chromium/chrome/browser/data_sharing/DataSharingNotificationManager.java",
-      "android/java/src/org/chromium/chrome/browser/data_sharing/InstantMessageDelegateImpl.java",
       "android/java/src/org/chromium/chrome/browser/data_sharing/MemberPickerListenerImpl.java",
       "android/java/src/org/chromium/chrome/browser/data_sharing/NoOpDataSharingSDKDelegateImpl.java",
     ]
@@ -96,21 +96,15 @@
       "//chrome/browser/notifications:java",
       "//chrome/browser/profiles/android:java",
       "//chrome/browser/tab:java",
-      "//chrome/browser/tab_group:java",
-      "//chrome/browser/tab_group_sync/messaging/android:factory_java",
       "//chrome/browser/ui/android/strings:ui_strings_grd",
       "//components/browser_ui/notifications/android:java",
       "//components/browser_ui/styles/android:java_resources",
       "//components/data_sharing/public:public_java",
       "//components/data_sharing/public/protocol:proto_java",
-      "//components/messages/android:java",
-      "//components/saved_tab_groups/messaging/android:java",
       "//third_party/android_deps:protobuf_lite_runtime_java",
       "//third_party/android_sdk:android_window_extensions_java",
       "//third_party/androidx:androidx_annotation_annotation_java",
-      "//third_party/androidx:androidx_core_core_java",
       "//third_party/jni_zero:jni_zero_java",
-      "//ui/android:ui_java",
       "//url:url_java",
     ]
   }
@@ -139,6 +133,29 @@
     ]
   }
 
+  android_library("messages_java") {
+    resources_package = "org.chromium.chrome.browser.data_sharing"
+    sources = [ "android/java/src/org/chromium/chrome/browser/data_sharing/InstantMessageDelegateImpl.java" ]
+
+    deps = [
+      ":java_resources",
+      "//base:base_java",
+      "//base:supplier_java",
+      "//chrome/android:chrome_app_java_resources",
+      "//chrome/browser/profiles/android:java",
+      "//chrome/browser/tab:java",
+      "//chrome/browser/tab_group:java",
+      "//chrome/browser/tab_group_sync/messaging/android:factory_java",
+      "//components/data_sharing/public:public_java",
+      "//components/messages/android:java",
+      "//components/saved_tab_groups/messaging/android:java",
+      "//components/saved_tab_groups/public:java",
+      "//third_party/androidx:androidx_annotation_annotation_java",
+      "//third_party/androidx:androidx_core_core_java",
+      "//ui/android:ui_java",
+    ]
+  }
+
   android_library("invitation_dialog_java") {
     resources_package =
         "org.chromium.chrome.browser.data_sharing.ui.invitation_dialog"
@@ -159,21 +176,30 @@
     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/InstantMessageDelegateImplUnitTest.java",
       "android/java/src/org/chromium/chrome/browser/data_sharing/ui/shared_image_tiles/SharedImageTilesCoordinatorUnitTest.java",
     ]
     deps = [
       ":java",
+      ":messages_java",
       ":shared_image_tiles_java",
       "//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:java",
       "//chrome/browser/tab_group_sync:factory_java",
+      "//chrome/browser/tab_group_sync/messaging/android:factory_java",
       "//chrome/browser/tabmodel:java",
       "//chrome/test/android:chrome_java_unit_test_support",
       "//components/browser_ui/notifications/android:java",
+      "//components/data_sharing:test_support_java",
       "//components/data_sharing/public:public_java",
+      "//components/messages/android:factory_java",
+      "//components/messages/android:java",
+      "//components/messages/android:manager_java",
+      "//components/saved_tab_groups/messaging/android:java",
       "//components/saved_tab_groups/public:java",
       "//content/public/android:content_full_java",
       "//third_party/android_deps:robolectric_all_java",