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

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

Issue 7067040: Enable incognito_session_only preferences (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 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_preference_api.cc
diff --git a/chrome/browser/extensions/extension_preference_api.cc b/chrome/browser/extensions/extension_preference_api.cc
index 8a1d5af0ef6644494446e2cba52b5234879829b2..8e2650aa9478fdb5aee249539225acdd5beea18f 100644
--- a/chrome/browser/extensions/extension_preference_api.cc
+++ b/chrome/browser/extensions/extension_preference_api.cc
@@ -40,6 +40,7 @@ const char kScope[] = "scope";
const char kLevelOfControl[] = "levelOfControl";
const char kRegular[] = "regular";
const char kIncognitoPersistent[] = "incognito_persistent";
+const char kIncognitoSessionOnly[] = "incognito_session_only";
const char kValue[] = "value";
const char kOnPrefChangeFormat[] =
@@ -48,6 +49,10 @@ const char kOnPrefChangeFormat[] =
const char kIncognitoErrorMessage[] =
"You do not have permission to access incognito preferences.";
+const char kIncognitoSessionOnlyErrorMessage[] =
+ "You cannot set 'session-only incognito' preferences when no incognito "
Matt Perry 2011/05/24 22:07:17 Reword: "You cannot set a preference with scope 'i
battre 2011/05/25 11:51:30 Done.
+ "window exists.";
+
const char kPermissionErrorMessage[] =
"You do not have permission to access the preference '%s'. "
"Be sure to declare in your manifest what permissions you need.";
@@ -118,6 +123,8 @@ extension_prefs_scope::Scope StringToScope(const std::string& s) {
return extension_prefs_scope::kRegular;
} else if (s == kIncognitoPersistent) {
return extension_prefs_scope::kIncognitoPersistent;
+ } else if (s == kIncognitoSessionOnly) {
+ return extension_prefs_scope::kIncognitoSessionOnly;
} else {
// The extension API checks that no invalid string can be passed.
NOTREACHED();
@@ -362,17 +369,25 @@ bool SetPreferenceFunction::RunImpl() {
Value* value = NULL;
EXTENSION_FUNCTION_VALIDATE(details->Get(kValue, &value));
- std::string scope = kRegular;
+ std::string scope_str = kRegular;
if (details->HasKey(kScope))
- EXTENSION_FUNCTION_VALIDATE(details->GetString(kScope, &scope));
+ EXTENSION_FUNCTION_VALIDATE(details->GetString(kScope, &scope_str));
+
+ extension_prefs_scope::Scope scope = StringToScope(scope_str);
- // TODO(battre): add kIncognitoSessionOnly
- bool incognito = (scope == kIncognitoPersistent);
+ bool incognito = (scope == extension_prefs_scope::kIncognitoPersistent ||
+ scope == extension_prefs_scope::kIncognitoSessionOnly);
if (incognito && !include_incognito()) {
error_ = kIncognitoErrorMessage;
return false;
}
+ if (scope == extension_prefs_scope::kIncognitoSessionOnly &&
+ !profile_->HasOffTheRecordProfile()) {
+ error_ = kIncognitoSessionOnlyErrorMessage;
+ return false;
+ }
+
std::string browser_pref;
std::string permission;
EXTENSION_FUNCTION_VALIDATE(
@@ -400,7 +415,7 @@ bool SetPreferenceFunction::RunImpl() {
}
prefs->SetExtensionControlledPref(extension_id(),
browser_pref,
- StringToScope(scope),
+ scope,
browserPrefValue);
return true;
}

Powered by Google App Engine
This is Rietveld 408576698