#ifndef WEBLAYER_BROWSER_SYSTEM_NETWORK_CONTEXT_MANAGER_H_
#define WEBLAYER_BROWSER_SYSTEM_NETWORK_CONTEXT_MANAGER_H_
#include "base/memory/scoped_refptr.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
#include "services/network/public/mojom/network_context.mojom.h"
#include "services/network/public/mojom/network_service.mojom.h"
namespace network {
class SharedURLLoaderFactory;
}
namespace net_log {
class NetExportFileWriter;
}
namespace weblayer {
class SystemNetworkContextManager {
public:
static SystemNetworkContextManager* CreateInstance(
const std::string& user_agent);
static bool HasInstance();
static SystemNetworkContextManager* GetInstance();
static void DeleteInstance();
static network::mojom::NetworkContextParamsPtr
CreateDefaultNetworkContextParams(const std::string& user_agent);
static void ConfigureDefaultNetworkContextParams(
network::mojom::NetworkContextParams* network_context_params,
const std::string& user_agent);
SystemNetworkContextManager(const SystemNetworkContextManager&) = delete;
SystemNetworkContextManager& operator=(const SystemNetworkContextManager&) =
delete;
~SystemNetworkContextManager();
network::mojom::NetworkContext* GetSystemNetworkContext();
void OnNetworkServiceCreated(network::mojom::NetworkService* network_service);
scoped_refptr<network::SharedURLLoaderFactory> GetSharedURLLoaderFactory();
net_log::NetExportFileWriter* GetNetExportFileWriter();
private:
explicit SystemNetworkContextManager(const std::string& user_agent);
network::mojom::NetworkContextParamsPtr
CreateSystemNetworkContextManagerParams();
std::string user_agent_;
mojo::Remote<network::mojom::URLLoaderFactory> url_loader_factory_;
scoped_refptr<network::WeakWrapperSharedURLLoaderFactory>
shared_url_loader_factory_;
mojo::Remote<network::mojom::NetworkContext> system_network_context_;
std::unique_ptr<net_log::NetExportFileWriter> net_export_file_writer_;
};
}
#endif