1 // Copyright 2013 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 #ifndef REMOTING_BASE_URL_REQUEST_CONTEXT_H_ 6 #define REMOTING_BASE_URL_REQUEST_CONTEXT_H_ 7 8 #include <string> 9 10 #include "base/basictypes.h" 11 #include "base/memory/scoped_ptr.h" 12 #include "base/message_loop/message_loop.h" 13 #include "net/proxy/proxy_config_service.h" 14 #include "net/url_request/url_request_context.h" 15 #include "net/url_request/url_request_context_getter.h" 16 #include "net/url_request/url_request_context_storage.h" 17 18 namespace base { 19 class MessageLoopProxy; 20 } // namespace base 21 22 namespace remoting { 23 24 // Subclass of net::URLRequestContext which can be used to store extra 25 // information for requests. This subclass is meant to be used in the 26 // remoting Me2Me host process where the profile is not available. 27 class URLRequestContext : public net::URLRequestContext { 28 public: 29 explicit URLRequestContext( 30 scoped_ptr<net::ProxyConfigService> proxy_config_service); 31 32 private: 33 virtual ~URLRequestContext(); 34 35 net::URLRequestContextStorage storage_; 36 37 DISALLOW_COPY_AND_ASSIGN(URLRequestContext); 38 }; 39 40 class URLRequestContextGetter : public net::URLRequestContextGetter { 41 public: 42 URLRequestContextGetter( 43 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner); 44 45 // Overridden from net::URLRequestContextGetter: 46 virtual net::URLRequestContext* GetURLRequestContext() OVERRIDE; 47 virtual scoped_refptr<base::SingleThreadTaskRunner> 48 GetNetworkTaskRunner() const OVERRIDE; 49 50 protected: 51 virtual ~URLRequestContextGetter(); 52 53 private: 54 scoped_refptr<base::SingleThreadTaskRunner> network_task_runner_; 55 scoped_ptr<net::ProxyConfigService> proxy_config_service_; 56 scoped_ptr<net::URLRequestContext> url_request_context_; 57 58 DISALLOW_COPY_AND_ASSIGN(URLRequestContextGetter); 59 }; 60 61 } // namespace remoting 62 63 #endif // REMOTING_BASE_URL_REQUEST_CONTEXT_H_ 64