Index: chrome/browser/extensions/external_pref_extension_loader.cc |
diff --git a/chrome/browser/extensions/external_pref_extension_loader.cc b/chrome/browser/extensions/external_pref_extension_loader.cc |
index 791005ca246f6aabcfe03a6d794681560bd21f0f..fc84b1ebf6df8b9023c67fba18696c0fd0069688 100644 |
--- a/chrome/browser/extensions/external_pref_extension_loader.cc |
+++ b/chrome/browser/extensions/external_pref_extension_loader.cc |
@@ -32,10 +32,22 @@ DictionaryValue* ExtractPrefs(ValueSerializer* serializer) { |
} // namespace |
-ExternalPrefExtensionLoader::ExternalPrefExtensionLoader() { |
+ExternalPrefExtensionLoader::ExternalPrefExtensionLoader(int base_path_key) |
+ : base_path_key_(base_path_key) { |
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
} |
+const FilePath ExternalPrefExtensionLoader::GetBaseCrxFilePath() { |
+ CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ |
+ // LoadOnFileThread() should set |external_file_path_| to a non-empty |
+ // path. This function should not be called until after LoadOnFileThread() |
+ // is complete. |
+ CHECK(!base_path_.empty()); |
+ |
+ return base_path_; |
+} |
+ |
void ExternalPrefExtensionLoader::StartLoading() { |
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
BrowserThread::PostTask( |
@@ -47,11 +59,13 @@ void ExternalPrefExtensionLoader::StartLoading() { |
void ExternalPrefExtensionLoader::LoadOnFileThread() { |
CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
+ |
+ CHECK(PathService::Get(base_path_key_, &base_path_)); |
+ |
FilePath json_file; |
- PathService::Get(app::DIR_EXTERNAL_EXTENSIONS, &json_file); |
- json_file = json_file.Append(FILE_PATH_LITERAL("external_extensions.json")); |
- scoped_ptr<DictionaryValue> prefs; |
+ json_file = base_path_.Append(FILE_PATH_LITERAL("external_extensions.json")); |
+ scoped_ptr<DictionaryValue> prefs; |
if (file_util::PathExists(json_file)) { |
JSONFileValueSerializer serializer(json_file); |
prefs.reset(ExtractPrefs(&serializer)); |
@@ -68,7 +82,9 @@ void ExternalPrefExtensionLoader::LoadOnFileThread() { |
} |
ExternalTestingExtensionLoader::ExternalTestingExtensionLoader( |
- const std::string& json_data) { |
+ const std::string& json_data, |
+ const FilePath& fake_base_path) |
+ : fake_base_path_(fake_base_path) { |
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
JSONStringValueSerializer serializer(json_data); |
testing_prefs_.reset(ExtractPrefs(&serializer)); |
@@ -79,3 +95,7 @@ void ExternalTestingExtensionLoader::StartLoading() { |
prefs_.reset(testing_prefs_->DeepCopy()); |
LoadFinished(); |
} |
+ |
+const FilePath ExternalTestingExtensionLoader::GetBaseCrxFilePath() { |
+ return fake_base_path_; |
+} |