Index: content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h |
diff --git a/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h b/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h |
index d0e672aa7a24e59c5a8ae14b24950fbf4dadb6a4..e88a1e64a1c3435af218084ee3bfdb8f35e07221 100644 |
--- a/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h |
+++ b/content/browser/renderer_host/pepper/pepper_tcp_socket_message_filter.h |
@@ -12,6 +12,7 @@ |
#include "base/compiler_specific.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
+#include "content/browser/renderer_host/pepper/browser_ppapi_host_impl.h" |
#include "content/browser/renderer_host/pepper/ssl_context_helper.h" |
#include "content/common/content_export.h" |
#include "net/base/address_list.h" |
@@ -47,7 +48,8 @@ class ContentBrowserPepperHostFactory; |
class ResourceContext; |
class CONTENT_EXPORT PepperTCPSocketMessageFilter |
- : public ppapi::host::ResourceMessageFilter { |
+ : public ppapi::host::ResourceMessageFilter, |
+ public BrowserPpapiHostImpl::InstanceObserver { |
public: |
PepperTCPSocketMessageFilter(ContentBrowserPepperHostFactory* factory, |
BrowserPpapiHostImpl* host, |
@@ -78,6 +80,9 @@ class CONTENT_EXPORT PepperTCPSocketMessageFilter |
const IPC::Message& msg, |
ppapi::host::HostMessageContext* context) override; |
+ // BrowserPpapiHostImpl::InstanceObserver overrides. |
+ void OnThrottleStateChanged(bool is_throttled) override; |
+ |
int32_t OnMsgBind(const ppapi::host::HostMessageContext* context, |
const PP_NetAddress_Private& net_addr); |
int32_t OnMsgConnect(const ppapi::host::HostMessageContext* context, |
@@ -176,7 +181,7 @@ class CONTENT_EXPORT PepperTCPSocketMessageFilter |
// The following fields are used only on the IO thread. |
// Non-owning ptr. |
- ppapi::host::PpapiHost* ppapi_host_; |
+ BrowserPpapiHostImpl* host_; |
// Non-owning ptr. |
ContentBrowserPepperHostFactory* factory_; |
PP_Instance instance_; |
@@ -226,6 +231,12 @@ class CONTENT_EXPORT PepperTCPSocketMessageFilter |
scoped_ptr<net::TCPSocket> accepted_socket_; |
net::IPEndPoint accepted_address_; |
+ // If the plugin is throttled, we defer completing socket reads until |
+ // the plugin is unthrottled. |
+ bool pending_read_on_unthrottle_; |
+ ppapi::host::ReplyMessageContext pending_read_reply_message_context_; |
+ int pending_read_net_result_; |
+ |
DISALLOW_COPY_AND_ASSIGN(PepperTCPSocketMessageFilter); |
}; |