| Index: chrome/browser/extensions/extension_pref_value_map.cc
|
| diff --git a/chrome/browser/extensions/extension_pref_value_map.cc b/chrome/browser/extensions/extension_pref_value_map.cc
|
| index 7032be99d9a3e64fafb9209aa5db53906cbf7150..2fa1483e2ea79cd0128cfd6a2cbcb04ab86f0711 100644
|
| --- a/chrome/browser/extensions/extension_pref_value_map.cc
|
| +++ b/chrome/browser/extensions/extension_pref_value_map.cc
|
| @@ -15,8 +15,8 @@ struct ExtensionPrefValueMap::ExtensionEntry {
|
| bool enabled;
|
| // Regular preferences.
|
| PrefValueMap reg_preferences;
|
| - // Incognito preferences, empty for regular ExtensionPrefStore.
|
| - PrefValueMap inc_preferences;
|
| + // Persistent incognito preferences, empty for regular ExtensionPrefStore.
|
| + PrefValueMap inc_preferences_persistent;
|
| };
|
|
|
| ExtensionPrefValueMap::ExtensionPrefValueMap() {
|
| @@ -30,18 +30,19 @@ ExtensionPrefValueMap::~ExtensionPrefValueMap() {
|
|
|
| void ExtensionPrefValueMap::SetExtensionPref(const std::string& ext_id,
|
| const std::string& key,
|
| - bool incognito,
|
| + extension_prefs_scope::Scope scope,
|
| Value* value) {
|
| - PrefValueMap* prefs = GetExtensionPrefValueMap(ext_id, incognito);
|
| + PrefValueMap* prefs = GetExtensionPrefValueMap(ext_id, scope);
|
|
|
| if (prefs->SetValue(key, value))
|
| NotifyPrefValueChanged(key);
|
| }
|
|
|
| -void ExtensionPrefValueMap::RemoveExtensionPref(const std::string& ext_id,
|
| - const std::string& key,
|
| - bool incognito) {
|
| - PrefValueMap* prefs = GetExtensionPrefValueMap(ext_id, incognito);
|
| +void ExtensionPrefValueMap::RemoveExtensionPref(
|
| + const std::string& ext_id,
|
| + const std::string& key,
|
| + extension_prefs_scope::Scope scope) {
|
| + PrefValueMap* prefs = GetExtensionPrefValueMap(ext_id, scope);
|
| if (prefs->RemoveValue(key))
|
| NotifyPrefValueChanged(key);
|
| }
|
| @@ -115,20 +116,32 @@ void ExtensionPrefValueMap::SetExtensionState(const std::string& ext_id,
|
|
|
| PrefValueMap* ExtensionPrefValueMap::GetExtensionPrefValueMap(
|
| const std::string& ext_id,
|
| - bool incognito) {
|
| + extension_prefs_scope::Scope scope) {
|
| ExtensionEntryMap::const_iterator i = entries_.find(ext_id);
|
| CHECK(i != entries_.end());
|
| - return incognito ? &(i->second->inc_preferences)
|
| - : &(i->second->reg_preferences);
|
| + switch (scope) {
|
| + case extension_prefs_scope::kRegular:
|
| + return &(i->second->reg_preferences);
|
| + case extension_prefs_scope::kIncognitoPersistent:
|
| + return &(i->second->inc_preferences_persistent);
|
| + }
|
| + NOTREACHED();
|
| + return NULL;
|
| }
|
|
|
| const PrefValueMap* ExtensionPrefValueMap::GetExtensionPrefValueMap(
|
| const std::string& ext_id,
|
| - bool incognito) const {
|
| + extension_prefs_scope::Scope scope) const {
|
| ExtensionEntryMap::const_iterator i = entries_.find(ext_id);
|
| CHECK(i != entries_.end());
|
| - return incognito ? &(i->second->inc_preferences)
|
| - : &(i->second->reg_preferences);
|
| + switch (scope) {
|
| + case extension_prefs_scope::kRegular:
|
| + return &(i->second->reg_preferences);
|
| + case extension_prefs_scope::kIncognitoPersistent:
|
| + return &(i->second->inc_preferences_persistent);
|
| + }
|
| + NOTREACHED();
|
| + return NULL;
|
| }
|
|
|
| void ExtensionPrefValueMap::GetExtensionControlledKeys(
|
| @@ -140,8 +153,8 @@ void ExtensionPrefValueMap::GetExtensionControlledKeys(
|
| for (i = reg_prefs.begin(); i != reg_prefs.end(); ++i)
|
| out->insert(i->first);
|
|
|
| - const PrefValueMap& inc_prefs = entry.inc_preferences;
|
| - for (i = inc_prefs.begin(); i != inc_prefs.end(); ++i)
|
| + const PrefValueMap& inc_prefs_pers = entry.inc_preferences_persistent;
|
| + for (i = inc_prefs_pers.begin(); i != inc_prefs_pers.end(); ++i)
|
| out->insert(i->first);
|
| }
|
|
|
| @@ -156,10 +169,16 @@ const Value* ExtensionPrefValueMap::GetEffectivePrefValue(
|
|
|
| const Value* value = NULL;
|
| const std::string& ext_id = winner->first;
|
| - if (incognito)
|
| - GetExtensionPrefValueMap(ext_id, true)->GetValue(key, &value);
|
| - if (!value)
|
| - GetExtensionPrefValueMap(ext_id, false)->GetValue(key, &value);
|
| + if (incognito) {
|
| + const PrefValueMap* prefs = GetExtensionPrefValueMap(
|
| + ext_id, extension_prefs_scope::kIncognitoPersistent);
|
| + prefs->GetValue(key, &value);
|
| + }
|
| + if (!value) {
|
| + const PrefValueMap* prefs = GetExtensionPrefValueMap(
|
| + ext_id, extension_prefs_scope::kRegular);
|
| + prefs->GetValue(key, &value);
|
| + }
|
| return value;
|
| }
|
|
|
| @@ -183,7 +202,8 @@ ExtensionPrefValueMap::GetEffectivePrefValueController(
|
| continue;
|
|
|
| const Value* value = NULL;
|
| - const PrefValueMap* prefs = GetExtensionPrefValueMap(ext_id, false);
|
| + const PrefValueMap* prefs = GetExtensionPrefValueMap(
|
| + ext_id, extension_prefs_scope::kRegular);
|
| if (prefs->GetValue(key, &value)) {
|
| winner = i;
|
| winners_install_time = install_time;
|
| @@ -194,7 +214,8 @@ ExtensionPrefValueMap::GetEffectivePrefValueController(
|
| if (!incognito)
|
| continue;
|
|
|
| - prefs = GetExtensionPrefValueMap(ext_id, true);
|
| + prefs = GetExtensionPrefValueMap(
|
| + ext_id, extension_prefs_scope::kIncognitoPersistent);
|
| if (prefs->GetValue(key, &value)) {
|
| winner = i;
|
| winners_install_time = install_time;
|
|
|