Commit 80fd0f07 authored by A Olsen's avatar A Olsen Committed by Commit Bot

Special case kSystemTimezone is prefs_util.cc

There are two types of cros settings:
1. Device settings that are read by DeviceSettingsProvider and can
be written by OwnerSettingsService
2. kSystemTimezone, which is the only system setting (or at least,
the only writeable one). It is read by SystemSettingsProvider and
can be written by TimezoneSettings.

Both of these can also be written by CrosSettings, which delegates
to either OwnerSettingsService or to TimezoneSettings.
The write path is being removed from CrosSettings, and so must
be replaced by calls to either OwnerSettingsService or
TimezoneSettings.

This CL special cases kSystemTimezone in prefs_util.cc so that
the remaining call to CrosSettings can be replaced with a call
to OwnerSettingsService.

Bug: 433840
Change-Id: Ie3d954980dbffc9c850f5afa82bedf633c01f97f
Reviewed-on: https://chromium-review.googlesource.com/c/1339940Reviewed-by: default avatarMaksim Ivanov <emaxx@chromium.org>
Reviewed-by: default avatarSteven Bennetts <stevenjb@chromium.org>
Commit-Queue: A Olsen <olsen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609239}
parent 189c3882
...@@ -783,6 +783,17 @@ settings_private::SetPrefResult PrefsUtil::SetCrosSettingsPref( ...@@ -783,6 +783,17 @@ settings_private::SetPrefResult PrefsUtil::SetCrosSettingsPref(
const std::string& pref_name, const std::string& pref_name,
const base::Value* value) { const base::Value* value) {
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
if (pref_name == chromeos::kSystemTimezone) {
std::string string_value;
if (!value->GetAsString(&string_value))
return settings_private::SetPrefResult::PREF_TYPE_MISMATCH;
const user_manager::User* user =
chromeos::ProfileHelper::Get()->GetUserByProfile(profile_);
if (user && chromeos::system::SetSystemTimezone(user, string_value))
return settings_private::SetPrefResult::SUCCESS;
return settings_private::SetPrefResult::PREF_NOT_MODIFIABLE;
}
chromeos::OwnerSettingsServiceChromeOS* service = chromeos::OwnerSettingsServiceChromeOS* service =
chromeos::OwnerSettingsServiceChromeOSFactory::GetForBrowserContext( chromeos::OwnerSettingsServiceChromeOSFactory::GetForBrowserContext(
profile_); profile_);
...@@ -794,6 +805,11 @@ settings_private::SetPrefResult PrefsUtil::SetCrosSettingsPref( ...@@ -794,6 +805,11 @@ settings_private::SetPrefResult PrefsUtil::SetCrosSettingsPref(
return settings_private::SetPrefResult::PREF_NOT_MODIFIABLE; return settings_private::SetPrefResult::PREF_NOT_MODIFIABLE;
} }
// TODO(olsen): Remove this call, as per http://crbug.com/433840
// Note: Since kSystemTimezone (the only system setting) is already handled,
// we should only arrive here in two cases (of which one may be a bug):
// 1. User is guest, so service=nullptr. Maybe a bug to call Set in this case?
// 2. kStubCrosSettings is true, so service->HandlesSetting is false.
CrosSettings::Get()->Set(pref_name, *value); CrosSettings::Get()->Set(pref_name, *value);
return settings_private::SetPrefResult::SUCCESS; return settings_private::SetPrefResult::SUCCESS;
#else #else
......
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