#ifndef REMOTING_BASE_PROTOBUF_HTTP_TEST_RESPONDER_H_
#define REMOTING_BASE_PROTOBUF_HTTP_TEST_RESPONDER_H_
#include <memory>
#include <string>
#include <vector>
#include "base/memory/scoped_refptr.h"
#include "base/test/mock_callback.h"
#include "services/network/public/cpp/shared_url_loader_factory.h"
#include "services/network/test/test_url_loader_factory.h"
namespace google {
namespace protobuf {
class MessageLite;
}
}
namespace remoting {
class ProtobufHttpStatus;
class ProtobufHttpTestResponder final {
public:
using MockInterceptor =
base::MockCallback<network::TestURLLoaderFactory::Interceptor>;
ProtobufHttpTestResponder();
~ProtobufHttpTestResponder();
ProtobufHttpTestResponder(const ProtobufHttpTestResponder&) = delete;
ProtobufHttpTestResponder& operator=(const ProtobufHttpTestResponder&) =
delete;
static bool ParseRequestMessage(
const network::ResourceRequest& resource_request,
google::protobuf::MessageLite* out_message);
scoped_refptr<network::SharedURLLoaderFactory> GetUrlLoaderFactory();
void AddResponse(const std::string& url,
const google::protobuf::MessageLite& response_message);
void AddResponseToMostRecentRequestUrl(
const google::protobuf::MessageLite& response_message);
void AddError(const std::string& url, const ProtobufHttpStatus& error_status);
void AddErrorToMostRecentRequestUrl(const ProtobufHttpStatus& error_status);
void AddStreamResponse(
const std::string& url,
const std::vector<const google::protobuf::MessageLite*>& messages,
const ProtobufHttpStatus& status);
void AddStreamResponseToMostRecentRequestUrl(
const std::vector<const google::protobuf::MessageLite*>& messages,
const ProtobufHttpStatus& status);
bool GetRequestMessage(const std::string& url,
google::protobuf::MessageLite* out_message);
bool GetMostRecentRequestMessage(google::protobuf::MessageLite* out_message);
int GetNumPending();
network::TestURLLoaderFactory::PendingRequest& GetPendingRequest(
size_t index);
network::TestURLLoaderFactory::PendingRequest& GetMostRecentPendingRequest();
std::string GetMostRecentRequestUrl();
MockInterceptor& GetMockInterceptor();
private:
network::TestURLLoaderFactory test_url_loader_factory_;
std::unique_ptr<MockInterceptor> mock_interceptor_;
};
}
#endif