11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef MOJO_TOOLS_PACKAGE_MANAGER_MANIFEST_H_
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define MOJO_TOOLS_PACKAGE_MANAGER_MANIFEST_H_
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <string>
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <vector>
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mojo/public/cpp/system/macros.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass GURL;
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace base {
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass DictionaryValue;
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass FilePath;
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace mojo {
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass Manifest {
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public:
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  Manifest();
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  ~Manifest();
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Parses the manifest from raw data. Returns true on success. On failure,
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // populates the "err_msg" string with an error.
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  bool Parse(const std::string& str, std::string* err_msg);
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  // Like Parse but reads the data from a file.
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  bool ParseFromFile(const base::FilePath& file_name, std::string* err_msg);
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  const std::vector<GURL>& deps() const { return deps_; }
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci private:
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  bool PopulateDeps(const base::DictionaryValue* root, std::string* err_msg);
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  std::vector<GURL> deps_;
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  MOJO_DISALLOW_COPY_AND_ASSIGN(Manifest);
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace mojo
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif  // MOJO_TOOLS_PACKAGE_MANAGER_MANIFEST_H_
47