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

[CrOS MultiDevice] Add BleInitiatorConnectionAttempt.

This class generates BleInitiatorOperations.

Bug: 824568, 752273
Change-Id: Ia99da736b4ace4de27a1bbeb61a39e99e66805bc
Reviewed-on: https://chromium-review.googlesource.com/1103544
Commit-Queue: Kyle Horimoto <khorimoto@chromium.org>
Reviewed-by: default avatarRyan Hansberry <hansberry@chromium.org>
Cr-Commit-Position: refs/heads/master@{#568315}
parent df959115
......@@ -23,6 +23,8 @@ static_library("secure_channel") {
"ble_connection_manager_impl.cc",
"ble_connection_manager_impl.h",
"ble_constants.h",
"ble_initiator_connection_attempt.cc",
"ble_initiator_connection_attempt.h",
"ble_initiator_failure_type.cc",
"ble_initiator_failure_type.h",
"ble_initiator_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_initiator_connection_attempt.h"
#include "base/memory/ptr_util.h"
#include "base/no_destructor.h"
#include "chromeos/services/secure_channel/ble_initiator_operation.h"
namespace chromeos {
namespace secure_channel {
// static
BleInitiatorConnectionAttempt::Factory*
BleInitiatorConnectionAttempt::Factory::test_factory_ = nullptr;
// static
BleInitiatorConnectionAttempt::Factory*
BleInitiatorConnectionAttempt::Factory::Get() {
if (test_factory_)
return test_factory_;
static base::NoDestructor<Factory> factory;
return factory.get();
}
// static
void BleInitiatorConnectionAttempt::Factory::SetFactoryForTesting(
Factory* test_factory) {
test_factory_ = test_factory;
}
BleInitiatorConnectionAttempt::Factory::~Factory() = default;
std::unique_ptr<ConnectionAttempt<BleInitiatorFailureType>>
BleInitiatorConnectionAttempt::Factory::BuildInstance(
BleConnectionManager* ble_connection_manager,
ConnectionAttemptDelegate* delegate,
const ConnectionAttemptDetails& connection_attempt_details) {
return base::WrapUnique(new BleInitiatorConnectionAttempt(
ble_connection_manager, delegate, connection_attempt_details));
}
BleInitiatorConnectionAttempt::BleInitiatorConnectionAttempt(
BleConnectionManager* ble_connection_manager,
ConnectionAttemptDelegate* delegate,
const ConnectionAttemptDetails& connection_attempt_details)
: ConnectionAttemptBase<BleInitiatorFailureType>(
delegate,
connection_attempt_details),
ble_connection_manager_(ble_connection_manager) {}
BleInitiatorConnectionAttempt::~BleInitiatorConnectionAttempt() = default;
std::unique_ptr<ConnectToDeviceOperation<BleInitiatorFailureType>>
BleInitiatorConnectionAttempt::CreateConnectToDeviceOperation(
const DeviceIdPair& device_id_pair,
ConnectionPriority connection_priority,
ConnectToDeviceOperation<BleInitiatorFailureType>::ConnectionSuccessCallback
success_callback,
const ConnectToDeviceOperation<
BleInitiatorFailureType>::ConnectionFailedCallback& failure_callback) {
return BleInitiatorOperation::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_INITIATOR_CONNECTION_ATTEMPT_H_
#define CHROMEOS_SERVICES_SECURE_CHANNEL_BLE_INITIATOR_CONNECTION_ATTEMPT_H_
#include <memory>
#include "base/macros.h"
#include "chromeos/services/secure_channel/ble_initiator_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 initiator role.
class BleInitiatorConnectionAttempt
: public ConnectionAttemptBase<BleInitiatorFailureType> {
public:
class Factory {
public:
static Factory* Get();
static void SetFactoryForTesting(Factory* test_factory);
virtual ~Factory();
virtual std::unique_ptr<ConnectionAttempt<BleInitiatorFailureType>>
BuildInstance(BleConnectionManager* ble_connection_manager,
ConnectionAttemptDelegate* delegate,
const ConnectionAttemptDetails& connection_attempt_details);
private:
static Factory* test_factory_;
};
~BleInitiatorConnectionAttempt() override;
private:
BleInitiatorConnectionAttempt(
BleConnectionManager* ble_connection_manager,
ConnectionAttemptDelegate* delegate,
const ConnectionAttemptDetails& connection_attempt_details);
std::unique_ptr<ConnectToDeviceOperation<BleInitiatorFailureType>>
CreateConnectToDeviceOperation(
const DeviceIdPair& device_id_pair,
ConnectionPriority connection_priority,
ConnectToDeviceOperation<
BleInitiatorFailureType>::ConnectionSuccessCallback success_callback,
const ConnectToDeviceOperation<BleInitiatorFailureType>::
ConnectionFailedCallback& failure_callback) override;
BleConnectionManager* ble_connection_manager_;
DISALLOW_COPY_AND_ASSIGN(BleInitiatorConnectionAttempt);
};
} // namespace secure_channel
} // namespace chromeos
#endif // CHROMEOS_SERVICES_SECURE_CHANNEL_BLE_INITIATOR_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