Commit 148602d4 authored by Kyle Horimoto's avatar Kyle Horimoto Committed by Commit Bot

[CrOS PhoneHub] Add ConnectionMedium enum to SecureChannel Mojo API

This CL adds a medium to the Mojo API, which allows clients to choose
the connection medium. It also adds an EnumTraits definition for
ConnectionMedium and updates tests to reflect this new parameter.

Note that currently, the client code is still hard-coded to use the
kBluetoothLowEnergy medium. A follow-up CL adds the ability for clients
to specify the medium themselves.

Bug: 1106937
Change-Id: Ic0fa8fe13d1402928c49557220f2e45135cadff0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2390965
Commit-Queue: Kyle Horimoto <khorimoto@chromium.org>
Reviewed-by: default avatarTom Sepez <tsepez@chromium.org>
Reviewed-by: default avatarJames Vecore <vecore@google.com>
Cr-Commit-Position: refs/heads/master@{#804283}
parent bb10d6fc
...@@ -18,6 +18,7 @@ void FakeSecureChannel::ListenForConnectionFromDevice( ...@@ -18,6 +18,7 @@ void FakeSecureChannel::ListenForConnectionFromDevice(
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate) { mojo::PendingRemote<mojom::ConnectionDelegate> delegate) {
delegate_from_last_listen_call_.Bind(std::move(delegate)); delegate_from_last_listen_call_.Bind(std::move(delegate));
...@@ -27,6 +28,7 @@ void FakeSecureChannel::InitiateConnectionToDevice( ...@@ -27,6 +28,7 @@ void FakeSecureChannel::InitiateConnectionToDevice(
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate) { mojo::PendingRemote<mojom::ConnectionDelegate> delegate) {
delegate_from_last_initiate_call_.Bind(std::move(delegate)); delegate_from_last_initiate_call_.Bind(std::move(delegate));
......
...@@ -41,12 +41,14 @@ class FakeSecureChannel : public SecureChannelBase { ...@@ -41,12 +41,14 @@ class FakeSecureChannel : public SecureChannelBase {
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate) override; mojo::PendingRemote<mojom::ConnectionDelegate> delegate) override;
void InitiateConnectionToDevice( void InitiateConnectionToDevice(
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate) override; mojo::PendingRemote<mojom::ConnectionDelegate> delegate) override;
......
...@@ -94,7 +94,8 @@ void SecureChannelClientImpl::PerformInitiateConnectionToDevice( ...@@ -94,7 +94,8 @@ void SecureChannelClientImpl::PerformInitiateConnectionToDevice(
mojo::PendingRemote<mojom::ConnectionDelegate> connection_delegate_remote) { mojo::PendingRemote<mojom::ConnectionDelegate> connection_delegate_remote) {
secure_channel_remote_->InitiateConnectionToDevice( secure_channel_remote_->InitiateConnectionToDevice(
device_to_connect.GetRemoteDevice(), local_device.GetRemoteDevice(), device_to_connect.GetRemoteDevice(), local_device.GetRemoteDevice(),
feature, connection_priority, std::move(connection_delegate_remote)); feature, ConnectionMedium::kBluetoothLowEnergy, connection_priority,
std::move(connection_delegate_remote));
} }
void SecureChannelClientImpl::PerformListenForConnectionFromDevice( void SecureChannelClientImpl::PerformListenForConnectionFromDevice(
...@@ -105,7 +106,8 @@ void SecureChannelClientImpl::PerformListenForConnectionFromDevice( ...@@ -105,7 +106,8 @@ void SecureChannelClientImpl::PerformListenForConnectionFromDevice(
mojo::PendingRemote<mojom::ConnectionDelegate> connection_delegate_remote) { mojo::PendingRemote<mojom::ConnectionDelegate> connection_delegate_remote) {
secure_channel_remote_->ListenForConnectionFromDevice( secure_channel_remote_->ListenForConnectionFromDevice(
device_to_connect.GetRemoteDevice(), local_device.GetRemoteDevice(), device_to_connect.GetRemoteDevice(), local_device.GetRemoteDevice(),
feature, connection_priority, std::move(connection_delegate_remote)); feature, ConnectionMedium::kBluetoothLowEnergy, connection_priority,
std::move(connection_delegate_remote));
} }
void SecureChannelClientImpl::FlushForTesting() { void SecureChannelClientImpl::FlushForTesting() {
......
...@@ -82,6 +82,16 @@ enum ConnectionPriority { ...@@ -82,6 +82,16 @@ enum ConnectionPriority {
HIGH HIGH
}; };
enum ConnectionMedium {
// Connection occurs using GATT over Bluetooth Low Energy (BLE).
kBluetoothLowEnergy,
// Connection occurs using the Nearby Connections library, which bootstraps
// a connection via Bluetooth Classic, then "upgrades" bandwidth to a WebRTC
// connection.
kNearbyConnections
};
struct BluetoothConnectionMetadata { struct BluetoothConnectionMetadata {
// RSSI at the exact time that this metadata was requested. Note that RSSI // RSSI at the exact time that this metadata was requested. Note that RSSI
// may change drastically in a short period; this is only a snapshot. // may change drastically in a short period; this is only a snapshot.
...@@ -184,6 +194,7 @@ interface SecureChannel { ...@@ -184,6 +194,7 @@ interface SecureChannel {
chromeos.multidevice.mojom.RemoteDevice device_to_connect, chromeos.multidevice.mojom.RemoteDevice device_to_connect,
chromeos.multidevice.mojom.RemoteDevice local_device, chromeos.multidevice.mojom.RemoteDevice local_device,
string feature, string feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
pending_remote<ConnectionDelegate> delegate); pending_remote<ConnectionDelegate> delegate);
...@@ -198,6 +209,7 @@ interface SecureChannel { ...@@ -198,6 +209,7 @@ interface SecureChannel {
chromeos.multidevice.mojom.RemoteDevice device_to_connect, chromeos.multidevice.mojom.RemoteDevice device_to_connect,
chromeos.multidevice.mojom.RemoteDevice local_device, chromeos.multidevice.mojom.RemoteDevice local_device,
string feature, string feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
pending_remote<ConnectionDelegate> delegate); pending_remote<ConnectionDelegate> delegate);
}; };
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
mojom = "//chromeos/services/secure_channel/public/mojom/secure_channel.mojom" mojom = "//chromeos/services/secure_channel/public/mojom/secure_channel.mojom"
public_headers = [ public_headers = [
"//chromeos/services/secure_channel/public/cpp/shared/connection_medium.h",
"//chromeos/services/secure_channel/public/cpp/shared/connection_priority.h", "//chromeos/services/secure_channel/public/cpp/shared/connection_priority.h",
] ]
...@@ -15,8 +16,9 @@ sources = [ ...@@ -15,8 +16,9 @@ sources = [
"//chromeos/services/secure_channel/public/mojom/secure_channel_mojom_traits.h", "//chromeos/services/secure_channel/public/mojom/secure_channel_mojom_traits.h",
] ]
public_deps = [ public_deps = [ "//chromeos/services/secure_channel/public/cpp/shared" ]
"//chromeos/services/secure_channel/public/cpp/shared",
]
type_mappings = [ "chromeos.secure_channel.mojom.ConnectionPriority=::chromeos::secure_channel::ConnectionPriority" ] type_mappings = [
"chromeos.secure_channel.mojom.ConnectionMedium=::chromeos::secure_channel::ConnectionMedium",
"chromeos.secure_channel.mojom.ConnectionPriority=::chromeos::secure_channel::ConnectionPriority",
]
...@@ -8,6 +8,40 @@ ...@@ -8,6 +8,40 @@
namespace mojo { namespace mojo {
chromeos::secure_channel::mojom::ConnectionMedium
EnumTraits<chromeos::secure_channel::mojom::ConnectionMedium,
chromeos::secure_channel::ConnectionMedium>::
ToMojom(chromeos::secure_channel::ConnectionMedium input) {
switch (input) {
case chromeos::secure_channel::ConnectionMedium::kBluetoothLowEnergy:
return chromeos::secure_channel::mojom::ConnectionMedium::
kBluetoothLowEnergy;
case chromeos::secure_channel::ConnectionMedium::kNearbyConnections:
return chromeos::secure_channel::mojom::ConnectionMedium::
kNearbyConnections;
}
NOTREACHED();
return chromeos::secure_channel::mojom::ConnectionMedium::kBluetoothLowEnergy;
}
bool EnumTraits<chromeos::secure_channel::mojom::ConnectionMedium,
chromeos::secure_channel::ConnectionMedium>::
FromMojom(chromeos::secure_channel::mojom::ConnectionMedium input,
chromeos::secure_channel::ConnectionMedium* out) {
switch (input) {
case chromeos::secure_channel::mojom::ConnectionMedium::kBluetoothLowEnergy:
*out = chromeos::secure_channel::ConnectionMedium::kBluetoothLowEnergy;
return true;
case chromeos::secure_channel::mojom::ConnectionMedium::kNearbyConnections:
*out = chromeos::secure_channel::ConnectionMedium::kNearbyConnections;
return true;
}
NOTREACHED();
return false;
}
chromeos::secure_channel::mojom::ConnectionPriority chromeos::secure_channel::mojom::ConnectionPriority
EnumTraits<chromeos::secure_channel::mojom::ConnectionPriority, EnumTraits<chromeos::secure_channel::mojom::ConnectionPriority,
chromeos::secure_channel::ConnectionPriority>:: chromeos::secure_channel::ConnectionPriority>::
......
...@@ -5,12 +5,23 @@ ...@@ -5,12 +5,23 @@
#ifndef CHROMEOS_SERVICES_SECURE_CHANNEL_PUBLIC_MOJOM_SECURE_CHANNEL_MOJOM_TRAITS_H_ #ifndef CHROMEOS_SERVICES_SECURE_CHANNEL_PUBLIC_MOJOM_SECURE_CHANNEL_MOJOM_TRAITS_H_
#define CHROMEOS_SERVICES_SECURE_CHANNEL_PUBLIC_MOJOM_SECURE_CHANNEL_MOJOM_TRAITS_H_ #define CHROMEOS_SERVICES_SECURE_CHANNEL_PUBLIC_MOJOM_SECURE_CHANNEL_MOJOM_TRAITS_H_
#include "chromeos/services/secure_channel/public/cpp/shared/connection_medium.h"
#include "chromeos/services/secure_channel/public/cpp/shared/connection_priority.h" #include "chromeos/services/secure_channel/public/cpp/shared/connection_priority.h"
#include "chromeos/services/secure_channel/public/mojom/secure_channel.mojom.h" #include "chromeos/services/secure_channel/public/mojom/secure_channel.mojom.h"
#include "mojo/public/cpp/bindings/enum_traits.h" #include "mojo/public/cpp/bindings/enum_traits.h"
namespace mojo { namespace mojo {
template <>
class EnumTraits<chromeos::secure_channel::mojom::ConnectionMedium,
chromeos::secure_channel::ConnectionMedium> {
public:
static chromeos::secure_channel::mojom::ConnectionMedium ToMojom(
chromeos::secure_channel::ConnectionMedium input);
static bool FromMojom(chromeos::secure_channel::mojom::ConnectionMedium input,
chromeos::secure_channel::ConnectionMedium* out);
};
template <> template <>
class EnumTraits<chromeos::secure_channel::mojom::ConnectionPriority, class EnumTraits<chromeos::secure_channel::mojom::ConnectionPriority,
chromeos::secure_channel::ConnectionPriority> { chromeos::secure_channel::ConnectionPriority> {
......
...@@ -85,28 +85,28 @@ void SecureChannelImpl::ListenForConnectionFromDevice( ...@@ -85,28 +85,28 @@ void SecureChannelImpl::ListenForConnectionFromDevice(
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate) { mojo::PendingRemote<mojom::ConnectionDelegate> delegate) {
ProcessConnectionRequest(ApiFunctionName::kListenForConnection, ProcessConnectionRequest(
device_to_connect, local_device, ApiFunctionName::kListenForConnection, device_to_connect, local_device,
ClientConnectionParametersImpl::Factory::Create( ClientConnectionParametersImpl::Factory::Create(feature,
feature, std::move(delegate)), std::move(delegate)),
ConnectionRole::kListenerRole, connection_priority, ConnectionRole::kListenerRole, connection_priority, connection_medium);
ConnectionMedium::kBluetoothLowEnergy);
} }
void SecureChannelImpl::InitiateConnectionToDevice( void SecureChannelImpl::InitiateConnectionToDevice(
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate) { mojo::PendingRemote<mojom::ConnectionDelegate> delegate) {
ProcessConnectionRequest(ApiFunctionName::kInitiateConnection, ProcessConnectionRequest(
device_to_connect, local_device, ApiFunctionName::kInitiateConnection, device_to_connect, local_device,
ClientConnectionParametersImpl::Factory::Create( ClientConnectionParametersImpl::Factory::Create(feature,
feature, std::move(delegate)), std::move(delegate)),
ConnectionRole::kInitiatorRole, connection_priority, ConnectionRole::kInitiatorRole, connection_priority, connection_medium);
ConnectionMedium::kBluetoothLowEnergy);
} }
void SecureChannelImpl::OnDisconnected( void SecureChannelImpl::OnDisconnected(
......
...@@ -100,12 +100,14 @@ class SecureChannelImpl : public mojom::SecureChannel, ...@@ -100,12 +100,14 @@ class SecureChannelImpl : public mojom::SecureChannel,
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate) override; mojo::PendingRemote<mojom::ConnectionDelegate> delegate) override;
void InitiateConnectionToDevice( void InitiateConnectionToDevice(
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate) override; mojo::PendingRemote<mojom::ConnectionDelegate> delegate) override;
......
...@@ -39,12 +39,14 @@ SecureChannelInitializer::ConnectionRequestArgs::ConnectionRequestArgs( ...@@ -39,12 +39,14 @@ SecureChannelInitializer::ConnectionRequestArgs::ConnectionRequestArgs(
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate, mojo::PendingRemote<mojom::ConnectionDelegate> delegate,
bool is_listen_request) bool is_listen_request)
: device_to_connect(device_to_connect), : device_to_connect(device_to_connect),
local_device(local_device), local_device(local_device),
feature(feature), feature(feature),
connection_medium(connection_medium),
connection_priority(connection_priority), connection_priority(connection_priority),
delegate(std::move(delegate)), delegate(std::move(delegate)),
is_listen_request(is_listen_request) {} is_listen_request(is_listen_request) {}
...@@ -77,36 +79,38 @@ void SecureChannelInitializer::ListenForConnectionFromDevice( ...@@ -77,36 +79,38 @@ void SecureChannelInitializer::ListenForConnectionFromDevice(
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate) { mojo::PendingRemote<mojom::ConnectionDelegate> delegate) {
if (secure_channel_impl_) { if (secure_channel_impl_) {
secure_channel_impl_->ListenForConnectionFromDevice( secure_channel_impl_->ListenForConnectionFromDevice(
device_to_connect, local_device, feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
std::move(delegate)); connection_priority, std::move(delegate));
return; return;
} }
pending_args_.push(std::make_unique<ConnectionRequestArgs>( pending_args_.push(std::make_unique<ConnectionRequestArgs>(
device_to_connect, local_device, feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
std::move(delegate), true /* is_listen_request */)); connection_priority, std::move(delegate), true /* is_listen_request */));
} }
void SecureChannelInitializer::InitiateConnectionToDevice( void SecureChannelInitializer::InitiateConnectionToDevice(
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate) { mojo::PendingRemote<mojom::ConnectionDelegate> delegate) {
if (secure_channel_impl_) { if (secure_channel_impl_) {
secure_channel_impl_->InitiateConnectionToDevice( secure_channel_impl_->InitiateConnectionToDevice(
device_to_connect, local_device, feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
std::move(delegate)); connection_priority, std::move(delegate));
return; return;
} }
pending_args_.push(std::make_unique<ConnectionRequestArgs>( pending_args_.push(std::make_unique<ConnectionRequestArgs>(
device_to_connect, local_device, feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
std::move(delegate), false /* is_listen_request */)); connection_priority, std::move(delegate), false /* is_listen_request */));
} }
void SecureChannelInitializer::OnBluetoothAdapterReceived( void SecureChannelInitializer::OnBluetoothAdapterReceived(
...@@ -125,15 +129,15 @@ void SecureChannelInitializer::OnBluetoothAdapterReceived( ...@@ -125,15 +129,15 @@ void SecureChannelInitializer::OnBluetoothAdapterReceived(
if (args_to_pass->is_listen_request) { if (args_to_pass->is_listen_request) {
secure_channel_impl_->ListenForConnectionFromDevice( secure_channel_impl_->ListenForConnectionFromDevice(
args_to_pass->device_to_connect, args_to_pass->local_device, args_to_pass->device_to_connect, args_to_pass->local_device,
args_to_pass->feature, args_to_pass->connection_priority, args_to_pass->feature, args_to_pass->connection_medium,
std::move(args_to_pass->delegate)); args_to_pass->connection_priority, std::move(args_to_pass->delegate));
continue; continue;
} }
secure_channel_impl_->InitiateConnectionToDevice( secure_channel_impl_->InitiateConnectionToDevice(
args_to_pass->device_to_connect, args_to_pass->local_device, args_to_pass->device_to_connect, args_to_pass->local_device,
args_to_pass->feature, args_to_pass->connection_priority, args_to_pass->feature, args_to_pass->connection_medium,
std::move(args_to_pass->delegate)); args_to_pass->connection_priority, std::move(args_to_pass->delegate));
} }
} }
......
...@@ -60,6 +60,7 @@ class SecureChannelInitializer : public SecureChannelBase { ...@@ -60,6 +60,7 @@ class SecureChannelInitializer : public SecureChannelBase {
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate, mojo::PendingRemote<mojom::ConnectionDelegate> delegate,
bool is_listen_request); bool is_listen_request);
...@@ -68,6 +69,7 @@ class SecureChannelInitializer : public SecureChannelBase { ...@@ -68,6 +69,7 @@ class SecureChannelInitializer : public SecureChannelBase {
multidevice::RemoteDevice device_to_connect; multidevice::RemoteDevice device_to_connect;
multidevice::RemoteDevice local_device; multidevice::RemoteDevice local_device;
std::string feature; std::string feature;
ConnectionMedium connection_medium;
ConnectionPriority connection_priority; ConnectionPriority connection_priority;
mojo::PendingRemote<mojom::ConnectionDelegate> delegate; mojo::PendingRemote<mojom::ConnectionDelegate> delegate;
bool is_listen_request; bool is_listen_request;
...@@ -78,12 +80,14 @@ class SecureChannelInitializer : public SecureChannelBase { ...@@ -78,12 +80,14 @@ class SecureChannelInitializer : public SecureChannelBase {
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate) override; mojo::PendingRemote<mojom::ConnectionDelegate> delegate) override;
void InitiateConnectionToDevice( void InitiateConnectionToDevice(
const multidevice::RemoteDevice& device_to_connect, const multidevice::RemoteDevice& device_to_connect,
const multidevice::RemoteDevice& local_device, const multidevice::RemoteDevice& local_device,
const std::string& feature, const std::string& feature,
ConnectionMedium connection_medium,
ConnectionPriority connection_priority, ConnectionPriority connection_priority,
mojo::PendingRemote<mojom::ConnectionDelegate> delegate) override; mojo::PendingRemote<mojom::ConnectionDelegate> delegate) override;
......
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