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

Side by Side Diff: jingle/notifier/base/proxy_resolving_client_socket.h

Issue 9148011: Allow chrome to handle 407 auth challenges to CONNECT requests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Use weak pointer instead of Unretained(this) in jingle Created 8 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 // This StreamSocket implementation wraps a ClientSocketHandle that is created 5 // This StreamSocket implementation wraps a ClientSocketHandle that is created
6 // from the client socket pool after resolving proxies. 6 // from the client socket pool after resolving proxies.
7 7
8 #ifndef JINGLE_NOTIFIER_BASE_PROXY_RESOLVING_CLIENT_SOCKET_H_ 8 #ifndef JINGLE_NOTIFIER_BASE_PROXY_RESOLVING_CLIENT_SOCKET_H_
9 #define JINGLE_NOTIFIER_BASE_PROXY_RESOLVING_CLIENT_SOCKET_H_ 9 #define JINGLE_NOTIFIER_BASE_PROXY_RESOLVING_CLIENT_SOCKET_H_
10 #pragma once 10 #pragma once
11 11
12 #include "base/basictypes.h" 12 #include "base/basictypes.h"
13 #include "base/compiler_specific.h" 13 #include "base/compiler_specific.h"
14 #include "base/memory/ref_counted.h" 14 #include "base/memory/ref_counted.h"
15 #include "base/memory/weak_ptr.h" 15 #include "base/memory/weak_ptr.h"
16 #include "net/base/completion_callback.h" 16 #include "net/base/completion_callback.h"
17 #include "net/base/host_port_pair.h" 17 #include "net/base/host_port_pair.h"
18 #include "net/base/net_errors.h" 18 #include "net/base/net_errors.h"
19 #include "net/base/net_log.h" 19 #include "net/base/net_log.h"
20 #include "net/base/ssl_config_service.h" 20 #include "net/base/ssl_config_service.h"
21 #include "net/proxy/proxy_info.h" 21 #include "net/proxy/proxy_info.h"
22 #include "net/proxy/proxy_service.h" 22 #include "net/proxy/proxy_service.h"
23 #include "net/socket/stream_socket.h" 23 #include "net/socket/stream_socket.h"
24 24
25 namespace net { 25 namespace net {
26 class ClientSocketFactory; 26 class ClientSocketFactory;
27 class ClientSocketHandle; 27 class ClientSocketHandle;
28 class HttpResponseInfo;
29 class HttpAuthController;
28 class HttpNetworkSession; 30 class HttpNetworkSession;
29 class URLRequestContextGetter; 31 class URLRequestContextGetter;
30 } // namespace net 32 } // namespace net
31 33
32 // TODO(sanjeevr): Move this to net/ 34 // TODO(sanjeevr): Move this to net/
33 namespace notifier { 35 namespace notifier {
34 36
35 class ProxyResolvingClientSocket : public net::StreamSocket { 37 class ProxyResolvingClientSocket : public net::StreamSocket {
36 public: 38 public:
37 // Constructs a new ProxyResolvingClientSocket. |socket_factory| is the 39 // Constructs a new ProxyResolvingClientSocket. |socket_factory| is the
(...skipping 26 matching lines...) Expand all
64 virtual bool WasEverUsed() const OVERRIDE; 66 virtual bool WasEverUsed() const OVERRIDE;
65 virtual bool UsingTCPFastOpen() const OVERRIDE; 67 virtual bool UsingTCPFastOpen() const OVERRIDE;
66 virtual int64 NumBytesRead() const OVERRIDE; 68 virtual int64 NumBytesRead() const OVERRIDE;
67 virtual base::TimeDelta GetConnectTimeMicros() const OVERRIDE; 69 virtual base::TimeDelta GetConnectTimeMicros() const OVERRIDE;
68 70
69 private: 71 private:
70 // Proxy resolution and connection functions. 72 // Proxy resolution and connection functions.
71 void ProcessProxyResolveDone(int status); 73 void ProcessProxyResolveDone(int status);
72 void ProcessConnectDone(int status); 74 void ProcessConnectDone(int status);
73 75
76 void OnNeedsProxyTunnelAuthCallback(
77 const net::HttpResponseInfo& response_info,
78 net::HttpAuthController* auth_controller,
79 net::CompletionCallback callback);
80
74 void CloseTransportSocket(); 81 void CloseTransportSocket();
75 void RunUserConnectCallback(int status); 82 void RunUserConnectCallback(int status);
76 int ReconsiderProxyAfterError(int error); 83 int ReconsiderProxyAfterError(int error);
77 void ReportSuccessfulProxyConnection(); 84 void ReportSuccessfulProxyConnection();
78 85
79 // Callbacks passed to net APIs. 86 // Callbacks passed to net APIs.
80 net::CompletionCallback proxy_resolve_callback_; 87 net::CompletionCallback proxy_resolve_callback_;
81 net::CompletionCallback connect_callback_; 88 net::CompletionCallback connect_callback_;
82 89
83 scoped_refptr<net::HttpNetworkSession> network_session_; 90 scoped_refptr<net::HttpNetworkSession> network_session_;
84 91
85 // The transport socket. 92 // The transport socket.
86 scoped_ptr<net::ClientSocketHandle> transport_; 93 scoped_ptr<net::ClientSocketHandle> transport_;
87 94
88 const net::SSLConfig ssl_config_; 95 const net::SSLConfig ssl_config_;
89 net::ProxyService::PacRequest* pac_request_; 96 net::ProxyService::PacRequest* pac_request_;
90 net::ProxyInfo proxy_info_; 97 net::ProxyInfo proxy_info_;
91 net::HostPortPair dest_host_port_pair_; 98 net::HostPortPair dest_host_port_pair_;
92 bool tried_direct_connect_fallback_; 99 bool tried_direct_connect_fallback_;
93 net::BoundNetLog bound_net_log_; 100 net::BoundNetLog bound_net_log_;
94 base::WeakPtrFactory<ProxyResolvingClientSocket> weak_factory_; 101 base::WeakPtrFactory<ProxyResolvingClientSocket> weak_factory_;
95 102
96 // The callback passed to Connect(). 103 // The callback passed to Connect().
97 net::CompletionCallback user_connect_callback_; 104 net::CompletionCallback user_connect_callback_;
98 }; 105 };
99 106
100 } // namespace notifier 107 } // namespace notifier
101 108
102 #endif // JINGLE_NOTIFIER_BASE_PROXY_RESOLVING_CLIENT_SOCKET_H_ 109 #endif // JINGLE_NOTIFIER_BASE_PROXY_RESOLVING_CLIENT_SOCKET_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698