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

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

Issue 14306004: Put Kiosk App parameters into device settings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase. Created 7 years, 8 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/settings/device_settings_provider.cc
diff --git a/chrome/browser/chromeos/settings/device_settings_provider.cc b/chrome/browser/chromeos/settings/device_settings_provider.cc
index 8663455d75bbd12191dfe8d60584201349d69c3d..18275e746fcba4089880bf3715c910220c78e3ae 100644
--- a/chrome/browser/chromeos/settings/device_settings_provider.cc
+++ b/chrome/browser/chromeos/settings/device_settings_provider.cc
@@ -18,7 +18,6 @@
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/cros/cros_library.h"
#include "chrome/browser/chromeos/cros/network_library.h"
-#include "chrome/browser/chromeos/policy/app_pack_updater.h"
#include "chrome/browser/chromeos/settings/cros_settings.h"
#include "chrome/browser/chromeos/settings/cros_settings_names.h"
#include "chrome/browser/chromeos/settings/device_settings_cache.h"
@@ -42,6 +41,7 @@ const char* kKnownSettings[] = {
kAccountsPrefAllowGuest,
kAccountsPrefAllowNewUser,
kAccountsPrefDeviceLocalAccounts,
+ kAccountsPrefDeviceLocalAccountAutoLoginBailoutEnabled,
kAccountsPrefDeviceLocalAccountAutoLoginDelay,
kAccountsPrefDeviceLocalAccountAutoLoginId,
kAccountsPrefEphemeralUsersEnabled,
@@ -226,15 +226,42 @@ void DeviceSettingsProvider::SetInPolicy() {
} else if (prop == kAccountsPrefDeviceLocalAccounts) {
em::DeviceLocalAccountsProto* device_local_accounts =
device_settings_.mutable_device_local_accounts();
- base::ListValue* accounts_list;
+ device_local_accounts->clear_account();
+ const base::ListValue* accounts_list = NULL;
if (value->GetAsList(&accounts_list)) {
for (base::ListValue::const_iterator entry(accounts_list->begin());
entry != accounts_list->end(); ++entry) {
- std::string id;
- if ((*entry)->GetAsString(&id))
- device_local_accounts->add_account()->set_id(id);
- else
+ const base::DictionaryValue* entry_dict = NULL;
+ if ((*entry)->GetAsDictionary(&entry_dict)) {
+ em::DeviceLocalAccountInfoProto* account =
+ device_local_accounts->add_account();
+ std::string account_id;
+ if (entry_dict->GetStringWithoutPathExpansion(
+ kAccountsPrefDeviceLocalAccountsKeyId, &account_id)) {
+ account->set_account_id(account_id);
+ }
+ int type;
+ if (entry_dict->GetIntegerWithoutPathExpansion(
+ kAccountsPrefDeviceLocalAccountsKeyType, &type)) {
+ account->set_type(
+ static_cast<em::DeviceLocalAccountInfoProto::AccountType>(
+ type));
+ }
+ std::string kiosk_app_id;
+ if (entry_dict->GetStringWithoutPathExpansion(
+ kAccountsPrefDeviceLocalAccountsKeyKioskAppId,
+ &kiosk_app_id)) {
+ account->mutable_kiosk_app()->set_app_id(kiosk_app_id);
+ }
+ std::string kiosk_app_update_url;
+ if (entry_dict->GetStringWithoutPathExpansion(
+ kAccountsPrefDeviceLocalAccountsKeyKioskAppUpdateURL,
+ &kiosk_app_update_url)) {
+ account->mutable_kiosk_app()->set_update_url(kiosk_app_update_url);
+ }
+ } else {
NOTREACHED();
+ }
}
} else {
NOTREACHED();
@@ -255,6 +282,14 @@ void DeviceSettingsProvider::SetInPolicy() {
device_local_accounts->set_auto_login_delay(delay);
else
NOTREACHED();
+ } else if (prop == kAccountsPrefDeviceLocalAccountAutoLoginBailoutEnabled) {
+ em::DeviceLocalAccountsProto* device_local_accounts =
+ device_settings_.mutable_device_local_accounts();
+ bool enabled;
+ if (value->GetAsBoolean(&enabled))
+ device_local_accounts->set_enable_auto_login_bailout(enabled);
+ else
+ NOTREACHED();
} else if (prop == kSignedDataRoamingEnabled) {
em::DataRoamingEnabledProto* roam =
device_settings_.mutable_data_roaming_enabled();
@@ -433,7 +468,7 @@ void DeviceSettingsProvider::DecodeLoginPolicies(
}
new_values_cache->SetValue(kAccountsPrefUsers, list);
- base::ListValue* account_list = new base::ListValue();
+ scoped_ptr<base::ListValue> account_list(new base::ListValue());
CommandLine* command_line = CommandLine::ForCurrentProcess();
if (!command_line->HasSwitch(switches::kDisableLocalAccounts)) {
const em::DeviceLocalAccountsProto device_local_accounts_proto =
@@ -442,22 +477,37 @@ void DeviceSettingsProvider::DecodeLoginPolicies(
device_local_accounts_proto.account();
RepeatedPtrField<em::DeviceLocalAccountInfoProto>::const_iterator entry;
for (entry = accounts.begin(); entry != accounts.end(); ++entry) {
- if (entry->has_id())
- account_list->AppendString(entry->id());
- }
- }
- new_values_cache->SetValue(kAccountsPrefDeviceLocalAccounts, account_list);
-
- if (policy.has_start_up_flags()) {
- base::ListValue* list = new base::ListValue();
- const em::StartUpFlagsProto& flags_proto = policy.start_up_flags();
- const RepeatedPtrField<std::string>& flags = flags_proto.flags();
- for (RepeatedPtrField<std::string>::const_iterator it = flags.begin();
- it != flags.end(); ++it) {
- list->Append(new base::StringValue(*it));
+ scoped_ptr<base::DictionaryValue> entry_dict(new base::DictionaryValue());
+ if (entry->has_type()) {
+ if (entry->has_account_id()) {
+ entry_dict->SetStringWithoutPathExpansion(
+ kAccountsPrefDeviceLocalAccountsKeyId, entry->account_id());
+ }
+ entry_dict->SetIntegerWithoutPathExpansion(
+ kAccountsPrefDeviceLocalAccountsKeyType, entry->type());
+ if (entry->kiosk_app().has_app_id()) {
+ entry_dict->SetStringWithoutPathExpansion(
+ kAccountsPrefDeviceLocalAccountsKeyKioskAppId,
+ entry->kiosk_app().app_id());
+ }
+ if (entry->kiosk_app().has_update_url()) {
+ entry_dict->SetStringWithoutPathExpansion(
+ kAccountsPrefDeviceLocalAccountsKeyKioskAppUpdateURL,
+ entry->kiosk_app().update_url());
+ }
+ } else if (entry->has_id()) {
+ // Deprecated public session specification.
+ entry_dict->SetStringWithoutPathExpansion(
+ kAccountsPrefDeviceLocalAccountsKeyId, entry->id());
+ entry_dict->SetIntegerWithoutPathExpansion(
+ kAccountsPrefDeviceLocalAccountsKeyType,
+ DEVICE_LOCAL_ACCOUNT_TYPE_PUBLIC_SESSION);
+ }
+ account_list->Append(entry_dict.release());
}
- new_values_cache->SetValue(kStartUpFlags, list);
}
+ new_values_cache->SetValue(kAccountsPrefDeviceLocalAccounts,
+ account_list.release());
if (policy.has_device_local_accounts()) {
if (policy.device_local_accounts().has_auto_login_id()) {
@@ -471,6 +521,21 @@ void DeviceSettingsProvider::DecodeLoginPolicies(
policy.device_local_accounts().auto_login_delay());
}
}
+
+ new_values_cache->SetBoolean(
+ kAccountsPrefDeviceLocalAccountAutoLoginBailoutEnabled,
+ policy.device_local_accounts().enable_auto_login_bailout());
+
+ if (policy.has_start_up_flags()) {
+ base::ListValue* list = new base::ListValue();
+ const em::StartUpFlagsProto& flags_proto = policy.start_up_flags();
+ const RepeatedPtrField<std::string>& flags = flags_proto.flags();
+ for (RepeatedPtrField<std::string>::const_iterator it = flags.begin();
+ it != flags.end(); ++it) {
+ list->Append(new base::StringValue(*it));
+ }
+ new_values_cache->SetValue(kStartUpFlags, list);
+ }
}
void DeviceSettingsProvider::DecodeKioskPolicies(
@@ -512,11 +577,13 @@ void DeviceSettingsProvider::DecodeKioskPolicies(
it != app_pack.end(); ++it) {
base::DictionaryValue* entry = new base::DictionaryValue;
if (it->has_extension_id()) {
- entry->SetString(policy::AppPackUpdater::kExtensionId,
- it->extension_id());
+ entry->SetStringWithoutPathExpansion(kAppPackKeyExtensionId,
+ it->extension_id());
+ }
+ if (it->has_update_url()) {
+ entry->SetStringWithoutPathExpansion(kAppPackKeyUpdateUrl,
+ it->update_url());
}
- if (it->has_update_url())
- entry->SetString(policy::AppPackUpdater::kUpdateUrl, it->update_url());
list->Append(entry);
}
new_values_cache->SetValue(kAppPack, list);

Powered by Google App Engine
This is Rietveld 408576698