| Index: webkit/plugins/ppapi/ppb_flash_impl.cc
|
| diff --git a/webkit/plugins/ppapi/ppb_flash_impl.cc b/webkit/plugins/ppapi/ppb_flash_impl.cc
|
| index 2a922c0eb37541ab3209bca5228731905c566755..4c439b0f6f070ac1e796496facb8f6f44d71880d 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
|
|
|