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

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

Issue 7065033: Support persistent incognito preferences (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments Created 9 years, 7 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/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..5b0b5ee8a1711ed2f4beb85f5e34d39732aea47f 100644
--- a/chrome/browser/extensions/extension_pref_value_map.cc
+++ b/chrome/browser/extensions/extension_pref_value_map.cc
@@ -13,10 +13,11 @@ struct ExtensionPrefValueMap::ExtensionEntry {
base::Time install_time;
// Whether extension is enabled in the profile.
bool enabled;
- // Regular preferences.
- PrefValueMap reg_preferences;
- // Incognito preferences, empty for regular ExtensionPrefStore.
- PrefValueMap inc_preferences;
+ // Extension controlled preferences for the regular profile.
+ PrefValueMap regular_profile_preferences;
+ // Persistent extension controlled preferences for the incognito profile,
+ // empty for regular profile ExtensionPrefStore.
+ PrefValueMap incognito_profile_preferences_persistent;
};
ExtensionPrefValueMap::ExtensionPrefValueMap() {
@@ -30,18 +31,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 +117,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->regular_profile_preferences);
+ case extension_prefs_scope::kIncognitoPersistent:
+ return &(i->second->incognito_profile_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->regular_profile_preferences);
+ case extension_prefs_scope::kIncognitoPersistent:
+ return &(i->second->incognito_profile_preferences_persistent);
+ }
+ NOTREACHED();
+ return NULL;
}
void ExtensionPrefValueMap::GetExtensionControlledKeys(
@@ -136,12 +150,13 @@ void ExtensionPrefValueMap::GetExtensionControlledKeys(
std::set<std::string>* out) const {
PrefValueMap::const_iterator i;
- const PrefValueMap& reg_prefs = entry.reg_preferences;
+ const PrefValueMap& reg_prefs = entry.regular_profile_preferences;
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.incognito_profile_preferences_persistent;
+ for (i = inc_prefs_pers.begin(); i != inc_prefs_pers.end(); ++i)
out->insert(i->first);
}
@@ -156,10 +171,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 +204,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 +216,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;
« no previous file with comments | « chrome/browser/extensions/extension_pref_value_map.h ('k') | chrome/browser/extensions/extension_pref_value_map_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698