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

Side by Side Diff: remoting/host/url_request_context.cc

Issue 18460003: Move url_request_context from remoting/host/ to remoting/base/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 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
« no previous file with comments | « remoting/host/url_request_context.h ('k') | remoting/host/vlog_net_log.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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.
4
5 #include "remoting/host/url_request_context.h"
6
7 #include "base/message_loop/message_loop_proxy.h"
8 #include "net/cert/cert_verifier.h"
9 #include "net/dns/host_resolver.h"
10 #include "net/http/http_auth_handler_factory.h"
11 #include "net/http/http_network_layer.h"
12 #include "net/http/http_network_session.h"
13 #include "net/http/http_server_properties_impl.h"
14 #include "net/http/transport_security_state.h"
15 #include "net/proxy/proxy_config_service.h"
16 #include "net/proxy/proxy_service.h"
17 #include "net/ssl/ssl_config_service_defaults.h"
18 #include "remoting/host/vlog_net_log.h"
19
20 #if defined(OS_WIN)
21 #include "net/proxy/proxy_config_service_win.h"
22 #elif defined(OS_MACOSX)
23 #include "net/proxy/proxy_config_service_mac.h"
24 #elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
25 #include "net/proxy/proxy_config_service_linux.h"
26 #endif
27
28 namespace remoting {
29
30 namespace {
31
32 // Config getter that always returns direct settings.
33 class ProxyConfigServiceDirect : public net::ProxyConfigService {
34 public:
35 // ProxyConfigService implementation:
36 virtual void AddObserver(Observer* observer) OVERRIDE {}
37 virtual void RemoveObserver(Observer* observer) OVERRIDE {}
38 virtual ConfigAvailability GetLatestProxyConfig(
39 net::ProxyConfig* config) OVERRIDE {
40 *config = net::ProxyConfig::CreateDirect();
41 return CONFIG_VALID;
42 }
43 };
44
45 net::ProxyConfigService* CreateSystemProxyConfigService(
46 base::SingleThreadTaskRunner* ui_task_runner,
47 base::SingleThreadTaskRunner* io_thread_task_runner) {
48 DCHECK(ui_task_runner->BelongsToCurrentThread());
49
50 #if defined(OS_WIN)
51 return new net::ProxyConfigServiceWin();
52 #elif defined(OS_MACOSX)
53 return new net::ProxyConfigServiceMac(io_thread_task_runner);
54 #elif defined(OS_CHROMEOS)
55 NOTREACHED() << "ChromeOS is not a supported target for Chromoting host";
56 return NULL;
57 #elif defined(OS_LINUX)
58 // TODO(sergeyu): Currently ProxyConfigServiceLinux depends on
59 // base::OneShotTimer that doesn't work properly on main NPAPI
60 // thread. Fix that and uncomment the code below.
61 //
62 // net::ProxyConfigServiceLinux* linux_config_service =
63 // new net::ProxyConfigServiceLinux();
64 // linux_config_service->SetupAndFetchInitialConfig(
65 // ui_message_loop_, io_message_loop->message_loop_proxy(),
66 // file_message_loop);
67
68 // return linux_config_service;
69 return new ProxyConfigServiceDirect();
70 #else
71 LOG(WARNING) << "Failed to choose a system proxy settings fetcher "
72 "for this platform.";
73 return new ProxyConfigServiceDirect();
74 #endif
75 }
76
77 } // namespace
78
79 // TODO(willchan): This is largely copied from service_url_request_context.cc,
80 // which is in turn copied from some test code. Move it somewhere reusable.
81 URLRequestContext::URLRequestContext(
82 scoped_ptr<net::ProxyConfigService> proxy_config_service)
83 : storage_(this) {
84 scoped_ptr<VlogNetLog> net_log(new VlogNetLog());
85 storage_.set_host_resolver(
86 net::HostResolver::CreateDefaultResolver(net_log.get()));
87 storage_.set_proxy_service(net::ProxyService::CreateUsingSystemProxyResolver(
88 proxy_config_service.release(), 0u, net_log.get()));
89 storage_.set_cert_verifier(net::CertVerifier::CreateDefault());
90 storage_.set_ssl_config_service(new net::SSLConfigServiceDefaults);
91 storage_.set_http_auth_handler_factory(
92 net::HttpAuthHandlerFactory::CreateDefault(host_resolver()));
93 storage_.set_http_server_properties(new net::HttpServerPropertiesImpl);
94 storage_.set_transport_security_state(new net::TransportSecurityState);
95
96 net::HttpNetworkSession::Params session_params;
97 session_params.host_resolver = host_resolver();
98 session_params.cert_verifier = cert_verifier();
99 session_params.transport_security_state = transport_security_state();
100 session_params.proxy_service = proxy_service();
101 session_params.ssl_config_service = ssl_config_service();
102 session_params.http_auth_handler_factory = http_auth_handler_factory();
103 session_params.http_server_properties = http_server_properties();
104 session_params.net_log = net_log.get();
105 scoped_refptr<net::HttpNetworkSession> network_session(
106 new net::HttpNetworkSession(session_params));
107 storage_.set_http_transaction_factory(
108 new net::HttpNetworkLayer(network_session.get()));
109 storage_.set_net_log(net_log.release());
110 }
111
112 URLRequestContext::~URLRequestContext() {
113 }
114
115 URLRequestContextGetter::URLRequestContextGetter(
116 scoped_refptr<base::SingleThreadTaskRunner> ui_task_runner,
117 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner)
118 : network_task_runner_(network_task_runner) {
119 proxy_config_service_.reset(CreateSystemProxyConfigService(
120 ui_task_runner.get(), network_task_runner_.get()));
121 }
122
123 net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() {
124 if (!url_request_context_.get()) {
125 url_request_context_.reset(
126 new URLRequestContext(proxy_config_service_.Pass()));
127 }
128 return url_request_context_.get();
129 }
130
131 scoped_refptr<base::SingleThreadTaskRunner>
132 URLRequestContextGetter::GetNetworkTaskRunner() const {
133 return network_task_runner_;
134 }
135
136 URLRequestContextGetter::~URLRequestContextGetter() {
137 }
138
139 } // namespace remoting
OLDNEW
« no previous file with comments | « remoting/host/url_request_context.h ('k') | remoting/host/vlog_net_log.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698