Chromium Code Reviews| Index: components/nacl/renderer/json_manifest.h |
| diff --git a/components/nacl/renderer/json_manifest.h b/components/nacl/renderer/json_manifest.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..fe303baa7c6d7e7c16d3a7e532ac97138bbfe27a |
| --- /dev/null |
| +++ b/components/nacl/renderer/json_manifest.h |
| @@ -0,0 +1,73 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef COMPONENTS_NACL_RENDERER_JSON_MANIFEST_H |
| +#define COMPONENTS_NACL_RENDERER_JSON_MANIFEST_H |
| + |
| +#include <set> |
| +#include <string> |
|
bbudge
2014/05/01 23:32:33
Blank line after this.
teravest
2014/05/02 14:23:15
Done.
|
| +#include "ppapi/c/pp_array_output.h" |
| +#include "ppapi/c/private/ppb_nacl_private.h" |
| +#include "third_party/jsoncpp/source/include/json/value.h" |
| + |
| +namespace nacl { |
| +class NexeLoadManager; |
| + |
| +class JsonManifest { |
| + public: |
| + struct ErrorInfo { |
| + PP_NaClError error; |
| + std::string string; |
| + }; |
| + |
| + JsonManifest(const std::string& manifest_base_url, |
| + const std::string& sandbox_isa, |
| + bool nonsfi_enabled, |
| + bool pnacl_debug); |
| + |
| + // Initialize the manifest object for use by later lookups. The return |
| + // value is true if the manifest parses correctly and matches the schema. |
| + bool Init(const std::string& json_manifest, |
| + ErrorInfo* error_info); |
|
bbudge
2014/05/01 23:32:33
Is this from clang format? Seems like it would fit
teravest
2014/05/02 14:23:15
Joined to one line, and changed to use your commen
|
| + |
| + // Gets the full program URL for the current sandbox ISA from the |
| + // manifest file. |
| + bool GetProgramURL(std::string* full_url, |
| + PP_PNaClOptions* pnacl_options, |
| + bool* uses_nonsfi_mode, |
| + ErrorInfo* error_info) const; |
| + |
| + // Resolves a key from the "files" section to a fully resolved URL, |
| + // i.e., relative URL values are fully expanded relative to the |
| + // manifest's URL (via ResolveURL). |
| + // If there was an error, details are reported via error_info. |
| + bool ResolveKey(const std::string& key, |
| + std::string* full_url, |
| + PP_PNaClOptions* pnacl_options) const; |
| + |
| + private: |
| + bool MatchesSchema(ErrorInfo* error_info); |
| + bool GetKeyUrl(const Json::Value& dictionary, |
| + const std::string& key, |
| + std::string* full_url, |
| + PP_PNaClOptions* pnacl_options) const; |
| + bool GetURLFromISADictionary(const Json::Value& dictionary, |
| + const std::string& parent_key, |
| + std::string* url, |
| + PP_PNaClOptions* pnacl_options, |
| + bool* uses_nonsfi_mode, |
| + ErrorInfo* error_info) const; |
| + |
| + std::string manifest_base_url_; |
| + std::string sandbox_isa_; |
| + bool nonsfi_enabled_; |
| + bool pnacl_debug_; |
| + |
| + // The dictionary of manifest information parsed in Init(). |
| + Json::Value dictionary_; |
| +}; |
| + |
| +} // namespace nacl |
| + |
| +#endif // COMPONENTS_NACL_RENDERER_JSON_MANIFEST_H |