Home | History | Annotate | Download | only in web_resource
      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 
     21 class DictionaryValue;
     22 
     23 class 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