OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/device_policy_decoder_chromeos.h" | 5 #include "chrome/browser/chromeos/policy/device_policy_decoder_chromeos.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/callback.h" | 10 #include "base/callback.h" |
11 #include "base/json/json_reader.h" | 11 #include "base/json/json_reader.h" |
12 #include "base/logging.h" | 12 #include "base/logging.h" |
13 #include "base/values.h" | 13 #include "base/values.h" |
14 #include "chrome/browser/browser_process.h" | 14 #include "chrome/browser/browser_process.h" |
15 #include "chrome/browser/chromeos/policy/device_local_account.h" | 15 #include "chrome/browser/chromeos/policy/device_local_account.h" |
16 #include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h" | 16 #include "chrome/browser/chromeos/policy/proto/chrome_device_policy.pb.h" |
17 #include "chromeos/dbus/dbus_thread_manager.h" | 17 #include "chromeos/dbus/dbus_thread_manager.h" |
18 #include "chromeos/dbus/update_engine_client.h" | 18 #include "chromeos/dbus/update_engine_client.h" |
19 #include "chromeos/settings/cros_settings_names.h" | 19 #include "chromeos/settings/cros_settings_names.h" |
20 #include "components/policy/core/browser/browser_policy_connector.h" | 20 #include "components/policy/core/browser/browser_policy_connector.h" |
21 #include "components/policy/core/common/external_data_fetcher.h" | 21 #include "components/policy/core/common/external_data_fetcher.h" |
22 #include "components/policy/core/common/policy_map.h" | 22 #include "components/policy/core/common/policy_map.h" |
23 #include "components/policy/core/common/policy_types.h" | |
24 #include "components/policy/core/common/schema.h" | 23 #include "components/policy/core/common/schema.h" |
25 #include "policy/policy_constants.h" | 24 #include "policy/policy_constants.h" |
26 #include "third_party/cros_system_api/dbus/service_constants.h" | 25 #include "third_party/cros_system_api/dbus/service_constants.h" |
27 | 26 |
28 using google::protobuf::RepeatedField; | 27 using google::protobuf::RepeatedField; |
29 using google::protobuf::RepeatedPtrField; | 28 using google::protobuf::RepeatedPtrField; |
30 | 29 |
31 namespace em = enterprise_management; | 30 namespace em = enterprise_management; |
32 | 31 |
33 namespace policy { | 32 namespace policy { |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 } | 108 } |
110 | 109 |
111 void DecodeLoginPolicies(const em::ChromeDeviceSettingsProto& policy, | 110 void DecodeLoginPolicies(const em::ChromeDeviceSettingsProto& policy, |
112 PolicyMap* policies) { | 111 PolicyMap* policies) { |
113 if (policy.has_guest_mode_enabled()) { | 112 if (policy.has_guest_mode_enabled()) { |
114 const em::GuestModeEnabledProto& container(policy.guest_mode_enabled()); | 113 const em::GuestModeEnabledProto& container(policy.guest_mode_enabled()); |
115 if (container.has_guest_mode_enabled()) { | 114 if (container.has_guest_mode_enabled()) { |
116 policies->Set(key::kDeviceGuestModeEnabled, | 115 policies->Set(key::kDeviceGuestModeEnabled, |
117 POLICY_LEVEL_MANDATORY, | 116 POLICY_LEVEL_MANDATORY, |
118 POLICY_SCOPE_MACHINE, | 117 POLICY_SCOPE_MACHINE, |
119 POLICY_SOURCE_CLOUD, | |
120 new base::FundamentalValue( | 118 new base::FundamentalValue( |
121 container.guest_mode_enabled()), | 119 container.guest_mode_enabled()), |
122 NULL); | 120 NULL); |
123 } | 121 } |
124 } | 122 } |
125 | 123 |
126 if (policy.has_reboot_on_shutdown()) { | 124 if (policy.has_reboot_on_shutdown()) { |
127 const em::RebootOnShutdownProto& container(policy.reboot_on_shutdown()); | 125 const em::RebootOnShutdownProto& container(policy.reboot_on_shutdown()); |
128 if (container.has_reboot_on_shutdown()) { | 126 if (container.has_reboot_on_shutdown()) { |
129 policies->Set(key::kDeviceRebootOnShutdown, POLICY_LEVEL_MANDATORY, | 127 policies->Set(key::kDeviceRebootOnShutdown, POLICY_LEVEL_MANDATORY, |
130 POLICY_SCOPE_MACHINE, | 128 POLICY_SCOPE_MACHINE, |
131 POLICY_SOURCE_CLOUD, | |
132 new base::FundamentalValue(container.reboot_on_shutdown()), | 129 new base::FundamentalValue(container.reboot_on_shutdown()), |
133 NULL); | 130 NULL); |
134 } | 131 } |
135 } | 132 } |
136 | 133 |
137 if (policy.has_show_user_names()) { | 134 if (policy.has_show_user_names()) { |
138 const em::ShowUserNamesOnSigninProto& container(policy.show_user_names()); | 135 const em::ShowUserNamesOnSigninProto& container(policy.show_user_names()); |
139 if (container.has_show_user_names()) { | 136 if (container.has_show_user_names()) { |
140 policies->Set(key::kDeviceShowUserNamesOnSignin, | 137 policies->Set(key::kDeviceShowUserNamesOnSignin, |
141 POLICY_LEVEL_MANDATORY, | 138 POLICY_LEVEL_MANDATORY, |
142 POLICY_SCOPE_MACHINE, | 139 POLICY_SCOPE_MACHINE, |
143 POLICY_SOURCE_CLOUD, | |
144 new base::FundamentalValue( | 140 new base::FundamentalValue( |
145 container.show_user_names()), | 141 container.show_user_names()), |
146 NULL); | 142 NULL); |
147 } | 143 } |
148 } | 144 } |
149 | 145 |
150 if (policy.has_allow_new_users()) { | 146 if (policy.has_allow_new_users()) { |
151 const em::AllowNewUsersProto& container(policy.allow_new_users()); | 147 const em::AllowNewUsersProto& container(policy.allow_new_users()); |
152 if (container.has_allow_new_users()) { | 148 if (container.has_allow_new_users()) { |
153 policies->Set(key::kDeviceAllowNewUsers, | 149 policies->Set(key::kDeviceAllowNewUsers, |
154 POLICY_LEVEL_MANDATORY, | 150 POLICY_LEVEL_MANDATORY, |
155 POLICY_SCOPE_MACHINE, | 151 POLICY_SCOPE_MACHINE, |
156 POLICY_SOURCE_CLOUD, | |
157 new base::FundamentalValue( | 152 new base::FundamentalValue( |
158 container.allow_new_users()), | 153 container.allow_new_users()), |
159 NULL); | 154 NULL); |
160 } | 155 } |
161 } | 156 } |
162 | 157 |
163 if (policy.has_user_whitelist()) { | 158 if (policy.has_user_whitelist()) { |
164 const em::UserWhitelistProto& container(policy.user_whitelist()); | 159 const em::UserWhitelistProto& container(policy.user_whitelist()); |
165 base::ListValue* whitelist = new base::ListValue(); | 160 base::ListValue* whitelist = new base::ListValue(); |
166 RepeatedPtrField<std::string>::const_iterator entry; | 161 RepeatedPtrField<std::string>::const_iterator entry; |
167 for (entry = container.user_whitelist().begin(); | 162 for (entry = container.user_whitelist().begin(); |
168 entry != container.user_whitelist().end(); | 163 entry != container.user_whitelist().end(); |
169 ++entry) { | 164 ++entry) { |
170 whitelist->Append(new base::StringValue(*entry)); | 165 whitelist->Append(new base::StringValue(*entry)); |
171 } | 166 } |
172 policies->Set(key::kDeviceUserWhitelist, | 167 policies->Set(key::kDeviceUserWhitelist, |
173 POLICY_LEVEL_MANDATORY, | 168 POLICY_LEVEL_MANDATORY, |
174 POLICY_SCOPE_MACHINE, | 169 POLICY_SCOPE_MACHINE, |
175 POLICY_SOURCE_CLOUD, | |
176 whitelist, | 170 whitelist, |
177 NULL); | 171 NULL); |
178 } | 172 } |
179 | 173 |
180 if (policy.has_ephemeral_users_enabled()) { | 174 if (policy.has_ephemeral_users_enabled()) { |
181 const em::EphemeralUsersEnabledProto& container( | 175 const em::EphemeralUsersEnabledProto& container( |
182 policy.ephemeral_users_enabled()); | 176 policy.ephemeral_users_enabled()); |
183 if (container.has_ephemeral_users_enabled()) { | 177 if (container.has_ephemeral_users_enabled()) { |
184 policies->Set(key::kDeviceEphemeralUsersEnabled, | 178 policies->Set(key::kDeviceEphemeralUsersEnabled, |
185 POLICY_LEVEL_MANDATORY, | 179 POLICY_LEVEL_MANDATORY, |
186 POLICY_SCOPE_MACHINE, | 180 POLICY_SCOPE_MACHINE, |
187 POLICY_SOURCE_CLOUD, | |
188 new base::FundamentalValue( | 181 new base::FundamentalValue( |
189 container.ephemeral_users_enabled()), | 182 container.ephemeral_users_enabled()), |
190 NULL); | 183 NULL); |
191 } | 184 } |
192 } | 185 } |
193 | 186 |
194 if (policy.has_device_local_accounts()) { | 187 if (policy.has_device_local_accounts()) { |
195 const em::DeviceLocalAccountsProto& container( | 188 const em::DeviceLocalAccountsProto& container( |
196 policy.device_local_accounts()); | 189 policy.device_local_accounts()); |
197 const RepeatedPtrField<em::DeviceLocalAccountInfoProto>& accounts = | 190 const RepeatedPtrField<em::DeviceLocalAccountInfoProto>& accounts = |
(...skipping 28 matching lines...) Expand all Loading... |
226 entry->deprecated_public_session_id()); | 219 entry->deprecated_public_session_id()); |
227 entry_dict->SetIntegerWithoutPathExpansion( | 220 entry_dict->SetIntegerWithoutPathExpansion( |
228 chromeos::kAccountsPrefDeviceLocalAccountsKeyType, | 221 chromeos::kAccountsPrefDeviceLocalAccountsKeyType, |
229 DeviceLocalAccount::TYPE_PUBLIC_SESSION); | 222 DeviceLocalAccount::TYPE_PUBLIC_SESSION); |
230 } | 223 } |
231 account_list->Append(entry_dict.release()); | 224 account_list->Append(entry_dict.release()); |
232 } | 225 } |
233 policies->Set(key::kDeviceLocalAccounts, | 226 policies->Set(key::kDeviceLocalAccounts, |
234 POLICY_LEVEL_MANDATORY, | 227 POLICY_LEVEL_MANDATORY, |
235 POLICY_SCOPE_MACHINE, | 228 POLICY_SCOPE_MACHINE, |
236 POLICY_SOURCE_CLOUD, | |
237 account_list.release(), | 229 account_list.release(), |
238 NULL); | 230 NULL); |
239 if (container.has_auto_login_id()) { | 231 if (container.has_auto_login_id()) { |
240 policies->Set(key::kDeviceLocalAccountAutoLoginId, | 232 policies->Set(key::kDeviceLocalAccountAutoLoginId, |
241 POLICY_LEVEL_MANDATORY, | 233 POLICY_LEVEL_MANDATORY, |
242 POLICY_SCOPE_MACHINE, | 234 POLICY_SCOPE_MACHINE, |
243 POLICY_SOURCE_CLOUD, | |
244 new base::StringValue(container.auto_login_id()), | 235 new base::StringValue(container.auto_login_id()), |
245 NULL); | 236 NULL); |
246 } | 237 } |
247 if (container.has_auto_login_delay()) { | 238 if (container.has_auto_login_delay()) { |
248 policies->Set(key::kDeviceLocalAccountAutoLoginDelay, | 239 policies->Set(key::kDeviceLocalAccountAutoLoginDelay, |
249 POLICY_LEVEL_MANDATORY, | 240 POLICY_LEVEL_MANDATORY, |
250 POLICY_SCOPE_MACHINE, | 241 POLICY_SCOPE_MACHINE, |
251 POLICY_SOURCE_CLOUD, | |
252 DecodeIntegerValue(container.auto_login_delay()).release(), | 242 DecodeIntegerValue(container.auto_login_delay()).release(), |
253 NULL); | 243 NULL); |
254 } | 244 } |
255 if (container.has_enable_auto_login_bailout()) { | 245 if (container.has_enable_auto_login_bailout()) { |
256 policies->Set(key::kDeviceLocalAccountAutoLoginBailoutEnabled, | 246 policies->Set(key::kDeviceLocalAccountAutoLoginBailoutEnabled, |
257 POLICY_LEVEL_MANDATORY, | 247 POLICY_LEVEL_MANDATORY, |
258 POLICY_SCOPE_MACHINE, | 248 POLICY_SCOPE_MACHINE, |
259 POLICY_SOURCE_CLOUD, | |
260 new base::FundamentalValue( | 249 new base::FundamentalValue( |
261 container.enable_auto_login_bailout()), | 250 container.enable_auto_login_bailout()), |
262 NULL); | 251 NULL); |
263 } | 252 } |
264 if (container.has_prompt_for_network_when_offline()) { | 253 if (container.has_prompt_for_network_when_offline()) { |
265 policies->Set(key::kDeviceLocalAccountPromptForNetworkWhenOffline, | 254 policies->Set(key::kDeviceLocalAccountPromptForNetworkWhenOffline, |
266 POLICY_LEVEL_MANDATORY, | 255 POLICY_LEVEL_MANDATORY, |
267 POLICY_SCOPE_MACHINE, | 256 POLICY_SCOPE_MACHINE, |
268 POLICY_SOURCE_CLOUD, | |
269 new base::FundamentalValue( | 257 new base::FundamentalValue( |
270 container.prompt_for_network_when_offline()), | 258 container.prompt_for_network_when_offline()), |
271 NULL); | 259 NULL); |
272 } | 260 } |
273 } | 261 } |
274 | 262 |
275 if (policy.has_supervised_users_settings()) { | 263 if (policy.has_supervised_users_settings()) { |
276 const em::SupervisedUsersSettingsProto& container = | 264 const em::SupervisedUsersSettingsProto& container = |
277 policy.supervised_users_settings(); | 265 policy.supervised_users_settings(); |
278 if (container.has_supervised_users_enabled()) { | 266 if (container.has_supervised_users_enabled()) { |
279 base::Value* value = new base::FundamentalValue( | 267 base::Value* value = new base::FundamentalValue( |
280 container.supervised_users_enabled()); | 268 container.supervised_users_enabled()); |
281 policies->Set(key::kSupervisedUsersEnabled, | 269 policies->Set(key::kSupervisedUsersEnabled, |
282 POLICY_LEVEL_MANDATORY, | 270 POLICY_LEVEL_MANDATORY, |
283 POLICY_SCOPE_MACHINE, | 271 POLICY_SCOPE_MACHINE, |
284 POLICY_SOURCE_CLOUD, | |
285 value, | 272 value, |
286 NULL); | 273 NULL); |
287 } | 274 } |
288 } | 275 } |
289 | 276 |
290 if (policy.has_saml_settings()) { | 277 if (policy.has_saml_settings()) { |
291 const em::SAMLSettingsProto& container(policy.saml_settings()); | 278 const em::SAMLSettingsProto& container(policy.saml_settings()); |
292 if (container.has_transfer_saml_cookies()) { | 279 if (container.has_transfer_saml_cookies()) { |
293 policies->Set(key::kDeviceTransferSAMLCookies, | 280 policies->Set(key::kDeviceTransferSAMLCookies, |
294 POLICY_LEVEL_MANDATORY, | 281 POLICY_LEVEL_MANDATORY, |
295 POLICY_SCOPE_MACHINE, | 282 POLICY_SCOPE_MACHINE, |
296 POLICY_SOURCE_CLOUD, | |
297 new base::FundamentalValue( | 283 new base::FundamentalValue( |
298 container.transfer_saml_cookies()), | 284 container.transfer_saml_cookies()), |
299 NULL); | 285 NULL); |
300 } | 286 } |
301 } | 287 } |
302 } | 288 } |
303 | 289 |
304 void DecodeNetworkPolicies(const em::ChromeDeviceSettingsProto& policy, | 290 void DecodeNetworkPolicies(const em::ChromeDeviceSettingsProto& policy, |
305 PolicyMap* policies) { | 291 PolicyMap* policies) { |
306 if (policy.has_data_roaming_enabled()) { | 292 if (policy.has_data_roaming_enabled()) { |
307 const em::DataRoamingEnabledProto& container(policy.data_roaming_enabled()); | 293 const em::DataRoamingEnabledProto& container(policy.data_roaming_enabled()); |
308 if (container.has_data_roaming_enabled()) { | 294 if (container.has_data_roaming_enabled()) { |
309 policies->Set(key::kDeviceDataRoamingEnabled, | 295 policies->Set(key::kDeviceDataRoamingEnabled, |
310 POLICY_LEVEL_MANDATORY, | 296 POLICY_LEVEL_MANDATORY, |
311 POLICY_SCOPE_MACHINE, | 297 POLICY_SCOPE_MACHINE, |
312 POLICY_SOURCE_CLOUD, | |
313 new base::FundamentalValue( | 298 new base::FundamentalValue( |
314 container.data_roaming_enabled()), | 299 container.data_roaming_enabled()), |
315 NULL); | 300 NULL); |
316 } | 301 } |
317 } | 302 } |
318 | 303 |
319 if (policy.has_open_network_configuration() && | 304 if (policy.has_open_network_configuration() && |
320 policy.open_network_configuration().has_open_network_configuration()) { | 305 policy.open_network_configuration().has_open_network_configuration()) { |
321 std::string config( | 306 std::string config( |
322 policy.open_network_configuration().open_network_configuration()); | 307 policy.open_network_configuration().open_network_configuration()); |
323 policies->Set(key::kDeviceOpenNetworkConfiguration, | 308 policies->Set(key::kDeviceOpenNetworkConfiguration, |
324 POLICY_LEVEL_MANDATORY, | 309 POLICY_LEVEL_MANDATORY, |
325 POLICY_SCOPE_MACHINE, | 310 POLICY_SCOPE_MACHINE, |
326 POLICY_SOURCE_CLOUD, | |
327 new base::StringValue(config), | 311 new base::StringValue(config), |
328 NULL); | 312 NULL); |
329 } | 313 } |
330 } | 314 } |
331 | 315 |
332 void DecodeReportingPolicies(const em::ChromeDeviceSettingsProto& policy, | 316 void DecodeReportingPolicies(const em::ChromeDeviceSettingsProto& policy, |
333 PolicyMap* policies) { | 317 PolicyMap* policies) { |
334 if (policy.has_device_reporting()) { | 318 if (policy.has_device_reporting()) { |
335 const em::DeviceReportingProto& container(policy.device_reporting()); | 319 const em::DeviceReportingProto& container(policy.device_reporting()); |
336 if (container.has_report_version_info()) { | 320 if (container.has_report_version_info()) { |
337 policies->Set(key::kReportDeviceVersionInfo, | 321 policies->Set(key::kReportDeviceVersionInfo, |
338 POLICY_LEVEL_MANDATORY, | 322 POLICY_LEVEL_MANDATORY, |
339 POLICY_SCOPE_MACHINE, | 323 POLICY_SCOPE_MACHINE, |
340 POLICY_SOURCE_CLOUD, | |
341 new base::FundamentalValue( | 324 new base::FundamentalValue( |
342 container.report_version_info()), | 325 container.report_version_info()), |
343 NULL); | 326 NULL); |
344 } | 327 } |
345 if (container.has_report_activity_times()) { | 328 if (container.has_report_activity_times()) { |
346 policies->Set(key::kReportDeviceActivityTimes, | 329 policies->Set(key::kReportDeviceActivityTimes, |
347 POLICY_LEVEL_MANDATORY, | 330 POLICY_LEVEL_MANDATORY, |
348 POLICY_SCOPE_MACHINE, | 331 POLICY_SCOPE_MACHINE, |
349 POLICY_SOURCE_CLOUD, | |
350 new base::FundamentalValue( | 332 new base::FundamentalValue( |
351 container.report_activity_times()), | 333 container.report_activity_times()), |
352 NULL); | 334 NULL); |
353 } | 335 } |
354 if (container.has_report_boot_mode()) { | 336 if (container.has_report_boot_mode()) { |
355 policies->Set(key::kReportDeviceBootMode, | 337 policies->Set(key::kReportDeviceBootMode, |
356 POLICY_LEVEL_MANDATORY, | 338 POLICY_LEVEL_MANDATORY, |
357 POLICY_SCOPE_MACHINE, | 339 POLICY_SCOPE_MACHINE, |
358 POLICY_SOURCE_CLOUD, | |
359 new base::FundamentalValue( | 340 new base::FundamentalValue( |
360 container.report_boot_mode()), | 341 container.report_boot_mode()), |
361 NULL); | 342 NULL); |
362 } | 343 } |
363 if (container.has_report_location()) { | 344 if (container.has_report_location()) { |
364 policies->Set(key::kReportDeviceLocation, | 345 policies->Set(key::kReportDeviceLocation, |
365 POLICY_LEVEL_MANDATORY, | 346 POLICY_LEVEL_MANDATORY, |
366 POLICY_SCOPE_MACHINE, | 347 POLICY_SCOPE_MACHINE, |
367 POLICY_SOURCE_CLOUD, | |
368 new base::FundamentalValue( | 348 new base::FundamentalValue( |
369 container.report_location()), | 349 container.report_location()), |
370 NULL); | 350 NULL); |
371 } | 351 } |
372 if (container.has_report_network_interfaces()) { | 352 if (container.has_report_network_interfaces()) { |
373 policies->Set(key::kReportDeviceNetworkInterfaces, | 353 policies->Set(key::kReportDeviceNetworkInterfaces, |
374 POLICY_LEVEL_MANDATORY, | 354 POLICY_LEVEL_MANDATORY, |
375 POLICY_SCOPE_MACHINE, | 355 POLICY_SCOPE_MACHINE, |
376 POLICY_SOURCE_CLOUD, | |
377 new base::FundamentalValue( | 356 new base::FundamentalValue( |
378 container.report_network_interfaces()), | 357 container.report_network_interfaces()), |
379 NULL); | 358 NULL); |
380 } | 359 } |
381 if (container.has_report_users()) { | 360 if (container.has_report_users()) { |
382 policies->Set(key::kReportDeviceUsers, | 361 policies->Set(key::kReportDeviceUsers, |
383 POLICY_LEVEL_MANDATORY, | 362 POLICY_LEVEL_MANDATORY, |
384 POLICY_SCOPE_MACHINE, | 363 POLICY_SCOPE_MACHINE, |
385 POLICY_SOURCE_CLOUD, | |
386 new base::FundamentalValue(container.report_users()), | 364 new base::FundamentalValue(container.report_users()), |
387 NULL); | 365 NULL); |
388 } | 366 } |
389 if (container.has_report_hardware_status()) { | 367 if (container.has_report_hardware_status()) { |
390 policies->Set(key::kReportDeviceHardwareStatus, | 368 policies->Set(key::kReportDeviceHardwareStatus, |
391 POLICY_LEVEL_MANDATORY, | 369 POLICY_LEVEL_MANDATORY, |
392 POLICY_SCOPE_MACHINE, | 370 POLICY_SCOPE_MACHINE, |
393 POLICY_SOURCE_CLOUD, | |
394 new base::FundamentalValue( | 371 new base::FundamentalValue( |
395 container.report_hardware_status()), | 372 container.report_hardware_status()), |
396 NULL); | 373 NULL); |
397 } | 374 } |
398 if (container.has_report_session_status()) { | 375 if (container.has_report_session_status()) { |
399 policies->Set(key::kReportDeviceSessionStatus, | 376 policies->Set(key::kReportDeviceSessionStatus, |
400 POLICY_LEVEL_MANDATORY, | 377 POLICY_LEVEL_MANDATORY, |
401 POLICY_SCOPE_MACHINE, | 378 POLICY_SCOPE_MACHINE, |
402 POLICY_SOURCE_CLOUD, | |
403 new base::FundamentalValue( | 379 new base::FundamentalValue( |
404 container.report_session_status()), | 380 container.report_session_status()), |
405 NULL); | 381 NULL); |
406 } | 382 } |
407 if (container.has_device_status_frequency()) { | 383 if (container.has_device_status_frequency()) { |
408 policies->Set(key::kReportUploadFrequency, | 384 policies->Set(key::kReportUploadFrequency, |
409 POLICY_LEVEL_MANDATORY, | 385 POLICY_LEVEL_MANDATORY, |
410 POLICY_SCOPE_MACHINE, | 386 POLICY_SCOPE_MACHINE, |
411 POLICY_SOURCE_CLOUD, | |
412 DecodeIntegerValue( | 387 DecodeIntegerValue( |
413 container.device_status_frequency()).release(), | 388 container.device_status_frequency()).release(), |
414 NULL); | 389 NULL); |
415 } | 390 } |
416 } | 391 } |
417 | 392 |
418 if (policy.has_device_heartbeat_settings()) { | 393 if (policy.has_device_heartbeat_settings()) { |
419 const em::DeviceHeartbeatSettingsProto& container( | 394 const em::DeviceHeartbeatSettingsProto& container( |
420 policy.device_heartbeat_settings()); | 395 policy.device_heartbeat_settings()); |
421 if (container.has_heartbeat_enabled()) { | 396 if (container.has_heartbeat_enabled()) { |
422 policies->Set(key::kHeartbeatEnabled, | 397 policies->Set(key::kHeartbeatEnabled, |
423 POLICY_LEVEL_MANDATORY, | 398 POLICY_LEVEL_MANDATORY, |
424 POLICY_SCOPE_MACHINE, | 399 POLICY_SCOPE_MACHINE, |
425 POLICY_SOURCE_CLOUD, | |
426 new base::FundamentalValue( | 400 new base::FundamentalValue( |
427 container.heartbeat_enabled()), | 401 container.heartbeat_enabled()), |
428 NULL); | 402 NULL); |
429 } | 403 } |
430 if (container.has_heartbeat_frequency()) { | 404 if (container.has_heartbeat_frequency()) { |
431 policies->Set(key::kHeartbeatFrequency, | 405 policies->Set(key::kHeartbeatFrequency, |
432 POLICY_LEVEL_MANDATORY, | 406 POLICY_LEVEL_MANDATORY, |
433 POLICY_SCOPE_MACHINE, | 407 POLICY_SCOPE_MACHINE, |
434 POLICY_SOURCE_CLOUD, | |
435 DecodeIntegerValue( | 408 DecodeIntegerValue( |
436 container.heartbeat_frequency()).release(), | 409 container.heartbeat_frequency()).release(), |
437 NULL); | 410 NULL); |
438 } | 411 } |
439 } | 412 } |
440 | 413 |
441 if (policy.has_device_log_upload_settings()) { | 414 if (policy.has_device_log_upload_settings()) { |
442 const em::DeviceLogUploadSettingsProto& container( | 415 const em::DeviceLogUploadSettingsProto& container( |
443 policy.device_log_upload_settings()); | 416 policy.device_log_upload_settings()); |
444 if (container.has_system_log_upload_enabled()) { | 417 if (container.has_system_log_upload_enabled()) { |
445 policies->Set( | 418 policies->Set( |
446 key::kLogUploadEnabled, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, | 419 key::kLogUploadEnabled, POLICY_LEVEL_MANDATORY, POLICY_SCOPE_MACHINE, |
447 POLICY_SOURCE_CLOUD, | |
448 new base::FundamentalValue(container.system_log_upload_enabled()), | 420 new base::FundamentalValue(container.system_log_upload_enabled()), |
449 NULL); | 421 NULL); |
450 } | 422 } |
451 } | 423 } |
452 } | 424 } |
453 | 425 |
454 void DecodeAutoUpdatePolicies(const em::ChromeDeviceSettingsProto& policy, | 426 void DecodeAutoUpdatePolicies(const em::ChromeDeviceSettingsProto& policy, |
455 PolicyMap* policies) { | 427 PolicyMap* policies) { |
456 if (policy.has_release_channel()) { | 428 if (policy.has_release_channel()) { |
457 const em::ReleaseChannelProto& container(policy.release_channel()); | 429 const em::ReleaseChannelProto& container(policy.release_channel()); |
458 if (container.has_release_channel()) { | 430 if (container.has_release_channel()) { |
459 std::string channel(container.release_channel()); | 431 std::string channel(container.release_channel()); |
460 policies->Set(key::kChromeOsReleaseChannel, | 432 policies->Set(key::kChromeOsReleaseChannel, |
461 POLICY_LEVEL_MANDATORY, | 433 POLICY_LEVEL_MANDATORY, |
462 POLICY_SCOPE_MACHINE, | 434 POLICY_SCOPE_MACHINE, |
463 POLICY_SOURCE_CLOUD, | |
464 new base::StringValue(channel), | 435 new base::StringValue(channel), |
465 NULL); | 436 NULL); |
466 // TODO(dubroy): Once http://crosbug.com/17015 is implemented, we won't | 437 // TODO(dubroy): Once http://crosbug.com/17015 is implemented, we won't |
467 // have to pass the channel in here, only ping the update engine to tell | 438 // have to pass the channel in here, only ping the update engine to tell |
468 // it to fetch the channel from the policy. | 439 // it to fetch the channel from the policy. |
469 chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()-> | 440 chromeos::DBusThreadManager::Get()->GetUpdateEngineClient()-> |
470 SetChannel(channel, false); | 441 SetChannel(channel, false); |
471 } | 442 } |
472 if (container.has_release_channel_delegated()) { | 443 if (container.has_release_channel_delegated()) { |
473 policies->Set(key::kChromeOsReleaseChannelDelegated, | 444 policies->Set(key::kChromeOsReleaseChannelDelegated, |
474 POLICY_LEVEL_MANDATORY, | 445 POLICY_LEVEL_MANDATORY, |
475 POLICY_SCOPE_MACHINE, | 446 POLICY_SCOPE_MACHINE, |
476 POLICY_SOURCE_CLOUD, | |
477 new base::FundamentalValue( | 447 new base::FundamentalValue( |
478 container.release_channel_delegated()), | 448 container.release_channel_delegated()), |
479 NULL); | 449 NULL); |
480 } | 450 } |
481 } | 451 } |
482 | 452 |
483 if (policy.has_auto_update_settings()) { | 453 if (policy.has_auto_update_settings()) { |
484 const em::AutoUpdateSettingsProto& container(policy.auto_update_settings()); | 454 const em::AutoUpdateSettingsProto& container(policy.auto_update_settings()); |
485 if (container.has_update_disabled()) { | 455 if (container.has_update_disabled()) { |
486 policies->Set(key::kDeviceAutoUpdateDisabled, | 456 policies->Set(key::kDeviceAutoUpdateDisabled, |
487 POLICY_LEVEL_MANDATORY, | 457 POLICY_LEVEL_MANDATORY, |
488 POLICY_SCOPE_MACHINE, | 458 POLICY_SCOPE_MACHINE, |
489 POLICY_SOURCE_CLOUD, | |
490 new base::FundamentalValue( | 459 new base::FundamentalValue( |
491 container.update_disabled()), | 460 container.update_disabled()), |
492 NULL); | 461 NULL); |
493 } | 462 } |
494 | 463 |
495 if (container.has_target_version_prefix()) { | 464 if (container.has_target_version_prefix()) { |
496 policies->Set(key::kDeviceTargetVersionPrefix, | 465 policies->Set(key::kDeviceTargetVersionPrefix, |
497 POLICY_LEVEL_MANDATORY, | 466 POLICY_LEVEL_MANDATORY, |
498 POLICY_SCOPE_MACHINE, | 467 POLICY_SCOPE_MACHINE, |
499 POLICY_SOURCE_CLOUD, | |
500 new base::StringValue( | 468 new base::StringValue( |
501 container.target_version_prefix()), | 469 container.target_version_prefix()), |
502 NULL); | 470 NULL); |
503 } | 471 } |
504 | 472 |
505 // target_version_display_name is not actually a policy, but a display | 473 // target_version_display_name is not actually a policy, but a display |
506 // string for target_version_prefix, so we ignore it. | 474 // string for target_version_prefix, so we ignore it. |
507 | 475 |
508 if (container.has_scatter_factor_in_seconds()) { | 476 if (container.has_scatter_factor_in_seconds()) { |
509 policies->Set(key::kDeviceUpdateScatterFactor, | 477 policies->Set(key::kDeviceUpdateScatterFactor, |
510 POLICY_LEVEL_MANDATORY, | 478 POLICY_LEVEL_MANDATORY, |
511 POLICY_SCOPE_MACHINE, | 479 POLICY_SCOPE_MACHINE, |
512 POLICY_SOURCE_CLOUD, | |
513 new base::FundamentalValue(static_cast<int>( | 480 new base::FundamentalValue(static_cast<int>( |
514 container.scatter_factor_in_seconds())), | 481 container.scatter_factor_in_seconds())), |
515 NULL); | 482 NULL); |
516 } | 483 } |
517 | 484 |
518 if (container.allowed_connection_types_size()) { | 485 if (container.allowed_connection_types_size()) { |
519 base::ListValue* allowed_connection_types = new base::ListValue(); | 486 base::ListValue* allowed_connection_types = new base::ListValue(); |
520 RepeatedField<int>::const_iterator entry; | 487 RepeatedField<int>::const_iterator entry; |
521 for (entry = container.allowed_connection_types().begin(); | 488 for (entry = container.allowed_connection_types().begin(); |
522 entry != container.allowed_connection_types().end(); | 489 entry != container.allowed_connection_types().end(); |
523 ++entry) { | 490 ++entry) { |
524 base::Value* value = DecodeConnectionType(*entry); | 491 base::Value* value = DecodeConnectionType(*entry); |
525 if (value) | 492 if (value) |
526 allowed_connection_types->Append(value); | 493 allowed_connection_types->Append(value); |
527 } | 494 } |
528 policies->Set(key::kDeviceUpdateAllowedConnectionTypes, | 495 policies->Set(key::kDeviceUpdateAllowedConnectionTypes, |
529 POLICY_LEVEL_MANDATORY, | 496 POLICY_LEVEL_MANDATORY, |
530 POLICY_SCOPE_MACHINE, | 497 POLICY_SCOPE_MACHINE, |
531 POLICY_SOURCE_CLOUD, | |
532 allowed_connection_types, | 498 allowed_connection_types, |
533 NULL); | 499 NULL); |
534 } | 500 } |
535 | 501 |
536 if (container.has_http_downloads_enabled()) { | 502 if (container.has_http_downloads_enabled()) { |
537 policies->Set( | 503 policies->Set( |
538 key::kDeviceUpdateHttpDownloadsEnabled, | 504 key::kDeviceUpdateHttpDownloadsEnabled, |
539 POLICY_LEVEL_MANDATORY, | 505 POLICY_LEVEL_MANDATORY, |
540 POLICY_SCOPE_MACHINE, | 506 POLICY_SCOPE_MACHINE, |
541 POLICY_SOURCE_CLOUD, | |
542 new base::FundamentalValue(container.http_downloads_enabled()), | 507 new base::FundamentalValue(container.http_downloads_enabled()), |
543 NULL); | 508 NULL); |
544 } | 509 } |
545 | 510 |
546 if (container.has_reboot_after_update()) { | 511 if (container.has_reboot_after_update()) { |
547 policies->Set(key::kRebootAfterUpdate, | 512 policies->Set(key::kRebootAfterUpdate, |
548 POLICY_LEVEL_MANDATORY, | 513 POLICY_LEVEL_MANDATORY, |
549 POLICY_SCOPE_MACHINE, | 514 POLICY_SCOPE_MACHINE, |
550 POLICY_SOURCE_CLOUD, | |
551 new base::FundamentalValue( | 515 new base::FundamentalValue( |
552 container.reboot_after_update()), | 516 container.reboot_after_update()), |
553 NULL); | 517 NULL); |
554 } | 518 } |
555 | 519 |
556 if (container.has_p2p_enabled()) { | 520 if (container.has_p2p_enabled()) { |
557 policies->Set(key::kDeviceAutoUpdateP2PEnabled, | 521 policies->Set(key::kDeviceAutoUpdateP2PEnabled, |
558 POLICY_LEVEL_MANDATORY, | 522 POLICY_LEVEL_MANDATORY, |
559 POLICY_SCOPE_MACHINE, | 523 POLICY_SCOPE_MACHINE, |
560 POLICY_SOURCE_CLOUD, | |
561 new base::FundamentalValue(container.p2p_enabled()), | 524 new base::FundamentalValue(container.p2p_enabled()), |
562 NULL); | 525 NULL); |
563 } | 526 } |
564 } | 527 } |
565 } | 528 } |
566 | 529 |
567 void DecodeAccessibilityPolicies(const em::ChromeDeviceSettingsProto& policy, | 530 void DecodeAccessibilityPolicies(const em::ChromeDeviceSettingsProto& policy, |
568 PolicyMap* policies) { | 531 PolicyMap* policies) { |
569 if (policy.has_accessibility_settings()) { | 532 if (policy.has_accessibility_settings()) { |
570 const em::AccessibilitySettingsProto& | 533 const em::AccessibilitySettingsProto& |
571 container(policy.accessibility_settings()); | 534 container(policy.accessibility_settings()); |
572 | 535 |
573 if (container.has_login_screen_default_large_cursor_enabled()) { | 536 if (container.has_login_screen_default_large_cursor_enabled()) { |
574 policies->Set( | 537 policies->Set( |
575 key::kDeviceLoginScreenDefaultLargeCursorEnabled, | 538 key::kDeviceLoginScreenDefaultLargeCursorEnabled, |
576 POLICY_LEVEL_MANDATORY, | 539 POLICY_LEVEL_MANDATORY, |
577 POLICY_SCOPE_MACHINE, | 540 POLICY_SCOPE_MACHINE, |
578 POLICY_SOURCE_CLOUD, | |
579 new base::FundamentalValue( | 541 new base::FundamentalValue( |
580 container.login_screen_default_large_cursor_enabled()), | 542 container.login_screen_default_large_cursor_enabled()), |
581 NULL); | 543 NULL); |
582 } | 544 } |
583 | 545 |
584 if (container.has_login_screen_default_spoken_feedback_enabled()) { | 546 if (container.has_login_screen_default_spoken_feedback_enabled()) { |
585 policies->Set( | 547 policies->Set( |
586 key::kDeviceLoginScreenDefaultSpokenFeedbackEnabled, | 548 key::kDeviceLoginScreenDefaultSpokenFeedbackEnabled, |
587 POLICY_LEVEL_MANDATORY, | 549 POLICY_LEVEL_MANDATORY, |
588 POLICY_SCOPE_MACHINE, | 550 POLICY_SCOPE_MACHINE, |
589 POLICY_SOURCE_CLOUD, | |
590 new base::FundamentalValue( | 551 new base::FundamentalValue( |
591 container.login_screen_default_spoken_feedback_enabled()), | 552 container.login_screen_default_spoken_feedback_enabled()), |
592 NULL); | 553 NULL); |
593 } | 554 } |
594 | 555 |
595 if (container.has_login_screen_default_high_contrast_enabled()) { | 556 if (container.has_login_screen_default_high_contrast_enabled()) { |
596 policies->Set( | 557 policies->Set( |
597 key::kDeviceLoginScreenDefaultHighContrastEnabled, | 558 key::kDeviceLoginScreenDefaultHighContrastEnabled, |
598 POLICY_LEVEL_MANDATORY, | 559 POLICY_LEVEL_MANDATORY, |
599 POLICY_SCOPE_MACHINE, | 560 POLICY_SCOPE_MACHINE, |
600 POLICY_SOURCE_CLOUD, | |
601 new base::FundamentalValue( | 561 new base::FundamentalValue( |
602 container.login_screen_default_high_contrast_enabled()), | 562 container.login_screen_default_high_contrast_enabled()), |
603 NULL); | 563 NULL); |
604 } | 564 } |
605 | 565 |
606 if (container.has_login_screen_default_screen_magnifier_type()) { | 566 if (container.has_login_screen_default_screen_magnifier_type()) { |
607 policies->Set( | 567 policies->Set( |
608 key::kDeviceLoginScreenDefaultScreenMagnifierType, | 568 key::kDeviceLoginScreenDefaultScreenMagnifierType, |
609 POLICY_LEVEL_MANDATORY, | 569 POLICY_LEVEL_MANDATORY, |
610 POLICY_SCOPE_MACHINE, | 570 POLICY_SCOPE_MACHINE, |
611 POLICY_SOURCE_CLOUD, | |
612 DecodeIntegerValue( | 571 DecodeIntegerValue( |
613 container.login_screen_default_screen_magnifier_type()).release(), | 572 container.login_screen_default_screen_magnifier_type()).release(), |
614 NULL); | 573 NULL); |
615 } | 574 } |
616 | 575 |
617 if (container.has_login_screen_default_virtual_keyboard_enabled()) { | 576 if (container.has_login_screen_default_virtual_keyboard_enabled()) { |
618 policies->Set( | 577 policies->Set( |
619 key::kDeviceLoginScreenDefaultVirtualKeyboardEnabled, | 578 key::kDeviceLoginScreenDefaultVirtualKeyboardEnabled, |
620 POLICY_LEVEL_MANDATORY, | 579 POLICY_LEVEL_MANDATORY, |
621 POLICY_SCOPE_MACHINE, | 580 POLICY_SCOPE_MACHINE, |
622 POLICY_SOURCE_CLOUD, | |
623 new base::FundamentalValue( | 581 new base::FundamentalValue( |
624 container.login_screen_default_virtual_keyboard_enabled()), | 582 container.login_screen_default_virtual_keyboard_enabled()), |
625 NULL); | 583 NULL); |
626 } | 584 } |
627 } | 585 } |
628 } | 586 } |
629 | 587 |
630 void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy, | 588 void DecodeGenericPolicies(const em::ChromeDeviceSettingsProto& policy, |
631 PolicyMap* policies) { | 589 PolicyMap* policies) { |
632 if (policy.has_device_policy_refresh_rate()) { | 590 if (policy.has_device_policy_refresh_rate()) { |
633 const em::DevicePolicyRefreshRateProto& container( | 591 const em::DevicePolicyRefreshRateProto& container( |
634 policy.device_policy_refresh_rate()); | 592 policy.device_policy_refresh_rate()); |
635 if (container.has_device_policy_refresh_rate()) { | 593 if (container.has_device_policy_refresh_rate()) { |
636 policies->Set( | 594 policies->Set( |
637 key::kDevicePolicyRefreshRate, | 595 key::kDevicePolicyRefreshRate, |
638 POLICY_LEVEL_MANDATORY, | 596 POLICY_LEVEL_MANDATORY, |
639 POLICY_SCOPE_MACHINE, | 597 POLICY_SCOPE_MACHINE, |
640 POLICY_SOURCE_CLOUD, | |
641 DecodeIntegerValue(container.device_policy_refresh_rate()).release(), | 598 DecodeIntegerValue(container.device_policy_refresh_rate()).release(), |
642 NULL); | 599 NULL); |
643 } | 600 } |
644 } | 601 } |
645 | 602 |
646 if (policy.has_metrics_enabled()) { | 603 if (policy.has_metrics_enabled()) { |
647 const em::MetricsEnabledProto& container(policy.metrics_enabled()); | 604 const em::MetricsEnabledProto& container(policy.metrics_enabled()); |
648 if (container.has_metrics_enabled()) { | 605 if (container.has_metrics_enabled()) { |
649 policies->Set(key::kDeviceMetricsReportingEnabled, | 606 policies->Set(key::kDeviceMetricsReportingEnabled, |
650 POLICY_LEVEL_MANDATORY, | 607 POLICY_LEVEL_MANDATORY, |
651 POLICY_SCOPE_MACHINE, | 608 POLICY_SCOPE_MACHINE, |
652 POLICY_SOURCE_CLOUD, | |
653 new base::FundamentalValue( | 609 new base::FundamentalValue( |
654 container.metrics_enabled()), | 610 container.metrics_enabled()), |
655 NULL); | 611 NULL); |
656 } | 612 } |
657 } | 613 } |
658 | 614 |
659 if (policy.has_system_timezone()) { | 615 if (policy.has_system_timezone()) { |
660 if (policy.system_timezone().has_timezone()) { | 616 if (policy.system_timezone().has_timezone()) { |
661 policies->Set(key::kSystemTimezone, | 617 policies->Set(key::kSystemTimezone, |
662 POLICY_LEVEL_MANDATORY, | 618 POLICY_LEVEL_MANDATORY, |
663 POLICY_SCOPE_MACHINE, | 619 POLICY_SCOPE_MACHINE, |
664 POLICY_SOURCE_CLOUD, | |
665 new base::StringValue( | 620 new base::StringValue( |
666 policy.system_timezone().timezone()), | 621 policy.system_timezone().timezone()), |
667 NULL); | 622 NULL); |
668 } | 623 } |
669 } | 624 } |
670 | 625 |
671 if (policy.has_use_24hour_clock()) { | 626 if (policy.has_use_24hour_clock()) { |
672 if (policy.use_24hour_clock().has_use_24hour_clock()) { | 627 if (policy.use_24hour_clock().has_use_24hour_clock()) { |
673 policies->Set(key::kSystemUse24HourClock, | 628 policies->Set(key::kSystemUse24HourClock, |
674 POLICY_LEVEL_MANDATORY, | 629 POLICY_LEVEL_MANDATORY, |
675 POLICY_SCOPE_MACHINE, | 630 POLICY_SCOPE_MACHINE, |
676 POLICY_SOURCE_CLOUD, | |
677 new base::FundamentalValue( | 631 new base::FundamentalValue( |
678 policy.use_24hour_clock().use_24hour_clock()), | 632 policy.use_24hour_clock().use_24hour_clock()), |
679 NULL); | 633 NULL); |
680 } | 634 } |
681 } | 635 } |
682 | 636 |
683 if (policy.has_allow_redeem_offers()) { | 637 if (policy.has_allow_redeem_offers()) { |
684 const em::AllowRedeemChromeOsRegistrationOffersProto& container( | 638 const em::AllowRedeemChromeOsRegistrationOffersProto& container( |
685 policy.allow_redeem_offers()); | 639 policy.allow_redeem_offers()); |
686 if (container.has_allow_redeem_offers()) { | 640 if (container.has_allow_redeem_offers()) { |
687 policies->Set(key::kDeviceAllowRedeemChromeOsRegistrationOffers, | 641 policies->Set(key::kDeviceAllowRedeemChromeOsRegistrationOffers, |
688 POLICY_LEVEL_MANDATORY, | 642 POLICY_LEVEL_MANDATORY, |
689 POLICY_SCOPE_MACHINE, | 643 POLICY_SCOPE_MACHINE, |
690 POLICY_SOURCE_CLOUD, | |
691 new base::FundamentalValue( | 644 new base::FundamentalValue( |
692 container.allow_redeem_offers()), | 645 container.allow_redeem_offers()), |
693 NULL); | 646 NULL); |
694 } | 647 } |
695 } | 648 } |
696 | 649 |
697 if (policy.has_uptime_limit()) { | 650 if (policy.has_uptime_limit()) { |
698 const em::UptimeLimitProto& container(policy.uptime_limit()); | 651 const em::UptimeLimitProto& container(policy.uptime_limit()); |
699 if (container.has_uptime_limit()) { | 652 if (container.has_uptime_limit()) { |
700 policies->Set(key::kUptimeLimit, | 653 policies->Set(key::kUptimeLimit, |
701 POLICY_LEVEL_MANDATORY, | 654 POLICY_LEVEL_MANDATORY, |
702 POLICY_SCOPE_MACHINE, | 655 POLICY_SCOPE_MACHINE, |
703 POLICY_SOURCE_CLOUD, | |
704 DecodeIntegerValue(container.uptime_limit()).release(), | 656 DecodeIntegerValue(container.uptime_limit()).release(), |
705 NULL); | 657 NULL); |
706 } | 658 } |
707 } | 659 } |
708 | 660 |
709 if (policy.has_start_up_flags()) { | 661 if (policy.has_start_up_flags()) { |
710 const em::StartUpFlagsProto& container(policy.start_up_flags()); | 662 const em::StartUpFlagsProto& container(policy.start_up_flags()); |
711 base::ListValue* flags = new base::ListValue(); | 663 base::ListValue* flags = new base::ListValue(); |
712 RepeatedPtrField<std::string>::const_iterator entry; | 664 RepeatedPtrField<std::string>::const_iterator entry; |
713 for (entry = container.flags().begin(); | 665 for (entry = container.flags().begin(); |
714 entry != container.flags().end(); | 666 entry != container.flags().end(); |
715 ++entry) { | 667 ++entry) { |
716 flags->Append(new base::StringValue(*entry)); | 668 flags->Append(new base::StringValue(*entry)); |
717 } | 669 } |
718 policies->Set(key::kDeviceStartUpFlags, | 670 policies->Set(key::kDeviceStartUpFlags, |
719 POLICY_LEVEL_MANDATORY, | 671 POLICY_LEVEL_MANDATORY, |
720 POLICY_SCOPE_MACHINE, | 672 POLICY_SCOPE_MACHINE, |
721 POLICY_SOURCE_CLOUD, | |
722 flags, | 673 flags, |
723 NULL); | 674 NULL); |
724 } | 675 } |
725 | 676 |
726 if (policy.has_variations_parameter()) { | 677 if (policy.has_variations_parameter()) { |
727 if (policy.variations_parameter().has_parameter()) { | 678 if (policy.variations_parameter().has_parameter()) { |
728 policies->Set(key::kDeviceVariationsRestrictParameter, | 679 policies->Set(key::kDeviceVariationsRestrictParameter, |
729 POLICY_LEVEL_MANDATORY, | 680 POLICY_LEVEL_MANDATORY, |
730 POLICY_SCOPE_MACHINE, | 681 POLICY_SCOPE_MACHINE, |
731 POLICY_SOURCE_CLOUD, | |
732 new base::StringValue( | 682 new base::StringValue( |
733 policy.variations_parameter().parameter()), | 683 policy.variations_parameter().parameter()), |
734 NULL); | 684 NULL); |
735 } | 685 } |
736 } | 686 } |
737 | 687 |
738 if (policy.has_attestation_settings()) { | 688 if (policy.has_attestation_settings()) { |
739 if (policy.attestation_settings().has_attestation_enabled()) { | 689 if (policy.attestation_settings().has_attestation_enabled()) { |
740 policies->Set(key::kAttestationEnabledForDevice, | 690 policies->Set(key::kAttestationEnabledForDevice, |
741 POLICY_LEVEL_MANDATORY, | 691 POLICY_LEVEL_MANDATORY, |
742 POLICY_SCOPE_MACHINE, | 692 POLICY_SCOPE_MACHINE, |
743 POLICY_SOURCE_CLOUD, | |
744 new base::FundamentalValue( | 693 new base::FundamentalValue( |
745 policy.attestation_settings().attestation_enabled()), | 694 policy.attestation_settings().attestation_enabled()), |
746 NULL); | 695 NULL); |
747 } | 696 } |
748 if (policy.attestation_settings().has_content_protection_enabled()) { | 697 if (policy.attestation_settings().has_content_protection_enabled()) { |
749 policies->Set( | 698 policies->Set( |
750 key::kAttestationForContentProtectionEnabled, | 699 key::kAttestationForContentProtectionEnabled, |
751 POLICY_LEVEL_MANDATORY, | 700 POLICY_LEVEL_MANDATORY, |
752 POLICY_SCOPE_MACHINE, | 701 POLICY_SCOPE_MACHINE, |
753 POLICY_SOURCE_CLOUD, | |
754 new base::FundamentalValue( | 702 new base::FundamentalValue( |
755 policy.attestation_settings().content_protection_enabled()), | 703 policy.attestation_settings().content_protection_enabled()), |
756 NULL); | 704 NULL); |
757 } | 705 } |
758 } | 706 } |
759 | 707 |
760 if (policy.has_login_screen_power_management()) { | 708 if (policy.has_login_screen_power_management()) { |
761 const em::LoginScreenPowerManagementProto& container( | 709 const em::LoginScreenPowerManagementProto& container( |
762 policy.login_screen_power_management()); | 710 policy.login_screen_power_management()); |
763 if (container.has_login_screen_power_management()) { | 711 if (container.has_login_screen_power_management()) { |
764 scoped_ptr<base::Value> decoded_json; | 712 scoped_ptr<base::Value> decoded_json; |
765 decoded_json = DecodeJsonStringAndDropUnknownBySchema( | 713 decoded_json = DecodeJsonStringAndDropUnknownBySchema( |
766 container.login_screen_power_management(), | 714 container.login_screen_power_management(), |
767 key::kDeviceLoginScreenPowerManagement); | 715 key::kDeviceLoginScreenPowerManagement); |
768 if (decoded_json) { | 716 if (decoded_json) { |
769 policies->Set(key::kDeviceLoginScreenPowerManagement, | 717 policies->Set(key::kDeviceLoginScreenPowerManagement, |
770 POLICY_LEVEL_MANDATORY, | 718 POLICY_LEVEL_MANDATORY, |
771 POLICY_SCOPE_MACHINE, | 719 POLICY_SCOPE_MACHINE, |
772 POLICY_SOURCE_CLOUD, | |
773 decoded_json.release(), | 720 decoded_json.release(), |
774 NULL); | 721 NULL); |
775 } | 722 } |
776 } | 723 } |
777 } | 724 } |
778 | 725 |
779 if (policy.has_system_settings()) { | 726 if (policy.has_system_settings()) { |
780 const em::SystemSettingsProto& container(policy.system_settings()); | 727 const em::SystemSettingsProto& container(policy.system_settings()); |
781 if (container.has_block_devmode()) { | 728 if (container.has_block_devmode()) { |
782 policies->Set( | 729 policies->Set( |
783 key::kDeviceBlockDevmode, | 730 key::kDeviceBlockDevmode, |
784 POLICY_LEVEL_MANDATORY, | 731 POLICY_LEVEL_MANDATORY, |
785 POLICY_SCOPE_MACHINE, | 732 POLICY_SCOPE_MACHINE, |
786 POLICY_SOURCE_CLOUD, | |
787 new base::FundamentalValue(container.block_devmode()), | 733 new base::FundamentalValue(container.block_devmode()), |
788 NULL); | 734 NULL); |
789 } | 735 } |
790 } | 736 } |
791 | 737 |
792 if (policy.has_extension_cache_size()) { | 738 if (policy.has_extension_cache_size()) { |
793 const em::ExtensionCacheSizeProto& container(policy.extension_cache_size()); | 739 const em::ExtensionCacheSizeProto& container(policy.extension_cache_size()); |
794 if (container.has_extension_cache_size()) { | 740 if (container.has_extension_cache_size()) { |
795 policies->Set( | 741 policies->Set( |
796 key::kExtensionCacheSize, POLICY_LEVEL_MANDATORY, | 742 key::kExtensionCacheSize, POLICY_LEVEL_MANDATORY, |
797 POLICY_SCOPE_MACHINE, POLICY_SOURCE_CLOUD, | 743 POLICY_SCOPE_MACHINE, |
798 DecodeIntegerValue(container.extension_cache_size()).release(), | 744 DecodeIntegerValue(container.extension_cache_size()).release(), |
799 nullptr); | 745 nullptr); |
800 } | 746 } |
801 } | 747 } |
802 | 748 |
803 if (policy.has_login_screen_domain_auto_complete()) { | 749 if (policy.has_login_screen_domain_auto_complete()) { |
804 const em::LoginScreenDomainAutoCompleteProto& container( | 750 const em::LoginScreenDomainAutoCompleteProto& container( |
805 policy.login_screen_domain_auto_complete()); | 751 policy.login_screen_domain_auto_complete()); |
806 policies->Set( | 752 policies->Set( |
807 key::kDeviceLoginScreenDomainAutoComplete, POLICY_LEVEL_MANDATORY, | 753 key::kDeviceLoginScreenDomainAutoComplete, POLICY_LEVEL_MANDATORY, |
808 POLICY_SCOPE_MACHINE, POLICY_SOURCE_CLOUD, | 754 POLICY_SCOPE_MACHINE, |
809 new base::StringValue(container.login_screen_domain_auto_complete()), | 755 new base::StringValue(container.login_screen_domain_auto_complete()), |
810 nullptr); | 756 nullptr); |
811 } | 757 } |
812 } | 758 } |
813 | 759 |
814 } // namespace | 760 } // namespace |
815 | 761 |
816 void DecodeDevicePolicy(const em::ChromeDeviceSettingsProto& policy, | 762 void DecodeDevicePolicy(const em::ChromeDeviceSettingsProto& policy, |
817 PolicyMap* policies) { | 763 PolicyMap* policies) { |
818 // Decode the various groups of policies. | 764 // Decode the various groups of policies. |
819 DecodeLoginPolicies(policy, policies); | 765 DecodeLoginPolicies(policy, policies); |
820 DecodeNetworkPolicies(policy, policies); | 766 DecodeNetworkPolicies(policy, policies); |
821 DecodeReportingPolicies(policy, policies); | 767 DecodeReportingPolicies(policy, policies); |
822 DecodeAutoUpdatePolicies(policy, policies); | 768 DecodeAutoUpdatePolicies(policy, policies); |
823 DecodeAccessibilityPolicies(policy, policies); | 769 DecodeAccessibilityPolicies(policy, policies); |
824 DecodeGenericPolicies(policy, policies); | 770 DecodeGenericPolicies(policy, policies); |
825 } | 771 } |
826 | 772 |
827 } // namespace policy | 773 } // namespace policy |
OLD | NEW |