| Index: chrome/browser/chromeos/user_cros_settings_provider.cc
|
| diff --git a/chrome/browser/chromeos/user_cros_settings_provider.cc b/chrome/browser/chromeos/user_cros_settings_provider.cc
|
| index 315ced3948ac62005658653bda53ef2821440902..44871e8f1763fe638c5fe4e58e3e3f5d1a921242 100644
|
| --- a/chrome/browser/chromeos/user_cros_settings_provider.cc
|
| +++ b/chrome/browser/chromeos/user_cros_settings_provider.cc
|
| @@ -33,10 +33,12 @@ const char kTrustedSuffix[] = "/trusted";
|
|
|
| // For all our boolean settings following is applicable:
|
| // true is default permissive value and false is safe prohibitic value.
|
| +// Exception: kSignedDataRoamingEnabled which has default value of false.
|
| const char* kBooleanSettings[] = {
|
| kAccountsPrefAllowNewUser,
|
| kAccountsPrefAllowGuest,
|
| - kAccountsPrefShowUserNamesOnSignIn
|
| + kAccountsPrefShowUserNamesOnSignIn,
|
| + kSignedDataRoamingEnabled,
|
| };
|
|
|
| const char* kStringSettings[] = {
|
| @@ -48,10 +50,13 @@ const char* kListSettings[] = {
|
| };
|
|
|
| bool IsControlledBooleanSetting(const std::string& pref_path) {
|
| - return std::find(kBooleanSettings,
|
| - kBooleanSettings + arraysize(kBooleanSettings),
|
| - pref_path) !=
|
| - kBooleanSettings + arraysize(kBooleanSettings);
|
| + // TODO(nkostylev): Using std::find for 4 value array generates this warning
|
| + // in chroot stl_algo.h:231: error: array subscript is above array bounds.
|
| + // GCC 4.4.3
|
| + return (pref_path == kAccountsPrefAllowNewUser) ||
|
| + (pref_path == kAccountsPrefAllowGuest) ||
|
| + (pref_path == kAccountsPrefShowUserNamesOnSignIn) ||
|
| + (pref_path == kSignedDataRoamingEnabled);
|
| }
|
|
|
| bool IsControlledStringSetting(const std::string& pref_path) {
|
| @@ -72,7 +77,10 @@ void RegisterSetting(PrefService* local_state, const std::string& pref_path) {
|
| local_state->RegisterBooleanPref((pref_path + kTrustedSuffix).c_str(),
|
| false);
|
| if (IsControlledBooleanSetting(pref_path)) {
|
| - local_state->RegisterBooleanPref(pref_path.c_str(), true);
|
| + if (pref_path == kSignedDataRoamingEnabled)
|
| + local_state->RegisterBooleanPref(pref_path.c_str(), false);
|
| + else
|
| + local_state->RegisterBooleanPref(pref_path.c_str(), true);
|
| } else if (IsControlledStringSetting(pref_path)) {
|
| local_state->RegisterStringPref(pref_path.c_str(), "");
|
| } else {
|
| @@ -278,7 +286,6 @@ class UserCrosSettingsTrust : public SignedSettingsHelper::Callback {
|
| else
|
| VLOG(1) << "Retrieved cros setting " << name << "=" << value;
|
| if (IsControlledBooleanSetting(name)) {
|
| - // We assume our boolean settings are true before explicitly set.
|
| UpdateCacheBool(name, (value == kTrueIncantation),
|
| fallback_to_default ? USE_VALUE_DEFAULT : USE_VALUE_SUPPLIED);
|
| } else if (IsControlledStringSetting(name)) {
|
| @@ -408,6 +415,12 @@ bool UserCrosSettingsProvider::RequestTrustedShowUsersOnSignin(Task* callback) {
|
| kAccountsPrefShowUserNamesOnSignIn, callback);
|
| }
|
|
|
| +bool UserCrosSettingsProvider::RequestTrustedDataRoamingEnabled(
|
| + Task* callback) {
|
| + return UserCrosSettingsTrust::GetInstance()->RequestTrustedEntity(
|
| + kSignedDataRoamingEnabled, callback);
|
| +}
|
| +
|
| bool UserCrosSettingsProvider::RequestTrustedOwner(Task* callback) {
|
| return UserCrosSettingsTrust::GetInstance()->RequestTrustedEntity(
|
| kDeviceOwner, callback);
|
| @@ -425,7 +438,15 @@ bool UserCrosSettingsProvider::cached_allow_new_user() {
|
| // Trigger prefetching if singleton object still does not exist.
|
| UserCrosSettingsTrust::GetInstance();
|
| return g_browser_process->local_state()->GetBoolean(
|
| - kAccountsPrefAllowNewUser);
|
| + kAccountsPrefAllowNewUser);
|
| +}
|
| +
|
| +// static
|
| +bool UserCrosSettingsProvider::cached_data_roaming_enabled() {
|
| + // Trigger prefetching if singleton object still does not exist.
|
| + UserCrosSettingsTrust::GetInstance();
|
| + return g_browser_process->local_state()->GetBoolean(
|
| + kSignedDataRoamingEnabled);
|
| }
|
|
|
| // static
|
| @@ -503,7 +524,8 @@ bool UserCrosSettingsProvider::Get(const std::string& path,
|
| }
|
|
|
| bool UserCrosSettingsProvider::HandlesSetting(const std::string& path) {
|
| - return ::StartsWithASCII(path, "cros.accounts.", true);
|
| + return ::StartsWithASCII(path, "cros.accounts.", true) ||
|
| + ::StartsWithASCII(path, "cros.signed.", true);
|
| }
|
|
|
| void UserCrosSettingsProvider::WhitelistUser(const std::string& email) {
|
|
|