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

Unified Diff: remoting/host/url_request_context.cc

Issue 10173009: Always create URLRequestContextGetter in ChromotingHostContext. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/host/url_request_context.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/url_request_context.cc
diff --git a/remoting/host/url_request_context.cc b/remoting/host/url_request_context.cc
index 0e23350ed957308d516203674b19272f514c8873..901dc092a0dc061fa232096fe4ba240365569f4e 100644
--- a/remoting/host/url_request_context.cc
+++ b/remoting/host/url_request_context.cc
@@ -16,8 +16,66 @@
#include "net/proxy/proxy_service.h"
#include "remoting/host/vlog_net_log.h"
+#if defined(OS_WIN)
+#include "net/proxy/proxy_config_service_win.h"
+#elif defined(OS_MACOSX)
+#include "net/proxy/proxy_config_service_mac.h"
+#elif defined(OS_LINUX) && !defined(OS_CHROMEOS)
+#include "net/proxy/proxy_config_service_linux.h"
+#endif
+
namespace remoting {
+namespace {
+
+// Config getter that always returns direct settings.
+class ProxyConfigServiceDirect : public net::ProxyConfigService {
+ public:
+ // ProxyConfigService implementation:
+ virtual void AddObserver(Observer* observer) OVERRIDE {}
+ virtual void RemoveObserver(Observer* observer) OVERRIDE {}
+ virtual ConfigAvailability GetLatestProxyConfig(
+ net::ProxyConfig* config) OVERRIDE {
+ *config = net::ProxyConfig::CreateDirect();
+ return CONFIG_VALID;
+ }
+};
+
+net::ProxyConfigService* CreateSystemProxyConfigService(
+ base::MessageLoopProxy* ui_message_loop_,
+ MessageLoop* io_message_loop,
+ MessageLoopForIO* file_message_loop) {
+ DCHECK(ui_message_loop_->BelongsToCurrentThread());
+
+#if defined(OS_WIN)
+ return new net::ProxyConfigServiceWin();
+#elif defined(OS_MACOSX)
+ return new net::ProxyConfigServiceMac(io_message_loop);
+#elif defined(OS_CHROMEOS)
+ NOTREACHED() << "ChromeOS is not a supported target for Chromoting host";
+ return NULL;
+#elif defined(OS_LINUX)
+ // TODO(sergeyu): Currently ProxyConfigServiceLinux depends on
+ // base::OneShotTimer that doesn't work properly on main NPAPI
+ // thread. Fix that and uncomment the code below.
+ //
+ // net::ProxyConfigServiceLinux* linux_config_service =
+ // new net::ProxyConfigServiceLinux();
+ // linux_config_service->SetupAndFetchInitialConfig(
+ // ui_message_loop_, io_message_loop->message_loop_proxy(),
+ // file_message_loop);
+
+ // return linux_config_service;
+ return new ProxyConfigServiceDirect();
+#else
+ LOG(WARNING) << "Failed to choose a system proxy settings fetcher "
+ "for this platform.";
+ return new ProxyConfigServiceDirect();
+#endif
+}
+
+} // namespace
+
// TODO(willchan): This is largely copied from service_url_request_context.cc,
// which is in turn copied from some test code. Move it somewhere reusable.
URLRequestContext::URLRequestContext(
@@ -55,12 +113,12 @@ URLRequestContext::~URLRequestContext() {
}
URLRequestContextGetter::URLRequestContextGetter(
+ base::MessageLoopProxy* ui_message_loop,
MessageLoop* io_message_loop,
- MessageLoop* file_message_loop)
+ MessageLoopForIO* file_message_loop)
: io_message_loop_proxy_(io_message_loop->message_loop_proxy()) {
- proxy_config_service_.reset(
- net::ProxyService::CreateSystemProxyConfigService(
- io_message_loop, file_message_loop));
+ proxy_config_service_.reset(CreateSystemProxyConfigService(
+ ui_message_loop, io_message_loop, file_message_loop));
}
net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() {
« no previous file with comments | « remoting/host/url_request_context.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698