blob: 579fea2dc53a6c144bfe47a08e4387e81c5b7559 [file] [log] [blame]
// 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/fake_client_connection_parameters.h"
#include "base/bind.h"
namespace chromeos {
namespace secure_channel {
FakeClientConnectionParameters::FakeClientConnectionParameters(
const std::string& feature,
base::OnceCallback<void(const base::UnguessableToken&)> destructor_callback)
: ClientConnectionParameters(feature),
destructor_callback_(std::move(destructor_callback)),
weak_ptr_factory_(this) {}
FakeClientConnectionParameters::~FakeClientConnectionParameters() {
if (destructor_callback_)
std::move(destructor_callback_).Run(id());
}
void FakeClientConnectionParameters::CancelClientRequest() {
DCHECK(!has_canceled_client_request_);
has_canceled_client_request_ = true;
NotifyConnectionRequestCanceled();
}
bool FakeClientConnectionParameters::HasClientCanceledRequest() {
return has_canceled_client_request_;
}
void FakeClientConnectionParameters::PerformSetConnectionAttemptFailed(
mojom::ConnectionAttemptFailureReason reason) {
failure_reason_ = reason;
}
void FakeClientConnectionParameters::PerformSetConnectionSucceeded(
mojom::ChannelPtr channel,
mojom::MessageReceiverRequest message_receiver_request) {
DCHECK(message_receiver_);
DCHECK(!message_receiver_binding_);
channel_ = std::move(channel);
channel_->set_connection_error_with_reason_handler(
base::BindOnce(&FakeClientConnectionParameters::OnChannelDisconnected,
weak_ptr_factory_.GetWeakPtr()));
message_receiver_binding_ =
std::make_unique<mojo::Binding<mojom::MessageReceiver>>(
message_receiver_.get(), std::move(message_receiver_request));
}
void FakeClientConnectionParameters::OnChannelDisconnected(
uint32_t disconnection_reason,
const std::string& disconnection_description) {
disconnection_reason_ = disconnection_reason;
channel_.reset();
}
FakeClientConnectionParametersObserver::
FakeClientConnectionParametersObserver() = default;
FakeClientConnectionParametersObserver::
~FakeClientConnectionParametersObserver() = default;
void FakeClientConnectionParametersObserver::OnConnectionRequestCanceled() {
has_connection_request_been_canceled_ = true;
if (closure_for_next_callback_)
std::move(closure_for_next_callback_).Run();
}
} // namespace secure_channel
} // namespace chromeos