blob: 0186253071b9316186fb533496187905426bd74f [file] [log] [blame]
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_NET_UTILITY_PROCESS_MOJO_PROXY_RESOLVER_FACTORY_H_
#define CHROME_BROWSER_NET_UTILITY_PROCESS_MOJO_PROXY_RESOLVER_FACTORY_H_
#include "base/macros.h"
#include "net/proxy/mojo_proxy_resolver_factory.h"
template <typename Type>
struct DefaultSingletonTraits;
// A factory used to create connections to Mojo proxy resolver services run in a
// utility process. All Mojo proxy resolver services will be run in the same
// utility process. Utility process crashes are detected and the utility
// process is automatically restarted.
class UtilityProcessMojoProxyResolverFactory
: public net::MojoProxyResolverFactory,
public mojo::ErrorHandler {
public:
static UtilityProcessMojoProxyResolverFactory* GetInstance();
// Overridden from net::MojoProxyResolverFactory:
void Create(mojo::InterfaceRequest<net::interfaces::ProxyResolver> req,
net::interfaces::HostResolverPtr host_resolver) override;
private:
friend struct DefaultSingletonTraits<UtilityProcessMojoProxyResolverFactory>;
UtilityProcessMojoProxyResolverFactory();
~UtilityProcessMojoProxyResolverFactory() override;
// Overridden from mojo::ErrorHandler:
void OnConnectionError() override;
// Creates a new utility process and connects to its Mojo proxy resolver
// factory.
void CreateProcessAndConnect();
net::interfaces::ProxyResolverFactoryPtr resolver_factory_;
DISALLOW_COPY_AND_ASSIGN(UtilityProcessMojoProxyResolverFactory);
};
#endif // CHROME_BROWSER_NET_UTILITY_PROCESS_MOJO_PROXY_RESOLVER_FACTORY_H_