Fixed the value of "controlledBy" for preferences when they're set by the user.

BUG=107098, 106592
TEST=unit_tests:PrefValueStoreTest.*


Review URL: http://codereview.chromium.org/8896023

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@114009 0039d316-1c4b-4281-b951-d872f2087c98
parent 71ebc22a
...@@ -907,6 +907,10 @@ bool PrefService::Preference::IsManaged() const { ...@@ -907,6 +907,10 @@ bool PrefService::Preference::IsManaged() const {
return pref_value_store()->PrefValueInManagedStore(name_.c_str()); return pref_value_store()->PrefValueInManagedStore(name_.c_str());
} }
bool PrefService::Preference::IsRecommended() const {
return pref_value_store()->PrefValueFromRecommendedStore(name_.c_str());
}
bool PrefService::Preference::HasExtensionSetting() const { bool PrefService::Preference::HasExtensionSetting() const {
return pref_value_store()->PrefValueInExtensionStore(name_.c_str()); return pref_value_store()->PrefValueInExtensionStore(name_.c_str());
} }
......
...@@ -78,6 +78,10 @@ class PrefService : public base::NonThreadSafe { ...@@ -78,6 +78,10 @@ class PrefService : public base::NonThreadSafe {
// whether the pref is actually being controlled by the policy setting. // whether the pref is actually being controlled by the policy setting.
bool IsManaged() const; bool IsManaged() const;
// Returns true if the Preference is recommended, i.e. set by an admin
// policy but the user is allowed to change it.
bool IsRecommended() const;
// Returns true if the Preference has a value set by an extension, even if // Returns true if the Preference has a value set by an extension, even if
// that value is being overridden by a higher-priority source. // that value is being overridden by a higher-priority source.
bool HasExtensionSetting() const; bool HasExtensionSetting() const;
......
...@@ -164,6 +164,11 @@ bool PrefValueStore::PrefValueFromUserStore(const char* name) const { ...@@ -164,6 +164,11 @@ bool PrefValueStore::PrefValueFromUserStore(const char* name) const {
return ControllingPrefStoreForPref(name) == USER_STORE; return ControllingPrefStoreForPref(name) == USER_STORE;
} }
bool PrefValueStore::PrefValueFromRecommendedStore(const char* name) const {
return ControllingPrefStoreForPref(name) == RECOMMENDED_PLATFORM_STORE ||
ControllingPrefStoreForPref(name) == RECOMMENDED_CLOUD_STORE;
}
bool PrefValueStore::PrefValueFromDefaultStore(const char* name) const { bool PrefValueStore::PrefValueFromDefaultStore(const char* name) const {
return ControllingPrefStoreForPref(name) == DEFAULT_STORE; return ControllingPrefStoreForPref(name) == DEFAULT_STORE;
} }
......
...@@ -94,6 +94,7 @@ class PrefValueStore { ...@@ -94,6 +94,7 @@ class PrefValueStore {
// a higher-priority source. // a higher-priority source.
bool PrefValueFromExtensionStore(const char* name) const; bool PrefValueFromExtensionStore(const char* name) const;
bool PrefValueFromUserStore(const char* name) const; bool PrefValueFromUserStore(const char* name) const;
bool PrefValueFromRecommendedStore(const char* name) const;
bool PrefValueFromDefaultStore(const char* name) const; bool PrefValueFromDefaultStore(const char* name) const;
// Check whether a Preference value is modifiable by the user, i.e. whether // Check whether a Preference value is modifiable by the user, i.e. whether
......
...@@ -610,6 +610,27 @@ TEST_F(PrefValueStoreTest, PrefValueFromUserStore) { ...@@ -610,6 +610,27 @@ TEST_F(PrefValueStoreTest, PrefValueFromUserStore) {
prefs::kMissingPref)); prefs::kMissingPref));
} }
TEST_F(PrefValueStoreTest, PrefValueFromRecommendedStore) {
EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore(
prefs::kManagedPlatformPref));
EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore(
prefs::kManagedCloudPref));
EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore(
prefs::kExtensionPref));
EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore(
prefs::kCommandLinePref));
EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore(
prefs::kUserPref));
EXPECT_TRUE(pref_value_store_->PrefValueFromRecommendedStore(
prefs::kRecommendedPlatformPref));
EXPECT_TRUE(pref_value_store_->PrefValueFromRecommendedStore(
prefs::kRecommendedCloudPref));
EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore(
prefs::kDefaultPref));
EXPECT_FALSE(pref_value_store_->PrefValueFromRecommendedStore(
prefs::kMissingPref));
}
TEST_F(PrefValueStoreTest, PrefValueFromDefaultStore) { TEST_F(PrefValueStoreTest, PrefValueFromDefaultStore) {
EXPECT_FALSE(pref_value_store_->PrefValueFromDefaultStore( EXPECT_FALSE(pref_value_store_->PrefValueFromDefaultStore(
prefs::kManagedPlatformPref)); prefs::kManagedPlatformPref));
......
...@@ -272,8 +272,7 @@ DictionaryValue* CoreOptionsHandler::CreateValueForPref( ...@@ -272,8 +272,7 @@ DictionaryValue* CoreOptionsHandler::CreateValueForPref(
dict->SetString("controlledBy", "policy"); dict->SetString("controlledBy", "policy");
} else if (controlling_pref->IsExtensionControlled()) { } else if (controlling_pref->IsExtensionControlled()) {
dict->SetString("controlledBy", "extension"); dict->SetString("controlledBy", "extension");
} else if (controlling_pref->IsUserModifiable() && } else if (controlling_pref->IsRecommended()) {
!controlling_pref->IsDefaultValue()) {
dict->SetString("controlledBy", "recommended"); dict->SetString("controlledBy", "recommended");
} }
dict->SetBoolean("disabled", !controlling_pref->IsUserModifiable()); dict->SetBoolean("disabled", !controlling_pref->IsUserModifiable());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment