Index: content/browser/renderer_host/websocket_host.h |
diff --git a/content/browser/renderer_host/websocket_host.h b/content/browser/renderer_host/websocket_host.h |
index 39c1e41edbed3d56985f1bba437898bfae234c80..89b368685d6b64df526f0244f18de97bda3c8f54 100644 |
--- a/content/browser/renderer_host/websocket_host.h |
+++ b/content/browser/renderer_host/websocket_host.h |
@@ -9,6 +9,8 @@ |
#include <vector> |
#include "base/memory/scoped_ptr.h" |
+#include "base/memory/weak_ptr.h" |
+#include "base/time/time.h" |
#include "content/common/content_export.h" |
#include "content/common/websocket.h" |
@@ -37,7 +39,8 @@ class CONTENT_EXPORT WebSocketHost { |
public: |
WebSocketHost(int routing_id, |
WebSocketDispatcherHost* dispatcher, |
- net::URLRequestContext* url_request_context); |
+ net::URLRequestContext* url_request_context, |
+ base::TimeDelta delay); |
virtual ~WebSocketHost(); |
// The renderer process is going away. |
@@ -50,6 +53,9 @@ class CONTENT_EXPORT WebSocketHost { |
int routing_id() const { return routing_id_; } |
+ bool handshake_succeeded() const { return handshake_succeeded_; } |
+ void OnHandshakeSucceeded() { handshake_succeeded_ = true; } |
+ |
private: |
// Handlers for each message type, dispatched by OnMessageReceived(), as |
// defined in content/common/websocket_messages.h |
@@ -59,6 +65,11 @@ class CONTENT_EXPORT WebSocketHost { |
const url::Origin& origin, |
int render_frame_id); |
+ void AddChannel(const GURL& socket_url, |
+ const std::vector<std::string>& requested_protocols, |
+ const url::Origin& origin, |
+ int render_frame_id); |
+ |
void OnSendFrame(bool fin, |
WebSocketMessageType type, |
const std::vector<char>& data); |
@@ -79,6 +90,20 @@ class CONTENT_EXPORT WebSocketHost { |
// The ID used to route messages. |
const int routing_id_; |
+ // Delay used for per-renderer WebSocket throttling. |
+ base::TimeDelta delay_; |
+ |
+ // SendFlowControl() is delayed when OnFlowControl() is called before |
+ // AddChannel() is called. |
+ // Zero indicates there is no pending SendFlowControl(). |
+ int64_t pending_flow_control_quota_; |
+ |
+ // handshake_succeeded_ is set and used by WebSocketDispatcherHost |
+ // to manage counters for per-renderer WebSocket throttling. |
+ bool handshake_succeeded_; |
+ |
+ base::WeakPtrFactory<WebSocketHost> weak_ptr_factory_; |
+ |
DISALLOW_COPY_AND_ASSIGN(WebSocketHost); |
}; |