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

Unified Diff: chrome/browser/chromeos/device_settings_provider.cc

Issue 9423043: Add the protobufs for the set of session timeout policies planned for the kiosk mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments and did some more cleanup. Created 8 years, 9 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/chromeos/device_settings_provider.cc
diff --git a/chrome/browser/chromeos/device_settings_provider.cc b/chrome/browser/chromeos/device_settings_provider.cc
index e65ba0373dca2ec9ecf35a2804b6067b477781f6..5059ae3426f1516e17b2a85fc517668d9e6dd510 100644
--- a/chrome/browser/chromeos/device_settings_provider.cc
+++ b/chrome/browser/chromeos/device_settings_provider.cc
@@ -22,7 +22,6 @@
#include "chrome/browser/chromeos/login/signed_settings_helper.h"
#include "chrome/browser/chromeos/login/user_manager.h"
#include "chrome/browser/policy/app_pack_updater.h"
-#include "chrome/browser/policy/proto/chrome_device_policy.pb.h"
#include "chrome/browser/ui/options/options_util.h"
#include "chrome/common/chrome_notification_types.h"
#include "chrome/installer/util/google_update_settings.h"
@@ -45,10 +44,14 @@ const char* kKnownSettings[] = {
kAccountsPrefUsers,
kAppPack,
kDeviceOwner,
+ kIdleLogoutTimeout,
+ kIdleLogoutWarningDuration,
kReleaseChannel,
kReportDeviceActivityTimes,
kReportDeviceBootMode,
kReportDeviceVersionInfo,
+ kScreenSaverExtensionId,
+ kScreenSaverTimeout,
kSettingProxyEverywhere,
kSignedDataRoamingEnabled,
kStatsReportingPref,
@@ -277,9 +280,14 @@ void DeviceSettingsProvider::SetInPolicy() {
// The remaining settings don't support Set(), since they are not
// intended to be customizable by the user:
// kAppPack
+ // kIdleLogoutTimeout,
+ // kIdleLogoutWarningDuration,
// kReportDeviceVersionInfo
// kReportDeviceActivityTimes
// kReportDeviceBootMode
+ // kScreenSaverExtensionId,
+ // kScreenSaverTimeout,
+
NOTREACHED();
}
data.set_policy_value(pol.SerializeAsString());
@@ -322,112 +330,95 @@ void DeviceSettingsProvider::FinishSetInPolicy(
SetInPolicy();
}
-void DeviceSettingsProvider::UpdateValuesCache() {
- const em::PolicyData data = policy();
- PrefValueMap new_values_cache;
-
- if (data.has_username() && !data.has_request_token())
- new_values_cache.SetString(kDeviceOwner, data.username());
-
- em::ChromeDeviceSettingsProto pol;
- pol.ParseFromString(data.policy_value());
-
+void DeviceSettingsProvider::DecodeLoginPolicies(
+ const em::ChromeDeviceSettingsProto& policy,
+ PrefValueMap* new_values_cache) const {
// For all our boolean settings the following is applicable:
// true is default permissive value and false is safe prohibitive value.
// Exceptions:
// kSignedDataRoamingEnabled has a default value of false.
// kAccountsPrefEphemeralUsersEnabled has a default value of false.
- if (pol.has_allow_new_users() &&
- pol.allow_new_users().has_allow_new_users() &&
- pol.allow_new_users().allow_new_users()) {
+ if (policy.has_allow_new_users() &&
+ policy.allow_new_users().has_allow_new_users() &&
+ policy.allow_new_users().allow_new_users()) {
// New users allowed, user_whitelist() ignored.
- new_values_cache.SetBoolean(kAccountsPrefAllowNewUser, true);
- } else if (!pol.has_user_whitelist()) {
+ new_values_cache->SetBoolean(kAccountsPrefAllowNewUser, true);
+ } else if (!policy.has_user_whitelist()) {
// If we have the allow_new_users bool, and it is true, we honor that above.
// In all other cases (don't have it, have it and it is set to false, etc),
// We will honor the user_whitelist() if it is there and populated.
// Otherwise we default to allowing new users.
- new_values_cache.SetBoolean(kAccountsPrefAllowNewUser, true);
+ new_values_cache->SetBoolean(kAccountsPrefAllowNewUser, true);
} else {
- new_values_cache.SetBoolean(
+ new_values_cache->SetBoolean(
kAccountsPrefAllowNewUser,
- pol.user_whitelist().user_whitelist_size() == 0);
+ policy.user_whitelist().user_whitelist_size() == 0);
}
- new_values_cache.SetBoolean(
+ new_values_cache->SetBoolean(
kAccountsPrefAllowGuest,
- !pol.has_guest_mode_enabled() ||
- !pol.guest_mode_enabled().has_guest_mode_enabled() ||
- pol.guest_mode_enabled().guest_mode_enabled());
+ !policy.has_guest_mode_enabled() ||
+ !policy.guest_mode_enabled().has_guest_mode_enabled() ||
+ policy.guest_mode_enabled().guest_mode_enabled());
- new_values_cache.SetBoolean(
+ new_values_cache->SetBoolean(
kAccountsPrefShowUserNamesOnSignIn,
- !pol.has_show_user_names() ||
- !pol.show_user_names().has_show_user_names() ||
- pol.show_user_names().show_user_names());
-
- new_values_cache.SetBoolean(
- kSignedDataRoamingEnabled,
- pol.has_data_roaming_enabled() &&
- pol.data_roaming_enabled().has_data_roaming_enabled() &&
- pol.data_roaming_enabled().data_roaming_enabled());
+ !policy.has_show_user_names() ||
+ !policy.show_user_names().has_show_user_names() ||
+ policy.show_user_names().show_user_names());
- new_values_cache.SetBoolean(
+ new_values_cache->SetBoolean(
kAccountsPrefEphemeralUsersEnabled,
- pol.has_ephemeral_users_enabled() &&
- pol.ephemeral_users_enabled().has_ephemeral_users_enabled() &&
- pol.ephemeral_users_enabled().ephemeral_users_enabled());
-
- // TODO(cmasone): NOTIMPLEMENTED() once http://crosbug.com/13052 is fixed.
- std::string serialized;
- if (pol.has_device_proxy_settings() &&
- pol.device_proxy_settings().SerializeToString(&serialized)) {
- new_values_cache.SetString(kSettingProxyEverywhere, serialized);
- }
-
- if (!pol.has_release_channel() ||
- !pol.release_channel().has_release_channel()) {
- // Default to an invalid channel (will be ignored).
- new_values_cache.SetString(kReleaseChannel, "");
- } else {
- new_values_cache.SetString(kReleaseChannel,
- pol.release_channel().release_channel());
- }
-
- if (pol.has_metrics_enabled()) {
- new_values_cache.SetBoolean(kStatsReportingPref,
- pol.metrics_enabled().metrics_enabled());
- } else {
- new_values_cache.SetBoolean(kStatsReportingPref, HasOldMetricsFile());
- }
+ policy.has_ephemeral_users_enabled() &&
+ policy.ephemeral_users_enabled().has_ephemeral_users_enabled() &&
+ policy.ephemeral_users_enabled().ephemeral_users_enabled());
base::ListValue* list = new base::ListValue();
- const em::UserWhitelistProto& whitelist_proto = pol.user_whitelist();
+ const em::UserWhitelistProto& whitelist_proto = policy.user_whitelist();
const RepeatedPtrField<std::string>& whitelist =
whitelist_proto.user_whitelist();
for (RepeatedPtrField<std::string>::const_iterator it = whitelist.begin();
it != whitelist.end(); ++it) {
list->Append(base::Value::CreateStringValue(*it));
}
- new_values_cache.SetValue(kAccountsPrefUsers, list);
+ new_values_cache->SetValue(kAccountsPrefUsers, list);
+}
- if (pol.has_device_reporting()) {
- if (pol.device_reporting().has_report_version_info()) {
- new_values_cache.SetBoolean(kReportDeviceVersionInfo,
- pol.device_reporting().report_version_info());
+void DeviceSettingsProvider::DecodeKioskPolicies(
+ const em::ChromeDeviceSettingsProto& policy,
+ PrefValueMap* new_values_cache) const {
+ if (policy.has_forced_logout_timeouts()) {
+ if (policy.forced_logout_timeouts().has_idle_logout_timeout()) {
+ new_values_cache->SetInteger(
+ kIdleLogoutTimeout,
+ policy.forced_logout_timeouts().idle_logout_timeout());
}
- // TODO(dubroy): Re-add device activity time policy here when the UI
- // to notify the user has been implemented (http://crosbug.com/26252).
- if (pol.device_reporting().has_report_boot_mode()) {
- new_values_cache.SetBoolean(kReportDeviceBootMode,
- pol.device_reporting().report_boot_mode());
+
+ if (policy.forced_logout_timeouts().has_idle_logout_warning_duration()) {
+ new_values_cache->SetInteger(
+ kIdleLogoutWarningDuration,
+ policy.forced_logout_timeouts().idle_logout_warning_duration());
+ }
+ }
+
+ if (policy.has_login_screen_saver()) {
+ if (policy.login_screen_saver().has_screen_saver_timeout()) {
+ new_values_cache->SetInteger(
+ kScreenSaverTimeout,
+ policy.login_screen_saver().screen_saver_timeout());
+ }
+
+ if (policy.login_screen_saver().has_screen_saver_extension_id()) {
+ new_values_cache->SetString(
+ kScreenSaverExtensionId,
+ policy.login_screen_saver().screen_saver_extension_id());
}
}
- if (pol.has_app_pack()) {
+ if (policy.has_app_pack()) {
typedef RepeatedPtrField<em::AppPackEntryProto> proto_type;
base::ListValue* list = new base::ListValue;
- const proto_type& app_pack = pol.app_pack().app_pack();
+ const proto_type& app_pack = policy.app_pack().app_pack();
for (proto_type::const_iterator it = app_pack.begin();
it != app_pack.end(); ++it) {
base::DictionaryValue* entry = new base::DictionaryValue;
@@ -443,8 +434,81 @@ void DeviceSettingsProvider::UpdateValuesCache() {
}
list->Append(entry);
}
- new_values_cache.SetValue(kAppPack, list);
+ new_values_cache->SetValue(kAppPack, list);
}
+}
+
+void DeviceSettingsProvider::DecodeNetworkPolicies(
+ const em::ChromeDeviceSettingsProto& policy,
+ PrefValueMap* new_values_cache) const {
+ new_values_cache->SetBoolean(
+ kSignedDataRoamingEnabled,
+ policy.has_data_roaming_enabled() &&
+ policy.data_roaming_enabled().has_data_roaming_enabled() &&
+ policy.data_roaming_enabled().data_roaming_enabled());
+
+ // TODO(cmasone): NOTIMPLEMENTED() once http://crosbug.com/13052 is fixed.
+ std::string serialized;
+ if (policy.has_device_proxy_settings() &&
+ policy.device_proxy_settings().SerializeToString(&serialized)) {
+ new_values_cache->SetString(kSettingProxyEverywhere, serialized);
+ }
+}
+
+void DeviceSettingsProvider::DecodeReportingPolicies(
+ const em::ChromeDeviceSettingsProto& policy,
+ PrefValueMap* new_values_cache) const {
+ if (policy.has_device_reporting()) {
+ if (policy.device_reporting().has_report_version_info()) {
+ new_values_cache->SetBoolean(
+ kReportDeviceVersionInfo,
+ policy.device_reporting().report_version_info());
+ }
+ // TODO(dubroy): Re-add device activity time policy here when the UI
+ // to notify the user has been implemented (http://crosbug.com/26252).
+ if (policy.device_reporting().has_report_boot_mode()) {
+ new_values_cache->SetBoolean(
+ kReportDeviceBootMode,
+ policy.device_reporting().report_boot_mode());
+ }
+ }
+}
+
+void DeviceSettingsProvider::DecodeGenericPolicies(
+ const em::ChromeDeviceSettingsProto& policy,
+ PrefValueMap* new_values_cache) const {
+ if (policy.has_metrics_enabled()) {
+ new_values_cache->SetBoolean(kStatsReportingPref,
+ policy.metrics_enabled().metrics_enabled());
+ } else {
+ new_values_cache->SetBoolean(kStatsReportingPref, HasOldMetricsFile());
+ }
+
+ if (!policy.has_release_channel() ||
+ !policy.release_channel().has_release_channel()) {
+ // Default to an invalid channel (will be ignored).
+ new_values_cache->SetString(kReleaseChannel, "");
+ } else {
+ new_values_cache->SetString(kReleaseChannel,
+ policy.release_channel().release_channel());
+ }
+}
+
+void DeviceSettingsProvider::UpdateValuesCache() {
+ const em::PolicyData data = policy();
+ PrefValueMap new_values_cache;
+
+ if (data.has_username() && !data.has_request_token())
+ new_values_cache.SetString(kDeviceOwner, data.username());
+
+ em::ChromeDeviceSettingsProto pol;
+ pol.ParseFromString(data.policy_value());
+
+ DecodeLoginPolicies(pol, &new_values_cache);
+ DecodeKioskPolicies(pol, &new_values_cache);
+ DecodeNetworkPolicies(pol, &new_values_cache);
+ DecodeReportingPolicies(pol, &new_values_cache);
+ DecodeGenericPolicies(pol, &new_values_cache);
// Collect all notifications but send them only after we have swapped the
// cache so that if somebody actually reads the cache will be already valid.
« no previous file with comments | « chrome/browser/chromeos/device_settings_provider.h ('k') | chrome/browser/policy/proto/chrome_device_policy.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698