| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 * Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 * Use of this source code is governed by a BSD-style license that can be | 3 * Use of this source code is governed by a BSD-style license that can be |
| 4 * found in the LICENSE file. | 4 * found in the LICENSE file. |
| 5 */ | 5 */ |
| 6 | 6 |
| 7 #define NACL_LOG_MODULE_NAME "Plugin_ServiceRuntime" | 7 #define NACL_LOG_MODULE_NAME "Plugin_ServiceRuntime" |
| 8 | 8 |
| 9 #include "ppapi/native_client/src/trusted/plugin/service_runtime.h" | 9 #include "ppapi/native_client/src/trusted/plugin/service_runtime.h" |
| 10 | 10 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 26 #include "native_client/src/shared/platform/nacl_sync.h" | 26 #include "native_client/src/shared/platform/nacl_sync.h" |
| 27 #include "native_client/src/shared/platform/nacl_sync_checked.h" | 27 #include "native_client/src/shared/platform/nacl_sync_checked.h" |
| 28 #include "native_client/src/shared/platform/nacl_sync_raii.h" | 28 #include "native_client/src/shared/platform/nacl_sync_raii.h" |
| 29 #include "native_client/src/shared/platform/scoped_ptr_refcount.h" | 29 #include "native_client/src/shared/platform/scoped_ptr_refcount.h" |
| 30 #include "native_client/src/trusted/desc/nacl_desc_imc.h" | 30 #include "native_client/src/trusted/desc/nacl_desc_imc.h" |
| 31 // remove when we no longer need to cast the DescWrapper below. | 31 // remove when we no longer need to cast the DescWrapper below. |
| 32 #include "native_client/src/trusted/desc/nacl_desc_io.h" | 32 #include "native_client/src/trusted/desc/nacl_desc_io.h" |
| 33 #include "native_client/src/trusted/desc/nrd_xfer.h" | 33 #include "native_client/src/trusted/desc/nrd_xfer.h" |
| 34 #include "native_client/src/trusted/nonnacl_util/sel_ldr_launcher.h" | 34 #include "native_client/src/trusted/nonnacl_util/sel_ldr_launcher.h" |
| 35 | 35 |
| 36 // This is here due to a Windows API collision; plugin.h through | |
| 37 // file_downloader.h transitively includes Instance.h which defines a | |
| 38 // PostMessage method, so this undef must appear before any of those. | |
| 39 #ifdef PostMessage | |
| 40 #undef PostMessage | |
| 41 #endif | |
| 42 #include "native_client/src/public/imc_types.h" | 36 #include "native_client/src/public/imc_types.h" |
| 43 #include "native_client/src/trusted/service_runtime/nacl_error_code.h" | 37 #include "native_client/src/trusted/service_runtime/nacl_error_code.h" |
| 44 #include "native_client/src/trusted/validator/nacl_file_info.h" | 38 #include "native_client/src/trusted/validator/nacl_file_info.h" |
| 45 | 39 |
| 46 #include "ppapi/c/pp_errors.h" | 40 #include "ppapi/c/pp_errors.h" |
| 47 #include "ppapi/cpp/core.h" | 41 #include "ppapi/cpp/core.h" |
| 48 #include "ppapi/cpp/completion_callback.h" | 42 #include "ppapi/cpp/completion_callback.h" |
| 49 | 43 |
| 50 #include "ppapi/native_client/src/trusted/plugin/plugin.h" | 44 #include "ppapi/native_client/src/trusted/plugin/plugin.h" |
| 51 #include "ppapi/native_client/src/trusted/plugin/plugin_error.h" | 45 #include "ppapi/native_client/src/trusted/plugin/plugin_error.h" |
| 52 #include "ppapi/native_client/src/trusted/plugin/pnacl_resources.h" | 46 #include "ppapi/native_client/src/trusted/plugin/pnacl_resources.h" |
| 53 #include "ppapi/native_client/src/trusted/plugin/sel_ldr_launcher_chrome.h" | 47 #include "ppapi/native_client/src/trusted/plugin/sel_ldr_launcher_chrome.h" |
| 54 #include "ppapi/native_client/src/trusted/plugin/srpc_client.h" | 48 #include "ppapi/native_client/src/trusted/plugin/srpc_client.h" |
| 49 #include "ppapi/native_client/src/trusted/plugin/utility.h" |
| 55 #include "ppapi/native_client/src/trusted/weak_ref/call_on_main_thread.h" | 50 #include "ppapi/native_client/src/trusted/weak_ref/call_on_main_thread.h" |
| 56 | 51 |
| 57 namespace plugin { | 52 namespace plugin { |
| 58 | 53 |
| 59 class OpenManifestEntryAsyncCallback { | 54 class OpenManifestEntryAsyncCallback { |
| 60 public: | 55 public: |
| 61 OpenManifestEntryAsyncCallback(PP_OpenResourceCompletionCallback callback, | 56 OpenManifestEntryAsyncCallback(PP_OpenResourceCompletionCallback callback, |
| 62 void* callback_user_data) | 57 void* callback_user_data) |
| 63 : callback_(callback), callback_user_data_(callback_user_data) { | 58 : callback_(callback), callback_user_data_(callback_user_data) { |
| 64 } | 59 } |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 | 214 |
| 220 void PluginReverseInterface::ShutDown() { | 215 void PluginReverseInterface::ShutDown() { |
| 221 NaClLog(4, "PluginReverseInterface::Shutdown: entered\n"); | 216 NaClLog(4, "PluginReverseInterface::Shutdown: entered\n"); |
| 222 nacl::MutexLocker take(&mu_); | 217 nacl::MutexLocker take(&mu_); |
| 223 shutting_down_ = true; | 218 shutting_down_ = true; |
| 224 NaClXCondVarBroadcast(&cv_); | 219 NaClXCondVarBroadcast(&cv_); |
| 225 NaClLog(4, "PluginReverseInterface::Shutdown: broadcasted, exiting\n"); | 220 NaClLog(4, "PluginReverseInterface::Shutdown: broadcasted, exiting\n"); |
| 226 } | 221 } |
| 227 | 222 |
| 228 void PluginReverseInterface::DoPostMessage(nacl::string message) { | 223 void PluginReverseInterface::DoPostMessage(nacl::string message) { |
| 229 PostMessageResource* continuation = new PostMessageResource(message); | 224 std::string full_message = std::string("DEBUG_POSTMESSAGE:") + message; |
| 230 CHECK(continuation != NULL); | 225 GetNaClInterface()->PostMessageToJavaScript(plugin_->pp_instance(), |
| 231 NaClLog(4, "PluginReverseInterface::DoPostMessage(%s)\n", message.c_str()); | 226 full_message.c_str()); |
| 232 plugin::WeakRefCallOnMainThread( | |
| 233 anchor_, | |
| 234 0, /* delay in ms */ | |
| 235 this, | |
| 236 &plugin::PluginReverseInterface::PostMessage_MainThreadContinuation, | |
| 237 continuation); | |
| 238 } | 227 } |
| 239 | 228 |
| 240 void PluginReverseInterface::StartupInitializationComplete() { | 229 void PluginReverseInterface::StartupInitializationComplete() { |
| 241 NaClLog(4, "PluginReverseInterface::StartupInitializationComplete\n"); | 230 NaClLog(4, "PluginReverseInterface::StartupInitializationComplete\n"); |
| 242 if (init_done_cb_.pp_completion_callback().func != NULL) { | 231 if (init_done_cb_.pp_completion_callback().func != NULL) { |
| 243 NaClLog(4, | 232 NaClLog(4, |
| 244 "PluginReverseInterface::StartupInitializationComplete:" | 233 "PluginReverseInterface::StartupInitializationComplete:" |
| 245 " invoking CB\n"); | 234 " invoking CB\n"); |
| 246 pp::Module::Get()->core()->CallOnMainThread(0, init_done_cb_, PP_OK); | 235 pp::Module::Get()->core()->CallOnMainThread(0, init_done_cb_, PP_OK); |
| 247 } else { | 236 } else { |
| 248 NaClLog(1, | 237 NaClLog(1, |
| 249 "PluginReverseInterface::StartupInitializationComplete:" | 238 "PluginReverseInterface::StartupInitializationComplete:" |
| 250 " init_done_cb_ not valid, skipping.\n"); | 239 " init_done_cb_ not valid, skipping.\n"); |
| 251 } | 240 } |
| 252 } | 241 } |
| 253 | 242 |
| 254 void PluginReverseInterface::PostMessage_MainThreadContinuation( | |
| 255 PostMessageResource* p, | |
| 256 int32_t err) { | |
| 257 UNREFERENCED_PARAMETER(err); | |
| 258 NaClLog(4, | |
| 259 "PluginReverseInterface::PostMessage_MainThreadContinuation(%s)\n", | |
| 260 p->message.c_str()); | |
| 261 plugin_->PostMessage(std::string("DEBUG_POSTMESSAGE:") + p->message); | |
| 262 } | |
| 263 | |
| 264 // TODO(bsy): OpenManifestEntry should use the manifest to ResolveKey | 243 // TODO(bsy): OpenManifestEntry should use the manifest to ResolveKey |
| 265 // and invoke StreamAsFile with a completion callback that invokes | 244 // and invoke StreamAsFile with a completion callback that invokes |
| 266 // GetPOSIXFileDesc. | 245 // GetPOSIXFileDesc. |
| 267 bool PluginReverseInterface::OpenManifestEntry(nacl::string url_key, | 246 bool PluginReverseInterface::OpenManifestEntry(nacl::string url_key, |
| 268 struct NaClFileInfo* info) { | 247 struct NaClFileInfo* info) { |
| 269 bool op_complete = false; // NB: mu_ and cv_ also controls access to this! | 248 bool op_complete = false; // NB: mu_ and cv_ also controls access to this! |
| 270 // The to_open object is owned by the weak ref callback. Because this function | 249 // The to_open object is owned by the weak ref callback. Because this function |
| 271 // waits for the callback to finish, the to_open object will be deallocated on | 250 // waits for the callback to finish, the to_open object will be deallocated on |
| 272 // the main thread before this function can return. The pointers it contains | 251 // the main thread before this function can return. The pointers it contains |
| 273 // to stack variables will not leak. | 252 // to stack variables will not leak. |
| (...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 898 | 877 |
| 899 nacl::string ServiceRuntime::GetCrashLogOutput() { | 878 nacl::string ServiceRuntime::GetCrashLogOutput() { |
| 900 if (NULL != subprocess_.get()) { | 879 if (NULL != subprocess_.get()) { |
| 901 return subprocess_->GetCrashLogOutput(); | 880 return subprocess_->GetCrashLogOutput(); |
| 902 } else { | 881 } else { |
| 903 return std::string(); | 882 return std::string(); |
| 904 } | 883 } |
| 905 } | 884 } |
| 906 | 885 |
| 907 } // namespace plugin | 886 } // namespace plugin |
| OLD | NEW |