Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(490)

Side by Side Diff: ppapi/native_client/src/trusted/plugin/pnacl_resources.h

Issue 15697019: Parametrize names of llc and ld nexes by reading them from the resource info JSON file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Tweak comments some more, following Jan's review Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PNACL_RESOURCES_H_ 5 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PNACL_RESOURCES_H_
6 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PNACL_RESOURCES_H_ 6 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PNACL_RESOURCES_H_
7 7
8 #include <map> 8 #include <map>
9 #include <vector> 9 #include <vector>
10 10
11 #include "native_client/src/include/nacl_macros.h" 11 #include "native_client/src/include/nacl_macros.h"
12 #include "native_client/src/include/nacl_string.h" 12 #include "native_client/src/include/nacl_string.h"
13 #include "native_client/src/trusted/desc/nacl_desc_wrapper.h" 13 #include "native_client/src/trusted/desc/nacl_desc_wrapper.h"
14 #include "native_client/src/trusted/plugin/nexe_arch.h" 14 #include "native_client/src/trusted/plugin/nexe_arch.h"
15 #include "native_client/src/trusted/plugin/plugin_error.h" 15 #include "native_client/src/trusted/plugin/plugin_error.h"
16 16
17 #include "ppapi/c/private/pp_file_handle.h" 17 #include "ppapi/c/private/pp_file_handle.h"
18 #include "ppapi/cpp/completion_callback.h" 18 #include "ppapi/cpp/completion_callback.h"
19 19
20 namespace plugin { 20 namespace plugin {
21 21
22 class Manifest; 22 class Manifest;
23 class Plugin; 23 class Plugin;
24 class PnaclCoordinator; 24 class PnaclCoordinator;
25 25
26 // Constants for loading LLC and LD. 26 // Constants for loading LLC and LD.
27 class PnaclUrls { 27 class PnaclUrls {
28 public: 28 public:
29 // Get the base URL prefix for Pnacl resources (without platform prefix).
29 static nacl::string GetBaseUrl(); 30 static nacl::string GetBaseUrl();
31
32 // Return {platform_prefix}/url
33 static nacl::string PrependPlatformPrefix(const nacl::string& url);
34
30 static bool IsPnaclComponent(const nacl::string& full_url); 35 static bool IsPnaclComponent(const nacl::string& full_url);
31 static nacl::string PnaclComponentURLToFilename( 36 static nacl::string PnaclComponentURLToFilename(
32 const nacl::string& full_url); 37 const nacl::string& full_url);
33 static const nacl::string GetLlcUrl() { return nacl::string(kLlcUrl); } 38
34 static const nacl::string GetLdUrl() { return nacl::string(kLdUrl); } 39 // Get the URL for the resource info JSON file that contains information
40 // about loadable resources.
41 static const nacl::string GetResourceInfoUrl() {
42 return nacl::string(kResourceInfoUrl);
43 }
35 private: 44 private:
36 static const char kLlcUrl[]; 45 static const char kResourceInfoUrl[];
37 static const char kLdUrl[];
38 }; 46 };
39 47
40 // Loads a list of resources, providing a way to get file descriptors for 48 // Loads a list of resources, providing a way to get file descriptors for
41 // these resources. URLs for resources are resolved by the manifest 49 // these resources. URLs for resources are resolved by the manifest
42 // and point to pnacl component filesystem resources. 50 // and point to pnacl component filesystem resources.
43 class PnaclResources { 51 class PnaclResources {
44 public: 52 public:
45 PnaclResources(Plugin* plugin, 53 PnaclResources(Plugin* plugin,
46 PnaclCoordinator* coordinator, 54 PnaclCoordinator* coordinator,
47 const Manifest* manifest, 55 const Manifest* manifest)
48 const std::vector<nacl::string>& resource_urls,
49 const pp::CompletionCallback& all_loaded_callback)
50 : plugin_(plugin), 56 : plugin_(plugin),
51 coordinator_(coordinator), 57 coordinator_(coordinator),
52 manifest_(manifest), 58 manifest_(manifest),
53 resource_urls_(resource_urls), 59 llc_tool_name(kDefaultLlcName),
54 all_loaded_callback_(all_loaded_callback) { 60 ld_tool_name(kDefaultLdName) {
55 } 61 }
56 virtual ~PnaclResources(); 62 virtual ~PnaclResources();
57 63
58 // Start loading the resources. After construction, this is the first step. 64 // Read the resource info JSON file. This is the first step after
59 virtual void StartLoad(); 65 // construction; it has to be completed before StartLoad is called.
60 // Get file descs by name. Only valid after all_loaded_callback_ has been run. 66 virtual void ReadResourceInfo(
67 const nacl::string& resource_info_url,
68 const pp::CompletionCallback& resource_info_read_cb);
69
70 // Start loading the resources.
71 virtual void StartLoad(
72 const pp::CompletionCallback& all_loaded_callback);
73
74 const nacl::string& GetLlcUrl() {
75 return llc_tool_name;
76 }
77
78 const nacl::string& GetLdUrl() {
79 return ld_tool_name;
80 }
81
82 // Get file descs by name. Only valid after StartLoad's completion callback
83 // fired.
61 nacl::DescWrapper* WrapperForUrl(const nacl::string& url); 84 nacl::DescWrapper* WrapperForUrl(const nacl::string& url);
62 85
63 static int32_t GetPnaclFD(Plugin* plugin, const char* filename); 86 static int32_t GetPnaclFD(Plugin* plugin, const char* filename);
64 87
65 private: 88 private:
66 NACL_DISALLOW_COPY_AND_ASSIGN(PnaclResources); 89 NACL_DISALLOW_COPY_AND_ASSIGN(PnaclResources);
67 90
68 // The plugin requesting the resource loading. 91 // The plugin requesting the resource loading.
69 Plugin* plugin_; 92 Plugin* plugin_;
70 // The coordinator responsible for reporting errors, etc. 93 // The coordinator responsible for reporting errors, etc.
71 PnaclCoordinator* coordinator_; 94 PnaclCoordinator* coordinator_;
72 // The manifest for looking up resource URLs. 95 // The manifest for looking up resource URLs.
73 const Manifest* manifest_; 96 const Manifest* manifest_;
74 // The list of resource URLs (relative to resource_base_url_) to load.
75 std::vector<nacl::string> resource_urls_;
76 // Callback to be invoked when all resources can be guaranteed available.
77 pp::CompletionCallback all_loaded_callback_;
78 // The descriptor wrappers for the downloaded URLs. Only valid 97 // The descriptor wrappers for the downloaded URLs. Only valid
79 // once all_loaded_callback_ has been invoked. 98 // once all_loaded_callback_ has been invoked.
80 std::map<nacl::string, nacl::DescWrapper*> resource_wrappers_; 99 std::map<nacl::string, nacl::DescWrapper*> resource_wrappers_;
100
101 // The names of the llc and ld nexes are read from the resource info file.
102 // These are default values if the resource file does not contain the names.
103 // TODO(eliben): this should be eventually removed, once all nacl deps
104 // propagate - the names should always exist in the resource info JSON file.
105 static const char kDefaultLlcName[];
106 static const char kDefaultLdName[];
107
108 // Tool names for llc and ld; read from the resource info file.
109 nacl::string llc_tool_name;
110 nacl::string ld_tool_name;
111
112 // Parses resource info json data in |buf|. Returns true if successful.
113 // Otherwise returns false and places an error message in |errmsg|.
114 bool ParseResourceInfo(const nacl::string& buf, nacl::string& errmsg);
115
116 // Convenience function for reporting an error while reading the resource
117 // info file.
118 void ReadResourceInfoError(const nacl::string& msg);
81 }; 119 };
82 120
83 } // namespace plugin; 121 } // namespace plugin;
84 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PNACL_RESOURCES_H_ 122 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_PNACL_RESOURCES_H_
OLDNEW
« no previous file with comments | « ppapi/native_client/src/trusted/plugin/pnacl_coordinator.cc ('k') | ppapi/native_client/src/trusted/plugin/pnacl_resources.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698