Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chromeos / policy / device_policy_decoder_chromeos.cc
index 68ebdd5..6f9e606 100644 (file)
 #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"
 
@@ -31,7 +31,7 @@ namespace {
 
 // 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
@@ -39,10 +39,10 @@ Value* DecodeIntegerValue(google::protobuf::int64 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,
@@ -54,7 +54,7 @@ Value* DecodeConnectionType(int value) {
   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,
@@ -65,7 +65,8 @@ 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);
     }
   }
@@ -76,7 +77,8 @@ void DecodeLoginPolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kDeviceShowUserNamesOnSignin,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateBooleanValue(container.show_user_names()),
+                    base::Value::CreateBooleanValue(
+                        container.show_user_names()),
                     NULL);
     }
   }
@@ -87,19 +89,20 @@ void DecodeLoginPolicies(const em::ChromeDeviceSettingsProto& policy,
       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,
@@ -115,7 +118,7 @@ void DecodeLoginPolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kDeviceEphemeralUsersEnabled,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateBooleanValue(
+                    base::Value::CreateBooleanValue(
                         container.ephemeral_users_enabled()),
                     NULL);
     }
@@ -164,7 +167,7 @@ void DecodeLoginPolicies(const em::ChromeDeviceSettingsProto& policy,
       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()) {
@@ -178,17 +181,25 @@ void DecodeLoginPolicies(const em::ChromeDeviceSettingsProto& policy,
       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,
@@ -233,7 +244,7 @@ void DecodeKioskPolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kDeviceLoginScreenSaverId,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateStringValue(
+                    base::Value::CreateStringValue(
                         container.screen_saver_extension_id()),
                     NULL);
     }
@@ -268,8 +279,10 @@ void DecodeKioskPolicies(const em::ChromeDeviceSettingsProto& policy,
   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,
@@ -285,7 +298,7 @@ void DecodeNetworkPolicies(const em::ChromeDeviceSettingsProto& policy,
   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())
@@ -317,7 +330,7 @@ void DecodeNetworkPolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kDeviceDataRoamingEnabled,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateBooleanValue(
+                    base::Value::CreateBooleanValue(
                         container.data_roaming_enabled()),
                     NULL);
     }
@@ -330,7 +343,7 @@ void DecodeNetworkPolicies(const em::ChromeDeviceSettingsProto& policy,
     policies->Set(key::kDeviceOpenNetworkConfiguration,
                   POLICY_LEVEL_MANDATORY,
                   POLICY_SCOPE_MACHINE,
-                  Value::CreateStringValue(config),
+                  base::Value::CreateStringValue(config),
                   NULL);
   }
 }
@@ -343,14 +356,15 @@ void DecodeReportingPolicies(const em::ChromeDeviceSettingsProto& policy,
       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);
     }
@@ -358,21 +372,23 @@ void DecodeReportingPolicies(const em::ChromeDeviceSettingsProto& policy,
       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);
     }
@@ -380,7 +396,7 @@ void DecodeReportingPolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kReportDeviceUsers,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateBooleanValue(container.report_users()),
+                    base::Value::CreateBooleanValue(container.report_users()),
                     NULL);
     }
   }
@@ -395,7 +411,7 @@ void DecodeAutoUpdatePolicies(const em::ChromeDeviceSettingsProto& policy,
       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
@@ -407,7 +423,7 @@ void DecodeAutoUpdatePolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kChromeOsReleaseChannelDelegated,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateBooleanValue(
+                    base::Value::CreateBooleanValue(
                         container.release_channel_delegated()),
                     NULL);
     }
@@ -419,7 +435,8 @@ void DecodeAutoUpdatePolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kDeviceAutoUpdateDisabled,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateBooleanValue(container.update_disabled()),
+                    base::Value::CreateBooleanValue(
+                        container.update_disabled()),
                     NULL);
     }
 
@@ -427,7 +444,7 @@ void DecodeAutoUpdatePolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kDeviceTargetVersionPrefix,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateStringValue(
+                    base::Value::CreateStringValue(
                         container.target_version_prefix()),
                     NULL);
     }
@@ -439,13 +456,13 @@ void DecodeAutoUpdatePolicies(const em::ChromeDeviceSettingsProto& policy,
       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();
@@ -466,7 +483,7 @@ void DecodeAutoUpdatePolicies(const em::ChromeDeviceSettingsProto& policy,
           key::kDeviceUpdateHttpDownloadsEnabled,
           POLICY_LEVEL_MANDATORY,
           POLICY_SCOPE_MACHINE,
-          Value::CreateBooleanValue(container.http_downloads_enabled()),
+          base::Value::CreateBooleanValue(container.http_downloads_enabled()),
           NULL);
     }
 
