| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/policy/login_profile_policy_provider.h" | 5 #include "chrome/browser/chromeos/policy/login_profile_policy_provider.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| 11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
| 12 #include "base/values.h" | 12 #include "base/values.h" |
| 13 #include "chrome/browser/chromeos/policy/login_screen_power_management_policy.h" |
| 13 #include "chrome/browser/policy/external_data_fetcher.h" | 14 #include "chrome/browser/policy/external_data_fetcher.h" |
| 14 #include "chrome/browser/policy/policy_bundle.h" | 15 #include "chrome/browser/policy/policy_bundle.h" |
| 16 #include "chrome/browser/policy/policy_error_map.h" |
| 15 #include "chrome/browser/policy/policy_map.h" | 17 #include "chrome/browser/policy/policy_map.h" |
| 16 #include "chrome/browser/policy/policy_types.h" | 18 #include "chrome/browser/policy/policy_types.h" |
| 17 #include "policy/policy_constants.h" | 19 #include "policy/policy_constants.h" |
| 18 | 20 |
| 19 namespace policy { | 21 namespace policy { |
| 20 | 22 |
| 21 namespace { | 23 namespace { |
| 22 | 24 |
| 23 // Applies the value of |device_policy| in |device_policy_map| as the | 25 // Applies the value of |device_policy| in |device_policy_map| as the |
| 24 // recommended value of |user_policy| in |user_policy_map|. If the value of | 26 // recommended value of |user_policy| in |user_policy_map|. If the value of |
| 25 // |device_policy| is unset, does nothing. | 27 // |device_policy| is unset, does nothing. |
| 26 void ApplyDevicePolicy(const std::string& device_policy, | 28 void ApplyDevicePolicyAsRecommendedPolicy(const std::string& device_policy, |
| 27 const std::string& user_policy, | 29 const std::string& user_policy, |
| 28 const PolicyMap& device_policy_map, | 30 const PolicyMap& device_policy_map, |
| 29 PolicyMap* user_policy_map) { | 31 PolicyMap* user_policy_map) { |
| 30 const base::Value* value = device_policy_map.GetValue(device_policy); | 32 const base::Value* value = device_policy_map.GetValue(device_policy); |
| 31 if (value) { | 33 if (value) { |
| 32 user_policy_map->Set(user_policy, | 34 user_policy_map->Set(user_policy, |
| 33 POLICY_LEVEL_RECOMMENDED, | 35 POLICY_LEVEL_RECOMMENDED, |
| 34 POLICY_SCOPE_USER, | 36 POLICY_SCOPE_USER, |
| 35 value->DeepCopy(), | 37 value->DeepCopy(), |
| 36 NULL); | 38 NULL); |
| 37 } | 39 } |
| 38 } | 40 } |
| 39 | 41 |
| 42 // Applies |value| as the mandatory value of |user_policy| in |user_policy_map|. |
| 43 // If |value| is NULL, does nothing. |
| 44 void ApplyValueAsMandatoryPolicy(const base::Value* value, |
| 45 const std::string& user_policy, |
| 46 PolicyMap* user_policy_map) { |
| 47 if (value) { |
| 48 user_policy_map->Set(user_policy, |
| 49 POLICY_LEVEL_MANDATORY, |
| 50 POLICY_SCOPE_USER, |
| 51 value->DeepCopy(), |
| 52 NULL); |
| 53 } |
| 54 } |
| 55 |
| 40 } // namespace | 56 } // namespace |
| 41 | 57 |
| 42 LoginProfilePolicyProvider::LoginProfilePolicyProvider( | 58 LoginProfilePolicyProvider::LoginProfilePolicyProvider( |
| 43 PolicyService* device_policy_service) | 59 PolicyService* device_policy_service) |
| 44 : device_policy_service_(device_policy_service), | 60 : device_policy_service_(device_policy_service), |
| 45 waiting_for_device_policy_refresh_(false), | 61 waiting_for_device_policy_refresh_(false), |
| 46 weak_factory_(this) { | 62 weak_factory_(this) { |
| 47 } | 63 } |
| 48 | 64 |
| 49 LoginProfilePolicyProvider::~LoginProfilePolicyProvider() { | 65 LoginProfilePolicyProvider::~LoginProfilePolicyProvider() { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 // If a policy refresh is in progress, wait for it to finish. | 108 // If a policy refresh is in progress, wait for it to finish. |
| 93 if (waiting_for_device_policy_refresh_) | 109 if (waiting_for_device_policy_refresh_) |
| 94 return; | 110 return; |
| 95 | 111 |
| 96 const PolicyNamespace chrome_namespaces(POLICY_DOMAIN_CHROME, std::string()); | 112 const PolicyNamespace chrome_namespaces(POLICY_DOMAIN_CHROME, std::string()); |
| 97 const PolicyMap& device_policy_map = | 113 const PolicyMap& device_policy_map = |
| 98 device_policy_service_->GetPolicies(chrome_namespaces); | 114 device_policy_service_->GetPolicies(chrome_namespaces); |
| 99 scoped_ptr<PolicyBundle> bundle(new PolicyBundle); | 115 scoped_ptr<PolicyBundle> bundle(new PolicyBundle); |
| 100 PolicyMap& user_policy_map = bundle->Get(chrome_namespaces); | 116 PolicyMap& user_policy_map = bundle->Get(chrome_namespaces); |
| 101 | 117 |
| 102 ApplyDevicePolicy(key::kDeviceLoginScreenDefaultLargeCursorEnabled, | 118 ApplyDevicePolicyAsRecommendedPolicy( |
| 103 key::kLargeCursorEnabled, | 119 key::kDeviceLoginScreenDefaultLargeCursorEnabled, |
| 104 device_policy_map, &user_policy_map); | 120 key::kLargeCursorEnabled, |
| 105 ApplyDevicePolicy(key::kDeviceLoginScreenDefaultSpokenFeedbackEnabled, | 121 device_policy_map, &user_policy_map); |
| 106 key::kSpokenFeedbackEnabled, | 122 ApplyDevicePolicyAsRecommendedPolicy( |
| 107 device_policy_map, &user_policy_map); | 123 key::kDeviceLoginScreenDefaultSpokenFeedbackEnabled, |
| 108 ApplyDevicePolicy(key::kDeviceLoginScreenDefaultHighContrastEnabled, | 124 key::kSpokenFeedbackEnabled, |
| 109 key::kHighContrastEnabled, | 125 device_policy_map, &user_policy_map); |
| 110 device_policy_map, &user_policy_map); | 126 ApplyDevicePolicyAsRecommendedPolicy( |
| 111 ApplyDevicePolicy(key::kDeviceLoginScreenDefaultScreenMagnifierType, | 127 key::kDeviceLoginScreenDefaultHighContrastEnabled, |
| 112 key::kScreenMagnifierType, | 128 key::kHighContrastEnabled, |
| 113 device_policy_map, &user_policy_map); | 129 device_policy_map, &user_policy_map); |
| 130 ApplyDevicePolicyAsRecommendedPolicy( |
| 131 key::kDeviceLoginScreenDefaultScreenMagnifierType, |
| 132 key::kScreenMagnifierType, |
| 133 device_policy_map, &user_policy_map); |
| 134 |
| 135 // TODO(bartfab): Consolidate power management user policies into a single |
| 136 // JSON policy, allowing the value of the device policy to be simply forwarded |
| 137 // here. http://crbug.com/258339 |
| 138 const base::Value* value = |
| 139 device_policy_map.GetValue(key::kDeviceLoginScreenPowerManagement); |
| 140 std::string json; |
| 141 if (value && value->GetAsString(&json)) { |
| 142 LoginScreenPowerManagementPolicy power_management_policy; |
| 143 power_management_policy.Init(json, NULL); |
| 144 ApplyValueAsMandatoryPolicy(power_management_policy.GetScreenDimDelayAC(), |
| 145 key::kScreenDimDelayAC, |
| 146 &user_policy_map); |
| 147 ApplyValueAsMandatoryPolicy(power_management_policy.GetScreenOffDelayAC(), |
| 148 key::kScreenOffDelayAC, |
| 149 &user_policy_map); |
| 150 ApplyValueAsMandatoryPolicy(power_management_policy.GetIdleDelayAC(), |
| 151 key::kIdleDelayAC, |
| 152 &user_policy_map); |
| 153 ApplyValueAsMandatoryPolicy( |
| 154 power_management_policy.GetScreenDimDelayBattery(), |
| 155 key::kScreenDimDelayBattery, |
| 156 &user_policy_map); |
| 157 ApplyValueAsMandatoryPolicy( |
| 158 power_management_policy.GetScreenOffDelayBattery(), |
| 159 key::kScreenOffDelayBattery, |
| 160 &user_policy_map); |
| 161 ApplyValueAsMandatoryPolicy(power_management_policy.GetIdleDelayBattery(), |
| 162 key::kIdleDelayBattery, |
| 163 &user_policy_map); |
| 164 ApplyValueAsMandatoryPolicy(power_management_policy.GetIdleActionAC(), |
| 165 key::kIdleActionAC, |
| 166 &user_policy_map); |
| 167 ApplyValueAsMandatoryPolicy(power_management_policy.GetIdleActionBattery(), |
| 168 key::kIdleActionBattery, |
| 169 &user_policy_map); |
| 170 ApplyValueAsMandatoryPolicy(power_management_policy.GetLidCloseAction(), |
| 171 key::kLidCloseAction, |
| 172 &user_policy_map); |
| 173 ApplyValueAsMandatoryPolicy( |
| 174 power_management_policy.GetUserActivityScreenDimDelayScale(), |
| 175 key::kUserActivityScreenDimDelayScale, |
| 176 &user_policy_map); |
| 177 } |
| 178 |
| 114 UpdatePolicy(bundle.Pass()); | 179 UpdatePolicy(bundle.Pass()); |
| 115 } | 180 } |
| 116 | 181 |
| 117 } // namespace policy | 182 } // namespace policy |
| OLD | NEW |