1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "net/proxy/proxy_service_v8.h"
7 #include "base/logging.h"
8 #include "base/threading/thread_checker.h"
9 #include "net/proxy/network_delegate_error_observer.h"
10 #include "net/proxy/proxy_resolver.h"
11 #include "net/proxy/proxy_resolver_factory.h"
12 #include "net/proxy/proxy_resolver_v8_tracing.h"
13 #include "net/proxy/proxy_service.h"
18 class ProxyResolverFactoryForV8Resolver
: public LegacyProxyResolverFactory
{
20 explicit ProxyResolverFactoryForV8Resolver(HostResolver
* host_resolver
,
22 NetworkDelegate
* network_delegate
)
23 : LegacyProxyResolverFactory(true),
24 host_resolver_(host_resolver
),
26 network_delegate_(network_delegate
) {}
28 // LegacyProxyResolverFactory override.
29 scoped_ptr
<ProxyResolver
> CreateProxyResolver() override
{
30 DCHECK(thread_checker_
.CalledOnValidThread());
31 ProxyResolverErrorObserver
* error_observer
=
32 new NetworkDelegateErrorObserver(
33 network_delegate_
, base::MessageLoopProxy::current().get());
34 return make_scoped_ptr(
35 new ProxyResolverV8Tracing(host_resolver_
, error_observer
, net_log_
));
39 HostResolver
* const host_resolver_
;
40 NetLog
* const net_log_
;
41 NetworkDelegate
* const network_delegate_
;
43 base::ThreadChecker thread_checker_
;
45 DISALLOW_COPY_AND_ASSIGN(ProxyResolverFactoryForV8Resolver
);
50 ProxyService
* CreateProxyServiceUsingV8ProxyResolver(
51 ProxyConfigService
* proxy_config_service
,
52 ProxyScriptFetcher
* proxy_script_fetcher
,
53 DhcpProxyScriptFetcher
* dhcp_proxy_script_fetcher
,
54 HostResolver
* host_resolver
,
56 NetworkDelegate
* network_delegate
) {
57 DCHECK(proxy_config_service
);
58 DCHECK(proxy_script_fetcher
);
59 DCHECK(dhcp_proxy_script_fetcher
);
60 DCHECK(host_resolver
);
62 ProxyService
* proxy_service
=
63 new ProxyService(proxy_config_service
,
64 make_scoped_ptr(new ProxyResolverFactoryForV8Resolver(
65 host_resolver
, net_log
, network_delegate
)),
68 // Configure fetchers to use for PAC script downloads and auto-detect.
69 proxy_service
->SetProxyScriptFetchers(proxy_script_fetcher
,
70 dhcp_proxy_script_fetcher
);