| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/extensions/external_pref_loader.h" | 5 #include "chrome/browser/extensions/external_pref_loader.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/json/json_file_value_serializer.h" | 10 #include "base/json/json_file_value_serializer.h" |
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 125 ReadExternalExtensionPrefFile(prefs.get()); | 125 ReadExternalExtensionPrefFile(prefs.get()); |
| 126 if (!prefs->empty()) | 126 if (!prefs->empty()) |
| 127 LOG(WARNING) << "You are using an old-style extension deployment method " | 127 LOG(WARNING) << "You are using an old-style extension deployment method " |
| 128 "(external_extensions.json), which will soon be " | 128 "(external_extensions.json), which will soon be " |
| 129 "deprecated. (see http://code.google.com/chrome/" | 129 "deprecated. (see http://code.google.com/chrome/" |
| 130 "extensions/external_extensions.html )"; | 130 "extensions/external_extensions.html )"; |
| 131 | 131 |
| 132 ReadStandaloneExtensionPrefFiles(prefs.get()); | 132 ReadStandaloneExtensionPrefFiles(prefs.get()); |
| 133 | 133 |
| 134 prefs_.swap(prefs); | 134 prefs_.swap(prefs); |
| 135 if (!prefs_.get()) | 135 if (!prefs_) |
| 136 prefs_.reset(new DictionaryValue()); | 136 prefs_.reset(new DictionaryValue()); |
| 137 | 137 |
| 138 if (base_path_id_ == chrome::DIR_EXTERNAL_EXTENSIONS) { | 138 if (base_path_id_ == chrome::DIR_EXTERNAL_EXTENSIONS) { |
| 139 UMA_HISTOGRAM_COUNTS_100("Extensions.ExternalJsonCount", | 139 UMA_HISTOGRAM_COUNTS_100("Extensions.ExternalJsonCount", |
| 140 prefs_->size()); | 140 prefs_->size()); |
| 141 } | 141 } |
| 142 | 142 |
| 143 // If we have any records to process, then we must have | 143 // If we have any records to process, then we must have |
| 144 // read at least one .json file. If so, then we should have | 144 // read at least one .json file. If so, then we should have |
| 145 // set |base_path_|. | 145 // set |base_path_|. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 177 // The only platform that uses this check is Mac OS. If you add one, | 177 // The only platform that uses this check is Mac OS. If you add one, |
| 178 // you need to implement file_util::VerifyPathControlledByAdmin() for | 178 // you need to implement file_util::VerifyPathControlledByAdmin() for |
| 179 // that platform. | 179 // that platform. |
| 180 NOTREACHED(); | 180 NOTREACHED(); |
| 181 #endif // defined(OS_MACOSX) | 181 #endif // defined(OS_MACOSX) |
| 182 } | 182 } |
| 183 | 183 |
| 184 JSONFileValueSerializer serializer(json_file); | 184 JSONFileValueSerializer serializer(json_file); |
| 185 scoped_ptr<DictionaryValue> ext_prefs( | 185 scoped_ptr<DictionaryValue> ext_prefs( |
| 186 ExtractExtensionPrefs(&serializer, json_file)); | 186 ExtractExtensionPrefs(&serializer, json_file)); |
| 187 if (ext_prefs.get()) | 187 if (ext_prefs) |
| 188 prefs->MergeDictionary(ext_prefs.get()); | 188 prefs->MergeDictionary(ext_prefs.get()); |
| 189 } | 189 } |
| 190 | 190 |
| 191 void ExternalPrefLoader::ReadStandaloneExtensionPrefFiles( | 191 void ExternalPrefLoader::ReadStandaloneExtensionPrefFiles( |
| 192 DictionaryValue* prefs) { | 192 DictionaryValue* prefs) { |
| 193 CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 193 CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 194 CHECK(NULL != prefs); | 194 CHECK(NULL != prefs); |
| 195 | 195 |
| 196 // First list the potential .json candidates. | 196 // First list the potential .json candidates. |
| 197 std::set<base::FilePath> | 197 std::set<base::FilePath> |
| (...skipping 17 matching lines...) Expand all Loading... |
| 215 #elif defined(OS_POSIX) | 215 #elif defined(OS_POSIX) |
| 216 extension_candidate_path.RemoveExtension().BaseName().value().c_str(); | 216 extension_candidate_path.RemoveExtension().BaseName().value().c_str(); |
| 217 #endif | 217 #endif |
| 218 | 218 |
| 219 DVLOG(1) << "Reading json file: " | 219 DVLOG(1) << "Reading json file: " |
| 220 << extension_candidate_path.LossyDisplayName().c_str(); | 220 << extension_candidate_path.LossyDisplayName().c_str(); |
| 221 | 221 |
| 222 JSONFileValueSerializer serializer(extension_candidate_path); | 222 JSONFileValueSerializer serializer(extension_candidate_path); |
| 223 scoped_ptr<DictionaryValue> ext_prefs( | 223 scoped_ptr<DictionaryValue> ext_prefs( |
| 224 ExtractExtensionPrefs(&serializer, extension_candidate_path)); | 224 ExtractExtensionPrefs(&serializer, extension_candidate_path)); |
| 225 if (ext_prefs.get()) { | 225 if (ext_prefs) { |
| 226 DVLOG(1) << "Adding extension with id: " << id; | 226 DVLOG(1) << "Adding extension with id: " << id; |
| 227 prefs->Set(id, ext_prefs.release()); | 227 prefs->Set(id, ext_prefs.release()); |
| 228 } | 228 } |
| 229 } | 229 } |
| 230 } | 230 } |
| 231 | 231 |
| 232 ExternalTestingLoader::ExternalTestingLoader( | 232 ExternalTestingLoader::ExternalTestingLoader( |
| 233 const std::string& json_data, | 233 const std::string& json_data, |
| 234 const base::FilePath& fake_base_path) | 234 const base::FilePath& fake_base_path) |
| 235 : fake_base_path_(fake_base_path) { | 235 : fake_base_path_(fake_base_path) { |
| 236 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 236 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 237 JSONStringValueSerializer serializer(json_data); | 237 JSONStringValueSerializer serializer(json_data); |
| 238 base::FilePath fake_json_path = fake_base_path.AppendASCII("fake.json"); | 238 base::FilePath fake_json_path = fake_base_path.AppendASCII("fake.json"); |
| 239 testing_prefs_.reset(ExtractExtensionPrefs(&serializer, fake_json_path)); | 239 testing_prefs_.reset(ExtractExtensionPrefs(&serializer, fake_json_path)); |
| 240 } | 240 } |
| 241 | 241 |
| 242 void ExternalTestingLoader::StartLoading() { | 242 void ExternalTestingLoader::StartLoading() { |
| 243 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 243 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 244 prefs_.reset(testing_prefs_->DeepCopy()); | 244 prefs_.reset(testing_prefs_->DeepCopy()); |
| 245 LoadFinished(); | 245 LoadFinished(); |
| 246 } | 246 } |
| 247 | 247 |
| 248 ExternalTestingLoader::~ExternalTestingLoader() {} | 248 ExternalTestingLoader::~ExternalTestingLoader() {} |
| 249 | 249 |
| 250 const base::FilePath ExternalTestingLoader::GetBaseCrxFilePath() { | 250 const base::FilePath ExternalTestingLoader::GetBaseCrxFilePath() { |
| 251 return fake_base_path_; | 251 return fake_base_path_; |
| 252 } | 252 } |
| 253 | 253 |
| 254 } // extensions | 254 } // extensions |
| OLD | NEW |