blob: 67018a6d24710e5badcd86127718e9ba38e2e586 [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.
#ifndef CHROMEOS_SERVICES_SECURE_CHANNEL_FAKE_CLIENT_CONNECTION_PARAMETERS_H_
#define CHROMEOS_SERVICES_SECURE_CHANNEL_FAKE_CLIENT_CONNECTION_PARAMETERS_H_
#include "base/callback.h"
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
#include "chromeos/services/secure_channel/client_connection_parameters.h"
#include "chromeos/services/secure_channel/public/mojom/secure_channel.mojom.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
namespace chromeos {
namespace secure_channel {
// Test ClientConnectionParameters implementation.
class FakeClientConnectionParameters : public ClientConnectionParameters {
public:
FakeClientConnectionParameters(
const std::string& feature,
base::OnceCallback<void(const base::UnguessableToken&)>
destructor_callback =
base::OnceCallback<void(const base::UnguessableToken&)>());
~FakeClientConnectionParameters() override;
const base::Optional<mojom::ConnectionAttemptFailureReason>&
failure_reason() {
return failure_reason_;
}
mojo::Remote<mojom::Channel>& channel() { return channel_; }
void set_message_receiver(
std::unique_ptr<mojom::MessageReceiver> message_receiver) {
message_receiver_ = std::move(message_receiver);
}
// If no disconnection has yet occurred, 0 is returned.
uint32_t disconnection_reason() { return disconnection_reason_; }
void CancelClientRequest();
private:
// ClientConnectionParameters:
bool HasClientCanceledRequest() override;
void PerformSetConnectionAttemptFailed(
mojom::ConnectionAttemptFailureReason reason) override;
void PerformSetConnectionSucceeded(
mojo::PendingRemote<mojom::Channel> channel,
mojo::PendingReceiver<mojom::MessageReceiver> message_receiver_receiver)
override;
void OnChannelDisconnected(uint32_t disconnection_reason,
const std::string& disconnection_description);
bool has_canceled_client_request_ = false;
std::unique_ptr<mojom::MessageReceiver> message_receiver_;
std::unique_ptr<mojo::Receiver<mojom::MessageReceiver>>
message_receiver_receiver_;
base::Optional<mojom::ConnectionAttemptFailureReason> failure_reason_;
mojo::Remote<mojom::Channel> channel_;
uint32_t disconnection_reason_ = 0u;
base::OnceCallback<void(const base::UnguessableToken&)> destructor_callback_;
base::WeakPtrFactory<FakeClientConnectionParameters> weak_ptr_factory_{this};
DISALLOW_COPY_AND_ASSIGN(FakeClientConnectionParameters);
};
// Test ClientConnectionParameters::Observer implementation.
class FakeClientConnectionParametersObserver
: public ClientConnectionParameters::Observer {
public:
FakeClientConnectionParametersObserver();
~FakeClientConnectionParametersObserver() override;
void set_closure_for_next_callback(
base::OnceClosure closure_for_next_callback) {
closure_for_next_callback_ = std::move(closure_for_next_callback);
}
bool has_connection_request_been_canceled() {
return has_connection_request_been_canceled_;
}
private:
// ClientConnectionParameters::Observer:
void OnConnectionRequestCanceled() override;
bool has_connection_request_been_canceled_ = false;
base::OnceClosure closure_for_next_callback_;
DISALLOW_COPY_AND_ASSIGN(FakeClientConnectionParametersObserver);
};
} // namespace secure_channel
} // namespace chromeos
#endif // CHROMEOS_SERVICES_SECURE_CHANNEL_FAKE_CLIENT_CONNECTION_PARAMETERS_H_