- add sources.
[platform/framework/web/crosswalk.git] / src / ppapi / native_client / src / trusted / plugin / manifest.h
1 /*
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
4  * found in the LICENSE file.
5  */
6
7 // Manifest interface class.
8
9 #ifndef NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_MANIFEST_H_
10 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_MANIFEST_H_
11
12 #include <map>
13 #include <set>
14 #include <string>
15
16 #include "native_client/src/include/nacl_macros.h"
17 #include "native_client/src/include/nacl_string.h"
18 #include "third_party/jsoncpp/source/include/json/value.h"
19
20 namespace pp {
21 class URLUtil_Dev;
22 }  // namespace pp
23
24 namespace plugin {
25
26 class ErrorInfo;
27 class PnaclOptions;
28
29 class Manifest {
30  public:
31   Manifest() { }
32   virtual ~Manifest() { }
33
34   // A convention in the interfaces below regarding permit_extension_url:
35   // Some manifests (e.g., the pnacl coordinator manifest) need to access
36   // resources from an extension origin distinct from the plugin's origin
37   // (e.g., the pnacl coordinator needs to load llc, ld, and some libraries).
38   // This out-parameter is true if this manifest lookup confers access to
39   // a resource in the extension origin.
40
41   // Gets the full program URL for the current sandbox ISA from the
42   // manifest file.  Fills in |pnacl_options| if the program requires
43   // PNaCl translation.
44   virtual bool GetProgramURL(nacl::string* full_url,
45                              PnaclOptions* pnacl_options,
46                              ErrorInfo* error_info) const = 0;
47
48   // Resolves a URL relative to the manifest base URL
49   virtual bool ResolveURL(const nacl::string& relative_url,
50                           nacl::string* full_url,
51                           ErrorInfo* error_info) const = 0;
52
53   // Gets the file names from the "files" section of the manifest.  No
54   // checking that the keys' values are proper ISA dictionaries -- it
55   // is assumed that other consistency checks take care of that, and
56   // that the keys are appropriate for use with ResolveKey.
57   virtual bool GetFileKeys(std::set<nacl::string>* keys) const = 0;
58
59   // Resolves a key from the "files" section to a fully resolved URL,
60   // i.e., relative URL values are fully expanded relative to the
61   // manifest's URL (via ResolveURL).  Fills in |pnacl_options| if
62   // the resolved key requires a pnacl translation step to obtain
63   // the final requested resource.
64   // If there was an error, details are reported via error_info.
65   virtual bool ResolveKey(const nacl::string& key,
66                           nacl::string* full_url,
67                           PnaclOptions* pnacl_options,
68                           ErrorInfo* error_info) const = 0;
69
70  protected:
71   NACL_DISALLOW_COPY_AND_ASSIGN(Manifest);
72 };
73
74
75 }  // namespace plugin
76
77 #endif  // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_MANIFEST_H_