@@ -474,7 +491,8 @@ void DecodeAutoUpdatePolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kRebootAfterUpdate,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateBooleanValue(container.reboot_after_update()),
+                    base::Value::CreateBooleanValue(
+                        container.reboot_after_update()),
                     NULL);
     }
 
@@ -482,7 +500,7 @@ void DecodeAutoUpdatePolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kDeviceAutoUpdateP2PEnabled,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateBooleanValue(container.p2p_enabled()),
+                    base::Value::CreateBooleanValue(container.p2p_enabled()),
                     NULL);
     }
   }
@@ -499,7 +517,7 @@ void DecodeAccessibilityPolicies(const em::ChromeDeviceSettingsProto& policy,
           key::kDeviceLoginScreenDefaultLargeCursorEnabled,
           POLICY_LEVEL_MANDATORY,
           POLICY_SCOPE_MACHINE,
-          Value::CreateBooleanValue(
+          base::Value::CreateBooleanValue(
               container.login_screen_default_large_cursor_enabled()),
           NULL);
     }
@@ -509,7 +527,7 @@ void DecodeAccessibilityPolicies(const em::ChromeDeviceSettingsProto& policy,
           key::kDeviceLoginScreenDefaultSpokenFeedbackEnabled,
           POLICY_LEVEL_MANDATORY,
           POLICY_SCOPE_MACHINE,
-          Value::CreateBooleanValue(
+          base::Value::CreateBooleanValue(
               container.login_screen_default_spoken_feedback_enabled()),
           NULL);
     }
@@ -519,7 +537,7 @@ void DecodeAccessibilityPolicies(const em::ChromeDeviceSettingsProto& policy,
           key::kDeviceLoginScreenDefaultHighContrastEnabled,
           POLICY_LEVEL_MANDATORY,
           POLICY_SCOPE_MACHINE,
-          Value::CreateBooleanValue(
+          base::Value::CreateBooleanValue(
               container.login_screen_default_high_contrast_enabled()),
           NULL);
     }
@@ -533,6 +551,15 @@ void DecodeAccessibilityPolicies(const em::ChromeDeviceSettingsProto& policy,
               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);
+    }
   }
 }
 
@@ -556,19 +583,20 @@ void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy,
       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,
@@ -582,7 +610,7 @@ void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kSystemTimezone,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateStringValue(
+                    base::Value::CreateStringValue(
                         policy.system_timezone().timezone()),
                     NULL);
     }
@@ -593,7 +621,7 @@ void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kSystemUse24HourClock,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateBooleanValue(
+                    base::Value::CreateBooleanValue(
                         policy.use_24hour_clock().use_24hour_clock()),
                     NULL);
     }
@@ -606,7 +634,7 @@ void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kDeviceAllowRedeemChromeOsRegistrationOffers,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateBooleanValue(
+                    base::Value::CreateBooleanValue(
                         container.allow_redeem_offers()),
                     NULL);
     }
@@ -625,12 +653,12 @@ void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy,
 
   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,
@@ -644,7 +672,7 @@ void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kDeviceVariationsRestrictParameter,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateStringValue(
+                    base::Value::CreateStringValue(
                         policy.variations_parameter().parameter()),
                     NULL);
     }
@@ -655,7 +683,7 @@ void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kAttestationEnabledForDevice,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateBooleanValue(
+                    base::Value::CreateBooleanValue(
                         policy.attestation_settings().attestation_enabled()),
                     NULL);
     }
@@ -664,7 +692,7 @@ void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy,
           key::kAttestationForContentProtectionEnabled,
           POLICY_LEVEL_MANDATORY,
           POLICY_SCOPE_MACHINE,
-          Value::CreateBooleanValue(
+          base::Value::CreateBooleanValue(
               policy.attestation_settings().content_protection_enabled()),
           NULL);
     }
@@ -677,7 +705,7 @@ void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kDeviceLoginScreenPowerManagement,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateStringValue(
+                    base::Value::CreateStringValue(
                         container.login_screen_power_management()),
                     NULL);
     }
@@ -689,7 +717,7 @@ void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy,
       policies->Set(key::kAutoCleanUpStrategy,
                     POLICY_LEVEL_MANDATORY,
                     POLICY_SCOPE_MACHINE,
-                    Value::CreateStringValue(
+                    base::Value::CreateStringValue(
                         container.clean_up_strategy()),
                     NULL);
     }
@@ -701,6 +729,9 @@ void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy,
 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);