From ec5143b6de34afca2efa50687b2eaa42fc8493a4 Mon Sep 17 00:00:00 2001 From: "bauerb@chromium.org" Date: Tue, 17 Sep 2013 12:03:53 +0000 Subject: Reland r223124: Don't clear existing extension-defined preferences and content settings when reloading or updating an extension. TBR=falken@chromium.org,sky@chromium.org BUG=284385 Original review: https://chromiumcodereview.appspot.com/23694020 Review URL: https://chromiumcodereview.appspot.com/23581015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@223587 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/extensions/extension_prefs.cc | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'chrome/browser/extensions/extension_prefs.cc') diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc index 24f2d84..3c66561 100644 --- a/chrome/browser/extensions/extension_prefs.cc +++ b/chrome/browser/extensions/extension_prefs.cc @@ -1835,13 +1835,26 @@ void ExtensionPrefs::FinishExtensionInfoPrefs( const syncer::StringOrdinal& suggested_page_ordinal, DictionaryValue* extension_dict) { // Reinitializes various preferences with empty dictionaries. - extension_dict->Set(pref_names::kPrefPreferences, new DictionaryValue); - extension_dict->Set(pref_names::kPrefIncognitoPreferences, - new DictionaryValue); - extension_dict->Set(pref_names::kPrefRegularOnlyPreferences, - new DictionaryValue); - extension_dict->Set(pref_names::kPrefContentSettings, new ListValue); - extension_dict->Set(pref_names::kPrefIncognitoContentSettings, new ListValue); + if (!extension_dict->HasKey(pref_names::kPrefPreferences)) + extension_dict->Set(pref_names::kPrefPreferences, new DictionaryValue); + + if (!extension_dict->HasKey(pref_names::kPrefIncognitoPreferences)) { + extension_dict->Set(pref_names::kPrefIncognitoPreferences, + new DictionaryValue); + } + + if (!extension_dict->HasKey(pref_names::kPrefRegularOnlyPreferences)) { + extension_dict->Set(pref_names::kPrefRegularOnlyPreferences, + new DictionaryValue); + } + + if (!extension_dict->HasKey(pref_names::kPrefContentSettings)) + extension_dict->Set(pref_names::kPrefContentSettings, new ListValue); + + if (!extension_dict->HasKey(pref_names::kPrefIncognitoContentSettings)) { + extension_dict->Set(pref_names::kPrefIncognitoContentSettings, + new ListValue); + } // If this point has been reached, any pending installs should be considered // out of date. -- cgit v1.1