Commit ce090b9b authored by Henrique Grandinetti's avatar Henrique Grandinetti Committed by Commit Bot

Block child accounts from chaging their time zone.

Bug: 860691
Cq-Include-Trybots: luci.chromium.try:closure_compilation
Change-Id: Ic6cf61b88733c176423ce309571d28b502114234
Reviewed-on: https://chromium-review.googlesource.com/1140376Reviewed-by: default avatarAlexander Alekseev <alemate@chromium.org>
Reviewed-by: default avatarMichael Giuffrida <michaelpg@chromium.org>
Commit-Queue: Henrique Grandinetti <hgrandinetti@google.com>
Cr-Commit-Position: refs/heads/master@{#576978}
parent 794a1857
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
#include "base/time/time.h" #include "base/time/time.h"
#include "base/values.h" #include "base/values.h"
#include "chrome/browser/chromeos/system/timezone_util.h" #include "chrome/browser/chromeos/system/timezone_util.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chromeos/login/login_state.h" #include "chromeos/login/login_state.h"
#include "chromeos/settings/cros_settings_names.h" #include "chromeos/settings/cros_settings_names.h"
...@@ -33,9 +34,10 @@ SystemSettingsProvider::~SystemSettingsProvider() { ...@@ -33,9 +34,10 @@ SystemSettingsProvider::~SystemSettingsProvider() {
void SystemSettingsProvider::DoSet(const std::string& path, void SystemSettingsProvider::DoSet(const std::string& path,
const base::Value& in_value) { const base::Value& in_value) {
// Only non-guest users can change the time zone. // Only non-guest and non-child users can change the time zone.
if (LoginState::Get()->IsGuestSessionUser() || if (LoginState::Get()->IsGuestSessionUser() ||
LoginState::Get()->IsPublicSessionUser()) { LoginState::Get()->IsPublicSessionUser() ||
ProfileManager::GetActiveUserProfile()->IsChild()) {
return; return;
} }
......
...@@ -66,10 +66,12 @@ SetPrefResult GeneratedResolveTimezoneByGeolocationOnOff::SetPref( ...@@ -66,10 +66,12 @@ SetPrefResult GeneratedResolveTimezoneByGeolocationOnOff::SetPref(
if (!value->is_bool()) if (!value->is_bool())
return SetPrefResult::PREF_TYPE_MISMATCH; return SetPrefResult::PREF_TYPE_MISMATCH;
// Check if preference is policy or primary-user controlled. // Check if preference is policy or primary-user controlled, or if the user is
// a child, and therefore cannot deactivate automatic timezone.
if (chromeos::system::TimeZoneResolverManager:: if (chromeos::system::TimeZoneResolverManager::
IsTimeZoneResolutionPolicyControlled() || IsTimeZoneResolutionPolicyControlled() ||
!profile_->IsSameProfile(ProfileManager::GetPrimaryUserProfile())) { !profile_->IsSameProfile(ProfileManager::GetPrimaryUserProfile()) ||
profile_->IsChild()) {
return SetPrefResult::PREF_NOT_MODIFIABLE; return SetPrefResult::PREF_NOT_MODIFIABLE;
} }
......
...@@ -36,8 +36,11 @@ void GeneratedTimeZonePrefBase::OnTimeZoneResolverUpdated() { ...@@ -36,8 +36,11 @@ void GeneratedTimeZonePrefBase::OnTimeZoneResolverUpdated() {
void GeneratedTimeZonePrefBase::UpdateTimeZonePrefControlledBy( void GeneratedTimeZonePrefBase::UpdateTimeZonePrefControlledBy(
settings_api::PrefObject* out_pref) const { settings_api::PrefObject* out_pref) const {
if (chromeos::system::TimeZoneResolverManager:: if (profile_->IsChild()) {
IsTimeZoneResolutionPolicyControlled()) { out_pref->controlled_by = settings_api::CONTROLLED_BY_USER_POLICY;
out_pref->enforcement = settings_api::ENFORCEMENT_ENFORCED;
} else if (chromeos::system::TimeZoneResolverManager::
IsTimeZoneResolutionPolicyControlled()) {
out_pref->controlled_by = settings_api::CONTROLLED_BY_DEVICE_POLICY; out_pref->controlled_by = settings_api::CONTROLLED_BY_DEVICE_POLICY;
out_pref->enforcement = settings_api::ENFORCEMENT_ENFORCED; out_pref->enforcement = settings_api::ENFORCEMENT_ENFORCED;
} else if (!profile_->IsSameProfile( } else if (!profile_->IsSameProfile(
......
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