Chromium Code Reviews| 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/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 11 #include "base/values.h" | 11 #include "base/values.h" |
| 12 #include "chrome/browser/chromeos/policy/login_screen_power_management_policy.h" | |
| 12 #include "chrome/browser/policy/policy_bundle.h" | 13 #include "chrome/browser/policy/policy_bundle.h" |
| 14 #include "chrome/browser/policy/policy_error_map.h" | |
| 13 #include "chrome/browser/policy/policy_map.h" | 15 #include "chrome/browser/policy/policy_map.h" |
| 14 #include "chrome/browser/policy/policy_types.h" | 16 #include "chrome/browser/policy/policy_types.h" |
| 15 #include "policy/policy_constants.h" | 17 #include "policy/policy_constants.h" |
| 16 | 18 |
| 17 namespace policy { | 19 namespace policy { |
| 18 | 20 |
| 19 namespace { | 21 namespace { |
| 20 | 22 |
| 21 // Applies the value of |device_policy| in |device_policy_map| as the | 23 // Applies the value of |device_policy| in |device_policy_map| as the |
| 22 // recommended value of |user_policy| in |user_policy_map|. If the value of | 24 // recommended value of |user_policy| in |user_policy_map|. If the value of |
| 23 // |device_policy| is unset, does nothing. | 25 // |device_policy| is unset, does nothing. |
| 24 void ApplyDevicePolicy(const std::string& device_policy, | 26 void ApplyDevicePolicyAsRecommendedPolicy(const std::string& device_policy, |
| 25 const std::string& user_policy, | 27 const std::string& user_policy, |
| 26 const PolicyMap& device_policy_map, | 28 const PolicyMap& device_policy_map, |
| 27 PolicyMap* user_policy_map) { | 29 PolicyMap* user_policy_map) { |
| 28 const base::Value* value = device_policy_map.GetValue(device_policy); | 30 const base::Value* value = device_policy_map.GetValue(device_policy); |
| 29 if (value) { | 31 if (value) { |
| 30 user_policy_map->Set(user_policy, | 32 user_policy_map->Set(user_policy, |
| 31 POLICY_LEVEL_RECOMMENDED, | 33 POLICY_LEVEL_RECOMMENDED, |
| 32 POLICY_SCOPE_USER, | 34 POLICY_SCOPE_USER, |
| 33 value->DeepCopy()); | 35 value->DeepCopy()); |
| 34 } | 36 } |
| 35 } | 37 } |
| 36 | 38 |
| 39 // Applies |value| as the mandatory value of |user_policy| in |user_policy_map|. | |
| 40 // If |value| is NULL, does nothing. | |
| 41 void ApplyValueAsMandatoryPolicy(const base::Value* value, | |
| 42 const std::string& user_policy, | |
| 43 PolicyMap* user_policy_map) { | |
| 44 if (value) { | |
| 45 user_policy_map->Set(user_policy, | |
| 46 POLICY_LEVEL_MANDATORY, | |
| 47 POLICY_SCOPE_USER, | |
| 48 value->DeepCopy()); | |
| 49 } | |
| 50 } | |
| 51 | |
| 37 } // namespace | 52 } // namespace |
| 38 | 53 |
| 39 LoginProfilePolicyProvider::LoginProfilePolicyProvider( | 54 LoginProfilePolicyProvider::LoginProfilePolicyProvider( |
| 40 PolicyService* device_policy_service) | 55 PolicyService* device_policy_service) |
| 41 : device_policy_service_(device_policy_service), | 56 : device_policy_service_(device_policy_service), |
| 42 waiting_for_device_policy_refresh_(false), | 57 waiting_for_device_policy_refresh_(false), |
| 43 weak_factory_(this) { | 58 weak_factory_(this) { |
| 44 } | 59 } |
| 45 | 60 |
| 46 LoginProfilePolicyProvider::~LoginProfilePolicyProvider() { | 61 LoginProfilePolicyProvider::~LoginProfilePolicyProvider() { |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 89 // If a policy refresh is in progress, wait for it to finish. | 104 // If a policy refresh is in progress, wait for it to finish. |
| 90 if (waiting_for_device_policy_refresh_) | 105 if (waiting_for_device_policy_refresh_) |
| 91 return; | 106 return; |
| 92 | 107 |
| 93 const PolicyNamespace chrome_namespaces(POLICY_DOMAIN_CHROME, std::string()); | 108 const PolicyNamespace chrome_namespaces(POLICY_DOMAIN_CHROME, std::string()); |
| 94 const PolicyMap& device_policy_map = | 109 const PolicyMap& device_policy_map = |
| 95 device_policy_service_->GetPolicies(chrome_namespaces); | 110 device_policy_service_->GetPolicies(chrome_namespaces); |
| 96 scoped_ptr<PolicyBundle> bundle(new PolicyBundle); | 111 scoped_ptr<PolicyBundle> bundle(new PolicyBundle); |
| 97 PolicyMap& user_policy_map = bundle->Get(chrome_namespaces); | 112 PolicyMap& user_policy_map = bundle->Get(chrome_namespaces); |
| 98 | 113 |
| 99 ApplyDevicePolicy(key::kDeviceLoginScreenDefaultLargeCursorEnabled, | 114 ApplyDevicePolicyAsRecommendedPolicy( |
| 100 key::kLargeCursorEnabled, | 115 key::kDeviceLoginScreenDefaultLargeCursorEnabled, |
| 101 device_policy_map, &user_policy_map); | 116 key::kLargeCursorEnabled, |
| 102 ApplyDevicePolicy(key::kDeviceLoginScreenDefaultSpokenFeedbackEnabled, | 117 device_policy_map, &user_policy_map); |
| 103 key::kSpokenFeedbackEnabled, | 118 ApplyDevicePolicyAsRecommendedPolicy( |
| 104 device_policy_map, &user_policy_map); | 119 key::kDeviceLoginScreenDefaultSpokenFeedbackEnabled, |
| 105 ApplyDevicePolicy(key::kDeviceLoginScreenDefaultHighContrastEnabled, | 120 key::kSpokenFeedbackEnabled, |
| 106 key::kHighContrastEnabled, | 121 device_policy_map, &user_policy_map); |
| 107 device_policy_map, &user_policy_map); | 122 ApplyDevicePolicyAsRecommendedPolicy( |
| 108 ApplyDevicePolicy(key::kDeviceLoginScreenDefaultScreenMagnifierType, | 123 key::kDeviceLoginScreenDefaultHighContrastEnabled, |
| 109 key::kScreenMagnifierType, | 124 key::kHighContrastEnabled, |
| 110 device_policy_map, &user_policy_map); | 125 device_policy_map, &user_policy_map); |
| 126 ApplyDevicePolicyAsRecommendedPolicy( | |
| 127 key::kDeviceLoginScreenDefaultScreenMagnifierType, | |
| 128 key::kScreenMagnifierType, | |
| 129 device_policy_map, &user_policy_map); | |
| 130 | |
| 131 const base::Value* value = | |
| 132 device_policy_map.GetValue(key::kDeviceLoginScreenPowerManagement); | |
| 133 std::string json; | |
| 134 if (value && value->GetAsString(&json)) { | |
| 135 LoginScreenPowerManagementPolicy power_management_policy; | |
| 136 power_management_policy.Init(json, NULL); | |
| 137 ApplyValueAsMandatoryPolicy(power_management_policy.GetScreenDimDelayAC(), | |
|
Mattias Nissler (ping if slow)
2013/07/08 17:36:57
I guess we eventually want to switch to a dictiona
bartfab (slow)
2013/07/09 10:02:33
Done. For reference, making that additional switch
| |
| 138 key::kScreenDimDelayAC, | |
| 139 &user_policy_map); | |
| 140 ApplyValueAsMandatoryPolicy(power_management_policy.GetScreenOffDelayAC(), | |
| 141 key::kScreenOffDelayAC, | |
| 142 &user_policy_map); | |
| 143 ApplyValueAsMandatoryPolicy(power_management_policy.GetIdleDelayAC(), | |
| 144 key::kIdleDelayAC, | |
| 145 &user_policy_map); | |
| 146 ApplyValueAsMandatoryPolicy( | |
| 147 power_management_policy.GetScreenDimDelayBattery(), | |
| 148 key::kScreenDimDelayBattery, | |
| 149 &user_policy_map); | |
| 150 ApplyValueAsMandatoryPolicy( | |
| 151 power_management_policy.GetScreenOffDelayBattery(), | |
| 152 key::kScreenOffDelayBattery, | |
| 153 &user_policy_map); | |
| 154 ApplyValueAsMandatoryPolicy(power_management_policy.GetIdleDelayBattery(), | |
| 155 key::kIdleDelayBattery, | |
| 156 &user_policy_map); | |
| 157 ApplyValueAsMandatoryPolicy(power_management_policy.GetIdleActionAC(), | |
| 158 key::kIdleActionAC, | |
| 159 &user_policy_map); | |
| 160 ApplyValueAsMandatoryPolicy(power_management_policy.GetIdleActionBattery(), | |
| 161 key::kIdleActionBattery, | |
| 162 &user_policy_map); | |
| 163 ApplyValueAsMandatoryPolicy(power_management_policy.GetLidCloseAction(), | |
| 164 key::kLidCloseAction, | |
| 165 &user_policy_map); | |
| 166 ApplyValueAsMandatoryPolicy( | |
| 167 power_management_policy.GetUserActivityScreenDimDelayScale(), | |
| 168 key::kUserActivityScreenDimDelayScale, | |
| 169 &user_policy_map); | |
| 170 } | |
| 171 | |
| 111 UpdatePolicy(bundle.Pass()); | 172 UpdatePolicy(bundle.Pass()); |
| 112 } | 173 } |
| 113 | 174 |
| 114 } // namespace policy | 175 } // namespace policy |
| OLD | NEW |