diff options
author | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-23 22:10:57 +0000 |
---|---|---|
committer | viettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-23 22:10:57 +0000 |
commit | 9d9f1bb2aa1bd6db5e04e8ebd586f924d2532964 (patch) | |
tree | cf4e64950dfe2832ff011fdf2daa3e567e159b0d /webkit/plugins/ppapi/ppb_flash_impl.cc | |
parent | 7b978a7cf153257e6020638907389be85f054d8c (diff) | |
download | chromium_src-9d9f1bb2aa1bd6db5e04e8ebd586f924d2532964.zip chromium_src-9d9f1bb2aa1bd6db5e04e8ebd586f924d2532964.tar.gz chromium_src-9d9f1bb2aa1bd6db5e04e8ebd586f924d2532964.tar.bz2 |
PPB_Flash cleanup part 1: move the net connector stuff to its own files.
BUG=none
TEST=builds
Review URL: http://codereview.chromium.org/6578007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75800 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/plugins/ppapi/ppb_flash_impl.cc')
-rw-r--r-- | webkit/plugins/ppapi/ppb_flash_impl.cc | 194 |
1 files changed, 3 insertions, 191 deletions
diff --git a/webkit/plugins/ppapi/ppb_flash_impl.cc b/webkit/plugins/ppapi/ppb_flash_impl.cc index 2a922c0..4c439b0 100644 --- a/webkit/plugins/ppapi/ppb_flash_impl.cc +++ b/webkit/plugins/ppapi/ppb_flash_impl.cc @@ -6,9 +6,10 @@ #include <string.h> +#include <string> + #include "base/file_path.h" #include "base/message_loop.h" -#include "base/stringprintf.h" #include "base/utf_string_conversions.h" #include "googleurl/src/gurl.h" #include "ppapi/c/dev/pp_file_info_dev.h" @@ -20,13 +21,12 @@ #include "webkit/plugins/ppapi/plugin_delegate.h" #include "webkit/plugins/ppapi/plugin_module.h" #include "webkit/plugins/ppapi/ppapi_plugin_instance.h" +#include "webkit/plugins/ppapi/resource_tracker.h" #include "webkit/plugins/ppapi/var.h" namespace webkit { namespace ppapi { -// PPB_Flash_Impl -------------------------------------------------------------- - namespace { void SetInstanceAlwaysOnTop(PP_Instance pp_instance, PP_Bool on_top) { @@ -252,193 +252,5 @@ const PPB_Flash* PPB_Flash_Impl::GetInterface() { return &ppb_flash; } -// PPB_Flash_NetConnector_Impl ------------------------------------------------- - -namespace { - -PP_Resource Create(PP_Instance instance_id) { - PluginInstance* instance = ResourceTracker::Get()->GetInstance(instance_id); - if (!instance) - return 0; - - scoped_refptr<PPB_Flash_NetConnector_Impl> connector( - new PPB_Flash_NetConnector_Impl(instance)); - return connector->GetReference(); -} - -PP_Bool IsFlashNetConnector(PP_Resource resource) { - return BoolToPPBool(!!Resource::GetAs<PPB_Flash_NetConnector_Impl>(resource)); -} - -int32_t ConnectTcp(PP_Resource connector_id, - const char* host, - uint16_t port, - PP_FileHandle* socket_out, - PP_Flash_NetAddress* local_addr_out, - PP_Flash_NetAddress* remote_addr_out, - PP_CompletionCallback callback) { - scoped_refptr<PPB_Flash_NetConnector_Impl> connector( - Resource::GetAs<PPB_Flash_NetConnector_Impl>(connector_id)); - if (!connector.get()) - return PP_ERROR_BADRESOURCE; - - return connector->ConnectTcp( - host, port, socket_out, local_addr_out, remote_addr_out, callback); -} - -int32_t ConnectTcpAddress(PP_Resource connector_id, - const PP_Flash_NetAddress* addr, - PP_FileHandle* socket_out, - PP_Flash_NetAddress* local_addr_out, - PP_Flash_NetAddress* remote_addr_out, - PP_CompletionCallback callback) { - scoped_refptr<PPB_Flash_NetConnector_Impl> connector( - Resource::GetAs<PPB_Flash_NetConnector_Impl>(connector_id)); - if (!connector.get()) - return PP_ERROR_BADRESOURCE; - - return connector->ConnectTcpAddress( - addr, socket_out, local_addr_out, remote_addr_out, callback); -} - -const PPB_Flash_NetConnector ppb_flash_netconnector = { - &Create, - &IsFlashNetConnector, - &ConnectTcp, - &ConnectTcpAddress, -}; - -} // namespace - -PPB_Flash_NetConnector_Impl::PPB_Flash_NetConnector_Impl( - PluginInstance* instance) - : Resource(instance) { -} - -PPB_Flash_NetConnector_Impl::~PPB_Flash_NetConnector_Impl() { -} - -// static -const PPB_Flash_NetConnector* PPB_Flash_NetConnector_Impl::GetInterface() { - return &ppb_flash_netconnector; -} - -PPB_Flash_NetConnector_Impl* - PPB_Flash_NetConnector_Impl::AsPPB_Flash_NetConnector_Impl() { - return this; -} - -int32_t PPB_Flash_NetConnector_Impl::ConnectTcp( - const char* host, - uint16_t port, - PP_FileHandle* socket_out, - PP_Flash_NetAddress* local_addr_out, - PP_Flash_NetAddress* remote_addr_out, - PP_CompletionCallback callback) { - // |socket_out| is not optional. - if (!socket_out) - return PP_ERROR_BADARGUMENT; - - if (!callback.func) { - NOTIMPLEMENTED(); - return PP_ERROR_BADARGUMENT; - } - - if (callback_.get() && !callback_->completed()) - return PP_ERROR_INPROGRESS; - - PP_Resource resource_id = GetReferenceNoAddRef(); - if (!resource_id) { - NOTREACHED(); - return PP_ERROR_FAILED; - } - - int32_t rv = instance()->delegate()->ConnectTcp(this, host, port); - if (rv == PP_ERROR_WOULDBLOCK) { - // Record callback and output buffers. - callback_ = new TrackedCompletionCallback( - instance()->module()->GetCallbackTracker(), resource_id, callback); - socket_out_ = socket_out; - local_addr_out_ = local_addr_out; - remote_addr_out_ = remote_addr_out; - } else { - // This should never be completed synchronously successfully. - DCHECK_NE(rv, PP_OK); - } - return rv; -} - -int32_t PPB_Flash_NetConnector_Impl::ConnectTcpAddress( - const PP_Flash_NetAddress* addr, - PP_FileHandle* socket_out, - PP_Flash_NetAddress* local_addr_out, - PP_Flash_NetAddress* remote_addr_out, - PP_CompletionCallback callback) { - // |socket_out| is not optional. - if (!socket_out) - return PP_ERROR_BADARGUMENT; - - if (!callback.func) { - NOTIMPLEMENTED(); - return PP_ERROR_BADARGUMENT; - } - - if (callback_.get() && !callback_->completed()) - return PP_ERROR_INPROGRESS; - - PP_Resource resource_id = GetReferenceNoAddRef(); - if (!resource_id) { - NOTREACHED(); - return PP_ERROR_FAILED; - } - - int32_t rv = instance()->delegate()->ConnectTcpAddress(this, addr); - if (rv == PP_ERROR_WOULDBLOCK) { - // Record callback and output buffers. - callback_ = new TrackedCompletionCallback( - instance()->module()->GetCallbackTracker(), resource_id, callback); - socket_out_ = socket_out; - local_addr_out_ = local_addr_out; - remote_addr_out_ = remote_addr_out; - } else { - // This should never be completed synchronously successfully. - DCHECK_NE(rv, PP_OK); - } - return rv; -} - -void PPB_Flash_NetConnector_Impl::CompleteConnectTcp( - PP_FileHandle socket, - const PP_Flash_NetAddress& local_addr, - const PP_Flash_NetAddress& remote_addr) { - int32_t rv = PP_ERROR_ABORTED; - if (!callback_->aborted()) { - CHECK(!callback_->completed()); - - // Write output data. - *socket_out_ = socket; - if (socket != PP_kInvalidFileHandle) { - if (local_addr_out_) - *local_addr_out_ = local_addr; - if (remote_addr_out_) - *remote_addr_out_ = remote_addr; - rv = PP_OK; - } else { - rv = PP_ERROR_FAILED; - } - } - - // Theoretically, the plugin should be allowed to try another |ConnectTcp()| - // from the callback. - scoped_refptr<TrackedCompletionCallback> callback; - callback.swap(callback_); - // Wipe everything else out for safety. - socket_out_ = NULL; - local_addr_out_ = NULL; - remote_addr_out_ = NULL; - - callback->Run(rv); // Will complete abortively if necessary. -} - } // namespace ppapi } // namespace webkit |