Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Side by Side Diff: chrome/browser/extensions/external_pref_loader.cc

Issue 925783002: Split ValueSerializer into separate Serializer and Deserializer classes. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed cpplint warnings. Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/files/file_enumerator.h" 8 #include "base/files/file_enumerator.h"
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 } while (true); 63 } while (true);
64 64
65 return external_extension_paths; 65 return external_extension_paths;
66 } 66 }
67 67
68 // Extracts extension information from a json file serialized by |serializer|. 68 // Extracts extension information from a json file serialized by |serializer|.
69 // |path| is only used for informational purposes (outputted when an error 69 // |path| is only used for informational purposes (outputted when an error
70 // occurs). An empty dictionary is returned in case of failure (e.g. invalid 70 // occurs). An empty dictionary is returned in case of failure (e.g. invalid
71 // path or json content). 71 // path or json content).
72 // Caller takes ownership of the returned dictionary. 72 // Caller takes ownership of the returned dictionary.
73 base::DictionaryValue* ExtractExtensionPrefs(base::ValueSerializer* serializer, 73 base::DictionaryValue* ExtractExtensionPrefs(
74 const base::FilePath& path) { 74 base::ValueDeserializer* deserializer,
75 const base::FilePath& path) {
75 std::string error_msg; 76 std::string error_msg;
76 base::Value* extensions = serializer->Deserialize(NULL, &error_msg); 77 base::Value* extensions = deserializer->Deserialize(NULL, &error_msg);
77 if (!extensions) { 78 if (!extensions) {
78 LOG(WARNING) << "Unable to deserialize json data: " << error_msg 79 LOG(WARNING) << "Unable to deserialize json data: " << error_msg
79 << " in file " << path.value() << "."; 80 << " in file " << path.value() << ".";
80 return new base::DictionaryValue; 81 return new base::DictionaryValue;
81 } 82 }
82 83
83 base::DictionaryValue* ext_dictionary = NULL; 84 base::DictionaryValue* ext_dictionary = NULL;
84 if (extensions->GetAsDictionary(&ext_dictionary)) 85 if (extensions->GetAsDictionary(&ext_dictionary))
85 return ext_dictionary; 86 return ext_dictionary;
86 87
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 return; 248 return;
248 } 249 }
249 #else 250 #else
250 // The only platform that uses this check is Mac OS. If you add one, 251 // The only platform that uses this check is Mac OS. If you add one,
251 // you need to implement base::VerifyPathControlledByAdmin() for 252 // you need to implement base::VerifyPathControlledByAdmin() for
252 // that platform. 253 // that platform.
253 NOTREACHED(); 254 NOTREACHED();
254 #endif // defined(OS_MACOSX) 255 #endif // defined(OS_MACOSX)
255 } 256 }
256 257
257 JSONFileValueSerializer serializer(json_file); 258 JSONFileValueDeserializer deserializer(json_file);
258 scoped_ptr<base::DictionaryValue> ext_prefs( 259 scoped_ptr<base::DictionaryValue> ext_prefs(
259 ExtractExtensionPrefs(&serializer, json_file)); 260 ExtractExtensionPrefs(&deserializer, json_file));
260 if (ext_prefs) 261 if (ext_prefs)
261 prefs->MergeDictionary(ext_prefs.get()); 262 prefs->MergeDictionary(ext_prefs.get());
262 } 263 }
263 264
264 void ExternalPrefLoader::ReadStandaloneExtensionPrefFiles( 265 void ExternalPrefLoader::ReadStandaloneExtensionPrefFiles(
265 base::DictionaryValue* prefs) { 266 base::DictionaryValue* prefs) {
266 CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 267 CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
267 CHECK(NULL != prefs); 268 CHECK(NULL != prefs);
268 269
269 // First list the potential .json candidates. 270 // First list the potential .json candidates.
(...skipping 15 matching lines...) Expand all
285 #if defined(OS_WIN) 286 #if defined(OS_WIN)
286 base::UTF16ToASCII( 287 base::UTF16ToASCII(
287 extension_candidate_path.RemoveExtension().BaseName().value()); 288 extension_candidate_path.RemoveExtension().BaseName().value());
288 #elif defined(OS_POSIX) 289 #elif defined(OS_POSIX)
289 extension_candidate_path.RemoveExtension().BaseName().value(); 290 extension_candidate_path.RemoveExtension().BaseName().value();
290 #endif 291 #endif
291 292
292 DVLOG(1) << "Reading json file: " 293 DVLOG(1) << "Reading json file: "
293 << extension_candidate_path.LossyDisplayName(); 294 << extension_candidate_path.LossyDisplayName();
294 295
295 JSONFileValueSerializer serializer(extension_candidate_path); 296 JSONFileValueDeserializer deserializer(extension_candidate_path);
296 scoped_ptr<base::DictionaryValue> ext_prefs( 297 scoped_ptr<base::DictionaryValue> ext_prefs(
297 ExtractExtensionPrefs(&serializer, extension_candidate_path)); 298 ExtractExtensionPrefs(&deserializer, extension_candidate_path));
298 if (ext_prefs) { 299 if (ext_prefs) {
299 DVLOG(1) << "Adding extension with id: " << id; 300 DVLOG(1) << "Adding extension with id: " << id;
300 prefs->Set(id, ext_prefs.release()); 301 prefs->Set(id, ext_prefs.release());
301 } 302 }
302 } 303 }
303 } 304 }
304 305
305 ExternalTestingLoader::ExternalTestingLoader( 306 ExternalTestingLoader::ExternalTestingLoader(
306 const std::string& json_data, 307 const std::string& json_data,
307 const base::FilePath& fake_base_path) 308 const base::FilePath& fake_base_path)
308 : fake_base_path_(fake_base_path) { 309 : fake_base_path_(fake_base_path) {
309 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 310 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
310 JSONStringValueSerializer serializer(json_data); 311 JSONStringValueDeserializer deserializer(json_data);
311 base::FilePath fake_json_path = fake_base_path.AppendASCII("fake.json"); 312 base::FilePath fake_json_path = fake_base_path.AppendASCII("fake.json");
312 testing_prefs_.reset(ExtractExtensionPrefs(&serializer, fake_json_path)); 313 testing_prefs_.reset(ExtractExtensionPrefs(&deserializer, fake_json_path));
313 } 314 }
314 315
315 void ExternalTestingLoader::StartLoading() { 316 void ExternalTestingLoader::StartLoading() {
316 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 317 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
317 prefs_.reset(testing_prefs_->DeepCopy()); 318 prefs_.reset(testing_prefs_->DeepCopy());
318 LoadFinished(); 319 LoadFinished();
319 } 320 }
320 321
321 ExternalTestingLoader::~ExternalTestingLoader() {} 322 ExternalTestingLoader::~ExternalTestingLoader() {}
322 323
323 const base::FilePath ExternalTestingLoader::GetBaseCrxFilePath() { 324 const base::FilePath ExternalTestingLoader::GetBaseCrxFilePath() {
324 return fake_base_path_; 325 return fake_base_path_;
325 } 326 }
326 327
327 } // namespace extensions 328 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_ui_unittest.cc ('k') | chrome/browser/extensions/user_script_listener_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698