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

Unified Diff: net/websockets/websocket_job.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/websockets/websocket_handshake_handler_test.cc ('k') | net/websockets/websocket_job.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/websockets/websocket_job.h
diff --git a/net/websockets/websocket_job.h b/net/websockets/websocket_job.h
deleted file mode 100644
index bad06cfcab4d2f53e5f23a7f0857036e67a4c803..0000000000000000000000000000000000000000
--- a/net/websockets/websocket_job.h
+++ /dev/null
@@ -1,154 +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_WEBSOCKETS_WEBSOCKET_JOB_H_
-#define NET_WEBSOCKETS_WEBSOCKET_JOB_H_
-
-#include <deque>
-#include <string>
-#include <vector>
-
-#include "base/memory/weak_ptr.h"
-#include "net/base/address_list.h"
-#include "net/base/completion_callback.h"
-#include "net/socket_stream/socket_stream_job.h"
-#include "net/spdy/spdy_header_block.h"
-#include "net/spdy/spdy_websocket_stream.h"
-
-class GURL;
-
-namespace net {
-
-class DrainableIOBuffer;
-class SSLInfo;
-class WebSocketHandshakeRequestHandler;
-class WebSocketHandshakeResponseHandler;
-
-// WebSocket protocol specific job on SocketStream.
-// It captures WebSocket handshake message and handles cookie operations.
-// Chrome security policy doesn't allow renderer process (except dev tools)
-// see HttpOnly cookies, so it injects cookie header in handshake request and
-// strips set-cookie headers in handshake response.
-// TODO(ukai): refactor websocket.cc to use this.
-class NET_EXPORT WebSocketJob
- : public SocketStreamJob,
- public SocketStream::Delegate,
- public SpdyWebSocketStream::Delegate {
- public:
- // This is state of WebSocket, not SocketStream.
- enum State {
- INITIALIZED = -1,
- CONNECTING = 0,
- OPEN = 1,
- CLOSING = 2,
- CLOSED = 3,
- };
-
- explicit WebSocketJob(SocketStream::Delegate* delegate);
-
- static void EnsureInit();
-
- State state() const { return state_; }
- void Connect() override;
- bool SendData(const char* data, int len) override;
- void Close() override;
- void RestartWithAuth(const AuthCredentials& credentials) override;
- void DetachDelegate() override;
-
- // SocketStream::Delegate methods.
- int OnStartOpenConnection(SocketStream* socket,
- const CompletionCallback& callback) override;
- void OnConnected(SocketStream* socket, int max_pending_send_allowed) override;
- void OnSentData(SocketStream* socket, int amount_sent) override;
- void OnReceivedData(SocketStream* socket, const char* data, int len) override;
- void OnClose(SocketStream* socket) override;
- void OnAuthRequired(SocketStream* socket,
- AuthChallengeInfo* auth_info) override;
- void OnSSLCertificateError(SocketStream* socket,
- const SSLInfo& ssl_info,
- bool fatal) override;
- void OnError(const SocketStream* socket, int error) override;
-
- // SpdyWebSocketStream::Delegate methods.
- void OnCreatedSpdyStream(int status) override;
- void OnSentSpdyHeaders() override;
- void OnSpdyResponseHeadersUpdated(
- const SpdyHeaderBlock& response_headers) override;
- void OnSentSpdyData(size_t bytes_sent) override;
- void OnReceivedSpdyData(scoped_ptr<SpdyBuffer> buffer) override;
- void OnCloseSpdyStream() override;
-
- private:
- friend class WebSocketThrottle;
- friend class WebSocketJobTest;
- ~WebSocketJob() override;
-
- bool SendHandshakeRequest(const char* data, int len);
- void AddCookieHeaderAndSend();
- void LoadCookieCallback(const std::string& cookie);
-
- void OnSentHandshakeRequest(SocketStream* socket, int amount_sent);
- // Parses received data into handshake_response_. When finished receiving the
- // response, calls SaveCookiesAndNotifyHeadersComplete().
- void OnReceivedHandshakeResponse(
- SocketStream* socket, const char* data, int len);
- // Saves received cookies to the cookie store, and then notifies the
- // delegate_ of completion of handshake.
- void SaveCookiesAndNotifyHeadersComplete();
- void SaveNextCookie();
- void OnCookieSaved(bool cookie_status);
- // Clears variables for handling cookies, rebuilds handshake string excluding
- // cookies, and then pass the handshake string to delegate_.
- void NotifyHeadersComplete();
- void DoSendData();
-
- GURL GetURLForCookies() const;
-
- const AddressList& address_list() const;
- int TrySpdyStream();
- void SetWaiting();
- bool IsWaiting() const;
- void Wakeup();
- void RetryPendingIO();
- void CompleteIO(int result);
-
- bool SendDataInternal(const char* data, int length);
- void CloseInternal();
- void SendPending();
-
- SocketStream::Delegate* delegate_;
- State state_;
- bool waiting_;
- AddressList addresses_;
- CompletionCallback callback_; // for throttling.
-
- scoped_ptr<WebSocketHandshakeRequestHandler> handshake_request_;
- scoped_ptr<WebSocketHandshakeResponseHandler> handshake_response_;
-
- bool started_to_send_handshake_request_;
- size_t handshake_request_sent_;
-
- std::vector<std::string> response_cookies_;
- size_t response_cookies_save_index_;
-
- std::deque<scoped_refptr<IOBufferWithSize> > send_buffer_queue_;
- scoped_refptr<DrainableIOBuffer> current_send_buffer_;
- std::vector<char> received_data_after_handshake_;
-
- int spdy_protocol_version_;
- scoped_ptr<SpdyWebSocketStream> spdy_websocket_stream_;
- std::string challenge_;
-
- bool save_next_cookie_running_;
- bool callback_pending_;
-
- base::WeakPtrFactory<WebSocketJob> weak_ptr_factory_;
- base::WeakPtrFactory<WebSocketJob> weak_ptr_factory_for_send_pending_;
-
- DISALLOW_COPY_AND_ASSIGN(WebSocketJob);
-};
-
-} // namespace
-
-#endif // NET_WEBSOCKETS_WEBSOCKET_JOB_H_
« no previous file with comments | « net/websockets/websocket_handshake_handler_test.cc ('k') | net/websockets/websocket_job.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698