// Copyright (c) 2010 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 CHROME_BROWSER_PARSERS_METADATA_PARSER_FACTORY_H_
#define CHROME_BROWSER_PARSERS_METADATA_PARSER_FACTORY_H_

#include "chrome/browser/parsers/metadata_parser.h"

namespace base {
class FilePath;
}

// Used to check to see if a parser can parse a particular file, and allows
// for creation of a parser on a particular file.
class MetadataParserFactory {
 public:
  MetadataParserFactory() {}
  virtual ~MetadataParserFactory() {}

  // Used to check to see if the parser can parse the given file. This
  // should not do any additional reading of the file.
  virtual bool CanParse(const base::FilePath& path,
                        char* bytes,
                        int bytes_size) = 0;

  // Creates the parser on the given file.  Creating the parser does not
  // do any parsing on the file.  Parse has to be called on the parser.
  virtual MetadataParser* CreateParser(const base::FilePath& path) = 0;
};

#endif  // CHROME_BROWSER_PARSERS_METADATA_PARSER_FACTORY_H_
