Commit bdcbf7e6 authored by Richard Knoll's avatar Richard Knoll Committed by Commit Bot

Hook up Sharing WebRTC send path to flags

This allows devices to send Sharing messages via WebRTC if they are both
in the experiment. This allows us to control the rollout more controlled
and prevents devices not in the experiment to receive WebRTC messages.

Bug: 1021131
Change-Id: I25f137ed06075c8de7b1e9a5fbc48eb3b89219a3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2027794
Commit-Queue: Richard Knoll <knollr@chromium.org>
Reviewed-by: default avatarHimanshu Jaju <himanshujaju@chromium.org>
Cr-Commit-Position: refs/heads/master@{#737008}
parent 4b872abf
...@@ -20,10 +20,44 @@ ...@@ -20,10 +20,44 @@
#include "chrome/browser/sharing/sharing_sync_preference.h" #include "chrome/browser/sharing/sharing_sync_preference.h"
#include "chrome/browser/sharing/sharing_utils.h" #include "chrome/browser/sharing/sharing_utils.h"
#include "chrome/browser/sharing/vapid_key_manager.h" #include "chrome/browser/sharing/vapid_key_manager.h"
#include "chrome/browser/sharing/webrtc/webrtc_flags.h"
#include "components/sync/driver/sync_service.h" #include "components/sync/driver/sync_service.h"
#include "components/sync_device_info/device_info.h" #include "components/sync_device_info/device_info.h"
#include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_task_traits.h"
namespace {
SharingMessageSender::DelegateType GetSendDelegateType(
const syncer::DeviceInfo& device,
const chrome_browser_sharing::SharingMessage& message) {
// Messages other than SharedClipboard are always sent via FCM.
if (message.payload_case() !=
chrome_browser_sharing::SharingMessage::kSharedClipboardMessage) {
return SharingMessageSender::DelegateType::kFCM;
}
// Check if the local device support sending and receiving WebRTC messages.
if (!base::FeatureList::IsEnabled(kSharingPeerConnectionSender) ||
!base::FeatureList::IsEnabled(kSharingPeerConnectionReceiver)) {
return SharingMessageSender::DelegateType::kFCM;
}
// Fallback to FCM if remote device does not support WebRTC yet.
if (!device.sharing_info() ||
!device.sharing_info()->enabled_features.count(
sync_pb::SharingSpecificFields::PEER_CONNECTION)) {
return SharingMessageSender::DelegateType::kFCM;
}
// TODO(crbug.com/1002436): This will send SharedClipboard messages between
// compatible devices that are both in the experiment via WebRTC. Revisit this
// logic once we wrap up the experiment and e.g. only send messages over a
// certain size via WebRTC.
return SharingMessageSender::DelegateType::kWebRtc;
}
} // namespace
SharingService::SharingService( SharingService::SharingService(
std::unique_ptr<SharingSyncPreference> sync_prefs, std::unique_ptr<SharingSyncPreference> sync_prefs,
std::unique_ptr<VapidKeyManager> vapid_key_manager, std::unique_ptr<VapidKeyManager> vapid_key_manager,
...@@ -79,10 +113,10 @@ void SharingService::SendMessageToDevice( ...@@ -79,10 +113,10 @@ void SharingService::SendMessageToDevice(
base::TimeDelta response_timeout, base::TimeDelta response_timeout,
chrome_browser_sharing::SharingMessage message, chrome_browser_sharing::SharingMessage message,
SharingMessageSender::ResponseCallback callback) { SharingMessageSender::ResponseCallback callback) {
// TODO(knollr): Select between kFCM and kWebRtc. auto delegate_type = GetSendDelegateType(device, message);
message_sender_->SendMessageToDevice( message_sender_->SendMessageToDevice(device, response_timeout,
device, response_timeout, std::move(message), std::move(message), delegate_type,
SharingMessageSender::DelegateType::kFCM, std::move(callback)); std::move(callback));
} }
void SharingService::RegisterSharingHandler( void SharingService::RegisterSharingHandler(
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
#include "chrome/browser/sharing/webrtc/webrtc_flags.h" #include "chrome/browser/sharing/webrtc/webrtc_flags.h"
// TODO(crbug.com/1021131) - Enable by default for M80 experimentation.
const base::Feature kSharingPeerConnectionReceiver{ const base::Feature kSharingPeerConnectionReceiver{
"SharingPeerConnectionReceiver", base::FEATURE_DISABLED_BY_DEFAULT}; "SharingPeerConnectionReceiver", base::FEATURE_DISABLED_BY_DEFAULT};
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment