| Index: chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc
|
| diff --git a/chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc b/chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc
|
| index ea1451552cf9178c602edd96346fb59d0f2fc807..bc3066fc28a5f0d481753795ff52c25455378f3d 100644
|
| --- a/chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc
|
| +++ b/chrome/browser/chromeos/policy/device_policy_decoder_chromeos.cc
|
| @@ -8,7 +8,6 @@
|
|
|
| #include "base/logging.h"
|
| #include "base/values.h"
|
| -#include "chrome/browser/chromeos/policy/app_pack_updater.h"
|
| #include "chrome/browser/chromeos/policy/enterprise_install_attributes.h"
|
| #include "chrome/browser/chromeos/settings/cros_settings_names.h"
|
| #include "chrome/browser/policy/policy_map.h"
|
| @@ -122,16 +121,43 @@ void DecodeLoginPolicies(const em::ChromeDeviceSettingsProto& policy,
|
| const RepeatedPtrField<em::DeviceLocalAccountInfoProto>& accounts =
|
| container.account();
|
| if (accounts.size() > 0) {
|
| - ListValue* account_list = new ListValue();
|
| + scoped_ptr<base::ListValue> account_list(new base::ListValue());
|
| RepeatedPtrField<em::DeviceLocalAccountInfoProto>::const_iterator entry;
|
| for (entry = accounts.begin(); entry != accounts.end(); ++entry) {
|
| - if (entry->has_id())
|
| - account_list->AppendString(entry->id());
|
| + scoped_ptr<base::DictionaryValue> entry_dict(
|
| + new base::DictionaryValue());
|
| + if (entry->has_type()) {
|
| + if (entry->has_account_id()) {
|
| + entry_dict->SetStringWithoutPathExpansion(
|
| + chromeos::kAccountsPrefDeviceLocalAccountsKeyId,
|
| + entry->account_id());
|
| + }
|
| + entry_dict->SetIntegerWithoutPathExpansion(
|
| + chromeos::kAccountsPrefDeviceLocalAccountsKeyType, entry->type());
|
| + if (entry->kiosk_app().has_app_id()) {
|
| + entry_dict->SetStringWithoutPathExpansion(
|
| + chromeos::kAccountsPrefDeviceLocalAccountsKeyKioskAppId,
|
| + entry->kiosk_app().app_id());
|
| + }
|
| + if (entry->kiosk_app().has_update_url()) {
|
| + entry_dict->SetStringWithoutPathExpansion(
|
| + chromeos::kAccountsPrefDeviceLocalAccountsKeyKioskAppUpdateURL,
|
| + entry->kiosk_app().update_url());
|
| + }
|
| + } else if (entry->has_id()) {
|
| + // Deprecated public session specification.
|
| + entry_dict->SetStringWithoutPathExpansion(
|
| + chromeos::kAccountsPrefDeviceLocalAccountsKeyId, entry->id());
|
| + entry_dict->SetIntegerWithoutPathExpansion(
|
| + chromeos::kAccountsPrefDeviceLocalAccountsKeyType,
|
| + chromeos::DEVICE_LOCAL_ACCOUNT_TYPE_PUBLIC_SESSION);
|
| + }
|
| + account_list->Append(entry_dict.release());
|
| }
|
| policies->Set(key::kDeviceLocalAccounts,
|
| POLICY_LEVEL_MANDATORY,
|
| POLICY_SCOPE_MACHINE,
|
| - account_list);
|
| + account_list.release());
|
| }
|
| if (container.has_auto_login_id()) {
|
| policies->Set(key::kDeviceLocalAccountAutoLoginId,
|
| @@ -145,6 +171,13 @@ void DecodeLoginPolicies(const em::ChromeDeviceSettingsProto& policy,
|
| POLICY_SCOPE_MACHINE,
|
| DecodeIntegerValue(container.auto_login_delay()));
|
| }
|
| + if (container.has_enable_auto_login_bailout()) {
|
| + policies->Set(key::kDeviceLocalAccountAutoLoginBailoutEnabled,
|
| + POLICY_LEVEL_MANDATORY,
|
| + POLICY_SCOPE_MACHINE,
|
| + Value::CreateBooleanValue(
|
| + container.enable_auto_login_bailout()));
|
| + }
|
| }
|
| }
|
|
|
| @@ -198,8 +231,8 @@ void DecodeKioskPolicies(const em::ChromeDeviceSettingsProto& policy,
|
| const em::AppPackEntryProto& entry(container.app_pack(i));
|
| if (entry.has_extension_id() && entry.has_update_url()) {
|
| base::DictionaryValue* dict = new base::DictionaryValue();
|
| - dict->SetString(AppPackUpdater::kExtensionId, entry.extension_id());
|
| - dict->SetString(AppPackUpdater::kUpdateUrl, entry.update_url());
|
| + dict->SetString(chromeos::kAppPackKeyExtensionId, entry.extension_id());
|
| + dict->SetString(chromeos::kAppPackKeyUpdateUrl, entry.update_url());
|
| app_pack_list->Append(dict);
|
| }
|
| }
|
|
|