| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2008 The Native Client Authors. All rights reserved. | 2 * Copyright 2008 The Native Client Authors. All rights reserved. |
| 3 * Use of this source code is governed by a BSD-style license that can | 3 * Use of this source code is governed by a BSD-style license that can |
| 4 * be found in the LICENSE file. | 4 * be found in the LICENSE file. |
| 5 */ | 5 */ |
| 6 | 6 |
| 7 | 7 |
| 8 #include "native_client/src/trusted/plugin/npapi/plugin_npapi.h" | 8 #include "native_client/src/trusted/plugin/npapi/plugin_npapi.h" |
| 9 | 9 |
| 10 #include <stdio.h> | 10 #include <stdio.h> |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 47 plugin::PluginNpapi::kHrefIdent = NPN_GetStringIdentifier("href"); | 47 plugin::PluginNpapi::kHrefIdent = NPN_GetStringIdentifier("href"); |
| 48 plugin::PluginNpapi::kLengthIdent = NPN_GetStringIdentifier("length"); | 48 plugin::PluginNpapi::kLengthIdent = NPN_GetStringIdentifier("length"); |
| 49 plugin::PluginNpapi::kLocationIdent = NPN_GetStringIdentifier("location"); | 49 plugin::PluginNpapi::kLocationIdent = NPN_GetStringIdentifier("location"); |
| 50 identifiers_initialized = true; | 50 identifiers_initialized = true; |
| 51 } | 51 } |
| 52 | 52 |
| 53 // TODO(polina): is there a way to share this with PluginPPAPI? | 53 // TODO(polina): is there a way to share this with PluginPPAPI? |
| 54 bool UrlAsNaClDesc(void* obj, plugin::SrpcParams* params) { | 54 bool UrlAsNaClDesc(void* obj, plugin::SrpcParams* params) { |
| 55 NaClSrpcArg** ins = params->ins(); | 55 NaClSrpcArg** ins = params->ins(); |
| 56 PLUGIN_PRINTF(("UrlAsNaClDesc (obj=%p, url=%s, callback=%p)\n", | 56 PLUGIN_PRINTF(("UrlAsNaClDesc (obj=%p, url=%s, callback=%p)\n", |
| 57 obj, ins[0]->u.sval.str, ins[1]->u.oval)); | 57 obj, ins[0]->arrays.str, ins[1]->arrays.oval)); |
| 58 | 58 |
| 59 plugin::Plugin* plugin = reinterpret_cast<plugin::Plugin*>(obj); | 59 plugin::Plugin* plugin = reinterpret_cast<plugin::Plugin*>(obj); |
| 60 const char* url = ins[0]->u.sval.str; | 60 const char* url = ins[0]->arrays.str; |
| 61 NPObject* callback_obj = reinterpret_cast<NPObject*>(ins[1]->u.oval); | 61 NPObject* callback_obj = reinterpret_cast<NPObject*>(ins[1]->arrays.oval); |
| 62 | 62 |
| 63 plugin::UrlAsNaClDescNotify* callback = | 63 plugin::UrlAsNaClDescNotify* callback = |
| 64 new(std::nothrow) plugin::UrlAsNaClDescNotify(plugin, url, callback_obj); | 64 new(std::nothrow) plugin::UrlAsNaClDescNotify(plugin, url, callback_obj); |
| 65 if (NULL == callback) { | 65 if (NULL == callback) { |
| 66 params->set_exception_string("out of memory in __urlAsNaClDesc"); | 66 params->set_exception_string("out of memory in __urlAsNaClDesc"); |
| 67 return false; | 67 return false; |
| 68 } | 68 } |
| 69 if (!callback->StartDownload()) { | 69 if (!callback->StartDownload()) { |
| 70 PLUGIN_PRINTF(("UrlAsNaClDesc (failed to load url to local file)\n")); | 70 PLUGIN_PRINTF(("UrlAsNaClDesc (failed to load url to local file)\n")); |
| 71 params->set_exception_string("specified url could not be loaded"); | 71 params->set_exception_string("specified url could not be loaded"); |
| (...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 552 if (plugin->receive_thread_running_) { | 552 if (plugin->receive_thread_running_) { |
| 553 params->set_exception_string("A callback has already been registered"); | 553 params->set_exception_string("A callback has already been registered"); |
| 554 return false; | 554 return false; |
| 555 } | 555 } |
| 556 ReceiveThreadArgs* args = new(std::nothrow) ReceiveThreadArgs; | 556 ReceiveThreadArgs* args = new(std::nothrow) ReceiveThreadArgs; |
| 557 if (args == NULL) { | 557 if (args == NULL) { |
| 558 params->set_exception_string("Memory allocation failed"); | 558 params->set_exception_string("Memory allocation failed"); |
| 559 return false; | 559 return false; |
| 560 } | 560 } |
| 561 args->plugin = InstanceIdentifierToNPP(plugin->instance_id()); | 561 args->plugin = InstanceIdentifierToNPP(plugin->instance_id()); |
| 562 args->callback = reinterpret_cast<NPObject*>(params->ins()[0]->u.oval); | 562 args->callback = reinterpret_cast<NPObject*>(params->ins()[0]->arrays.oval); |
| 563 NPN_RetainObject(args->callback); | 563 NPN_RetainObject(args->callback); |
| 564 nacl::DescWrapper* socket = plugin->service_runtime_->async_receive_desc(); | 564 nacl::DescWrapper* socket = plugin->service_runtime_->async_receive_desc(); |
| 565 NaClDescRef(socket->desc()); | 565 NaClDescRef(socket->desc()); |
| 566 args->socket = plugin->wrapper_factory()->MakeGeneric(socket->desc()); | 566 args->socket = plugin->wrapper_factory()->MakeGeneric(socket->desc()); |
| 567 | 567 |
| 568 // It would be nice if the thread interface did not require us to | 568 // It would be nice if the thread interface did not require us to |
| 569 // specify a stack size. This is fairly arbitrary. | 569 // specify a stack size. This is fairly arbitrary. |
| 570 size_t stack_size = 128 << 10; | 570 size_t stack_size = 128 << 10; |
| 571 NaClThreadCreateJoinable(&plugin->receive_thread_, AsyncReceiveThread, args, | 571 NaClThreadCreateJoinable(&plugin->receive_thread_, AsyncReceiveThread, args, |
| 572 stack_size); | 572 stack_size); |
| 573 plugin->receive_thread_running_ = true; | 573 plugin->receive_thread_running_ = true; |
| 574 return true; | 574 return true; |
| 575 } | 575 } |
| 576 | 576 |
| 577 } // namespace plugin | 577 } // namespace plugin |
| OLD | NEW |