Commit ec501564 authored by Kyle Horimoto's avatar Kyle Horimoto Committed by Commit Bot

[CrOS MultiDevice] Add BleListenerConnectionAttempt.

This class generates BleListenerOperations.

Bug: 824568, 752273
Change-Id: I4c196efc3636b48b1542b533d6a6462c79a53201
Reviewed-on: https://chromium-review.googlesource.com/1103538
Commit-Queue: Kyle Horimoto <khorimoto@chromium.org>
Reviewed-by: default avatarRyan Hansberry <hansberry@chromium.org>
Cr-Commit-Position: refs/heads/master@{#568295}
parent 28d29bfe
...@@ -27,6 +27,8 @@ static_library("secure_channel") { ...@@ -27,6 +27,8 @@ static_library("secure_channel") {
"ble_initiator_failure_type.h", "ble_initiator_failure_type.h",
"ble_initiator_operation.cc", "ble_initiator_operation.cc",
"ble_initiator_operation.h", "ble_initiator_operation.h",
"ble_listener_connection_attempt.cc",
"ble_listener_connection_attempt.h",
"ble_listener_failure_type.cc", "ble_listener_failure_type.cc",
"ble_listener_failure_type.h", "ble_listener_failure_type.h",
"ble_listener_operation.cc", "ble_listener_operation.cc",
......
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chromeos/services/secure_channel/ble_listener_connection_attempt.h"
#include "base/memory/ptr_util.h"
#include "base/no_destructor.h"
#include "chromeos/services/secure_channel/ble_listener_operation.h"
namespace chromeos {
namespace secure_channel {
// static
BleListenerConnectionAttempt::Factory*
BleListenerConnectionAttempt::Factory::test_factory_ = nullptr;
// static
BleListenerConnectionAttempt::Factory*
BleListenerConnectionAttempt::Factory::Get() {
if (test_factory_)
return test_factory_;
static base::NoDestructor<Factory> factory;
return factory.get();
}
// static
void BleListenerConnectionAttempt::Factory::SetFactoryForTesting(
Factory* test_factory) {
test_factory_ = test_factory;
}
BleListenerConnectionAttempt::Factory::~Factory() = default;
std::unique_ptr<ConnectionAttempt<BleListenerFailureType>>
BleListenerConnectionAttempt::Factory::BuildInstance(
BleConnectionManager* ble_connection_manager,
ConnectionAttemptDelegate* delegate,
const ConnectionAttemptDetails& connection_attempt_details) {
return base::WrapUnique(new BleListenerConnectionAttempt(
ble_connection_manager, delegate, connection_attempt_details));
}
BleListenerConnectionAttempt::BleListenerConnectionAttempt(
BleConnectionManager* ble_connection_manager,
ConnectionAttemptDelegate* delegate,
const ConnectionAttemptDetails& connection_attempt_details)
: ConnectionAttemptBase<BleListenerFailureType>(delegate,
connection_attempt_details),
ble_connection_manager_(ble_connection_manager) {}
BleListenerConnectionAttempt::~BleListenerConnectionAttempt() = default;
std::unique_ptr<ConnectToDeviceOperation<BleListenerFailureType>>
BleListenerConnectionAttempt::CreateConnectToDeviceOperation(
const DeviceIdPair& device_id_pair,
ConnectionPriority connection_priority,
ConnectToDeviceOperation<BleListenerFailureType>::ConnectionSuccessCallback
success_callback,
const ConnectToDeviceOperation<
BleListenerFailureType>::ConnectionFailedCallback& failure_callback) {
return BleListenerOperation::Factory::Get()->BuildInstance(
ble_connection_manager_, std::move(success_callback), failure_callback,
device_id_pair, connection_priority);
}
} // namespace secure_channel
} // namespace chromeos
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROMEOS_SERVICES_SECURE_CHANNEL_BLE_LISTENER_CONNECTION_ATTEMPT_H_
#define CHROMEOS_SERVICES_SECURE_CHANNEL_BLE_LISTENER_CONNECTION_ATTEMPT_H_
#include <memory>
#include "base/macros.h"
#include "chromeos/services/secure_channel/ble_listener_failure_type.h"
#include "chromeos/services/secure_channel/connection_attempt_base.h"
namespace chromeos {
namespace secure_channel {
class BleConnectionManager;
// Attempts to connect to a remote device over BLE via the listener role.
class BleListenerConnectionAttempt
: public ConnectionAttemptBase<BleListenerFailureType> {
public:
class Factory {
public:
static Factory* Get();
static void SetFactoryForTesting(Factory* test_factory);
virtual ~Factory();
virtual std::unique_ptr<ConnectionAttempt<BleListenerFailureType>>
BuildInstance(BleConnectionManager* ble_connection_manager,
ConnectionAttemptDelegate* delegate,
const ConnectionAttemptDetails& connection_attempt_details);
private:
static Factory* test_factory_;
};
~BleListenerConnectionAttempt() override;
private:
BleListenerConnectionAttempt(
BleConnectionManager* ble_connection_manager,
ConnectionAttemptDelegate* delegate,
const ConnectionAttemptDetails& connection_attempt_details);
std::unique_ptr<ConnectToDeviceOperation<BleListenerFailureType>>
CreateConnectToDeviceOperation(
const DeviceIdPair& device_id_pair,
ConnectionPriority connection_priority,
ConnectToDeviceOperation<
BleListenerFailureType>::ConnectionSuccessCallback success_callback,
const ConnectToDeviceOperation<BleListenerFailureType>::
ConnectionFailedCallback& failure_callback) override;
BleConnectionManager* ble_connection_manager_;
DISALLOW_COPY_AND_ASSIGN(BleListenerConnectionAttempt);
};
} // namespace secure_channel
} // namespace chromeos
#endif // CHROMEOS_SERVICES_SECURE_CHANNEL_BLE_LISTENER_CONNECTION_ATTEMPT_H_
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