Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(606)

Side by Side Diff: chrome/browser/chromeos/policy/login_profile_policy_provider.cc

Issue 18153007: Add policies to control power management on the Chrome OS login screen (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Correct example in policy_templates.json. Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698