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

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: Merged with ToT 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 3dcde37bbc2eac1c9b9c6597445d6b6eb9bc668c..2759c89548af020d4cb885930c071a519ef5f7a1 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 a preference with scope 'incognito_session_only' when no "
+ "incognito window is open.";
+
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 @@ bool StringToScope(const std::string& s, extension_prefs_scope::Scope* scope) {
*scope = extension_prefs_scope::kRegular;
else if (s == kIncognitoPersistent)
*scope = extension_prefs_scope::kIncognitoPersistent;
+ else if (s == kIncognitoSessionOnly)
+ *scope = extension_prefs_scope::kIncognitoSessionOnly;
else
return false;
return true;
@@ -367,8 +374,8 @@ bool SetPreferenceFunction::RunImpl() {
extension_prefs_scope::Scope scope;
EXTENSION_FUNCTION_VALIDATE(StringToScope(scope_str, &scope));
- // TODO(battre): add kIncognitoSessionOnly
- bool incognito = (scope == extension_prefs_scope::kIncognitoPersistent);
+ bool incognito = (scope == extension_prefs_scope::kIncognitoPersistent ||
+ scope == extension_prefs_scope::kIncognitoSessionOnly);
if (incognito) {
// Regular profiles can't access incognito unless include_incognito is true.
if (!profile()->IsOffTheRecord() && !include_incognito()) {
@@ -384,6 +391,12 @@ bool SetPreferenceFunction::RunImpl() {
}
}
+ if (scope == extension_prefs_scope::kIncognitoSessionOnly &&
+ !profile_->HasOffTheRecordProfile()) {
+ error_ = kIncognitoSessionOnlyErrorMessage;
+ return false;
+ }
+
std::string browser_pref;
std::string permission;
EXTENSION_FUNCTION_VALIDATE(
@@ -431,8 +444,8 @@ bool ClearPreferenceFunction::RunImpl() {
extension_prefs_scope::Scope scope;
EXTENSION_FUNCTION_VALIDATE(StringToScope(scope_str, &scope));
- // TODO(battre): add kIncognitoSessionOnly
- bool incognito = (scope == extension_prefs_scope::kIncognitoPersistent);
+ bool incognito = (scope == extension_prefs_scope::kIncognitoPersistent ||
+ scope == extension_prefs_scope::kIncognitoSessionOnly);
if (incognito) {
// We don't check incognito permissions here, as an extension should be
// always allowed to clear its own settings.
« no previous file with comments | « chrome/browser/extensions/extension_pref_value_map_unittest.cc ('k') | chrome/browser/extensions/extension_prefs_scope.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698