// Copyright (c) 2011 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_MANAGER_H_ #define CHROME_BROWSER_PARSERS_METADATA_PARSER_MANAGER_H_ #include "base/basictypes.h" #include "base/memory/scoped_vector.h" class MetadataParserFactory; class MetadataParser; namespace base { class FilePath; } // Metadata Parser manager is used to find the correct parser for a // given file. Allows parsers to register themselves. class MetadataParserManager { public: // Creates a new MetadataParserManager. MetadataParserManager(); ~MetadataParserManager(); // Gets the singleton static MetadataParserManager* GetInstance(); // Adds a new Parser to the manager, when requests come in for a parser // the manager will loop through the list of parsers, and query each. bool RegisterParserFactory(MetadataParserFactory* parser); // Returns a new metadata parser for a given file. MetadataParser* GetParserForFile(const base::FilePath& path); private: ScopedVector<MetadataParserFactory> factories_; DISALLOW_COPY_AND_ASSIGN(MetadataParserManager); }; #endif // CHROME_BROWSER_PARSERS_METADATA_PARSER_MANAGER_H_