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

Side by Side Diff: chrome/browser/ui/webui/policy_ui_handler.cc

Issue 2606773002: Setup Chromad user policy plumbing (Closed)
Patch Set: CrOS compilation fix Created 3 years, 11 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
OLDNEW
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/ui/webui/policy_ui_handler.h" 5 #include "chrome/browser/ui/webui/policy_ui_handler.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 #include "google_apis/gaia/gaia_auth_util.h" 52 #include "google_apis/gaia/gaia_auth_util.h"
53 #include "ui/base/l10n/l10n_util.h" 53 #include "ui/base/l10n/l10n_util.h"
54 #include "ui/base/l10n/time_format.h" 54 #include "ui/base/l10n/time_format.h"
55 55
56 #if defined(OS_CHROMEOS) 56 #if defined(OS_CHROMEOS)
57 #include "chrome/browser/browser_process_platform_part.h" 57 #include "chrome/browser/browser_process_platform_part.h"
58 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" 58 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
59 #include "chrome/browser/chromeos/policy/device_active_directory_policy_manager. h" 59 #include "chrome/browser/chromeos/policy/device_active_directory_policy_manager. h"
60 #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" 60 #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h"
61 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" 61 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h"
62 #include "chrome/browser/chromeos/policy/user_active_directory_policy_manager.h"
62 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" 63 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h"
63 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chrom eos.h" 64 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chrom eos.h"
64 #include "chrome/browser/chromeos/settings/install_attributes.h" 65 #include "chrome/browser/chromeos/settings/install_attributes.h"
65 #include "components/user_manager/user_manager.h" 66 #include "components/user_manager/user_manager.h"
66 #else 67 #else
67 #include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h" 68 #include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h"
68 #include "components/policy/core/common/cloud/user_cloud_policy_manager.h" 69 #include "components/policy/core/common/cloud/user_cloud_policy_manager.h"
69 #endif 70 #endif
70 71
71 #if BUILDFLAG(ENABLE_EXTENSIONS) 72 #if BUILDFLAG(ENABLE_EXTENSIONS)
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 protected: 244 protected:
244 // Policy status is read from the CloudPolicyClient, CloudPolicyStore and 245 // Policy status is read from the CloudPolicyClient, CloudPolicyStore and
245 // CloudPolicyRefreshScheduler hosted by this |core_|. 246 // CloudPolicyRefreshScheduler hosted by this |core_|.
246 policy::CloudPolicyCore* core_; 247 policy::CloudPolicyCore* core_;
247 248
248 private: 249 private:
249 DISALLOW_COPY_AND_ASSIGN(CloudPolicyCoreStatusProvider); 250 DISALLOW_COPY_AND_ASSIGN(CloudPolicyCoreStatusProvider);
250 }; 251 };
251 252
252 // A cloud policy status provider for user policy. 253 // A cloud policy status provider for user policy.
253 class UserPolicyStatusProvider : public CloudPolicyCoreStatusProvider { 254 class UserCloudPolicyStatusProvider : public CloudPolicyCoreStatusProvider {
254 public: 255 public:
255 explicit UserPolicyStatusProvider(policy::CloudPolicyCore* core); 256 explicit UserCloudPolicyStatusProvider(policy::CloudPolicyCore* core);
256 ~UserPolicyStatusProvider() override; 257 ~UserCloudPolicyStatusProvider() override;
257 258
258 // CloudPolicyCoreStatusProvider implementation. 259 // CloudPolicyCoreStatusProvider implementation.
259 void GetStatus(base::DictionaryValue* dict) override; 260 void GetStatus(base::DictionaryValue* dict) override;
260 261
261 private: 262 private:
262 DISALLOW_COPY_AND_ASSIGN(UserPolicyStatusProvider); 263 DISALLOW_COPY_AND_ASSIGN(UserCloudPolicyStatusProvider);
263 }; 264 };
264 265
265 #if defined(OS_CHROMEOS) 266 #if defined(OS_CHROMEOS)
266 // A cloud policy status provider for device policy. 267 // A cloud policy status provider for device policy.
267 class DevicePolicyStatusProvider : public CloudPolicyCoreStatusProvider { 268 class DevicePolicyStatusProvider : public CloudPolicyCoreStatusProvider {
268 public: 269 public:
269 explicit DevicePolicyStatusProvider( 270 explicit DevicePolicyStatusProvider(
270 policy::BrowserPolicyConnectorChromeOS* connector); 271 policy::BrowserPolicyConnectorChromeOS* connector);
271 ~DevicePolicyStatusProvider() override; 272 ~DevicePolicyStatusProvider() override;
272 273
(...skipping 28 matching lines...) Expand all
301 void OnPolicyUpdated(const std::string& user_id) override; 302 void OnPolicyUpdated(const std::string& user_id) override;
302 void OnDeviceLocalAccountsChanged() override; 303 void OnDeviceLocalAccountsChanged() override;
303 304
304 private: 305 private:
305 const std::string user_id_; 306 const std::string user_id_;
306 policy::DeviceLocalAccountPolicyService* service_; 307 policy::DeviceLocalAccountPolicyService* service_;
307 308
308 DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountPolicyStatusProvider); 309 DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountPolicyStatusProvider);
309 }; 310 };
310 311
311 // Provides status for DeviceActiveDirectoryPolicyManager. 312 // Provides status for any Active Directory policy manager.
emaxx 2016/12/28 19:09:20 nit: Add comment to explain explicitly that it's b
Thiemo Nagel 2016/12/29 15:08:28 Actually it's "either/or" not "both". I've update
312 class DeviceActiveDirectoryPolicyStatusProvider 313 class ActiveDirectoryPolicyStatusProvider
313 : public PolicyStatusProvider, 314 : public PolicyStatusProvider,
314 public policy::CloudPolicyStore::Observer { 315 public policy::CloudPolicyStore::Observer {
315 public: 316 public:
316 explicit DeviceActiveDirectoryPolicyStatusProvider( 317 explicit ActiveDirectoryPolicyStatusProvider(policy::CloudPolicyStore* store);
317 policy::DeviceActiveDirectoryPolicyManager* manager); 318 ~ActiveDirectoryPolicyStatusProvider() override;
318 ~DeviceActiveDirectoryPolicyStatusProvider() override;
319 319
320 // PolicyStatusProvider implementation. 320 // PolicyStatusProvider implementation.
321 void GetStatus(base::DictionaryValue* dict) override; 321 void GetStatus(base::DictionaryValue* dict) override;
322 322
323 // policy::CloudPolicyStore::Observer implementation. 323 // policy::CloudPolicyStore::Observer implementation.
324 void OnStoreLoaded(policy::CloudPolicyStore* store) override; 324 void OnStoreLoaded(policy::CloudPolicyStore* store) override;
325 void OnStoreError(policy::CloudPolicyStore* store) override; 325 void OnStoreError(policy::CloudPolicyStore* store) override;
326 326
327 private: 327 private:
328 policy::CloudPolicyStore* store_; 328 policy::CloudPolicyStore* store_;
329 329
330 DISALLOW_COPY_AND_ASSIGN(DeviceActiveDirectoryPolicyStatusProvider); 330 DISALLOW_COPY_AND_ASSIGN(ActiveDirectoryPolicyStatusProvider);
331 }; 331 };
332 #endif 332 #endif
333 333
334 PolicyStatusProvider::PolicyStatusProvider() {} 334 PolicyStatusProvider::PolicyStatusProvider() {}
335 335
336 PolicyStatusProvider::~PolicyStatusProvider() {} 336 PolicyStatusProvider::~PolicyStatusProvider() {}
337 337
338 void PolicyStatusProvider::SetStatusChangeCallback( 338 void PolicyStatusProvider::SetStatusChangeCallback(
339 const base::Closure& callback) { 339 const base::Closure& callback) {
340 callback_ = callback; 340 callback_ = callback;
(...skipping 21 matching lines...) Expand all
362 void CloudPolicyCoreStatusProvider::OnStoreLoaded( 362 void CloudPolicyCoreStatusProvider::OnStoreLoaded(
363 policy::CloudPolicyStore* store) { 363 policy::CloudPolicyStore* store) {
364 NotifyStatusChange(); 364 NotifyStatusChange();
365 } 365 }
366 366
367 void CloudPolicyCoreStatusProvider::OnStoreError( 367 void CloudPolicyCoreStatusProvider::OnStoreError(
368 policy::CloudPolicyStore* store) { 368 policy::CloudPolicyStore* store) {
369 NotifyStatusChange(); 369 NotifyStatusChange();
370 } 370 }
371 371
372 UserPolicyStatusProvider::UserPolicyStatusProvider( 372 UserCloudPolicyStatusProvider::UserCloudPolicyStatusProvider(
373 policy::CloudPolicyCore* core) : CloudPolicyCoreStatusProvider(core) { 373 policy::CloudPolicyCore* core)
374 } 374 : CloudPolicyCoreStatusProvider(core) {}
375 375
376 UserPolicyStatusProvider::~UserPolicyStatusProvider() { 376 UserCloudPolicyStatusProvider::~UserCloudPolicyStatusProvider() {}
377 }
378 377
379 void UserPolicyStatusProvider::GetStatus(base::DictionaryValue* dict) { 378 void UserCloudPolicyStatusProvider::GetStatus(base::DictionaryValue* dict) {
380 if (!core_->store()->is_managed()) 379 if (!core_->store()->is_managed())
381 return; 380 return;
382 GetStatusFromCore(core_, dict); 381 GetStatusFromCore(core_, dict);
383 ExtractDomainFromUsername(dict); 382 ExtractDomainFromUsername(dict);
384 } 383 }
385 384
386 #if defined(OS_CHROMEOS) 385 #if defined(OS_CHROMEOS)
387 DevicePolicyStatusProvider::DevicePolicyStatusProvider( 386 DevicePolicyStatusProvider::DevicePolicyStatusProvider(
388 policy::BrowserPolicyConnectorChromeOS* connector) 387 policy::BrowserPolicyConnectorChromeOS* connector)
389 : CloudPolicyCoreStatusProvider( 388 : CloudPolicyCoreStatusProvider(
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 void DeviceLocalAccountPolicyStatusProvider::OnPolicyUpdated( 432 void DeviceLocalAccountPolicyStatusProvider::OnPolicyUpdated(
434 const std::string& user_id) { 433 const std::string& user_id) {
435 if (user_id == user_id_) 434 if (user_id == user_id_)
436 NotifyStatusChange(); 435 NotifyStatusChange();
437 } 436 }
438 437
439 void DeviceLocalAccountPolicyStatusProvider::OnDeviceLocalAccountsChanged() { 438 void DeviceLocalAccountPolicyStatusProvider::OnDeviceLocalAccountsChanged() {
440 NotifyStatusChange(); 439 NotifyStatusChange();
441 } 440 }
442 441
443 DeviceActiveDirectoryPolicyStatusProvider:: 442 ActiveDirectoryPolicyStatusProvider::ActiveDirectoryPolicyStatusProvider(
444 DeviceActiveDirectoryPolicyStatusProvider( 443 policy::CloudPolicyStore* store)
445 policy::DeviceActiveDirectoryPolicyManager* manager) 444 : store_(store) {
446 : store_(manager->store()) {
447 store_->AddObserver(this); 445 store_->AddObserver(this);
448 } 446 }
449 447
450 DeviceActiveDirectoryPolicyStatusProvider:: 448 ActiveDirectoryPolicyStatusProvider::~ActiveDirectoryPolicyStatusProvider() {
451 ~DeviceActiveDirectoryPolicyStatusProvider() {
452 store_->RemoveObserver(this); 449 store_->RemoveObserver(this);
453 } 450 }
454 451
455 // TODO(tnagel): Provide more details and/or remove unused fields from UI. See 452 // TODO(tnagel): Provide more details and/or remove unused fields from UI. See
456 // https://crbug.com/664747. 453 // https://crbug.com/664747.
457 void DeviceActiveDirectoryPolicyStatusProvider::GetStatus( 454 void ActiveDirectoryPolicyStatusProvider::GetStatus(
458 base::DictionaryValue* dict) { 455 base::DictionaryValue* dict) {
459 base::string16 status = 456 base::string16 status =
460 policy::FormatStoreStatus(store_->status(), store_->validation_status()); 457 policy::FormatStoreStatus(store_->status(), store_->validation_status());
461 dict->SetString("status", status); 458 dict->SetString("status", status);
462 } 459 }
463 460
464 void DeviceActiveDirectoryPolicyStatusProvider::OnStoreLoaded( 461 void ActiveDirectoryPolicyStatusProvider::OnStoreLoaded(
465 policy::CloudPolicyStore* store) { 462 policy::CloudPolicyStore* store) {
466 NotifyStatusChange(); 463 NotifyStatusChange();
467 } 464 }
468 465
469 void DeviceActiveDirectoryPolicyStatusProvider::OnStoreError( 466 void ActiveDirectoryPolicyStatusProvider::OnStoreError(
470 policy::CloudPolicyStore* store) { 467 policy::CloudPolicyStore* store) {
471 NotifyStatusChange(); 468 NotifyStatusChange();
472 } 469 }
473 470
474 #endif // defined(OS_CHROMEOS) 471 #endif // defined(OS_CHROMEOS)
475 472
476 PolicyUIHandler::PolicyUIHandler() 473 PolicyUIHandler::PolicyUIHandler()
477 : weak_factory_(this) { 474 : weak_factory_(this) {
478 } 475 }
479 476
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 source->SetJsonPath("strings.js"); 518 source->SetJsonPath("strings.js");
522 } 519 }
523 520
524 void PolicyUIHandler::RegisterMessages() { 521 void PolicyUIHandler::RegisterMessages() {
525 #if defined(OS_CHROMEOS) 522 #if defined(OS_CHROMEOS)
526 policy::BrowserPolicyConnectorChromeOS* connector = 523 policy::BrowserPolicyConnectorChromeOS* connector =
527 g_browser_process->platform_part()->browser_policy_connector_chromeos(); 524 g_browser_process->platform_part()->browser_policy_connector_chromeos();
528 if (connector->IsEnterpriseManaged()) { 525 if (connector->IsEnterpriseManaged()) {
529 if (connector->GetDeviceActiveDirectoryPolicyManager()) { 526 if (connector->GetDeviceActiveDirectoryPolicyManager()) {
530 device_status_provider_ = 527 device_status_provider_ =
531 base::MakeUnique<DeviceActiveDirectoryPolicyStatusProvider>( 528 base::MakeUnique<ActiveDirectoryPolicyStatusProvider>(
532 connector->GetDeviceActiveDirectoryPolicyManager()); 529 connector->GetDeviceActiveDirectoryPolicyManager()->store());
533 } else { 530 } else {
534 device_status_provider_ = 531 device_status_provider_ =
535 base::MakeUnique<DevicePolicyStatusProvider>(connector); 532 base::MakeUnique<DevicePolicyStatusProvider>(connector);
536 } 533 }
537 } 534 }
538 535
539 const user_manager::UserManager* user_manager = 536 const user_manager::UserManager* user_manager =
540 user_manager::UserManager::Get(); 537 user_manager::UserManager::Get();
541 if (user_manager->IsLoggedInAsPublicAccount()) { 538 if (user_manager->IsLoggedInAsPublicAccount()) {
542 policy::DeviceLocalAccountPolicyService* local_account_service = 539 policy::DeviceLocalAccountPolicyService* local_account_service =
543 connector->GetDeviceLocalAccountPolicyService(); 540 connector->GetDeviceLocalAccountPolicyService();
544 if (local_account_service) { 541 if (local_account_service) {
545 user_status_provider_ = 542 user_status_provider_ =
546 base::MakeUnique<DeviceLocalAccountPolicyStatusProvider>( 543 base::MakeUnique<DeviceLocalAccountPolicyStatusProvider>(
547 user_manager->GetActiveUser()->GetAccountId().GetUserEmail(), 544 user_manager->GetActiveUser()->GetAccountId().GetUserEmail(),
548 local_account_service); 545 local_account_service);
549 } 546 }
550 } else { 547 } else {
551 policy::UserCloudPolicyManagerChromeOS* user_cloud_policy_manager = 548 Profile* profile = Profile::FromWebUI(web_ui());
552 policy::UserCloudPolicyManagerFactoryChromeOS::GetForProfile( 549 policy::UserCloudPolicyManagerChromeOS* user_cloud_policy =
553 Profile::FromWebUI(web_ui())); 550 policy::UserCloudPolicyManagerFactoryChromeOS::
554 if (user_cloud_policy_manager) { 551 GetCloudPolicyManagerForProfile(profile);
555 user_status_provider_ = 552 if (user_cloud_policy) {
556 base::MakeUnique<UserPolicyStatusProvider>( 553 user_status_provider_ = base::MakeUnique<UserCloudPolicyStatusProvider>(
557 user_cloud_policy_manager->core()); 554 user_cloud_policy->core());
555 } else {
556 policy::UserActiveDirectoryPolicyManager* active_directory_policy =
557 policy::UserCloudPolicyManagerFactoryChromeOS::
558 GetActiveDirectoryPolicyManagerForProfile(profile);
559 if (active_directory_policy) {
emaxx 2016/12/28 19:09:20 Could we transform this into a more readable seque
Thiemo Nagel 2016/12/29 15:08:28 Done. (Also moved to separate CL.)
560 user_status_provider_ =
561 base::MakeUnique<ActiveDirectoryPolicyStatusProvider>(
562 active_directory_policy->store());
563 }
558 } 564 }
559 } 565 }
560 #else 566 #else
561 policy::UserCloudPolicyManager* user_cloud_policy_manager = 567 policy::UserCloudPolicyManager* user_cloud_policy_manager =
562 policy::UserCloudPolicyManagerFactory::GetForBrowserContext( 568 policy::UserCloudPolicyManagerFactory::GetForBrowserContext(
563 web_ui()->GetWebContents()->GetBrowserContext()); 569 web_ui()->GetWebContents()->GetBrowserContext());
564 if (user_cloud_policy_manager) { 570 if (user_cloud_policy_manager) {
565 user_status_provider_ = base::MakeUnique<UserPolicyStatusProvider>( 571 user_status_provider_ = base::MakeUnique<UserCloudPolicyStatusProvider>(
566 user_cloud_policy_manager->core()); 572 user_cloud_policy_manager->core());
567 } 573 }
568 #endif 574 #endif
569 575
570 if (!user_status_provider_.get()) 576 if (!user_status_provider_.get())
571 user_status_provider_ = base::MakeUnique<PolicyStatusProvider>(); 577 user_status_provider_ = base::MakeUnique<PolicyStatusProvider>();
572 if (!device_status_provider_.get()) 578 if (!device_status_provider_.get())
573 device_status_provider_ = base::MakeUnique<PolicyStatusProvider>(); 579 device_status_provider_ = base::MakeUnique<PolicyStatusProvider>();
574 580
575 base::Closure update_callback(base::Bind(&PolicyUIHandler::SendStatus, 581 base::Closure update_callback(base::Bind(&PolicyUIHandler::SendStatus,
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
814 } 820 }
815 821
816 void PolicyUIHandler::OnRefreshPoliciesDone() const { 822 void PolicyUIHandler::OnRefreshPoliciesDone() const {
817 web_ui()->CallJavascriptFunctionUnsafe("policy.Page.reloadPoliciesDone"); 823 web_ui()->CallJavascriptFunctionUnsafe("policy.Page.reloadPoliciesDone");
818 } 824 }
819 825
820 policy::PolicyService* PolicyUIHandler::GetPolicyService() const { 826 policy::PolicyService* PolicyUIHandler::GetPolicyService() const {
821 return policy::ProfilePolicyConnectorFactory::GetForBrowserContext( 827 return policy::ProfilePolicyConnectorFactory::GetForBrowserContext(
822 web_ui()->GetWebContents()->GetBrowserContext())->policy_service(); 828 web_ui()->GetWebContents()->GetBrowserContext())->policy_service();
823 } 829 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698