Commit 7a1a53c1 authored by tnagel's avatar tnagel Committed by Commit bot

Integrate Chromad user policy into chrome://policy page

BUG=655971

Review-Url: https://codereview.chromium.org/2608573002
Cr-Commit-Position: refs/heads/master@{#441317}
parent 9b818f0b
...@@ -59,6 +59,7 @@ ...@@ -59,6 +59,7 @@
#include "chrome/browser/chromeos/policy/device_active_directory_policy_manager.h" #include "chrome/browser/chromeos/policy/device_active_directory_policy_manager.h"
#include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h"
#include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h"
#include "chrome/browser/chromeos/policy/user_active_directory_policy_manager.h"
#include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h"
#include "chrome/browser/chromeos/policy/user_policy_manager_factory_chromeos.h" #include "chrome/browser/chromeos/policy/user_policy_manager_factory_chromeos.h"
#include "chrome/browser/chromeos/settings/install_attributes.h" #include "chrome/browser/chromeos/settings/install_attributes.h"
...@@ -250,16 +251,16 @@ class CloudPolicyCoreStatusProvider ...@@ -250,16 +251,16 @@ class CloudPolicyCoreStatusProvider
}; };
// A cloud policy status provider for user policy. // A cloud policy status provider for user policy.
class UserPolicyStatusProvider : public CloudPolicyCoreStatusProvider { class UserCloudPolicyStatusProvider : public CloudPolicyCoreStatusProvider {
public: public:
explicit UserPolicyStatusProvider(policy::CloudPolicyCore* core); explicit UserCloudPolicyStatusProvider(policy::CloudPolicyCore* core);
~UserPolicyStatusProvider() override; ~UserCloudPolicyStatusProvider() override;
// CloudPolicyCoreStatusProvider implementation. // CloudPolicyCoreStatusProvider implementation.
void GetStatus(base::DictionaryValue* dict) override; void GetStatus(base::DictionaryValue* dict) override;
private: private:
DISALLOW_COPY_AND_ASSIGN(UserPolicyStatusProvider); DISALLOW_COPY_AND_ASSIGN(UserCloudPolicyStatusProvider);
}; };
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
...@@ -308,14 +309,13 @@ class DeviceLocalAccountPolicyStatusProvider ...@@ -308,14 +309,13 @@ class DeviceLocalAccountPolicyStatusProvider
DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountPolicyStatusProvider); DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountPolicyStatusProvider);
}; };
// Provides status for DeviceActiveDirectoryPolicyManager. // Provides status for any kind of Active Directory policy (device or user).
class DeviceActiveDirectoryPolicyStatusProvider class ActiveDirectoryPolicyStatusProvider
: public PolicyStatusProvider, : public PolicyStatusProvider,
public policy::CloudPolicyStore::Observer { public policy::CloudPolicyStore::Observer {
public: public:
explicit DeviceActiveDirectoryPolicyStatusProvider( explicit ActiveDirectoryPolicyStatusProvider(policy::CloudPolicyStore* store);
policy::DeviceActiveDirectoryPolicyManager* manager); ~ActiveDirectoryPolicyStatusProvider() override;
~DeviceActiveDirectoryPolicyStatusProvider() override;
// PolicyStatusProvider implementation. // PolicyStatusProvider implementation.
void GetStatus(base::DictionaryValue* dict) override; void GetStatus(base::DictionaryValue* dict) override;
...@@ -327,7 +327,7 @@ class DeviceActiveDirectoryPolicyStatusProvider ...@@ -327,7 +327,7 @@ class DeviceActiveDirectoryPolicyStatusProvider
private: private:
policy::CloudPolicyStore* store_; policy::CloudPolicyStore* store_;
DISALLOW_COPY_AND_ASSIGN(DeviceActiveDirectoryPolicyStatusProvider); DISALLOW_COPY_AND_ASSIGN(ActiveDirectoryPolicyStatusProvider);
}; };
#endif #endif
...@@ -369,14 +369,13 @@ void CloudPolicyCoreStatusProvider::OnStoreError( ...@@ -369,14 +369,13 @@ void CloudPolicyCoreStatusProvider::OnStoreError(
NotifyStatusChange(); NotifyStatusChange();
} }
UserPolicyStatusProvider::UserPolicyStatusProvider( UserCloudPolicyStatusProvider::UserCloudPolicyStatusProvider(
policy::CloudPolicyCore* core) : CloudPolicyCoreStatusProvider(core) { policy::CloudPolicyCore* core)
} : CloudPolicyCoreStatusProvider(core) {}
UserPolicyStatusProvider::~UserPolicyStatusProvider() { UserCloudPolicyStatusProvider::~UserCloudPolicyStatusProvider() {}
}
void UserPolicyStatusProvider::GetStatus(base::DictionaryValue* dict) { void UserCloudPolicyStatusProvider::GetStatus(base::DictionaryValue* dict) {
if (!core_->store()->is_managed()) if (!core_->store()->is_managed())
return; return;
GetStatusFromCore(core_, dict); GetStatusFromCore(core_, dict);
...@@ -440,33 +439,31 @@ void DeviceLocalAccountPolicyStatusProvider::OnDeviceLocalAccountsChanged() { ...@@ -440,33 +439,31 @@ void DeviceLocalAccountPolicyStatusProvider::OnDeviceLocalAccountsChanged() {
NotifyStatusChange(); NotifyStatusChange();
} }
DeviceActiveDirectoryPolicyStatusProvider:: ActiveDirectoryPolicyStatusProvider::ActiveDirectoryPolicyStatusProvider(
DeviceActiveDirectoryPolicyStatusProvider( policy::CloudPolicyStore* store)
policy::DeviceActiveDirectoryPolicyManager* manager) : store_(store) {
: store_(manager->store()) {
store_->AddObserver(this); store_->AddObserver(this);
} }
DeviceActiveDirectoryPolicyStatusProvider:: ActiveDirectoryPolicyStatusProvider::~ActiveDirectoryPolicyStatusProvider() {
~DeviceActiveDirectoryPolicyStatusProvider() {
store_->RemoveObserver(this); store_->RemoveObserver(this);
} }
// TODO(tnagel): Provide more details and/or remove unused fields from UI. See // TODO(tnagel): Provide more details and/or remove unused fields from UI. See
// https://crbug.com/664747. // https://crbug.com/664747.
void DeviceActiveDirectoryPolicyStatusProvider::GetStatus( void ActiveDirectoryPolicyStatusProvider::GetStatus(
base::DictionaryValue* dict) { base::DictionaryValue* dict) {
base::string16 status = base::string16 status =
policy::FormatStoreStatus(store_->status(), store_->validation_status()); policy::FormatStoreStatus(store_->status(), store_->validation_status());
dict->SetString("status", status); dict->SetString("status", status);
} }
void DeviceActiveDirectoryPolicyStatusProvider::OnStoreLoaded( void ActiveDirectoryPolicyStatusProvider::OnStoreLoaded(
policy::CloudPolicyStore* store) { policy::CloudPolicyStore* store) {
NotifyStatusChange(); NotifyStatusChange();
} }
void DeviceActiveDirectoryPolicyStatusProvider::OnStoreError( void ActiveDirectoryPolicyStatusProvider::OnStoreError(
policy::CloudPolicyStore* store) { policy::CloudPolicyStore* store) {
NotifyStatusChange(); NotifyStatusChange();
} }
...@@ -528,8 +525,8 @@ void PolicyUIHandler::RegisterMessages() { ...@@ -528,8 +525,8 @@ void PolicyUIHandler::RegisterMessages() {
if (connector->IsEnterpriseManaged()) { if (connector->IsEnterpriseManaged()) {
if (connector->GetDeviceActiveDirectoryPolicyManager()) { if (connector->GetDeviceActiveDirectoryPolicyManager()) {
device_status_provider_ = device_status_provider_ =
base::MakeUnique<DeviceActiveDirectoryPolicyStatusProvider>( base::MakeUnique<ActiveDirectoryPolicyStatusProvider>(
connector->GetDeviceActiveDirectoryPolicyManager()); connector->GetDeviceActiveDirectoryPolicyManager()->store());
} else { } else {
device_status_provider_ = device_status_provider_ =
base::MakeUnique<DevicePolicyStatusProvider>(connector); base::MakeUnique<DevicePolicyStatusProvider>(connector);
...@@ -538,31 +535,36 @@ void PolicyUIHandler::RegisterMessages() { ...@@ -538,31 +535,36 @@ void PolicyUIHandler::RegisterMessages() {
const user_manager::UserManager* user_manager = const user_manager::UserManager* user_manager =
user_manager::UserManager::Get(); user_manager::UserManager::Get();
if (user_manager->IsLoggedInAsPublicAccount()) { Profile* profile = Profile::FromWebUI(web_ui());
policy::DeviceLocalAccountPolicyService* local_account_service = policy::DeviceLocalAccountPolicyService* local_account_service =
connector->GetDeviceLocalAccountPolicyService(); user_manager->IsLoggedInAsPublicAccount()
? connector->GetDeviceLocalAccountPolicyService()
: nullptr;
policy::UserCloudPolicyManagerChromeOS* user_cloud_policy =
policy::UserPolicyManagerFactoryChromeOS::GetCloudPolicyManagerForProfile(
profile);
policy::UserActiveDirectoryPolicyManager* active_directory_policy =
policy::UserPolicyManagerFactoryChromeOS::
GetActiveDirectoryPolicyManagerForProfile(profile);
if (local_account_service) { if (local_account_service) {
user_status_provider_ = user_status_provider_ =
base::MakeUnique<DeviceLocalAccountPolicyStatusProvider>( base::MakeUnique<DeviceLocalAccountPolicyStatusProvider>(
user_manager->GetActiveUser()->GetAccountId().GetUserEmail(), user_manager->GetActiveUser()->GetAccountId().GetUserEmail(),
local_account_service); local_account_service);
} } else if (user_cloud_policy) {
} else { user_status_provider_ = base::MakeUnique<UserCloudPolicyStatusProvider>(
policy::UserCloudPolicyManagerChromeOS* user_cloud_policy_manager = user_cloud_policy->core());
policy::UserPolicyManagerFactoryChromeOS:: } else if (active_directory_policy) {
GetCloudPolicyManagerForProfile(Profile::FromWebUI(web_ui()));
if (user_cloud_policy_manager) {
user_status_provider_ = user_status_provider_ =
base::MakeUnique<UserPolicyStatusProvider>( base::MakeUnique<ActiveDirectoryPolicyStatusProvider>(
user_cloud_policy_manager->core()); active_directory_policy->store());
}
} }
#else #else
policy::UserCloudPolicyManager* user_cloud_policy_manager = policy::UserCloudPolicyManager* user_cloud_policy_manager =
policy::UserCloudPolicyManagerFactory::GetForBrowserContext( policy::UserCloudPolicyManagerFactory::GetForBrowserContext(
web_ui()->GetWebContents()->GetBrowserContext()); web_ui()->GetWebContents()->GetBrowserContext());
if (user_cloud_policy_manager) { if (user_cloud_policy_manager) {
user_status_provider_ = base::MakeUnique<UserPolicyStatusProvider>( user_status_provider_ = base::MakeUnique<UserCloudPolicyStatusProvider>(
user_cloud_policy_manager->core()); user_cloud_policy_manager->core());
} }
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment