#ifndef SERVICES_NETWORK_PROXY_LOOKUP_REQUEST_H_
#define SERVICES_NETWORK_PROXY_LOOKUP_REQUEST_H_
#include <stdint.h>
#include <memory>
#include "base/component_export.h"
#include "base/memory/raw_ptr.h"
#include "mojo/public/cpp/bindings/pending_remote.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "net/base/network_anonymization_key.h"
#include "net/proxy_resolution/proxy_info.h"
#include "services/network/public/mojom/proxy_lookup_client.mojom.h"
#include "url/gurl.h"
namespace net {
class ProxyResolutionRequest;
}
namespace network {
class NetworkContext;
class COMPONENT_EXPORT(NETWORK_SERVICE) ProxyLookupRequest {
public:
ProxyLookupRequest(
mojo::PendingRemote<mojom::ProxyLookupClient> proxy_lookup_client,
NetworkContext* network_context,
const net::NetworkAnonymizationKey& network_anonymization_key);
ProxyLookupRequest(const ProxyLookupRequest&) = delete;
ProxyLookupRequest& operator=(const ProxyLookupRequest&) = delete;
~ProxyLookupRequest();
void Start(const GURL& url);
private:
void OnResolveComplete(int result);
void DestroySelf();
const raw_ptr<NetworkContext> network_context_;
const net::NetworkAnonymizationKey network_anonymization_key_;
mojo::Remote<mojom::ProxyLookupClient> proxy_lookup_client_;
net::ProxyInfo proxy_info_;
std::unique_ptr<net::ProxyResolutionRequest> request_;
};
}
#endif