Clean up kSharingSyncedDevices

- Cleaned up usage of kSharingSyncedDevices in SharingSyncPreference,
  as we've migrated to DeviceInfo since M79
- Moved DeviceInfo related helper methods of SharingSyncPreference to
  SharingUtil
- Removed code path that use sender_guid to find fcm channel, as
  fcm_channel_configuration field has been embeeded in SharingMessage
  since M78
- Remove SharingSyncPreference dependency from a few classes
- Added send-via-sync codepath in browser tests

Bug: 1069475
Change-Id: Ie3b46e8af8a02697a55c6ef4dc2ba3123e843daf
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2159235
Reviewed-by: Richard Knoll <[email protected]>
Commit-Queue: Alex Chau <[email protected]>
Cr-Commit-Position: refs/heads/master@{#761373}
diff --git a/chrome/browser/sharing/sharing_utils_unittest.cc b/chrome/browser/sharing/sharing_utils_unittest.cc
index d18ed67..bdc5941 100644
--- a/chrome/browser/sharing/sharing_utils_unittest.cc
+++ b/chrome/browser/sharing/sharing_utils_unittest.cc
@@ -5,13 +5,25 @@
 #include "chrome/browser/sharing/sharing_utils.h"
 
 #include "base/test/scoped_feature_list.h"
+#include "chrome/browser/sharing/fake_device_info.h"
 #include "chrome/browser/sharing/features.h"
+#include "chrome/browser/sharing/proto/sharing_message.pb.h"
+#include "chrome/browser/sharing/sharing_constants.h"
 #include "components/sync/driver/test_sync_service.h"
 #include "components/sync_device_info/device_info.h"
 #include "testing/gtest/include/gtest/gtest.h"
 
 namespace {
 
+const char kDeviceGuid[] = "test_guid";
+const char kDeviceName[] = "test_name";
+const char kVapidFCMToken[] = "test_vapid_fcm_token";
+const char kVapidP256dh[] = "test_vapid_p256_dh";
+const char kVapidAuthSecret[] = "test_vapid_auth_secret";
+const char kSenderIdFCMToken[] = "test_sender_id_fcm_token";
+const char kSenderIdP256dh[] = "test_sender_id_p256_dh";
+const char kSenderIdAuthSecret[] = "test_sender_id_auth_secret";
+
 class SharingUtilsTest : public testing::Test {
  public:
   SharingUtilsTest() = default;
@@ -23,7 +35,6 @@
 
 }  // namespace
 
-
 TEST_F(SharingUtilsTest, SyncEnabled_SigninOnly) {
   // Enable transport mode required features.
   scoped_feature_list_.InitWithFeatures(
@@ -96,3 +107,79 @@
   EXPECT_FALSE(IsSyncEnabledForSharing(&test_sync_service_));
   EXPECT_FALSE(IsSyncDisabledForSharing(&test_sync_service_));
 }
+
+TEST_F(SharingUtilsTest, GetFCMChannel) {
+  std::unique_ptr<syncer::DeviceInfo> device_info = CreateFakeDeviceInfo(
+      kDeviceGuid, kDeviceName,
+      syncer::DeviceInfo::SharingInfo(
+          {kVapidFCMToken, kVapidP256dh, kVapidAuthSecret},
+          {kSenderIdFCMToken, kSenderIdP256dh, kSenderIdAuthSecret},
+          std::set<sync_pb::SharingSpecificFields::EnabledFeatures>()));
+
+  auto fcm_channel = GetFCMChannel(*device_info);
+
+  ASSERT_TRUE(fcm_channel);
+  EXPECT_EQ(fcm_channel->vapid_fcm_token(), kVapidFCMToken);
+  EXPECT_EQ(fcm_channel->vapid_p256dh(), kVapidP256dh);
+  EXPECT_EQ(fcm_channel->vapid_auth_secret(), kVapidAuthSecret);
+  EXPECT_EQ(fcm_channel->sender_id_fcm_token(), kSenderIdFCMToken);
+  EXPECT_EQ(fcm_channel->sender_id_p256dh(), kSenderIdP256dh);
+  EXPECT_EQ(fcm_channel->sender_id_auth_secret(), kSenderIdAuthSecret);
+}
+
+TEST_F(SharingUtilsTest, GetDevicePlatform) {
+  EXPECT_EQ(GetDevicePlatform(*CreateFakeDeviceInfo(
+                kDeviceGuid, kDeviceName, /*sharing_info=*/base::nullopt,
+                sync_pb::SyncEnums_DeviceType_TYPE_CROS)),
+            SharingDevicePlatform::kChromeOS);
+
+  EXPECT_EQ(GetDevicePlatform(*CreateFakeDeviceInfo(
+                kDeviceGuid, kDeviceName, /*sharing_info=*/base::nullopt,
+                sync_pb::SyncEnums_DeviceType_TYPE_LINUX)),
+            SharingDevicePlatform::kLinux);
+
+  EXPECT_EQ(GetDevicePlatform(*CreateFakeDeviceInfo(
+                kDeviceGuid, kDeviceName, /*sharing_info=*/base::nullopt,
+                sync_pb::SyncEnums_DeviceType_TYPE_MAC)),
+            SharingDevicePlatform::kMac);
+
+  EXPECT_EQ(GetDevicePlatform(*CreateFakeDeviceInfo(
+                kDeviceGuid, kDeviceName, /*sharing_info=*/base::nullopt,
+                sync_pb::SyncEnums_DeviceType_TYPE_WIN)),
+            SharingDevicePlatform::kWindows);
+
+  EXPECT_EQ(GetDevicePlatform(*CreateFakeDeviceInfo(
+                kDeviceGuid, kDeviceName, /*sharing_info=*/base::nullopt,
+                sync_pb::SyncEnums_DeviceType_TYPE_PHONE,
+                base::SysInfo::HardwareInfo(
+                    {"Apple Inc.", "iPhone 50", "serial_no"}))),
+            SharingDevicePlatform::kIOS);
+  EXPECT_EQ(
+      GetDevicePlatform(*CreateFakeDeviceInfo(
+          kDeviceGuid, kDeviceName, /*sharing_info=*/base::nullopt,
+          sync_pb::SyncEnums_DeviceType_TYPE_TABLET,
+          base::SysInfo::HardwareInfo({"Apple Inc.", "iPad 99", "serial_no"}))),
+      SharingDevicePlatform::kIOS);
+
+  EXPECT_EQ(
+      GetDevicePlatform(*CreateFakeDeviceInfo(
+          kDeviceGuid, kDeviceName, /*sharing_info=*/base::nullopt,
+          sync_pb::SyncEnums_DeviceType_TYPE_PHONE,
+          base::SysInfo::HardwareInfo({"Google", "Pixel 777", "serial_no"}))),
+      SharingDevicePlatform::kAndroid);
+  EXPECT_EQ(
+      GetDevicePlatform(*CreateFakeDeviceInfo(
+          kDeviceGuid, kDeviceName, /*sharing_info=*/base::nullopt,
+          sync_pb::SyncEnums_DeviceType_TYPE_TABLET,
+          base::SysInfo::HardwareInfo({"Google", "Pixel Z", "serial_no"}))),
+      SharingDevicePlatform::kAndroid);
+
+  EXPECT_EQ(GetDevicePlatform(*CreateFakeDeviceInfo(
+                kDeviceGuid, kDeviceName, /*sharing_info=*/base::nullopt,
+                sync_pb::SyncEnums_DeviceType_TYPE_UNSET)),
+            SharingDevicePlatform::kUnknown);
+  EXPECT_EQ(GetDevicePlatform(*CreateFakeDeviceInfo(
+                kDeviceGuid, kDeviceName, /*sharing_info=*/base::nullopt,
+                sync_pb::SyncEnums_DeviceType_TYPE_OTHER)),
+            SharingDevicePlatform::kUnknown);
+}