1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// This class is called by the WebResourceService in a sandboxed process
6// to unpack data retrieved from a web resource feed.  Right now, it
7// takes a string of data in JSON format, parses it, and hands it back
8// to the WebResourceService as a list of items.  In the future
9// it will be set up to unpack and verify image data in addition to
10// just parsing a JSON feed.
11
12#ifndef CHROME_COMMON_WEB_RESOURCE_WEB_RESOURCE_UNPACKER_H_
13#define CHROME_COMMON_WEB_RESOURCE_WEB_RESOURCE_UNPACKER_H_
14#pragma once
15
16#include <string>
17
18#include "base/basictypes.h"
19#include "base/memory/scoped_ptr.h"
20
21class DictionaryValue;
22
23class WebResourceUnpacker {
24 public:
25  static const char* kInvalidDataTypeError;
26  static const char* kUnexpectedJSONFormatError;
27
28  explicit WebResourceUnpacker(const std::string &resource_data);
29  ~WebResourceUnpacker();
30
31  // This does the actual parsing.  In case of an error, error_message_
32  // is set to an appropriate value.
33  bool Run();
34
35  // Returns the last error message set by Run().
36  const std::string& error_message() { return error_message_; }
37
38  // Gets data which has been parsed by Run().
39  DictionaryValue* parsed_json() {
40    return parsed_json_.get();
41  }
42
43 private:
44  // Holds the string which is to be parsed.
45  std::string resource_data_;
46
47  // Holds the result of JSON parsing of resource_data_.
48  scoped_ptr<DictionaryValue> parsed_json_;
49
50  // Holds the last error message produced by Run().
51  std::string error_message_;
52
53  DISALLOW_COPY_AND_ASSIGN(WebResourceUnpacker);
54};
55
56#endif  // CHROME_COMMON_WEB_RESOURCE_WEB_RESOURCE_UNPACKER_H_
57