Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(544)

Side by Side Diff: chrome/browser/net/proxy_service_factory.cc

Issue 2986733002: Reland of Make ProfileIOData use URLRequestContextBuilder (Closed)
Patch Set: Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/net/proxy_service_factory.h" 5 #include "chrome/browser/net/proxy_service_factory.h"
6 6
7 #include <stddef.h>
8 #include <string>
9 #include <utility>
10
11 #include "base/command_line.h"
12 #include "base/metrics/field_trial.h"
13 #include "base/strings/string_number_conversions.h"
14 #include "base/threading/thread.h"
15 #include "build/build_config.h" 7 #include "build/build_config.h"
16 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/io_thread.h"
18 #include "chrome/browser/net/chrome_mojo_proxy_resolver_factory.h"
19 #include "chrome/common/chrome_switches.h"
20 #include "components/proxy_config/pref_proxy_config_tracker_impl.h" 8 #include "components/proxy_config/pref_proxy_config_tracker_impl.h"
21 #include "content/public/browser/browser_thread.h" 9 #include "content/public/browser/browser_thread.h"
22 #include "content/public/common/content_switches.h"
23 #include "net/proxy/dhcp_proxy_script_fetcher_factory.h"
24 #include "net/proxy/proxy_config_service.h" 10 #include "net/proxy/proxy_config_service.h"
25 #include "net/proxy/proxy_script_fetcher_impl.h"
26 #include "net/proxy/proxy_service.h" 11 #include "net/proxy/proxy_service.h"
27 #include "net/proxy/proxy_service_mojo.h"
28 #include "net/url_request/url_request_context.h"
29 12
30 #if defined(OS_CHROMEOS) 13 #if defined(OS_CHROMEOS)
31 #include "chromeos/network/dhcp_proxy_script_fetcher_chromeos.h"
32 #include "chromeos/network/proxy/proxy_config_service_impl.h" 14 #include "chromeos/network/proxy/proxy_config_service_impl.h"
33 #endif // defined(OS_CHROMEOS) 15 #endif // defined(OS_CHROMEOS)
34 16
35 using content::BrowserThread; 17 using content::BrowserThread;
36 18
37 // static 19 // static
38 std::unique_ptr<net::ProxyConfigService> 20 std::unique_ptr<net::ProxyConfigService>
39 ProxyServiceFactory::CreateProxyConfigService(PrefProxyConfigTracker* tracker) { 21 ProxyServiceFactory::CreateProxyConfigService(PrefProxyConfigTracker* tracker) {
40 // The linux gconf-based proxy settings getter relies on being initialized 22 // The linux gconf-based proxy settings getter relies on being initialized
41 // from the UI thread. 23 // from the UI thread.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 #if defined(OS_CHROMEOS) 63 #if defined(OS_CHROMEOS)
82 return new chromeos::ProxyConfigServiceImpl( 64 return new chromeos::ProxyConfigServiceImpl(
83 nullptr, local_state_prefs, 65 nullptr, local_state_prefs,
84 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); 66 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO));
85 #else 67 #else
86 return new PrefProxyConfigTrackerImpl( 68 return new PrefProxyConfigTrackerImpl(
87 local_state_prefs, 69 local_state_prefs,
88 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO)); 70 BrowserThread::GetTaskRunnerForThread(BrowserThread::IO));
89 #endif // defined(OS_CHROMEOS) 71 #endif // defined(OS_CHROMEOS)
90 } 72 }
91
92 // static
93 std::unique_ptr<net::ProxyService> ProxyServiceFactory::CreateProxyService(
94 net::NetLog* net_log,
95 net::URLRequestContext* context,
96 net::NetworkDelegate* network_delegate,
97 std::unique_ptr<net::ProxyConfigService> proxy_config_service,
98 const base::CommandLine& command_line,
99 bool quick_check_enabled,
100 bool pac_https_url_stripping_enabled) {
101 DCHECK_CURRENTLY_ON(BrowserThread::IO);
102 bool use_v8 = !command_line.HasSwitch(switches::kWinHttpProxyResolver);
103 // TODO(eroman): Figure out why this doesn't work in single-process mode.
104 // Should be possible now that a private isolate is used.
105 // http://crbug.com/474654
106 if (use_v8 && command_line.HasSwitch(switches::kSingleProcess)) {
107 LOG(ERROR) << "Cannot use V8 Proxy resolver in single process mode.";
108 use_v8 = false; // Fallback to non-v8 implementation.
109 }
110
111 std::unique_ptr<net::ProxyService> proxy_service;
112 if (use_v8) {
113 std::unique_ptr<net::DhcpProxyScriptFetcher> dhcp_proxy_script_fetcher;
114 #if defined(OS_CHROMEOS)
115 dhcp_proxy_script_fetcher.reset(
116 new chromeos::DhcpProxyScriptFetcherChromeos(context));
117 #else
118 net::DhcpProxyScriptFetcherFactory dhcp_factory;
119 dhcp_proxy_script_fetcher = dhcp_factory.Create(context);
120 #endif
121
122 proxy_service = net::CreateProxyServiceUsingMojoFactory(
123 ChromeMojoProxyResolverFactory::GetInstance(),
124 std::move(proxy_config_service),
125 new net::ProxyScriptFetcherImpl(context),
126 std::move(dhcp_proxy_script_fetcher), context->host_resolver(), net_log,
127 network_delegate);
128 } else {
129 proxy_service = net::ProxyService::CreateUsingSystemProxyResolver(
130 std::move(proxy_config_service), net_log);
131 }
132
133 proxy_service->set_quick_check_enabled(quick_check_enabled);
134 proxy_service->set_sanitize_url_policy(
135 pac_https_url_stripping_enabled
136 ? net::ProxyService::SanitizeUrlPolicy::SAFE
137 : net::ProxyService::SanitizeUrlPolicy::UNSAFE);
138
139 return proxy_service;
140 }
OLDNEW
« no previous file with comments | « chrome/browser/net/proxy_service_factory.h ('k') | chrome/browser/profiles/off_the_record_profile_io_data.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698