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

Unified Diff: webkit/plugins/ppapi/ppb_websocket_impl.cc

Issue 9015013: Convert callers to use the new TrackedCallback. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Foo Created 8 years, 11 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
« no previous file with comments | « webkit/plugins/ppapi/ppb_websocket_impl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/plugins/ppapi/ppb_websocket_impl.cc
diff --git a/webkit/plugins/ppapi/ppb_websocket_impl.cc b/webkit/plugins/ppapi/ppb_websocket_impl.cc
index 1282b131cee410c4052c8f84c7aa02f761fe0341..ef2d6ddb396b8b957bee497dca137b817622893b 100644
--- a/webkit/plugins/ppapi/ppb_websocket_impl.cc
+++ b/webkit/plugins/ppapi/ppb_websocket_impl.cc
@@ -33,6 +33,7 @@ using ppapi::ArrayBufferVar;
using ppapi::PpapiGlobals;
using ppapi::StringVar;
using ppapi::thunk::PPB_WebSocket_API;
+using ppapi::TrackedCallback;
using ppapi::VarTracker;
using WebKit::WebData;
using WebKit::WebDocument;
@@ -82,15 +83,9 @@ PPB_WebSocket_Impl::PPB_WebSocket_Impl(PP_Instance instance)
wait_for_receive_(false),
close_code_(0),
close_was_clean_(PP_FALSE),
+ empty_string_(new StringVar("", 0)),
buffered_amount_(0),
buffered_amount_after_close_(0) {
- connect_callback_.func = NULL;
- connect_callback_.user_data = NULL;
- receive_callback_.func = NULL;
- receive_callback_.user_data = NULL;
- close_callback_.func = NULL;
- close_callback_.user_data = NULL;
- empty_string_ = new StringVar("", 0);
}
PPB_WebSocket_Impl::~PPB_WebSocket_Impl() {
@@ -209,7 +204,7 @@ int32_t PPB_WebSocket_Impl::Connect(PP_Var url,
state_ = PP_WEBSOCKETREADYSTATE_CONNECTING_DEV;
// Install callback.
- connect_callback_ = callback;
+ connect_callback_ = new TrackedCallback(this, callback);
return PP_OK_COMPLETIONPENDING;
}
@@ -250,12 +245,14 @@ int32_t PPB_WebSocket_Impl::Close(uint16_t code,
return PP_ERROR_BLOCKS_MAIN_THREAD;
// Install |callback|.
- close_callback_ = callback;
+ close_callback_ = new TrackedCallback(this, callback);
// Abort ongoing connect.
if (state_ == PP_WEBSOCKETREADYSTATE_CONNECTING_DEV) {
state_ = PP_WEBSOCKETREADYSTATE_CLOSING_DEV;
- PP_RunAndClearCompletionCallback(&connect_callback_, PP_ERROR_ABORTED);
+ // Need to do a "Post" to avoid reentering the plugin.
+ connect_callback_->PostAbort();
+ connect_callback_ = NULL;
websocket_->fail(
"WebSocket was closed before the connection was established.");
return PP_OK_COMPLETIONPENDING;
@@ -265,7 +262,10 @@ int32_t PPB_WebSocket_Impl::Close(uint16_t code,
if (wait_for_receive_) {
wait_for_receive_ = false;
receive_callback_var_ = NULL;
- PP_RunAndClearCompletionCallback(&receive_callback_, PP_ERROR_ABORTED);
+
+ // Need to do a "Post" to avoid reentering the plugin.
+ receive_callback_->PostAbort();
+ receive_callback_ = NULL;
}
// Close connection.
@@ -305,7 +305,7 @@ int32_t PPB_WebSocket_Impl::ReceiveMessage(PP_Var* message,
// Or retain |message| as buffer to store and install |callback|.
wait_for_receive_ = true;
receive_callback_var_ = message;
- receive_callback_ = callback;
+ receive_callback_ = new TrackedCallback(this, callback);
return PP_OK_COMPLETIONPENDING;
}
@@ -422,7 +422,7 @@ PP_Var PPB_WebSocket_Impl::GetURL() {
void PPB_WebSocket_Impl::didConnect() {
DCHECK_EQ(PP_WEBSOCKETREADYSTATE_CONNECTING_DEV, state_);
state_ = PP_WEBSOCKETREADYSTATE_OPEN_DEV;
- PP_RunAndClearCompletionCallback(&connect_callback_, PP_OK);
+ TrackedCallback::ClearAndRun(&connect_callback_, PP_OK);
}
void PPB_WebSocket_Impl::didReceiveMessage(const WebString& message) {
@@ -438,7 +438,7 @@ void PPB_WebSocket_Impl::didReceiveMessage(const WebString& message) {
if (!wait_for_receive_)
return;
- PP_RunAndClearCompletionCallback(&receive_callback_, DoReceive());
+ TrackedCallback::ClearAndRun(&receive_callback_, DoReceive());
}
void PPB_WebSocket_Impl::didReceiveBinaryData(const WebData& binaryData) {
@@ -457,7 +457,7 @@ void PPB_WebSocket_Impl::didReceiveBinaryData(const WebData& binaryData) {
if (!wait_for_receive_)
return;
- PP_RunAndClearCompletionCallback(&receive_callback_, DoReceive());
+ TrackedCallback::ClearAndRun(&receive_callback_, DoReceive());
}
void PPB_WebSocket_Impl::didReceiveMessageError() {
@@ -476,7 +476,7 @@ void PPB_WebSocket_Impl::didReceiveMessageError() {
// We must invoke the callback with error code here.
wait_for_receive_ = false;
receive_callback_var_ = NULL;
- PP_RunAndClearCompletionCallback(&receive_callback_, PP_ERROR_FAILED);
+ TrackedCallback::ClearAndRun(&receive_callback_, PP_ERROR_FAILED);
}
void PPB_WebSocket_Impl::didUpdateBufferedAmount(
@@ -515,16 +515,16 @@ void PPB_WebSocket_Impl::didClose(unsigned long unhandled_buffered_amount,
state_ = PP_WEBSOCKETREADYSTATE_CLOSED_DEV;
if (state == PP_WEBSOCKETREADYSTATE_CONNECTING_DEV)
- PP_RunAndClearCompletionCallback(&connect_callback_, PP_ERROR_FAILED);
+ TrackedCallback::ClearAndRun(&connect_callback_, PP_ERROR_FAILED);
if (wait_for_receive_) {
wait_for_receive_ = false;
receive_callback_var_ = NULL;
- PP_RunAndClearCompletionCallback(&receive_callback_, PP_ERROR_ABORTED);
+ TrackedCallback::ClearAndAbort(&receive_callback_);
}
if (state == PP_WEBSOCKETREADYSTATE_CLOSING_DEV)
- PP_RunAndClearCompletionCallback(&close_callback_, PP_OK);
+ TrackedCallback::ClearAndRun(&close_callback_, PP_OK);
// Disconnect.
if (websocket_.get())
« no previous file with comments | « webkit/plugins/ppapi/ppb_websocket_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698