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;
......
...@@ -407,9 +407,10 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -407,9 +407,10 @@ class SecureChannelServiceTest : public testing::Test {
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) {
AttemptConnectionPreInitialization(device_to_connect, local_device, feature, AttemptConnectionPreInitialization(device_to_connect, local_device, feature,
connection_priority, connection_medium, connection_priority,
true /* is_listener */); true /* is_listener */);
} }
...@@ -417,9 +418,10 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -417,9 +418,10 @@ class SecureChannelServiceTest : public testing::Test {
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) {
AttemptConnectionPreInitialization(device_to_connect, local_device, feature, AttemptConnectionPreInitialization(device_to_connect, local_device, feature,
connection_priority, connection_medium, connection_priority,
false /* is_listener */); false /* is_listener */);
} }
...@@ -427,62 +429,68 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -427,62 +429,68 @@ class SecureChannelServiceTest : public testing::Test {
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,
mojom::ConnectionAttemptFailureReason expected_failure_reason) { mojom::ConnectionAttemptFailureReason expected_failure_reason) {
AttemptConnectionAndVerifyRejection( AttemptConnectionAndVerifyRejection(
device_to_connect, local_device, feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
expected_failure_reason, true /* is_listener */); connection_priority, expected_failure_reason, true /* is_listener */);
} }
void CallInitiateConnectionToDeviceAndVerifyRejection( void CallInitiateConnectionToDeviceAndVerifyRejection(
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,
mojom::ConnectionAttemptFailureReason expected_failure_reason) { mojom::ConnectionAttemptFailureReason expected_failure_reason) {
AttemptConnectionAndVerifyRejection( AttemptConnectionAndVerifyRejection(
device_to_connect, local_device, feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
expected_failure_reason, false /* is_listener */); connection_priority, expected_failure_reason, false /* is_listener */);
} }
void CallListenForConnectionFromDeviceAndVerifyPendingConnection( void CallListenForConnectionFromDeviceAndVerifyPendingConnection(
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) {
AttemptConnectionAndVerifyPendingConnection(device_to_connect, local_device, AttemptConnectionAndVerifyPendingConnection(
feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
true /* is_listener */); connection_priority, true /* is_listener */);
} }
void CallInitiateConnectionToDeviceAndVerifyPendingConnection( void CallInitiateConnectionToDeviceAndVerifyPendingConnection(
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) {
AttemptConnectionAndVerifyPendingConnection(device_to_connect, local_device, AttemptConnectionAndVerifyPendingConnection(
feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
false /* is_listener */); connection_priority, false /* is_listener */);
} }
void CallListenForConnectionFromDeviceAndVerifyActiveConnection( void CallListenForConnectionFromDeviceAndVerifyActiveConnection(
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) {
AttemptConnectionAndVerifyActiveConnection(device_to_connect, local_device, AttemptConnectionAndVerifyActiveConnection(
feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
true /* is_listener */); connection_priority, true /* is_listener */);
} }
void CallInitiateConnectionToDeviceAndVerifyActiveConnection( void CallInitiateConnectionToDeviceAndVerifyActiveConnection(
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) {
AttemptConnectionAndVerifyActiveConnection(device_to_connect, local_device, AttemptConnectionAndVerifyActiveConnection(
feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
false /* is_listener */); connection_priority, false /* is_listener */);
} }
base::UnguessableToken base::UnguessableToken
...@@ -490,10 +498,11 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -490,10 +498,11 @@ class SecureChannelServiceTest : public testing::Test {
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) {
return AttemptConnectionAndVerifyStillDisconnecting( return AttemptConnectionAndVerifyStillDisconnecting(
device_to_connect, local_device, feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
true /* is_listener */); connection_priority, true /* is_listener */);
} }
base::UnguessableToken base::UnguessableToken
...@@ -501,15 +510,16 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -501,15 +510,16 @@ class SecureChannelServiceTest : public testing::Test {
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) {
return AttemptConnectionAndVerifyStillDisconnecting( return AttemptConnectionAndVerifyStillDisconnecting(
device_to_connect, local_device, feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
false /* is_listener */); connection_priority, false /* is_listener */);
} }
void SimulateSuccessfulConnection(const std::string& device_id) { void SimulateSuccessfulConnection(const std::string& device_id,
ConnectionDetails connection_details(device_id, ConnectionMedium connection_medium) {
ConnectionMedium::kBluetoothLowEnergy); ConnectionDetails connection_details(device_id, connection_medium);
auto fake_authenticated_channel = auto fake_authenticated_channel =
std::make_unique<FakeAuthenticatedChannel>(); std::make_unique<FakeAuthenticatedChannel>();
...@@ -531,14 +541,17 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -531,14 +541,17 @@ class SecureChannelServiceTest : public testing::Test {
EXPECT_EQ(moved_client_list[i], std::get<2>(metadata)[i].get()); EXPECT_EQ(moved_client_list[i], std::get<2>(metadata)[i].get());
} }
void SimulateConnectionStartingDisconnecting(const std::string& device_id) { void SimulateConnectionStartingDisconnecting(
const std::string& device_id,
ConnectionMedium connection_medium) {
fake_active_connection_manager()->SetDisconnecting( fake_active_connection_manager()->SetDisconnecting(
ConnectionDetails(device_id, ConnectionMedium::kBluetoothLowEnergy)); ConnectionDetails(device_id, connection_medium));
} }
void SimulateConnectionBecomingDisconnected(const std::string& device_id) { void SimulateConnectionBecomingDisconnected(
ConnectionDetails connection_details(device_id, const std::string& device_id,
ConnectionMedium::kBluetoothLowEnergy); ConnectionMedium connection_medium) {
ConnectionDetails connection_details(device_id, connection_medium);
// If the connection was previously disconnected, there may have been // If the connection was previously disconnected, there may have been
// pending metadata corresponding to any connection attempts which were // pending metadata corresponding to any connection attempts which were
...@@ -554,7 +567,7 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -554,7 +567,7 @@ class SecureChannelServiceTest : public testing::Test {
} }
fake_active_connection_manager()->SetDisconnected( fake_active_connection_manager()->SetDisconnected(
ConnectionDetails(device_id, ConnectionMedium::kBluetoothLowEnergy)); ConnectionDetails(device_id, connection_medium));
// If there were no pending metadata, there is no need to make additional // If there were no pending metadata, there is no need to make additional
// verifications. // verifications.
...@@ -609,6 +622,7 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -609,6 +622,7 @@ class SecureChannelServiceTest : public testing::Test {
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,
bool is_listener) { bool is_listener) {
// If this is the first time the Mojo service will be accessed, // If this is the first time the Mojo service will be accessed,
...@@ -619,9 +633,9 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -619,9 +633,9 @@ class SecureChannelServiceTest : public testing::Test {
? fake_pending_connection_manager()->handled_requests().size() ? fake_pending_connection_manager()->handled_requests().size()
: 0; : 0;
auto id = AttemptConnectionWithoutRejection(device_to_connect, local_device, auto id = AttemptConnectionWithoutRejection(
feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
is_listener); connection_priority, is_listener);
FakePendingConnectionManager::HandledRequestsList& handled_requests = FakePendingConnectionManager::HandledRequestsList& handled_requests =
fake_pending_connection_manager()->handled_requests(); fake_pending_connection_manager()->handled_requests();
...@@ -632,8 +646,7 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -632,8 +646,7 @@ class SecureChannelServiceTest : public testing::Test {
id, id,
is_listener ? ConnectionRole::kListenerRole is_listener ? ConnectionRole::kListenerRole
: ConnectionRole::kInitiatorRole, : ConnectionRole::kInitiatorRole,
connection_priority, connection_priority, connection_medium,
ConnectionMedium::kBluetoothLowEnergy,
handled_requests.size() - 1); handled_requests.size() - 1);
} }
...@@ -641,10 +654,11 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -641,10 +654,11 @@ class SecureChannelServiceTest : public testing::Test {
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,
bool is_listener) { bool is_listener) {
ConnectionDetails connection_details(device_to_connect.GetDeviceId(), ConnectionDetails connection_details(device_to_connect.GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy); connection_medium);
const std::vector<std::unique_ptr<ClientConnectionParameters>>& const std::vector<std::unique_ptr<ClientConnectionParameters>>&
clients_for_active_connection = clients_for_active_connection =
...@@ -654,9 +668,9 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -654,9 +668,9 @@ class SecureChannelServiceTest : public testing::Test {
->second); ->second);
size_t num_clients_before_call = clients_for_active_connection.size(); size_t num_clients_before_call = clients_for_active_connection.size();
auto id = AttemptConnectionWithoutRejection(device_to_connect, local_device, auto id = AttemptConnectionWithoutRejection(
feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
true /* is_listener */); connection_priority, true /* is_listener */);
EXPECT_EQ(num_clients_before_call + 1u, EXPECT_EQ(num_clients_before_call + 1u,
clients_for_active_connection.size()); clients_for_active_connection.size());
...@@ -667,15 +681,16 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -667,15 +681,16 @@ class SecureChannelServiceTest : public testing::Test {
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,
bool is_listener) { bool is_listener) {
FakePendingConnectionManager::HandledRequestsList& handled_requests = FakePendingConnectionManager::HandledRequestsList& handled_requests =
fake_pending_connection_manager()->handled_requests(); fake_pending_connection_manager()->handled_requests();
size_t num_handled_requests_before_call = handled_requests.size(); size_t num_handled_requests_before_call = handled_requests.size();
auto id = AttemptConnectionWithoutRejection(device_to_connect, local_device, auto id = AttemptConnectionWithoutRejection(
feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
is_listener); connection_priority, is_listener);
// Since the channel is expected to be disconnecting, no additional // Since the channel is expected to be disconnecting, no additional
// pending request should have been sent. // pending request should have been sent.
...@@ -686,7 +701,7 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -686,7 +701,7 @@ class SecureChannelServiceTest : public testing::Test {
// fully disconnected, this entry will be verified in // fully disconnected, this entry will be verified in
// SimulateConnectionBecomingDisconnected(). // SimulateConnectionBecomingDisconnected().
ConnectionDetails connection_details(device_to_connect.GetDeviceId(), ConnectionDetails connection_details(device_to_connect.GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy); connection_medium);
disconnecting_details_to_requests_map_[connection_details].push_back( disconnecting_details_to_requests_map_[connection_details].push_back(
std::make_tuple(id, local_device.GetDeviceId(), std::make_tuple(id, local_device.GetDeviceId(),
is_listener ? ConnectionRole::kListenerRole is_listener ? ConnectionRole::kListenerRole
...@@ -719,12 +734,13 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -719,12 +734,13 @@ class SecureChannelServiceTest : public testing::Test {
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,
mojom::ConnectionAttemptFailureReason expected_failure_reason, mojom::ConnectionAttemptFailureReason expected_failure_reason,
bool is_listener) { bool is_listener) {
auto id = AttemptConnectionPostInitialization( auto id = AttemptConnectionPostInitialization(
device_to_connect, local_device, feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
is_listener); connection_priority, is_listener);
EXPECT_EQ(expected_failure_reason, GetFailureReasonForRequest(id)); EXPECT_EQ(expected_failure_reason, GetFailureReasonForRequest(id));
} }
...@@ -742,11 +758,12 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -742,11 +758,12 @@ class SecureChannelServiceTest : public testing::Test {
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,
bool is_listener) { bool is_listener) {
auto id = AttemptConnectionPostInitialization( auto id = AttemptConnectionPostInitialization(
device_to_connect, local_device, feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
is_listener); connection_priority, is_listener);
// |device_to_connect| should be in the cache. // |device_to_connect| should be in the cache.
EXPECT_TRUE(multidevice::IsSameDevice( EXPECT_TRUE(multidevice::IsSameDevice(
...@@ -767,13 +784,14 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -767,13 +784,14 @@ class SecureChannelServiceTest : public testing::Test {
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,
bool is_listener) { bool is_listener) {
base::UnguessableToken last_id_before_call = base::UnguessableToken last_id_before_call =
fake_client_connection_parameters_factory_->last_created_instance_id(); fake_client_connection_parameters_factory_->last_created_instance_id();
AttemptConnection(device_to_connect, local_device, feature, AttemptConnection(device_to_connect, local_device, feature,
connection_priority, is_listener); connection_medium, connection_priority, is_listener);
base::UnguessableToken id_generated_by_call = base::UnguessableToken id_generated_by_call =
fake_client_connection_parameters_factory_->last_created_instance_id(); fake_client_connection_parameters_factory_->last_created_instance_id();
...@@ -789,6 +807,7 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -789,6 +807,7 @@ class SecureChannelServiceTest : public testing::Test {
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,
bool is_listener) { bool is_listener) {
// Should not have been any ClientConnectionParameters before the attempt. // Should not have been any ClientConnectionParameters before the attempt.
...@@ -797,7 +816,7 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -797,7 +816,7 @@ class SecureChannelServiceTest : public testing::Test {
.is_empty()); .is_empty());
AttemptConnection(device_to_connect, local_device, feature, AttemptConnection(device_to_connect, local_device, feature,
connection_priority, is_listener); connection_medium, connection_priority, is_listener);
// Should still not have been any after the attempt. // Should still not have been any after the attempt.
EXPECT_TRUE( EXPECT_TRUE(
...@@ -810,18 +829,19 @@ class SecureChannelServiceTest : public testing::Test { ...@@ -810,18 +829,19 @@ class SecureChannelServiceTest : public testing::Test {
void AttemptConnection(const multidevice::RemoteDevice& device_to_connect, void AttemptConnection(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,
bool is_listener) { bool is_listener) {
FakeConnectionDelegate fake_connection_delegate; FakeConnectionDelegate fake_connection_delegate;
if (is_listener) { if (is_listener) {
secure_channel_remote_->ListenForConnectionFromDevice( secure_channel_remote_->ListenForConnectionFromDevice(
device_to_connect, local_device, feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
fake_connection_delegate.GenerateRemote()); connection_priority, fake_connection_delegate.GenerateRemote());
} else { } else {
secure_channel_remote_->InitiateConnectionToDevice( secure_channel_remote_->InitiateConnectionToDevice(
device_to_connect, local_device, feature, connection_priority, device_to_connect, local_device, feature, connection_medium,
fake_connection_delegate.GenerateRemote()); connection_priority, fake_connection_delegate.GenerateRemote());
} }
secure_channel_remote_.FlushForTesting(); secure_channel_remote_.FlushForTesting();
...@@ -889,7 +909,8 @@ TEST_F(SecureChannelServiceTest, ListenForConnection_MissingPublicKey) { ...@@ -889,7 +909,8 @@ TEST_F(SecureChannelServiceTest, ListenForConnection_MissingPublicKey) {
device_to_connect.public_key.clear(); device_to_connect.public_key.clear();
CallListenForConnectionFromDeviceAndVerifyRejection( CallListenForConnectionFromDeviceAndVerifyRejection(
device_to_connect, test_devices()[1], "feature", ConnectionPriority::kLow, device_to_connect, test_devices()[1], "feature",
ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::REMOTE_DEVICE_INVALID_PUBLIC_KEY); mojom::ConnectionAttemptFailureReason::REMOTE_DEVICE_INVALID_PUBLIC_KEY);
} }
...@@ -900,7 +921,8 @@ TEST_F(SecureChannelServiceTest, InitiateConnection_MissingPublicKey) { ...@@ -900,7 +921,8 @@ TEST_F(SecureChannelServiceTest, InitiateConnection_MissingPublicKey) {
device_to_connect.public_key.clear(); device_to_connect.public_key.clear();
CallInitiateConnectionToDeviceAndVerifyRejection( CallInitiateConnectionToDeviceAndVerifyRejection(
device_to_connect, test_devices()[1], "feature", ConnectionPriority::kLow, device_to_connect, test_devices()[1], "feature",
ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::REMOTE_DEVICE_INVALID_PUBLIC_KEY); mojom::ConnectionAttemptFailureReason::REMOTE_DEVICE_INVALID_PUBLIC_KEY);
} }
...@@ -911,7 +933,8 @@ TEST_F(SecureChannelServiceTest, ListenForConnection_MissingPsk) { ...@@ -911,7 +933,8 @@ TEST_F(SecureChannelServiceTest, ListenForConnection_MissingPsk) {
device_to_connect.persistent_symmetric_key.clear(); device_to_connect.persistent_symmetric_key.clear();
CallListenForConnectionFromDeviceAndVerifyRejection( CallListenForConnectionFromDeviceAndVerifyRejection(
device_to_connect, test_devices()[1], "feature", ConnectionPriority::kLow, device_to_connect, test_devices()[1], "feature",
ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::REMOTE_DEVICE_INVALID_PSK); mojom::ConnectionAttemptFailureReason::REMOTE_DEVICE_INVALID_PSK);
} }
...@@ -922,7 +945,8 @@ TEST_F(SecureChannelServiceTest, InitiateConnection_MissingPsk) { ...@@ -922,7 +945,8 @@ TEST_F(SecureChannelServiceTest, InitiateConnection_MissingPsk) {
device_to_connect.persistent_symmetric_key.clear(); device_to_connect.persistent_symmetric_key.clear();
CallInitiateConnectionToDeviceAndVerifyRejection( CallInitiateConnectionToDeviceAndVerifyRejection(
device_to_connect, test_devices()[1], "feature", ConnectionPriority::kLow, device_to_connect, test_devices()[1], "feature",
ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::REMOTE_DEVICE_INVALID_PSK); mojom::ConnectionAttemptFailureReason::REMOTE_DEVICE_INVALID_PSK);
} }
...@@ -934,7 +958,8 @@ TEST_F(SecureChannelServiceTest, ...@@ -934,7 +958,8 @@ TEST_F(SecureChannelServiceTest,
local_device.public_key.clear(); local_device.public_key.clear();
CallListenForConnectionFromDeviceAndVerifyRejection( CallListenForConnectionFromDeviceAndVerifyRejection(
test_devices()[0], local_device, "feature", ConnectionPriority::kLow, test_devices()[0], local_device, "feature",
ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::LOCAL_DEVICE_INVALID_PUBLIC_KEY); mojom::ConnectionAttemptFailureReason::LOCAL_DEVICE_INVALID_PUBLIC_KEY);
} }
...@@ -946,7 +971,8 @@ TEST_F(SecureChannelServiceTest, ...@@ -946,7 +971,8 @@ TEST_F(SecureChannelServiceTest,
local_device.public_key.clear(); local_device.public_key.clear();
CallInitiateConnectionToDeviceAndVerifyRejection( CallInitiateConnectionToDeviceAndVerifyRejection(
test_devices()[0], local_device, "feature", ConnectionPriority::kLow, test_devices()[0], local_device, "feature",
ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::LOCAL_DEVICE_INVALID_PUBLIC_KEY); mojom::ConnectionAttemptFailureReason::LOCAL_DEVICE_INVALID_PUBLIC_KEY);
} }
...@@ -957,7 +983,8 @@ TEST_F(SecureChannelServiceTest, ListenForConnection_MissingLocalDevicePsk) { ...@@ -957,7 +983,8 @@ TEST_F(SecureChannelServiceTest, ListenForConnection_MissingLocalDevicePsk) {
local_device.persistent_symmetric_key.clear(); local_device.persistent_symmetric_key.clear();
CallListenForConnectionFromDeviceAndVerifyRejection( CallListenForConnectionFromDeviceAndVerifyRejection(
test_devices()[0], local_device, "feature", ConnectionPriority::kLow, test_devices()[0], local_device, "feature",
ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::LOCAL_DEVICE_INVALID_PSK); mojom::ConnectionAttemptFailureReason::LOCAL_DEVICE_INVALID_PSK);
} }
...@@ -968,7 +995,8 @@ TEST_F(SecureChannelServiceTest, InitiateConnection_MissingLocalDevicePsk) { ...@@ -968,7 +995,8 @@ TEST_F(SecureChannelServiceTest, InitiateConnection_MissingLocalDevicePsk) {
local_device.persistent_symmetric_key.clear(); local_device.persistent_symmetric_key.clear();
CallInitiateConnectionToDeviceAndVerifyRejection( CallInitiateConnectionToDeviceAndVerifyRejection(
test_devices()[0], local_device, "feature", ConnectionPriority::kLow, test_devices()[0], local_device, "feature",
ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::LOCAL_DEVICE_INVALID_PSK); mojom::ConnectionAttemptFailureReason::LOCAL_DEVICE_INVALID_PSK);
} }
...@@ -979,7 +1007,8 @@ TEST_F(SecureChannelServiceTest, ...@@ -979,7 +1007,8 @@ TEST_F(SecureChannelServiceTest,
set_is_adapter_present(false); set_is_adapter_present(false);
CallListenForConnectionFromDeviceAndVerifyRejection( CallListenForConnectionFromDeviceAndVerifyRejection(
test_devices()[0], test_devices()[1], "feature", ConnectionPriority::kLow, test_devices()[0], test_devices()[1], "feature",
ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::ADAPTER_NOT_PRESENT); mojom::ConnectionAttemptFailureReason::ADAPTER_NOT_PRESENT);
} }
...@@ -990,7 +1019,8 @@ TEST_F(SecureChannelServiceTest, ...@@ -990,7 +1019,8 @@ TEST_F(SecureChannelServiceTest,
set_is_adapter_present(false); set_is_adapter_present(false);
CallInitiateConnectionToDeviceAndVerifyRejection( CallInitiateConnectionToDeviceAndVerifyRejection(
test_devices()[0], test_devices()[1], "feature", ConnectionPriority::kLow, test_devices()[0], test_devices()[1], "feature",
ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::ADAPTER_NOT_PRESENT); mojom::ConnectionAttemptFailureReason::ADAPTER_NOT_PRESENT);
} }
...@@ -1000,7 +1030,8 @@ TEST_F(SecureChannelServiceTest, ListenForConnection_BluetoothAdapterDisabled) { ...@@ -1000,7 +1030,8 @@ TEST_F(SecureChannelServiceTest, ListenForConnection_BluetoothAdapterDisabled) {
set_is_adapter_powered(false); set_is_adapter_powered(false);
CallListenForConnectionFromDeviceAndVerifyRejection( CallListenForConnectionFromDeviceAndVerifyRejection(
test_devices()[0], test_devices()[1], "feature", ConnectionPriority::kLow, test_devices()[0], test_devices()[1], "feature",
ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::ADAPTER_DISABLED); mojom::ConnectionAttemptFailureReason::ADAPTER_DISABLED);
} }
...@@ -1010,17 +1041,55 @@ TEST_F(SecureChannelServiceTest, InitiateConnection_BluetoothAdapterDisabled) { ...@@ -1010,17 +1041,55 @@ TEST_F(SecureChannelServiceTest, InitiateConnection_BluetoothAdapterDisabled) {
set_is_adapter_powered(false); set_is_adapter_powered(false);
CallInitiateConnectionToDeviceAndVerifyRejection( CallInitiateConnectionToDeviceAndVerifyRejection(
test_devices()[0], test_devices()[1], "feature", ConnectionPriority::kLow, test_devices()[0], test_devices()[1], "feature",
ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::ADAPTER_DISABLED); mojom::ConnectionAttemptFailureReason::ADAPTER_DISABLED);
} }
TEST_F(SecureChannelServiceTest,
InitiateConnection_Nearby_RemoteDeviceMissingBluetoothAddress) {
FinishInitialization();
multidevice::RemoteDevice device_to_connect = test_devices()[0];
device_to_connect.bluetooth_public_address.clear();
CallInitiateConnectionToDeviceAndVerifyRejection(
device_to_connect, test_devices()[1], "feature",
ConnectionMedium::kNearbyConnections, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::
REMOTE_DEVICE_INVALID_BLUETOOTH_ADDRESS);
}
TEST_F(SecureChannelServiceTest,
InitiateConnection_Nearby_LocalDeviceMissingBluetoothAddress) {
FinishInitialization();
multidevice::RemoteDevice local_device = test_devices()[1];
local_device.bluetooth_public_address.clear();
CallInitiateConnectionToDeviceAndVerifyRejection(
test_devices()[0], local_device, "feature",
ConnectionMedium::kNearbyConnections, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::
LOCAL_DEVICE_INVALID_BLUETOOTH_ADDRESS);
}
TEST_F(SecureChannelServiceTest, ListenForConnection_Nearby) {
FinishInitialization();
CallListenForConnectionFromDeviceAndVerifyRejection(
test_devices()[0], test_devices()[1], "feature",
ConnectionMedium::kNearbyConnections, ConnectionPriority::kLow,
mojom::ConnectionAttemptFailureReason::UNSUPPORTED_ROLE_FOR_MEDIUM);
}
TEST_F(SecureChannelServiceTest, CallsQueuedBeforeInitializationComplete) { TEST_F(SecureChannelServiceTest, CallsQueuedBeforeInitializationComplete) {
CallInitiateConnectionToDeviceAndVerifyInitializationNotComplete( CallInitiateConnectionToDeviceAndVerifyInitializationNotComplete(
test_devices()[4], test_devices()[5], "feature", test_devices()[4], test_devices()[5], "feature",
ConnectionPriority::kLow); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow);
CallListenForConnectionFromDeviceAndVerifyInitializationNotComplete( CallListenForConnectionFromDeviceAndVerifyInitializationNotComplete(
test_devices()[4], test_devices()[5], "feature", test_devices()[4], test_devices()[5], "feature",
ConnectionPriority::kLow); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow);
FinishInitialization(); FinishInitialization();
} }
...@@ -1029,10 +1098,13 @@ TEST_F(SecureChannelServiceTest, ListenForConnection_OneDevice) { ...@@ -1029,10 +1098,13 @@ TEST_F(SecureChannelServiceTest, ListenForConnection_OneDevice) {
CallListenForConnectionFromDeviceAndVerifyPendingConnection( CallListenForConnectionFromDeviceAndVerifyPendingConnection(
test_devices()[0], test_devices()[1], "feature", test_devices()[0], test_devices()[1], "feature",
ConnectionPriority::kLow); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow);
SimulateSuccessfulConnection(test_devices()[0].GetDeviceId()); SimulateSuccessfulConnection(test_devices()[0].GetDeviceId(),
SimulateConnectionStartingDisconnecting(test_devices()[0].GetDeviceId()); ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId()); SimulateConnectionStartingDisconnecting(
test_devices()[0].GetDeviceId(), ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
} }
TEST_F(SecureChannelServiceTest, InitiateConnection_OneDevice) { TEST_F(SecureChannelServiceTest, InitiateConnection_OneDevice) {
...@@ -1040,10 +1112,27 @@ TEST_F(SecureChannelServiceTest, InitiateConnection_OneDevice) { ...@@ -1040,10 +1112,27 @@ TEST_F(SecureChannelServiceTest, InitiateConnection_OneDevice) {
CallInitiateConnectionToDeviceAndVerifyPendingConnection( CallInitiateConnectionToDeviceAndVerifyPendingConnection(
test_devices()[0], test_devices()[1], "feature", test_devices()[0], test_devices()[1], "feature",
ConnectionPriority::kLow); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow);
SimulateSuccessfulConnection(test_devices()[0].GetDeviceId()); SimulateSuccessfulConnection(test_devices()[0].GetDeviceId(),
SimulateConnectionStartingDisconnecting(test_devices()[0].GetDeviceId()); ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId()); SimulateConnectionStartingDisconnecting(
test_devices()[0].GetDeviceId(), ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
}
TEST_F(SecureChannelServiceTest, InitiateConnection_OneDevice_Nearby) {
FinishInitialization();
CallInitiateConnectionToDeviceAndVerifyPendingConnection(
test_devices()[0], test_devices()[1], "feature",
ConnectionMedium::kNearbyConnections, ConnectionPriority::kLow);
SimulateSuccessfulConnection(test_devices()[0].GetDeviceId(),
ConnectionMedium::kNearbyConnections);
SimulateConnectionStartingDisconnecting(test_devices()[0].GetDeviceId(),
ConnectionMedium::kNearbyConnections);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId(),
ConnectionMedium::kNearbyConnections);
} }
TEST_F(SecureChannelServiceTest, TEST_F(SecureChannelServiceTest,
...@@ -1052,10 +1141,13 @@ TEST_F(SecureChannelServiceTest, ...@@ -1052,10 +1141,13 @@ TEST_F(SecureChannelServiceTest,
CallListenForConnectionFromDeviceAndVerifyPendingConnection( CallListenForConnectionFromDeviceAndVerifyPendingConnection(
test_devices()[0], test_devices()[1], "feature", test_devices()[0], test_devices()[1], "feature",
ConnectionPriority::kLow); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow);
SimulateSuccessfulConnection(test_devices()[0].GetDeviceId()); SimulateSuccessfulConnection(test_devices()[0].GetDeviceId(),
SimulateConnectionStartingDisconnecting(test_devices()[0].GetDeviceId()); ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId()); SimulateConnectionStartingDisconnecting(
test_devices()[0].GetDeviceId(), ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
} }
TEST_F(SecureChannelServiceTest, TEST_F(SecureChannelServiceTest,
...@@ -1064,10 +1156,13 @@ TEST_F(SecureChannelServiceTest, ...@@ -1064,10 +1156,13 @@ TEST_F(SecureChannelServiceTest,
CallInitiateConnectionToDeviceAndVerifyPendingConnection( CallInitiateConnectionToDeviceAndVerifyPendingConnection(
test_devices()[0], test_devices()[1], "feature", test_devices()[0], test_devices()[1], "feature",
ConnectionPriority::kLow); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow);
SimulateSuccessfulConnection(test_devices()[0].GetDeviceId()); SimulateSuccessfulConnection(test_devices()[0].GetDeviceId(),
SimulateConnectionStartingDisconnecting(test_devices()[0].GetDeviceId()); ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId()); SimulateConnectionStartingDisconnecting(
test_devices()[0].GetDeviceId(), ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
} }
TEST_F(SecureChannelServiceTest, OneDevice_TwoConnectionRequests) { TEST_F(SecureChannelServiceTest, OneDevice_TwoConnectionRequests) {
...@@ -1076,14 +1171,17 @@ TEST_F(SecureChannelServiceTest, OneDevice_TwoConnectionRequests) { ...@@ -1076,14 +1171,17 @@ TEST_F(SecureChannelServiceTest, OneDevice_TwoConnectionRequests) {
// Two pending connection requests for the same device. // Two pending connection requests for the same device.
CallListenForConnectionFromDeviceAndVerifyPendingConnection( CallListenForConnectionFromDeviceAndVerifyPendingConnection(
test_devices()[0], test_devices()[1], "feature1", test_devices()[0], test_devices()[1], "feature1",
ConnectionPriority::kLow); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow);
CallInitiateConnectionToDeviceAndVerifyPendingConnection( CallInitiateConnectionToDeviceAndVerifyPendingConnection(
test_devices()[0], test_devices()[1], "feature2", test_devices()[0], test_devices()[1], "feature2",
ConnectionPriority::kMedium); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kMedium);
SimulateSuccessfulConnection(test_devices()[0].GetDeviceId()); SimulateSuccessfulConnection(test_devices()[0].GetDeviceId(),
SimulateConnectionStartingDisconnecting(test_devices()[0].GetDeviceId()); ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId()); SimulateConnectionStartingDisconnecting(
test_devices()[0].GetDeviceId(), ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
} }
TEST_F(SecureChannelServiceTest, TEST_F(SecureChannelServiceTest,
...@@ -1093,16 +1191,19 @@ TEST_F(SecureChannelServiceTest, ...@@ -1093,16 +1191,19 @@ TEST_F(SecureChannelServiceTest,
// First request is successful. // First request is successful.
CallListenForConnectionFromDeviceAndVerifyPendingConnection( CallListenForConnectionFromDeviceAndVerifyPendingConnection(
test_devices()[0], test_devices()[1], "feature1", test_devices()[0], test_devices()[1], "feature1",
ConnectionPriority::kLow); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow);
SimulateSuccessfulConnection(test_devices()[0].GetDeviceId()); SimulateSuccessfulConnection(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
// Second request is added to the existing channel. // Second request is added to the existing channel.
CallInitiateConnectionToDeviceAndVerifyActiveConnection( CallInitiateConnectionToDeviceAndVerifyActiveConnection(
test_devices()[0], test_devices()[1], "feature2", test_devices()[0], test_devices()[1], "feature2",
ConnectionPriority::kMedium); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kMedium);
SimulateConnectionStartingDisconnecting(test_devices()[0].GetDeviceId()); SimulateConnectionStartingDisconnecting(
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId()); test_devices()[0].GetDeviceId(), ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
} }
TEST_F(SecureChannelServiceTest, TEST_F(SecureChannelServiceTest,
...@@ -1112,26 +1213,32 @@ TEST_F(SecureChannelServiceTest, ...@@ -1112,26 +1213,32 @@ TEST_F(SecureChannelServiceTest,
// First request is successful. // First request is successful.
CallListenForConnectionFromDeviceAndVerifyPendingConnection( CallListenForConnectionFromDeviceAndVerifyPendingConnection(
test_devices()[0], test_devices()[1], "feature1", test_devices()[0], test_devices()[1], "feature1",
ConnectionPriority::kLow); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow);
SimulateSuccessfulConnection(test_devices()[0].GetDeviceId()); SimulateSuccessfulConnection(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
// Connection starts disconnecting. // Connection starts disconnecting.
SimulateConnectionStartingDisconnecting(test_devices()[0].GetDeviceId()); SimulateConnectionStartingDisconnecting(
test_devices()[0].GetDeviceId(), ConnectionMedium::kBluetoothLowEnergy);
// Second request is added before disconnecting is complete. // Second request is added before disconnecting is complete.
CallInitiateConnectionToDeviceAndVerifyStillDisconnecting( CallInitiateConnectionToDeviceAndVerifyStillDisconnecting(
test_devices()[0], test_devices()[1], "feature2", test_devices()[0], test_devices()[1], "feature2",
ConnectionPriority::kMedium); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kMedium);
// Complete the disconnection; this should cause the second request to be // Complete the disconnection; this should cause the second request to be
// delivered to PendingConnectionManager. // delivered to PendingConnectionManager.
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId()); SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
// The second attempt succeeds. // The second attempt succeeds.
SimulateSuccessfulConnection(test_devices()[0].GetDeviceId()); SimulateSuccessfulConnection(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionStartingDisconnecting(test_devices()[0].GetDeviceId()); SimulateConnectionStartingDisconnecting(
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId()); test_devices()[0].GetDeviceId(), ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
} }
TEST_F(SecureChannelServiceTest, TEST_F(SecureChannelServiceTest,
...@@ -1141,22 +1248,25 @@ TEST_F(SecureChannelServiceTest, ...@@ -1141,22 +1248,25 @@ TEST_F(SecureChannelServiceTest,
// First request is successful. // First request is successful.
CallListenForConnectionFromDeviceAndVerifyPendingConnection( CallListenForConnectionFromDeviceAndVerifyPendingConnection(
test_devices()[0], test_devices()[1], "feature1", test_devices()[0], test_devices()[1], "feature1",
ConnectionPriority::kLow); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow);
SimulateSuccessfulConnection(test_devices()[0].GetDeviceId()); SimulateSuccessfulConnection(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
// Connection starts disconnecting. // Connection starts disconnecting.
SimulateConnectionStartingDisconnecting(test_devices()[0].GetDeviceId()); SimulateConnectionStartingDisconnecting(
test_devices()[0].GetDeviceId(), ConnectionMedium::kBluetoothLowEnergy);
// Second request is added before disconnecting is complete, but the request // Second request is added before disconnecting is complete, but the request
// is canceled before the disconnection completes. // is canceled before the disconnection completes.
auto id = CallInitiateConnectionToDeviceAndVerifyStillDisconnecting( auto id = CallInitiateConnectionToDeviceAndVerifyStillDisconnecting(
test_devices()[0], test_devices()[1], "feature2", test_devices()[0], test_devices()[1], "feature2",
ConnectionPriority::kMedium); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kMedium);
CancelPendingRequest(id); CancelPendingRequest(id);
// Complete the disconnection; even though the request was canceled, it should // Complete the disconnection; even though the request was canceled, it should
// still have been added to PendingConnectionManager. // still have been added to PendingConnectionManager.
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId()); SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
} }
TEST_F(SecureChannelServiceTest, ThreeDevices) { TEST_F(SecureChannelServiceTest, ThreeDevices) {
...@@ -1165,34 +1275,43 @@ TEST_F(SecureChannelServiceTest, ThreeDevices) { ...@@ -1165,34 +1275,43 @@ TEST_F(SecureChannelServiceTest, ThreeDevices) {
// Two requests for each device. // Two requests for each device.
CallListenForConnectionFromDeviceAndVerifyPendingConnection( CallListenForConnectionFromDeviceAndVerifyPendingConnection(
test_devices()[0], test_devices()[1], "feature1", test_devices()[0], test_devices()[1], "feature1",
ConnectionPriority::kLow); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow);
CallInitiateConnectionToDeviceAndVerifyPendingConnection( CallInitiateConnectionToDeviceAndVerifyPendingConnection(
test_devices()[0], test_devices()[1], "feature2", test_devices()[0], test_devices()[1], "feature2",
ConnectionPriority::kMedium); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kMedium);
CallListenForConnectionFromDeviceAndVerifyPendingConnection( CallListenForConnectionFromDeviceAndVerifyPendingConnection(
test_devices()[2], test_devices()[1], "feature3", test_devices()[2], test_devices()[1], "feature3",
ConnectionPriority::kHigh); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kHigh);
CallInitiateConnectionToDeviceAndVerifyPendingConnection( CallInitiateConnectionToDeviceAndVerifyPendingConnection(
test_devices()[2], test_devices()[1], "feature4", test_devices()[2], test_devices()[1], "feature4",
ConnectionPriority::kLow); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kLow);
CallListenForConnectionFromDeviceAndVerifyPendingConnection( CallListenForConnectionFromDeviceAndVerifyPendingConnection(
test_devices()[3], test_devices()[1], "feature5", test_devices()[3], test_devices()[1], "feature5",
ConnectionPriority::kMedium); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kMedium);
CallInitiateConnectionToDeviceAndVerifyPendingConnection( CallInitiateConnectionToDeviceAndVerifyPendingConnection(
test_devices()[3], test_devices()[1], "feature6", test_devices()[3], test_devices()[1], "feature6",
ConnectionPriority::kHigh); ConnectionMedium::kBluetoothLowEnergy, ConnectionPriority::kHigh);
SimulateSuccessfulConnection(test_devices()[0].GetDeviceId()); SimulateSuccessfulConnection(test_devices()[0].GetDeviceId(),
SimulateSuccessfulConnection(test_devices()[2].GetDeviceId()); ConnectionMedium::kBluetoothLowEnergy);
SimulateSuccessfulConnection(test_devices()[3].GetDeviceId()); SimulateSuccessfulConnection(test_devices()[2].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionStartingDisconnecting(test_devices()[0].GetDeviceId()); SimulateSuccessfulConnection(test_devices()[3].GetDeviceId(),
SimulateConnectionStartingDisconnecting(test_devices()[2].GetDeviceId()); ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionStartingDisconnecting(test_devices()[3].GetDeviceId());
SimulateConnectionStartingDisconnecting(
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId()); test_devices()[0].GetDeviceId(), ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[2].GetDeviceId()); SimulateConnectionStartingDisconnecting(
SimulateConnectionBecomingDisconnected(test_devices()[3].GetDeviceId()); test_devices()[2].GetDeviceId(), ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionStartingDisconnecting(
test_devices()[3].GetDeviceId(), ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[0].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[2].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
SimulateConnectionBecomingDisconnected(test_devices()[3].GetDeviceId(),
ConnectionMedium::kBluetoothLowEnergy);
} }
} // namespace secure_channel } // namespace secure_channel
......
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