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

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: Fix Mac/Windows compilers 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..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;

Powered by Google App Engine
This is Rietveld 408576698