blob: 76c23117e27d800a5306248b90d03d23939e2b68 [file] [log] [blame]
// Copyright 2016 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef HEADLESS_TEST_TEST_NETWORK_INTERCEPTOR_H_
#define HEADLESS_TEST_TEST_NETWORK_INTERCEPTOR_H_
#include <string>
#include <vector>
#include "base/memory/weak_ptr.h"
#include "base/task/sequenced_task_runner.h"
#include "content/public/test/url_loader_interceptor.h"
namespace headless {
class TestNetworkInterceptor {
public:
class Impl;
TestNetworkInterceptor();
TestNetworkInterceptor(const TestNetworkInterceptor&) = delete;
TestNetworkInterceptor& operator=(const TestNetworkInterceptor&) = delete;
~TestNetworkInterceptor();
struct Response {
Response() = delete;
Response(const std::string data);
Response(const std::string body, const std::string& mime_type);
Response(const Response& r);
Response(Response&& r);
~Response();
scoped_refptr<net::HttpResponseHeaders> headers;
std::string raw_headers;
std::string body;
};
void InsertResponse(std::string url, Response response);
const std::vector<std::string>& urls_requested() const {
return urls_requested_;
}
const std::vector<std::string>& methods_requested() const {
return methods_requested_;
}
private:
void LogRequest(std::string method, std::string url);
std::vector<std::string> urls_requested_;
std::vector<std::string> methods_requested_;
std::unique_ptr<Impl> impl_;
std::unique_ptr<content::URLLoaderInterceptor> interceptor_;
base::WeakPtrFactory<TestNetworkInterceptor> weak_factory_{this};
};
} // namespace headless
#endif // HEADLESS_TEST_TEST_NETWORK_INTERCEPTOR_H_