Index: ppapi/shared_impl/private/tcp_socket_private_impl.cc |
diff --git a/ppapi/shared_impl/private/tcp_socket_private_impl.cc b/ppapi/shared_impl/private/tcp_socket_private_impl.cc |
index a23066c44fbfb05f7859f45ed6761a6e45cdc490..c4a9a17bf829c05db6c119b9e375c435a80cd3c1 100644 |
--- a/ppapi/shared_impl/private/tcp_socket_private_impl.cc |
+++ b/ppapi/shared_impl/private/tcp_socket_private_impl.cc |
@@ -50,17 +50,15 @@ TCPSocketPrivateImpl::AsPPB_TCPSocket_Private_API() { |
int32_t TCPSocketPrivateImpl::Connect(const char* host, |
uint16_t port, |
- PP_CompletionCallback callback) { |
+ scoped_refptr<TrackedCallback> callback) { |
if (!host) |
return PP_ERROR_BADARGUMENT; |
- if (!callback.func) |
- return PP_ERROR_BLOCKS_MAIN_THREAD; |
if (connection_state_ != BEFORE_CONNECT) |
return PP_ERROR_FAILED; |
if (TrackedCallback::IsPending(connect_callback_)) |
return PP_ERROR_INPROGRESS; // Can only have one pending request. |
- connect_callback_ = new TrackedCallback(this, callback); |
+ connect_callback_ = callback; |
// Send the request, the browser will call us back via ConnectACK. |
SendConnect(host, port); |
return PP_OK_COMPLETIONPENDING; |
@@ -68,17 +66,15 @@ int32_t TCPSocketPrivateImpl::Connect(const char* host, |
int32_t TCPSocketPrivateImpl::ConnectWithNetAddress( |
const PP_NetAddress_Private* addr, |
- PP_CompletionCallback callback) { |
+ scoped_refptr<TrackedCallback> callback) { |
if (!addr) |
return PP_ERROR_BADARGUMENT; |
- if (!callback.func) |
- return PP_ERROR_BLOCKS_MAIN_THREAD; |
if (connection_state_ != BEFORE_CONNECT) |
return PP_ERROR_FAILED; |
if (TrackedCallback::IsPending(connect_callback_)) |
return PP_ERROR_INPROGRESS; // Can only have one pending request. |
- connect_callback_ = new TrackedCallback(this, callback); |
+ connect_callback_ = callback; |
// Send the request, the browser will call us back via ConnectACK. |
SendConnectWithNetAddress(*addr); |
return PP_OK_COMPLETIONPENDING; |
@@ -102,13 +98,12 @@ PP_Bool TCPSocketPrivateImpl::GetRemoteAddress( |
return PP_TRUE; |
} |
-int32_t TCPSocketPrivateImpl::SSLHandshake(const char* server_name, |
- uint16_t server_port, |
- PP_CompletionCallback callback) { |
+int32_t TCPSocketPrivateImpl::SSLHandshake( |
+ const char* server_name, |
+ uint16_t server_port, |
+ scoped_refptr<TrackedCallback> callback) { |
if (!server_name) |
return PP_ERROR_BADARGUMENT; |
- if (!callback.func) |
- return PP_ERROR_BLOCKS_MAIN_THREAD; |
if (connection_state_ != CONNECTED) |
return PP_ERROR_FAILED; |
@@ -117,7 +112,7 @@ int32_t TCPSocketPrivateImpl::SSLHandshake(const char* server_name, |
TrackedCallback::IsPending(write_callback_)) |
return PP_ERROR_INPROGRESS; |
- ssl_handshake_callback_ = new TrackedCallback(this, callback); |
+ ssl_handshake_callback_ = callback; |
// Send the request, the browser will call us back via SSLHandshakeACK. |
SendSSLHandshake(server_name, server_port, trusted_certificates_, |
@@ -164,22 +159,18 @@ PP_Bool TCPSocketPrivateImpl::AddChainBuildingCertificate( |
int32_t TCPSocketPrivateImpl::Read(char* buffer, |
int32_t bytes_to_read, |
- PP_CompletionCallback callback) { |
+ scoped_refptr<TrackedCallback> callback) { |
if (!buffer || bytes_to_read <= 0) |
return PP_ERROR_BADARGUMENT; |
- if (!callback.func) |
- return PP_ERROR_BLOCKS_MAIN_THREAD; |
if (!IsConnected()) |
return PP_ERROR_FAILED; |
if (TrackedCallback::IsPending(read_callback_) || |
TrackedCallback::IsPending(ssl_handshake_callback_)) |
return PP_ERROR_INPROGRESS; |
- // TODO(dmichael): use some other strategy for determining if an |
- // operation is in progress |
read_buffer_ = buffer; |
bytes_to_read_ = std::min(bytes_to_read, kMaxReadSize); |
- read_callback_ = new TrackedCallback(this, callback); |
+ read_callback_ = callback; |
// Send the request, the browser will call us back via ReadACK. |
SendRead(bytes_to_read_); |
@@ -188,11 +179,9 @@ int32_t TCPSocketPrivateImpl::Read(char* buffer, |
int32_t TCPSocketPrivateImpl::Write(const char* buffer, |
int32_t bytes_to_write, |
- PP_CompletionCallback callback) { |
+ scoped_refptr<TrackedCallback> callback) { |
if (!buffer || bytes_to_write <= 0) |
return PP_ERROR_BADARGUMENT; |
- if (!callback.func) |
- return PP_ERROR_BLOCKS_MAIN_THREAD; |
if (!IsConnected()) |
return PP_ERROR_FAILED; |
@@ -203,7 +192,7 @@ int32_t TCPSocketPrivateImpl::Write(const char* buffer, |
if (bytes_to_write > kMaxWriteSize) |
bytes_to_write = kMaxWriteSize; |
- write_callback_ = new TrackedCallback(this, callback); |
+ write_callback_ = callback; |
// Send the request, the browser will call us back via WriteACK. |
SendWrite(std::string(buffer, bytes_to_write)); |