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 "sync/test/accounts_client/url_request_context_getter.h" 6 7 #include <string> 8 9 #include "net/proxy/proxy_config_service.h" 10 #include "net/url_request/url_request_context.h" 11 #include "net/url_request/url_request_context_builder.h" 12 13 namespace { 14 15 // Config getter that always returns direct settings. 16 class ProxyConfigServiceDirect : public net::ProxyConfigService { 17 public: 18 // Overridden from ProxyConfigService: 19 virtual void AddObserver(Observer* observer) OVERRIDE {} 20 virtual void RemoveObserver(Observer* observer) OVERRIDE {} 21 virtual ConfigAvailability GetLatestProxyConfig( 22 net::ProxyConfig* config) OVERRIDE { 23 *config = net::ProxyConfig::CreateDirect(); 24 return CONFIG_VALID; 25 } 26 }; 27 28 } // namespace 29 30 URLRequestContextGetter::URLRequestContextGetter( 31 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner) 32 : network_task_runner_(network_task_runner) { 33 } 34 35 net::URLRequestContext* URLRequestContextGetter::GetURLRequestContext() { 36 CHECK(network_task_runner_->BelongsToCurrentThread()); 37 if (!url_request_context_) { 38 net::URLRequestContextBuilder builder; 39 // net::HttpServer fails to parse headers if user-agent header is blank. 40 builder.set_user_agent("sync-test-accounts-client"); 41 builder.DisableHttpCache(); 42 #if defined(OS_LINUX) || defined(OS_ANDROID) 43 builder.set_proxy_config_service(new ProxyConfigServiceDirect()); 44 #endif 45 url_request_context_.reset(builder.Build()); 46 } 47 return url_request_context_.get(); 48 } 49 50 scoped_refptr<base::SingleThreadTaskRunner> 51 URLRequestContextGetter::GetNetworkTaskRunner() const { 52 return network_task_runner_; 53 } 54 55 URLRequestContextGetter::~URLRequestContextGetter() {} 56