#ifndef SERVICES_PROXY_RESOLVER_PROXY_RESOLVER_V8_TRACING_H_
#define SERVICES_PROXY_RESOLVER_PROXY_RESOLVER_V8_TRACING_H_
#include <memory>
#include "base/memory/scoped_refptr.h"
#include "net/base/completion_once_callback.h"
#include "net/proxy_resolution/proxy_resolver.h"
#include "net/proxy_resolution/proxy_resolver_factory.h"
namespace net {
class NetLogWithSource;
class NetworkAnonymizationKey;
}
namespace proxy_resolver {
class ProxyHostResolver;
class ProxyResolverV8Tracing {
public:
class Bindings {
public:
Bindings() {}
Bindings(const Bindings&) = delete;
Bindings& operator=(const Bindings&) = delete;
virtual ~Bindings() {}
virtual void Alert(const std::u16string& message) = 0;
virtual void OnError(int line_number, const std::u16string& message) = 0;
virtual ProxyHostResolver* GetHostResolver() = 0;
virtual net::NetLogWithSource GetNetLogWithSource() = 0;
};
virtual ~ProxyResolverV8Tracing() {}
virtual void GetProxyForURL(
const GURL& url,
const net::NetworkAnonymizationKey& network_anonymization_key,
net::ProxyInfo* results,
net::CompletionOnceCallback callback,
std::unique_ptr<net::ProxyResolver::Request>* request,
std::unique_ptr<Bindings> bindings) = 0;
};
class ProxyResolverV8TracingFactory {
public:
ProxyResolverV8TracingFactory() {}
ProxyResolverV8TracingFactory(const ProxyResolverV8TracingFactory&) = delete;
ProxyResolverV8TracingFactory& operator=(
const ProxyResolverV8TracingFactory&) = delete;
virtual ~ProxyResolverV8TracingFactory() = default;
virtual void CreateProxyResolverV8Tracing(
const scoped_refptr<net::PacFileData>& pac_script,
std::unique_ptr<ProxyResolverV8Tracing::Bindings> bindings,
std::unique_ptr<ProxyResolverV8Tracing>* resolver,
net::CompletionOnceCallback callback,
std::unique_ptr<net::ProxyResolverFactory::Request>* request) = 0;
static std::unique_ptr<ProxyResolverV8TracingFactory> Create();
};
}
#endif