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

Unified Diff: chrome/browser/extensions/external_pref_extension_loader.cc

Issue 6370009: Add in-profile external_extensions.json file for Chrome OS OEM customization. (Closed) Base URL: http://git.chromium.org/git/chromium.git
Patch Set: Ready for review. Created 9 years, 11 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 side-by-side diff with in-line comments
Download patch
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 0d246b01c50735cfaca21b472616272377238262..22bdd57c17aaab687909104d970fb85bcc6fe5b4 100644
--- a/chrome/browser/extensions/external_pref_extension_loader.cc
+++ b/chrome/browser/extensions/external_pref_extension_loader.cc
@@ -14,15 +14,18 @@
namespace {
-// Caller takes ownership of the returned dictionary
-DictionaryValue* ExtractPrefs(ValueSerializer* serializer) {
+// Caller takes ownership of the returned dictionary.
+DictionaryValue* ExtractPrefs(const FilePath& path,
+ ValueSerializer* serializer) {
std::string error_msg;
Value* extensions = serializer->Deserialize(NULL, &error_msg);
if (!extensions) {
- LOG(WARNING) << "Unable to deserialize json data: " << error_msg;
+ LOG(WARNING) << "Unable to deserialize json data: " << error_msg
+ << " In file " << path.value() << " .";
} else {
if (!extensions->IsType(Value::TYPE_DICTIONARY)) {
- NOTREACHED() << "Invalid json data";
+ LOG(WARNING) << "Expected a JSON dictionary in file "
+ << path.value() << " .";
} else {
return static_cast<DictionaryValue*>(extensions);
}
@@ -40,11 +43,7 @@ ExternalPrefExtensionLoader::ExternalPrefExtensionLoader(int base_path_key)
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());
Sam Kerner (Chrome) 2011/01/21 15:47:01 Yesterday we talked about changing this to: CHEC
-
+ // |base_path_| was set in LoadOnFileThread().
return base_path_;
}
@@ -60,8 +59,14 @@ void ExternalPrefExtensionLoader::StartLoading() {
void ExternalPrefExtensionLoader::LoadOnFileThread() {
CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
- scoped_ptr<DictionaryValue> prefs;
+ // TODO(skerner): Some values of base_path_key_ will cause
+ // PathServcie::Get() to return false, because the path does
Erik does not do reviews 2011/01/21 17:05:25 PathService
Sam Kerner (Chrome) 2011/01/21 17:59:26 Done.
+ // not exist. Find and fix the build/install scripts so that
+ // this can become a CHECK(). Known exmples include chrome
+ // OS develoer builds and linux install packages.
Erik does not do reviews 2011/01/21 17:05:25 developer
Sam Kerner (Chrome) 2011/01/21 17:59:26 Done.
+ // Tracked as crbug.com/70402 .
+ scoped_ptr<DictionaryValue> prefs;
if (PathService::Get(base_path_key_, &base_path_)) {
FilePath json_file;
json_file =
@@ -69,7 +74,7 @@ void ExternalPrefExtensionLoader::LoadOnFileThread() {
if (file_util::PathExists(json_file)) {
JSONFileValueSerializer serializer(json_file);
- prefs.reset(ExtractPrefs(&serializer));
+ prefs.reset(ExtractPrefs(json_file, &serializer));
}
}
@@ -77,11 +82,17 @@ void ExternalPrefExtensionLoader::LoadOnFileThread() {
prefs.reset(new DictionaryValue());
prefs_.reset(prefs.release());
+
+ // If we have any records to process, then we must have
+ // read the .json file. If we read the .json file, then
+ // we were able to set |base_path_|.
+ CHECK(!prefs_->empty() || !base_path_.empty());
Sam Kerner (Chrome) 2011/01/21 15:47:01 New CHECK here.
+
BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- NewRunnableMethod(
- this,
- &ExternalPrefExtensionLoader::LoadFinished));
+ BrowserThread::UI, FROM_HERE,
+ NewRunnableMethod(
+ this,
+ &ExternalPrefExtensionLoader::LoadFinished));
}
ExternalTestingExtensionLoader::ExternalTestingExtensionLoader(
@@ -90,7 +101,8 @@ ExternalTestingExtensionLoader::ExternalTestingExtensionLoader(
: fake_base_path_(fake_base_path) {
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
JSONStringValueSerializer serializer(json_data);
- testing_prefs_.reset(ExtractPrefs(&serializer));
+ FilePath fake_json_path = fake_base_path.AppendASCII("fake.json");
+ testing_prefs_.reset(ExtractPrefs(fake_json_path, &serializer));
}
void ExternalTestingExtensionLoader::StartLoading() {

Powered by Google App Engine
This is Rietveld 408576698