OLD | NEW |
1 // -*- c++ -*- | 1 // -*- c++ -*- |
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 // The portable representation of an instance and root scriptable object. | 6 // The portable representation of an instance and root scriptable object. |
7 // The PPAPI version of the plugin instantiates a subclass of this class. | 7 // The PPAPI version of the plugin instantiates a subclass of this class. |
8 | 8 |
9 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_ | 9 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_ |
10 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_ | 10 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_ |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 // mechanism(s) take over. | 94 // mechanism(s) take over. |
95 // | 95 // |
96 // Updates nacl_module_origin() and nacl_module_url(). | 96 // Updates nacl_module_origin() and nacl_module_url(). |
97 void LoadNaClModule(nacl::DescWrapper* wrapper, | 97 void LoadNaClModule(nacl::DescWrapper* wrapper, |
98 bool enable_dyncode_syscalls, | 98 bool enable_dyncode_syscalls, |
99 bool enable_exception_handling, | 99 bool enable_exception_handling, |
100 bool enable_crash_throttling, | 100 bool enable_crash_throttling, |
101 const pp::CompletionCallback& init_done_cb, | 101 const pp::CompletionCallback& init_done_cb, |
102 const pp::CompletionCallback& crash_cb); | 102 const pp::CompletionCallback& crash_cb); |
103 | 103 |
| 104 void LoadNexeOnMainThread(int32_t pp_error, |
| 105 ServiceRuntime* service_runtime, |
| 106 nacl::DescWrapper* wrapper, |
| 107 const pp::CompletionCallback& crash_cb); |
| 108 |
104 // Finish hooking interfaces up, after low-level initialization is | 109 // Finish hooking interfaces up, after low-level initialization is |
105 // complete. | 110 // complete. |
106 bool LoadNaClModuleContinuationIntern(ErrorInfo* error_info); | 111 bool LoadNaClModuleContinuationIntern(ErrorInfo* error_info); |
107 | 112 |
108 // Continuation for starting SRPC/JSProxy services as appropriate. | 113 // Continuation for starting SRPC/JSProxy services as appropriate. |
109 // This is invoked as a callback when the NaCl module makes the | 114 // This is invoked as a callback when the NaCl module makes the |
110 // init_done reverse RPC to tell us that low-level initialization | 115 // init_done reverse RPC to tell us that low-level initialization |
111 // such as ld.so processing is done. That initialization requires | 116 // such as ld.so processing is done. That initialization requires |
112 // that the main thread be free in order to do Pepper | 117 // that the main thread be free in order to do Pepper |
113 // main-thread-only operations such as file processing. | 118 // main-thread-only operations such as file processing. |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 void HistogramEnumerateOsArch(const std::string& sandbox_isa); | 298 void HistogramEnumerateOsArch(const std::string& sandbox_isa); |
294 void HistogramEnumerateLoadStatus(PluginErrorCode error_code, | 299 void HistogramEnumerateLoadStatus(PluginErrorCode error_code, |
295 bool is_installed); | 300 bool is_installed); |
296 void HistogramEnumerateSelLdrLoadStatus(NaClErrorCode error_code, | 301 void HistogramEnumerateSelLdrLoadStatus(NaClErrorCode error_code, |
297 bool is_installed); | 302 bool is_installed); |
298 void HistogramEnumerateManifestIsDataURI(bool is_data_uri); | 303 void HistogramEnumerateManifestIsDataURI(bool is_data_uri); |
299 void HistogramHTTPStatusCode(const std::string& name, int status); | 304 void HistogramHTTPStatusCode(const std::string& name, int status); |
300 | 305 |
301 // Help load a nacl module, from the file specified in wrapper. | 306 // Help load a nacl module, from the file specified in wrapper. |
302 // This will fully initialize the |subprocess| if the load was successful. | 307 // This will fully initialize the |subprocess| if the load was successful. |
303 bool LoadNaClModuleCommon(nacl::DescWrapper* wrapper, | 308 bool LoadNaClModuleFromBackgroundThread( |
304 NaClSubprocess* subprocess, | 309 nacl::DescWrapper* wrapper, |
305 const Manifest* manifest, | 310 NaClSubprocess* subprocess, |
306 bool should_report_uma, | 311 const Manifest* manifest, |
307 const SelLdrStartParams& params, | 312 const SelLdrStartParams& params); |
308 const pp::CompletionCallback& init_done_cb, | |
309 const pp::CompletionCallback& crash_cb); | |
310 | 313 |
311 // Start sel_ldr from the main thread, given the start params. | 314 // Start sel_ldr from the main thread, given the start params. |
312 // Sets |success| to true on success. | 315 // Sets |success| to true on success. |
313 // |pp_error| is set by CallOnMainThread (should be PP_OK). | 316 // |pp_error| is set by CallOnMainThread (should be PP_OK). |
314 void StartSelLdrOnMainThread(int32_t pp_error, | 317 void StartSelLdrOnMainThread(int32_t pp_error, |
315 ServiceRuntime* service_runtime, | 318 ServiceRuntime* service_runtime, |
316 const SelLdrStartParams& params, | 319 const SelLdrStartParams& params, |
317 bool* success); | 320 PP_CompletionCallback callback); |
| 321 |
| 322 void SignalStartSelLdrDone(int32_t pp_error, ServiceRuntime* service_runtime); |
318 | 323 |
319 // Callback used when getting the URL for the .nexe file. If the URL loading | 324 // Callback used when getting the URL for the .nexe file. If the URL loading |
320 // is successful, the file descriptor is opened and can be passed to sel_ldr | 325 // is successful, the file descriptor is opened and can be passed to sel_ldr |
321 // with the sandbox on. | 326 // with the sandbox on. |
322 void NexeFileDidOpen(int32_t pp_error); | 327 void NexeFileDidOpen(int32_t pp_error); |
323 void NexeFileDidOpenContinuation(int32_t pp_error); | 328 void NexeFileDidOpenContinuation(int32_t pp_error); |
324 | 329 |
325 // Callback used when the reverse channel closes. This is an | 330 // Callback used when the reverse channel closes. This is an |
326 // asynchronous event that might turn into a JavaScript error or | 331 // asynchronous event that might turn into a JavaScript error or |
327 // crash event -- this is controlled by the two state variables | 332 // crash event -- this is controlled by the two state variables |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
399 char** argv_; | 404 char** argv_; |
400 | 405 |
401 // Keep track of the NaCl module subprocess that was spun up in the plugin. | 406 // Keep track of the NaCl module subprocess that was spun up in the plugin. |
402 NaClSubprocess main_subprocess_; | 407 NaClSubprocess main_subprocess_; |
403 | 408 |
404 nacl::string plugin_base_url_; | 409 nacl::string plugin_base_url_; |
405 nacl::string manifest_base_url_; | 410 nacl::string manifest_base_url_; |
406 nacl::string manifest_url_; | 411 nacl::string manifest_url_; |
407 ReadyState nacl_ready_state_; | 412 ReadyState nacl_ready_state_; |
408 bool nexe_error_reported_; // error or crash reported | 413 bool nexe_error_reported_; // error or crash reported |
| 414 bool start_sel_ldr_success_; |
409 | 415 |
410 nacl::DescWrapperFactory* wrapper_factory_; | 416 nacl::DescWrapperFactory* wrapper_factory_; |
411 | 417 |
412 // File download support. |nexe_downloader_| can be opened with a specific | 418 // File download support. |nexe_downloader_| can be opened with a specific |
413 // callback to run when the file has been downloaded and is opened for | 419 // callback to run when the file has been downloaded and is opened for |
414 // reading. We use one downloader for all URL downloads to prevent issuing | 420 // reading. We use one downloader for all URL downloads to prevent issuing |
415 // multiple GETs that might arrive out of order. For example, this will | 421 // multiple GETs that might arrive out of order. For example, this will |
416 // prevent a GET of a NaCl manifest while a .nexe GET is pending. Note that | 422 // prevent a GET of a NaCl manifest while a .nexe GET is pending. Note that |
417 // this will also prevent simultaneous handling of multiple .nexes on a page. | 423 // this will also prevent simultaneous handling of multiple .nexes on a page. |
418 FileDownloader nexe_downloader_; | 424 FileDownloader nexe_downloader_; |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
484 int64_t time_of_last_progress_event_; | 490 int64_t time_of_last_progress_event_; |
485 int exit_status_; | 491 int exit_status_; |
486 | 492 |
487 const PPB_NaCl_Private* nacl_interface_; | 493 const PPB_NaCl_Private* nacl_interface_; |
488 pp::UMAPrivate uma_interface_; | 494 pp::UMAPrivate uma_interface_; |
489 }; | 495 }; |
490 | 496 |
491 } // namespace plugin | 497 } // namespace plugin |
492 | 498 |
493 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_ | 499 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_ |
OLD | NEW |