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

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: Style improvements. 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/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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698