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

Unified Diff: net/socket_stream/socket_stream.h

Issue 723343002: Update from https://crrev.com/304121 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 1 month 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 | « net/socket_stream/OWNERS ('k') | net/socket_stream/socket_stream.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/socket_stream/socket_stream.h
diff --git a/net/socket_stream/socket_stream.h b/net/socket_stream/socket_stream.h
deleted file mode 100644
index 7387eb68a9b338d58c7fd26aef7a5ce8eef88eba..0000000000000000000000000000000000000000
--- a/net/socket_stream/socket_stream.h
+++ /dev/null
@@ -1,404 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_SOCKET_STREAM_SOCKET_STREAM_H_
-#define NET_SOCKET_STREAM_SOCKET_STREAM_H_
-
-#include <deque>
-#include <map>
-#include <string>
-
-#include "base/memory/linked_ptr.h"
-#include "base/memory/ref_counted.h"
-#include "base/memory/scoped_ptr.h"
-#include "net/base/address_list.h"
-#include "net/base/completion_callback.h"
-#include "net/base/io_buffer.h"
-#include "net/base/net_errors.h"
-#include "net/base/net_export.h"
-#include "net/base/net_log.h"
-#include "net/base/privacy_mode.h"
-#include "net/cookies/cookie_store.h"
-#include "net/proxy/proxy_service.h"
-#include "net/ssl/ssl_config_service.h"
-#include "net/url_request/url_request.h"
-
-namespace net {
-
-class AuthChallengeInfo;
-class CertVerifier;
-class ChannelIDService;
-class ClientSocketFactory;
-class ClientSocketHandle;
-class CookieOptions;
-class HostResolver;
-class HttpAuthController;
-class SSLInfo;
-class SingleRequestHostResolver;
-class SocketStreamMetrics;
-class TransportSecurityState;
-class URLRequestContext;
-
-// SocketStream is used to implement Web Sockets.
-// It provides plain full-duplex stream with proxy and SSL support.
-// For proxy authentication, only basic mechanisum is supported. It will try
-// authentication identity for proxy URL first. If server requires proxy
-// authentication, it will try authentication identity for realm that server
-// requests.
-class NET_EXPORT SocketStream
- : public base::RefCountedThreadSafe<SocketStream> {
- public:
- // Derive from this class and add your own data members to associate extra
- // information with a SocketStream. Use GetUserData(key) and
- // SetUserData(key, data).
- class UserData {
- public:
- UserData() {}
- virtual ~UserData() {}
- };
-
- class NET_EXPORT Delegate {
- public:
- virtual int OnStartOpenConnection(SocketStream* socket,
- const CompletionCallback& callback);
-
- // Called when a socket stream has been connected. The socket stream is
- // allowed to buffer pending send data at most |max_pending_send_allowed|
- // bytes. A client of the socket stream should keep track of how much
- // pending send data it has and must not call SendData() if the pending
- // data goes over |max_pending_send_allowed| bytes.
- virtual void OnConnected(SocketStream* socket,
- int max_pending_send_allowed) = 0;
-
- // Called when |amount_sent| bytes of data are sent.
- virtual void OnSentData(SocketStream* socket,
- int amount_sent) = 0;
-
- // Called when |len| bytes of |data| are received.
- virtual void OnReceivedData(SocketStream* socket,
- const char* data, int len) = 0;
-
- // Called when the socket stream has been closed.
- virtual void OnClose(SocketStream* socket) = 0;
-
- // Called when proxy authentication required.
- // The delegate should call RestartWithAuth() if credential for |auth_info|
- // is found in password database, or call Close() to close the connection.
- virtual void OnAuthRequired(SocketStream* socket,
- AuthChallengeInfo* auth_info);
-
- // Called when using SSL and the server responds with a certificate with an
- // error. The delegate should call CancelBecauseOfCertError() or
- // ContinueDespiteCertError() to resume connection handling.
- virtual void OnSSLCertificateError(SocketStream* socket,
- const SSLInfo& ssl_info,
- bool fatal);
-
- // Called when an error occured.
- // This is only for error reporting to the delegate.
- // |error| is net::Error.
- virtual void OnError(const SocketStream* socket, int error) {}
-
- // Called when reading cookies to allow the delegate to block access to the
- // cookie.
- virtual bool CanGetCookies(SocketStream* socket, const GURL& url);
-
- // Called when a cookie is set to allow the delegate to block access to the
- // cookie.
- virtual bool CanSetCookie(SocketStream* request,
- const GURL& url,
- const std::string& cookie_line,
- CookieOptions* options);
-
- protected:
- virtual ~Delegate() {}
- };
-
- SocketStream(const GURL& url, Delegate* delegate, URLRequestContext* context,
- CookieStore* cookie_store);
-
- // The user data allows the clients to associate data with this job.
- // Multiple user data values can be stored under different keys.
- // This job will TAKE OWNERSHIP of the given data pointer, and will
- // delete the object if it is changed or the job is destroyed.
- UserData* GetUserData(const void* key) const;
- void SetUserData(const void* key, UserData* data);
-
- const GURL& url() const { return url_; }
- bool is_secure() const;
- const AddressList& address_list() const { return addresses_; }
- Delegate* delegate() const { return delegate_; }
- int max_pending_send_allowed() const { return max_pending_send_allowed_; }
-
- URLRequestContext* context() { return context_; }
-
- const SSLConfig& server_ssl_config() const { return server_ssl_config_; }
- PrivacyMode privacy_mode() const { return privacy_mode_; }
- void CheckPrivacyMode();
-
- BoundNetLog* net_log() { return &net_log_; }
-
- // Opens the connection on the IO thread.
- // Once the connection is established, calls delegate's OnConnected.
- virtual void Connect();
-
- // Buffers |data| of |len| bytes for send and returns true if successful.
- // If size of buffered data exceeds |max_pending_send_allowed_|, sends no
- // data and returns false. |len| must be positive.
- virtual bool SendData(const char* data, int len);
-
- // Requests to close the connection.
- // Once the connection is closed, calls delegate's OnClose.
- virtual void Close();
-
- // Restarts with authentication info.
- // Should be used for response of OnAuthRequired.
- virtual void RestartWithAuth(const AuthCredentials& credentials);
-
- // Detach delegate. Call before delegate is deleted.
- // Once delegate is detached, close the socket stream and never call delegate
- // back.
- virtual void DetachDelegate();
-
- // Detach the context.
- virtual void DetachContext();
-
- const ProxyServer& proxy_server() const;
-
- // Sets an alternative ClientSocketFactory. Doesn't take ownership of
- // |factory|. For testing purposes only.
- void SetClientSocketFactory(ClientSocketFactory* factory);
-
- // Cancels the connection because of an error.
- // |error| is net::Error which represents the error.
- void CancelWithError(int error);
-
- // Cancels the connection because of receiving a certificate with an error.
- void CancelWithSSLError(const SSLInfo& ssl_info);
-
- // Continues to establish the connection in spite of an error. Usually this
- // case happens because users allow certificate with an error by manual
- // actions on alert dialog or browser cached such kinds of user actions.
- void ContinueDespiteError();
-
- CookieStore* cookie_store() const;
-
- protected:
- friend class base::RefCountedThreadSafe<SocketStream>;
- virtual ~SocketStream();
-
- Delegate* delegate_;
-
- private:
- FRIEND_TEST_ALL_PREFIXES(SocketStreamTest, IOPending);
- FRIEND_TEST_ALL_PREFIXES(SocketStreamTest, SwitchAfterPending);
- FRIEND_TEST_ALL_PREFIXES(SocketStreamTest,
- NullContextSocketStreamShouldNotCrash);
-
- friend class WebSocketThrottleTest;
-
- typedef std::map<const void*, linked_ptr<UserData> > UserDataMap;
- typedef std::deque< scoped_refptr<IOBufferWithSize> > PendingDataQueue;
-
- class RequestHeaders : public IOBuffer {
- public:
- RequestHeaders() : IOBuffer() {}
-
- void SetDataOffset(size_t offset) {
- data_ = const_cast<char*>(headers_.data()) + offset;
- }
-
- std::string headers_;
-
- private:
- ~RequestHeaders() override;
- };
-
- class ResponseHeaders : public IOBuffer {
- public:
- ResponseHeaders();
-
- void SetDataOffset(size_t offset) { data_ = headers_.get() + offset; }
- char* headers() const { return headers_.get(); }
- void Reset() { headers_.reset(); }
- void Realloc(size_t new_size);
-
- private:
- ~ResponseHeaders() override;
-
- scoped_ptr<char, base::FreeDeleter> headers_;
- };
-
- enum State {
- STATE_NONE,
- STATE_BEFORE_CONNECT,
- STATE_BEFORE_CONNECT_COMPLETE,
- STATE_RESOLVE_PROXY,
- STATE_RESOLVE_PROXY_COMPLETE,
- STATE_RESOLVE_HOST,
- STATE_RESOLVE_HOST_COMPLETE,
- STATE_RESOLVE_PROTOCOL,
- STATE_RESOLVE_PROTOCOL_COMPLETE,
- STATE_TCP_CONNECT,
- STATE_TCP_CONNECT_COMPLETE,
- STATE_GENERATE_PROXY_AUTH_TOKEN,
- STATE_GENERATE_PROXY_AUTH_TOKEN_COMPLETE,
- STATE_WRITE_TUNNEL_HEADERS,
- STATE_WRITE_TUNNEL_HEADERS_COMPLETE,
- STATE_READ_TUNNEL_HEADERS,
- STATE_READ_TUNNEL_HEADERS_COMPLETE,
- STATE_SOCKS_CONNECT,
- STATE_SOCKS_CONNECT_COMPLETE,
- STATE_SECURE_PROXY_CONNECT,
- STATE_SECURE_PROXY_CONNECT_COMPLETE,
- STATE_SECURE_PROXY_HANDLE_CERT_ERROR,
- STATE_SECURE_PROXY_HANDLE_CERT_ERROR_COMPLETE,
- STATE_SSL_CONNECT,
- STATE_SSL_CONNECT_COMPLETE,
- STATE_SSL_HANDLE_CERT_ERROR,
- STATE_SSL_HANDLE_CERT_ERROR_COMPLETE,
- STATE_READ_WRITE,
- STATE_AUTH_REQUIRED,
- STATE_CLOSE,
- };
-
- enum ProxyMode {
- kDirectConnection, // If using a direct connection
- kTunnelProxy, // If using a tunnel (CONNECT method as HTTPS)
- kSOCKSProxy, // If using a SOCKS proxy
- };
-
- // Use the same number as HttpNetworkTransaction::kMaxHeaderBufSize.
- enum { kMaxTunnelResponseHeadersSize = 32768 }; // 32 kilobytes.
-
- // Used for WebSocketThrottleTest.
- void set_addresses(const AddressList& addresses);
-
- void DoClose();
-
- // Finishes the job.
- // Calls OnError and OnClose of delegate, and no more
- // notifications will be sent to delegate.
- void Finish(int result);
-
- int DidEstablishConnection();
- int DidReceiveData(int result);
- // Given the number of bytes sent,
- // - notifies the |delegate_| and |metrics_| of this event.
- // - drains sent data from |current_write_buf_|.
- // - if |current_write_buf_| has been fully sent, sets NULL to
- // |current_write_buf_| to get ready for next write.
- // and then, returns OK.
- void DidSendData(int result);
-
- void OnIOCompleted(int result);
- void OnReadCompleted(int result);
- void OnWriteCompleted(int result);
-
- void DoLoop(int result);
-
- int DoBeforeConnect();
- int DoBeforeConnectComplete(int result);
- int DoResolveProxy();
- int DoResolveProxyComplete(int result);
- int DoResolveHost();
- int DoResolveHostComplete(int result);
- int DoResolveProtocol(int result);
- int DoResolveProtocolComplete(int result);
- int DoTcpConnect(int result);
- int DoTcpConnectComplete(int result);
- int DoGenerateProxyAuthToken();
- int DoGenerateProxyAuthTokenComplete(int result);
- int DoWriteTunnelHeaders();
- int DoWriteTunnelHeadersComplete(int result);
- int DoReadTunnelHeaders();
- int DoReadTunnelHeadersComplete(int result);
- int DoSOCKSConnect();
- int DoSOCKSConnectComplete(int result);
- int DoSecureProxyConnect();
- int DoSecureProxyConnectComplete(int result);
- int DoSecureProxyHandleCertError(int result);
- int DoSecureProxyHandleCertErrorComplete(int result);
- int DoSSLConnect();
- int DoSSLConnectComplete(int result);
- int DoSSLHandleCertError(int result);
- int DoSSLHandleCertErrorComplete(int result);
- int DoReadWrite(int result);
-
- GURL ProxyAuthOrigin() const;
- int HandleAuthChallenge(const HttpResponseHeaders* headers);
- int HandleCertificateRequest(int result, SSLConfig* ssl_config);
- void DoAuthRequired();
- void DoRestartWithAuth();
-
- int HandleCertificateError(int result);
- int AllowCertErrorForReconnection(SSLConfig* ssl_config);
-
- // Returns the sum of the size of buffers in |pending_write_bufs_|.
- size_t GetTotalSizeOfPendingWriteBufs() const;
-
- BoundNetLog net_log_;
-
- GURL url_;
- // The number of bytes allowed to be buffered in this object. If the size of
- // buffered data which is
- // current_write_buf_.BytesRemaining() +
- // sum of the size of buffers in |pending_write_bufs_|
- // exceeds this limit, SendData() fails.
- int max_pending_send_allowed_;
- URLRequestContext* context_;
-
- UserDataMap user_data_;
-
- State next_state_;
- ClientSocketFactory* factory_;
-
- ProxyMode proxy_mode_;
-
- GURL proxy_url_;
- ProxyService::PacRequest* pac_request_;
- ProxyInfo proxy_info_;
-
- scoped_refptr<HttpAuthController> proxy_auth_controller_;
-
- scoped_refptr<RequestHeaders> tunnel_request_headers_;
- size_t tunnel_request_headers_bytes_sent_;
- scoped_refptr<ResponseHeaders> tunnel_response_headers_;
- int tunnel_response_headers_capacity_;
- int tunnel_response_headers_len_;
-
- scoped_ptr<SingleRequestHostResolver> resolver_;
- AddressList addresses_;
- scoped_ptr<ClientSocketHandle> connection_;
-
- SSLConfig server_ssl_config_;
- SSLConfig proxy_ssl_config_;
- PrivacyMode privacy_mode_;
-
- CompletionCallback io_callback_;
-
- scoped_refptr<IOBuffer> read_buf_;
- int read_buf_size_;
-
- // Buffer to hold data to pass to socket_.
- scoped_refptr<DrainableIOBuffer> current_write_buf_;
- // True iff there's no error and this instance is waiting for completion of
- // Write operation by socket_.
- bool waiting_for_write_completion_;
- PendingDataQueue pending_write_bufs_;
-
- bool closing_;
- bool server_closed_;
-
- scoped_ptr<SocketStreamMetrics> metrics_;
-
- // Cookie store to use for this socket stream.
- scoped_refptr<CookieStore> cookie_store_;
-
- DISALLOW_COPY_AND_ASSIGN(SocketStream);
-};
-
-} // namespace net
-
-#endif // NET_SOCKET_STREAM_SOCKET_STREAM_H_
« no previous file with comments | « net/socket_stream/OWNERS ('k') | net/socket_stream/socket_stream.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698