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

Unified Diff: content/browser/renderer_host/websocket_host.h

Issue 972963002: Per-renderer WebSocket throttling (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add a comment / blank lines. Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
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);
};
« no previous file with comments | « content/browser/renderer_host/websocket_dispatcher_host_unittest.cc ('k') | content/browser/renderer_host/websocket_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698