| // 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_EXTENSIONS_EXTERNAL_PREF_EXTENSION_LOADER_H_ |
| #define CHROME_BROWSER_EXTENSIONS_EXTERNAL_PREF_EXTENSION_LOADER_H_ |
| #pragma once |
| |
| #include "chrome/browser/extensions/external_extension_loader.h" |
| |
| #include <string> |
| |
| #include "base/memory/scoped_ptr.h" |
| #include "base/values.h" |
| |
| // A specialization of the ExternalExtensionLoader that uses a json file to |
| // look up which external extensions are registered. |
| // Instances of this class are expected to be created and destroyed on the UI |
| // thread and they are expecting public method calls from the UI thread. |
| class ExternalPrefExtensionLoader : public ExternalExtensionLoader { |
| public: |
| // |base_path_key| is the directory containing the external_extensions.json |
| // file. Relative file paths to extension files are resolved relative |
| // to this path. |
| explicit ExternalPrefExtensionLoader(int base_path_key); |
| |
| virtual const FilePath GetBaseCrxFilePath(); |
| |
| protected: |
| virtual void StartLoading(); |
| |
| private: |
| friend class base::RefCountedThreadSafe<ExternalExtensionLoader>; |
| |
| virtual ~ExternalPrefExtensionLoader() {} |
| |
| void LoadOnFileThread(); |
| |
| int base_path_key_; |
| FilePath base_path_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ExternalPrefExtensionLoader); |
| }; |
| |
| // A simplified version of ExternalPrefExtensionLoader that loads the dictionary |
| // from json data specified in a string. |
| class ExternalTestingExtensionLoader : public ExternalExtensionLoader { |
| public: |
| ExternalTestingExtensionLoader( |
| const std::string& json_data, |
| const FilePath& fake_base_path); |
| |
| virtual const FilePath GetBaseCrxFilePath(); |
| |
| protected: |
| virtual void StartLoading(); |
| |
| private: |
| friend class base::RefCountedThreadSafe<ExternalExtensionLoader>; |
| |
| virtual ~ExternalTestingExtensionLoader(); |
| |
| FilePath fake_base_path_; |
| scoped_ptr<DictionaryValue> testing_prefs_; |
| |
| DISALLOW_COPY_AND_ASSIGN(ExternalTestingExtensionLoader); |
| }; |
| |
| #endif // CHROME_BROWSER_EXTENSIONS_EXTERNAL_PREF_EXTENSION_LOADER_H_ |