#include "base/values.h"
#include "chrome/browser/chromeos/policy/device_local_account.h"
#include "chrome/browser/chromeos/policy/enterprise_install_attributes.h"
-#include "chrome/browser/policy/external_data_fetcher.h"
-#include "chrome/browser/policy/policy_map.h"
-#include "chrome/browser/policy/proto/chromeos/chrome_device_policy.pb.h"
+#include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h"
#include "chromeos/dbus/dbus_thread_manager.h"
#include "chromeos/dbus/update_engine_client.h"
#include "chromeos/settings/cros_settings_names.h"
+#include "components/policy/core/common/external_data_fetcher.h"
+#include "components/policy/core/common/policy_map.h"
#include "policy/policy_constants.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
// Decodes a protobuf integer to an IntegerValue. The caller assumes ownership
// of the return Value*. Returns NULL in case the input value is out of bounds.
-Value* DecodeIntegerValue(google::protobuf::int64 value) {
+base::Value* DecodeIntegerValue(google::protobuf::int64 value) {
if (value < std::numeric_limits<int>::min() ||
value > std::numeric_limits<int>::max()) {
LOG(WARNING) << "Integer value " << value
return NULL;
}
- return Value::CreateIntegerValue(static_cast<int>(value));
+ return base::Value::CreateIntegerValue(static_cast<int>(value));
}
-Value* DecodeConnectionType(int value) {
+base::Value* DecodeConnectionType(int value) {
static const char* const kConnectionTypes[] = {
shill::kTypeEthernet,
shill::kTypeWifi,
if (value < 0 || value >= static_cast<int>(arraysize(kConnectionTypes)))
return NULL;
- return Value::CreateStringValue(kConnectionTypes[value]);
+ return base::Value::CreateStringValue(kConnectionTypes[value]);
}
void DecodeLoginPolicies(const em::ChromeDeviceSettingsProto& policy,
policies->Set(key::kDeviceGuestModeEnabled,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(container.guest_mode_enabled()),
+ base::Value::CreateBooleanValue(
+ container.guest_mode_enabled()),
NULL);
}
}
policies->Set(key::kDeviceShowUserNamesOnSignin,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(container.show_user_names()),
+ base::Value::CreateBooleanValue(
+ container.show_user_names()),
NULL);
}
}
policies->Set(key::kDeviceAllowNewUsers,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(container.allow_new_users()),
+ base::Value::CreateBooleanValue(
+ container.allow_new_users()),
NULL);
}
}
if (policy.has_user_whitelist()) {
const em::UserWhitelistProto& container(policy.user_whitelist());
- ListValue* whitelist = new ListValue();
+ base::ListValue* whitelist = new base::ListValue();
RepeatedPtrField<std::string>::const_iterator entry;
for (entry = container.user_whitelist().begin();
entry != container.user_whitelist().end();
++entry) {
- whitelist->Append(Value::CreateStringValue(*entry));
+ whitelist->Append(base::Value::CreateStringValue(*entry));
}
policies->Set(key::kDeviceUserWhitelist,
POLICY_LEVEL_MANDATORY,
policies->Set(key::kDeviceEphemeralUsersEnabled,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(
+ base::Value::CreateBooleanValue(
container.ephemeral_users_enabled()),
NULL);
}
policies->Set(key::kDeviceLocalAccountAutoLoginId,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateStringValue(container.auto_login_id()),
+ base::Value::CreateStringValue(container.auto_login_id()),
NULL);
}
if (container.has_auto_login_delay()) {
policies->Set(key::kDeviceLocalAccountAutoLoginBailoutEnabled,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(
+ base::Value::CreateBooleanValue(
container.enable_auto_login_bailout()),
NULL);
}
+ if (container.has_prompt_for_network_when_offline()) {
+ policies->Set(key::kDeviceLocalAccountPromptForNetworkWhenOffline,
+ POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_MACHINE,
+ base::Value::CreateBooleanValue(
+ container.prompt_for_network_when_offline()),
+ NULL);
+ }
}
if (policy.has_supervised_users_settings()) {
const em::SupervisedUsersSettingsProto& container =
policy.supervised_users_settings();
if (container.has_supervised_users_enabled()) {
- Value* value = Value::CreateBooleanValue(
+ base::Value* value = base::Value::CreateBooleanValue(
container.supervised_users_enabled());
policies->Set(key::kSupervisedUsersEnabled,
POLICY_LEVEL_MANDATORY,
policies->Set(key::kDeviceLoginScreenSaverId,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateStringValue(
+ base::Value::CreateStringValue(
container.screen_saver_extension_id()),
NULL);
}
if (policy.has_pinned_apps()) {
const em::PinnedAppsProto& container(policy.pinned_apps());
base::ListValue* pinned_apps_list = new base::ListValue();
- for (int i = 0; i < container.app_id_size(); ++i)
- pinned_apps_list->Append(Value::CreateStringValue(container.app_id(i)));
+ for (int i = 0; i < container.app_id_size(); ++i) {
+ pinned_apps_list->Append(
+ base::Value::CreateStringValue(container.app_id(i)));
+ }
policies->Set(key::kPinnedLauncherApps,
POLICY_LEVEL_RECOMMENDED,
if (policy.has_device_proxy_settings()) {
const em::DeviceProxySettingsProto& container(
policy.device_proxy_settings());
- scoped_ptr<DictionaryValue> proxy_settings(new DictionaryValue);
+ scoped_ptr<base::DictionaryValue> proxy_settings(new base::DictionaryValue);
if (container.has_proxy_mode())
proxy_settings->SetString(key::kProxyMode, container.proxy_mode());
if (container.has_proxy_server())
policies->Set(key::kDeviceDataRoamingEnabled,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(
+ base::Value::CreateBooleanValue(
container.data_roaming_enabled()),
NULL);
}
policies->Set(key::kDeviceOpenNetworkConfiguration,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateStringValue(config),
+ base::Value::CreateStringValue(config),
NULL);
}
}
policies->Set(key::kReportDeviceVersionInfo,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(container.report_version_info()),
+ base::Value::CreateBooleanValue(
+ container.report_version_info()),
NULL);
}
if (container.has_report_activity_times()) {
policies->Set(key::kReportDeviceActivityTimes,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(
+ base::Value::CreateBooleanValue(
container.report_activity_times()),
NULL);
}
policies->Set(key::kReportDeviceBootMode,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(container.report_boot_mode()),
+ base::Value::CreateBooleanValue(
+ container.report_boot_mode()),
NULL);
}
if (container.has_report_location()) {
policies->Set(key::kReportDeviceLocation,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(container.report_location()),
+ base::Value::CreateBooleanValue(
+ container.report_location()),
NULL);
}
if (container.has_report_network_interfaces()) {
policies->Set(key::kReportDeviceNetworkInterfaces,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(
+ base::Value::CreateBooleanValue(
container.report_network_interfaces()),
NULL);
}
policies->Set(key::kReportDeviceUsers,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(container.report_users()),
+ base::Value::CreateBooleanValue(container.report_users()),
NULL);
}
}
policies->Set(key::kChromeOsReleaseChannel,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateStringValue(channel),
+ base::Value::CreateStringValue(channel),
NULL);
// TODO(dubroy): Once http://crosbug.com/17015 is implemented, we won't
// have to pass the channel in here, only ping the update engine to tell
policies->Set(key::kChromeOsReleaseChannelDelegated,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(
+ base::Value::CreateBooleanValue(
container.release_channel_delegated()),
NULL);
}
policies->Set(key::kDeviceAutoUpdateDisabled,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(container.update_disabled()),
+ base::Value::CreateBooleanValue(
+ container.update_disabled()),
NULL);
}
policies->Set(key::kDeviceTargetVersionPrefix,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateStringValue(
+ base::Value::CreateStringValue(
container.target_version_prefix()),
NULL);
}
policies->Set(key::kDeviceUpdateScatterFactor,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateIntegerValue(
+ base::Value::CreateIntegerValue(
container.scatter_factor_in_seconds()),
NULL);
}
if (container.allowed_connection_types_size()) {
- ListValue* allowed_connection_types = new ListValue();
+ base::ListValue* allowed_connection_types = new base::ListValue();
RepeatedField<int>::const_iterator entry;
for (entry = container.allowed_connection_types().begin();
entry != container.allowed_connection_types().end();
key::kDeviceUpdateHttpDownloadsEnabled,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(container.http_downloads_enabled()),
+ base::Value::CreateBooleanValue(container.http_downloads_enabled()),
NULL);
}
policies->Set(key::kRebootAfterUpdate,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(container.reboot_after_update()),
+ base::Value::CreateBooleanValue(
+ container.reboot_after_update()),
NULL);
}
policies->Set(key::kDeviceAutoUpdateP2PEnabled,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(container.p2p_enabled()),
+ base::Value::CreateBooleanValue(container.p2p_enabled()),
NULL);
}
}
key::kDeviceLoginScreenDefaultLargeCursorEnabled,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(
+ base::Value::CreateBooleanValue(
container.login_screen_default_large_cursor_enabled()),
NULL);
}
key::kDeviceLoginScreenDefaultSpokenFeedbackEnabled,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(
+ base::Value::CreateBooleanValue(
container.login_screen_default_spoken_feedback_enabled()),
NULL);
}
key::kDeviceLoginScreenDefaultHighContrastEnabled,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(
+ base::Value::CreateBooleanValue(
container.login_screen_default_high_contrast_enabled()),
NULL);
}
container.login_screen_default_screen_magnifier_type()),
NULL);
}
+ if (container.has_login_screen_default_virtual_keyboard_enabled()) {
+ policies->Set(
+ key::kDeviceLoginScreenDefaultVirtualKeyboardEnabled,
+ POLICY_LEVEL_MANDATORY,
+ POLICY_SCOPE_MACHINE,
+ base::Value::CreateBooleanValue(
+ container.login_screen_default_virtual_keyboard_enabled()),
+ NULL);
+ }
}
}
policies->Set(key::kDeviceMetricsReportingEnabled,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(container.metrics_enabled()),
+ base::Value::CreateBooleanValue(
+ container.metrics_enabled()),
NULL);
}
}
if (policy.has_start_up_urls()) {
const em::StartUpUrlsProto& container(policy.start_up_urls());
- ListValue* urls = new ListValue();
+ base::ListValue* urls = new base::ListValue();
RepeatedPtrField<std::string>::const_iterator entry;
for (entry = container.start_up_urls().begin();
entry != container.start_up_urls().end();
++entry) {
- urls->Append(Value::CreateStringValue(*entry));
+ urls->Append(base::Value::CreateStringValue(*entry));
}
policies->Set(key::kDeviceStartUpUrls,
POLICY_LEVEL_MANDATORY,
policies->Set(key::kSystemTimezone,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateStringValue(
+ base::Value::CreateStringValue(
policy.system_timezone().timezone()),
NULL);
}
policies->Set(key::kSystemUse24HourClock,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(
+ base::Value::CreateBooleanValue(
policy.use_24hour_clock().use_24hour_clock()),
NULL);
}
policies->Set(key::kDeviceAllowRedeemChromeOsRegistrationOffers,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(
+ base::Value::CreateBooleanValue(
container.allow_redeem_offers()),
NULL);
}
if (policy.has_start_up_flags()) {
const em::StartUpFlagsProto& container(policy.start_up_flags());
- ListValue* flags = new ListValue();
+ base::ListValue* flags = new base::ListValue();
RepeatedPtrField<std::string>::const_iterator entry;
for (entry = container.flags().begin();
entry != container.flags().end();
++entry) {
- flags->Append(Value::CreateStringValue(*entry));
+ flags->Append(base::Value::CreateStringValue(*entry));
}
policies->Set(key::kDeviceStartUpFlags,
POLICY_LEVEL_MANDATORY,
policies->Set(key::kDeviceVariationsRestrictParameter,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateStringValue(
+ base::Value::CreateStringValue(
policy.variations_parameter().parameter()),
NULL);
}
policies->Set(key::kAttestationEnabledForDevice,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(
+ base::Value::CreateBooleanValue(
policy.attestation_settings().attestation_enabled()),
NULL);
}
key::kAttestationForContentProtectionEnabled,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateBooleanValue(
+ base::Value::CreateBooleanValue(
policy.attestation_settings().content_protection_enabled()),
NULL);
}
policies->Set(key::kDeviceLoginScreenPowerManagement,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateStringValue(
+ base::Value::CreateStringValue(
container.login_screen_power_management()),
NULL);
}
policies->Set(key::kAutoCleanUpStrategy,
POLICY_LEVEL_MANDATORY,
POLICY_SCOPE_MACHINE,
- Value::CreateStringValue(
+ base::Value::CreateStringValue(
container.clean_up_strategy()),
NULL);
}
void DecodeDevicePolicy(const em::ChromeDeviceSettingsProto& policy,
PolicyMap* policies,
EnterpriseInstallAttributes* install_attributes) {
+ // TODO(achuith): Remove this once crbug.com/263527 is resolved.
+ VLOG(2) << "DecodeDevicePolicy " << policy.SerializeAsString();
+
// Decode the various groups of policies.
DecodeLoginPolicies(policy, policies);
DecodeKioskPolicies(policy, policies, install_attributes);