diff options
Diffstat (limited to 'chromium/gin/modules/file_module_provider.h')
-rw-r--r-- | chromium/gin/modules/file_module_provider.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/chromium/gin/modules/file_module_provider.h b/chromium/gin/modules/file_module_provider.h new file mode 100644 index 00000000000..dd75a0feaf1 --- /dev/null +++ b/chromium/gin/modules/file_module_provider.h @@ -0,0 +1,44 @@ +// Copyright 2013 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 GIN_MODULES_FILE_MODULE_PROVIDER_H_ +#define GIN_MODULES_FILE_MODULE_PROVIDER_H_ + +#include <set> +#include <string> +#include <vector> + +#include "base/files/file_path.h" +#include "gin/gin_export.h" +#include "gin/runner.h" + +namespace gin { + +// FileModuleProvider knows how to load AMD modules off disk. It searches for +// modules in the directories indiciated by |search_paths|. Although we still +// read from the file system on the main thread, we'll eventually want to move +// the reads to a background thread. +class GIN_EXPORT FileModuleProvider { + public: + explicit FileModuleProvider( + const std::vector<base::FilePath>& search_paths); + ~FileModuleProvider(); + + // Searches for modules with |ids| in the file system. If found, the modules + // will be executed asynchronously by |runner|. + void AttempToLoadModules(Runner* runner, const std::set<std::string>& ids); + + private: + std::vector<base::FilePath> search_paths_; + + // We'll only search for a given module once. We remember the set of modules + // we've already looked for in |attempted_ids_|. + std::set<std::string> attempted_ids_; + + DISALLOW_COPY_AND_ASSIGN(FileModuleProvider); +}; + +} // namespace gin + +#endif // GIN_MODULES_FILE_MODULE_PROVIDER_H_ |