| 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 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 class CompletionCallback; | 43 class CompletionCallback; |
| 44 class URLLoader; | 44 class URLLoader; |
| 45 class URLUtil_Dev; | 45 class URLUtil_Dev; |
| 46 } | 46 } |
| 47 | 47 |
| 48 namespace plugin { | 48 namespace plugin { |
| 49 | 49 |
| 50 class ErrorInfo; | 50 class ErrorInfo; |
| 51 class Manifest; | 51 class Manifest; |
| 52 | 52 |
| 53 int32_t ConvertFileDescriptor(PP_FileHandle handle); |
| 54 |
| 53 class Plugin : public pp::Instance { | 55 class Plugin : public pp::Instance { |
| 54 public: | 56 public: |
| 55 explicit Plugin(PP_Instance instance); | 57 explicit Plugin(PP_Instance instance); |
| 56 | 58 |
| 57 // ----- Methods inherited from pp::Instance: | 59 // ----- Methods inherited from pp::Instance: |
| 58 | 60 |
| 59 // Initializes this plugin with <embed/object ...> tag attribute count |argc|, | 61 // Initializes this plugin with <embed/object ...> tag attribute count |argc|, |
| 60 // names |argn| and values |argn|. Returns false on failure. | 62 // names |argn| and values |argn|. Returns false on failure. |
| 61 // Gets called by the browser right after New(). | 63 // Gets called by the browser right after New(). |
| 62 virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]); | 64 virtual bool Init(uint32_t argc, const char* argn[], const char* argv[]); |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 | 143 |
| 142 nacl::DescWrapperFactory* wrapper_factory() const { return wrapper_factory_; } | 144 nacl::DescWrapperFactory* wrapper_factory() const { return wrapper_factory_; } |
| 143 | 145 |
| 144 // Requests a NaCl manifest download from a |url| relative to the page origin. | 146 // Requests a NaCl manifest download from a |url| relative to the page origin. |
| 145 void RequestNaClManifest(const nacl::string& url); | 147 void RequestNaClManifest(const nacl::string& url); |
| 146 | 148 |
| 147 // Called back by CallOnMainThread. Dispatches the first enqueued progress | 149 // Called back by CallOnMainThread. Dispatches the first enqueued progress |
| 148 // event. | 150 // event. |
| 149 void DispatchProgressEvent(int32_t result); | 151 void DispatchProgressEvent(int32_t result); |
| 150 | 152 |
| 151 // Requests a URL asynchronously resulting in a call to pp_callback with | 153 // Requests a URL asynchronously, resulting in a call to |callback| with |
| 152 // a PP_Error indicating status. | 154 // an error code indicating status. On success, writes file information to |
| 153 bool StreamAsFile(const nacl::string& url, | 155 // |file_info|. |
| 154 NaClFileInfo *out_file_info, | 156 void StreamAsFile(const nacl::string& url, |
| 157 PP_NaClFileInfo* file_info, |
| 155 const pp::CompletionCallback& callback); | 158 const pp::CompletionCallback& callback); |
| 156 | 159 |
| 157 // A helper function that indicates if |url| can be requested by the document | 160 // A helper function that indicates if |url| can be requested by the document |
| 158 // under the same-origin policy. Strictly speaking, it may be possible for the | 161 // under the same-origin policy. Strictly speaking, it may be possible for the |
| 159 // document to request the URL using CORS even if this function returns false. | 162 // document to request the URL using CORS even if this function returns false. |
| 160 bool DocumentCanRequest(const std::string& url); | 163 bool DocumentCanRequest(const std::string& url); |
| 161 | 164 |
| 162 // set_exit_status may be called off the main thread. | 165 // set_exit_status may be called off the main thread. |
| 163 void set_exit_status(int exit_status); | 166 void set_exit_status(int exit_status); |
| 164 | 167 |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 240 void NaClManifestFileDidOpen(int32_t pp_error); | 243 void NaClManifestFileDidOpen(int32_t pp_error); |
| 241 | 244 |
| 242 // Processes the JSON manifest string and starts loading the nexe. | 245 // Processes the JSON manifest string and starts loading the nexe. |
| 243 void ProcessNaClManifest(const nacl::string& manifest_json); | 246 void ProcessNaClManifest(const nacl::string& manifest_json); |
| 244 | 247 |
| 245 // Logs timing information to a UMA histogram, and also logs the same timing | 248 // Logs timing information to a UMA histogram, and also logs the same timing |
| 246 // information divided by the size of the nexe to another histogram. | 249 // information divided by the size of the nexe to another histogram. |
| 247 void HistogramStartupTimeSmall(const std::string& name, float dt); | 250 void HistogramStartupTimeSmall(const std::string& name, float dt); |
| 248 void HistogramStartupTimeMedium(const std::string& name, float dt); | 251 void HistogramStartupTimeMedium(const std::string& name, float dt); |
| 249 | 252 |
| 250 // Callback used when loading a URL for SRPC-based StreamAsFile(). | |
| 251 void UrlDidOpenForStreamAsFile(int32_t pp_error, | |
| 252 FileDownloader* url_downloader, | |
| 253 NaClFileInfo* out_file_info, | |
| 254 pp::CompletionCallback pp_callback); | |
| 255 | |
| 256 // Open an app file by requesting a file descriptor from the browser. This | |
| 257 // method first checks that the url is for an installed file before making the | |
| 258 // request so it won't slow down non-installed file downloads. | |
| 259 bool OpenURLFast(const nacl::string& url, FileDownloader* downloader); | |
| 260 | |
| 261 void SetExitStatusOnMainThread(int32_t pp_error, int exit_status); | 253 void SetExitStatusOnMainThread(int32_t pp_error, int exit_status); |
| 262 | 254 |
| 263 // Keep track of the NaCl module subprocess that was spun up in the plugin. | 255 // Keep track of the NaCl module subprocess that was spun up in the plugin. |
| 264 NaClSubprocess main_subprocess_; | 256 NaClSubprocess main_subprocess_; |
| 265 | 257 |
| 266 bool uses_nonsfi_mode_; | 258 bool uses_nonsfi_mode_; |
| 267 | 259 |
| 268 nacl::DescWrapperFactory* wrapper_factory_; | 260 nacl::DescWrapperFactory* wrapper_factory_; |
| 269 | 261 |
| 270 // Original, unresolved URL for the .nexe program to load. | 262 // Original, unresolved URL for the .nexe program to load. |
| 271 std::string program_url_; | 263 std::string program_url_; |
| 272 | 264 |
| 273 pp::CompletionCallbackFactory<Plugin> callback_factory_; | 265 pp::CompletionCallbackFactory<Plugin> callback_factory_; |
| 274 | 266 |
| 275 nacl::scoped_ptr<PnaclCoordinator> pnacl_coordinator_; | 267 nacl::scoped_ptr<PnaclCoordinator> pnacl_coordinator_; |
| 276 | 268 |
| 277 // Keep track of the FileDownloaders created to fetch urls. | |
| 278 std::set<FileDownloader*> url_downloaders_; | |
| 279 | |
| 280 // Callback to receive .nexe and .dso download progress notifications. | |
| 281 static void UpdateDownloadProgress( | |
| 282 PP_Instance pp_instance, | |
| 283 PP_Resource pp_resource, | |
| 284 int64_t bytes_sent, | |
| 285 int64_t total_bytes_to_be_sent, | |
| 286 int64_t bytes_received, | |
| 287 int64_t total_bytes_to_be_received); | |
| 288 | |
| 289 // Finds the file downloader which owns the given URL loader. This is used | |
| 290 // in UpdateDownloadProgress to map a url loader back to the URL being | |
| 291 // downloaded. | |
| 292 const FileDownloader* FindFileDownloader(PP_Resource url_loader) const; | |
| 293 | |
| 294 int64_t time_of_last_progress_event_; | 269 int64_t time_of_last_progress_event_; |
| 295 int exit_status_; | 270 int exit_status_; |
| 296 | 271 |
| 297 int32_t manifest_id_; | 272 int32_t manifest_id_; |
| 298 | 273 |
| 299 PP_FileHandle nexe_handle_; | 274 PP_FileHandle nexe_handle_; |
| 300 uint64_t nexe_token_lo_; | 275 uint64_t nexe_token_lo_; |
| 301 uint64_t nexe_token_hi_; | 276 uint64_t nexe_token_hi_; |
| 302 | 277 |
| 303 const PPB_NaCl_Private* nacl_interface_; | 278 const PPB_NaCl_Private* nacl_interface_; |
| 304 pp::UMAPrivate uma_interface_; | 279 pp::UMAPrivate uma_interface_; |
| 305 }; | 280 }; |
| 306 | 281 |
| 307 } // namespace plugin | 282 } // namespace plugin |
| 308 | 283 |
| 309 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_ | 284 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PLUGIN_H_ |
| OLD | NEW |