Index: chrome/browser/ui/webui/policy_ui_handler.cc |
diff --git a/chrome/browser/ui/webui/policy_ui_handler.cc b/chrome/browser/ui/webui/policy_ui_handler.cc |
index 38a5a80669dd715e06a1ebcc2c98822dc79f278e..abc6abf5e36f3837bebb3d0dec77c173b54d6051 100644 |
--- a/chrome/browser/ui/webui/policy_ui_handler.cc |
+++ b/chrome/browser/ui/webui/policy_ui_handler.cc |
@@ -59,6 +59,7 @@ |
#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_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_policy_manager_factory_chromeos.h" |
#include "chrome/browser/chromeos/settings/install_attributes.h" |
@@ -250,16 +251,16 @@ class CloudPolicyCoreStatusProvider |
}; |
// A cloud policy status provider for user policy. |
-class UserPolicyStatusProvider : public CloudPolicyCoreStatusProvider { |
+class UserCloudPolicyStatusProvider : public CloudPolicyCoreStatusProvider { |
public: |
- explicit UserPolicyStatusProvider(policy::CloudPolicyCore* core); |
- ~UserPolicyStatusProvider() override; |
+ explicit UserCloudPolicyStatusProvider(policy::CloudPolicyCore* core); |
+ ~UserCloudPolicyStatusProvider() override; |
// CloudPolicyCoreStatusProvider implementation. |
void GetStatus(base::DictionaryValue* dict) override; |
private: |
- DISALLOW_COPY_AND_ASSIGN(UserPolicyStatusProvider); |
+ DISALLOW_COPY_AND_ASSIGN(UserCloudPolicyStatusProvider); |
}; |
#if defined(OS_CHROMEOS) |
@@ -308,14 +309,13 @@ class DeviceLocalAccountPolicyStatusProvider |
DISALLOW_COPY_AND_ASSIGN(DeviceLocalAccountPolicyStatusProvider); |
}; |
-// Provides status for DeviceActiveDirectoryPolicyManager. |
-class DeviceActiveDirectoryPolicyStatusProvider |
+// Provides status for any kind of Active Directory policy (device or user). |
+class ActiveDirectoryPolicyStatusProvider |
: public PolicyStatusProvider, |
public policy::CloudPolicyStore::Observer { |
public: |
- explicit DeviceActiveDirectoryPolicyStatusProvider( |
- policy::DeviceActiveDirectoryPolicyManager* manager); |
- ~DeviceActiveDirectoryPolicyStatusProvider() override; |
+ explicit ActiveDirectoryPolicyStatusProvider(policy::CloudPolicyStore* store); |
+ ~ActiveDirectoryPolicyStatusProvider() override; |
// PolicyStatusProvider implementation. |
void GetStatus(base::DictionaryValue* dict) override; |
@@ -327,7 +327,7 @@ class DeviceActiveDirectoryPolicyStatusProvider |
private: |
policy::CloudPolicyStore* store_; |
- DISALLOW_COPY_AND_ASSIGN(DeviceActiveDirectoryPolicyStatusProvider); |
+ DISALLOW_COPY_AND_ASSIGN(ActiveDirectoryPolicyStatusProvider); |
}; |
#endif |
@@ -369,14 +369,13 @@ void CloudPolicyCoreStatusProvider::OnStoreError( |
NotifyStatusChange(); |
} |
-UserPolicyStatusProvider::UserPolicyStatusProvider( |
- policy::CloudPolicyCore* core) : CloudPolicyCoreStatusProvider(core) { |
-} |
+UserCloudPolicyStatusProvider::UserCloudPolicyStatusProvider( |
+ 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()) |
return; |
GetStatusFromCore(core_, dict); |
@@ -440,33 +439,31 @@ void DeviceLocalAccountPolicyStatusProvider::OnDeviceLocalAccountsChanged() { |
NotifyStatusChange(); |
} |
-DeviceActiveDirectoryPolicyStatusProvider:: |
- DeviceActiveDirectoryPolicyStatusProvider( |
- policy::DeviceActiveDirectoryPolicyManager* manager) |
- : store_(manager->store()) { |
+ActiveDirectoryPolicyStatusProvider::ActiveDirectoryPolicyStatusProvider( |
+ policy::CloudPolicyStore* store) |
+ : store_(store) { |
store_->AddObserver(this); |
} |
-DeviceActiveDirectoryPolicyStatusProvider:: |
- ~DeviceActiveDirectoryPolicyStatusProvider() { |
+ActiveDirectoryPolicyStatusProvider::~ActiveDirectoryPolicyStatusProvider() { |
store_->RemoveObserver(this); |
} |
// TODO(tnagel): Provide more details and/or remove unused fields from UI. See |
// https://crbug.com/664747. |
-void DeviceActiveDirectoryPolicyStatusProvider::GetStatus( |
+void ActiveDirectoryPolicyStatusProvider::GetStatus( |
base::DictionaryValue* dict) { |
base::string16 status = |
policy::FormatStoreStatus(store_->status(), store_->validation_status()); |
dict->SetString("status", status); |
} |
-void DeviceActiveDirectoryPolicyStatusProvider::OnStoreLoaded( |
+void ActiveDirectoryPolicyStatusProvider::OnStoreLoaded( |
policy::CloudPolicyStore* store) { |
NotifyStatusChange(); |
} |
-void DeviceActiveDirectoryPolicyStatusProvider::OnStoreError( |
+void ActiveDirectoryPolicyStatusProvider::OnStoreError( |
policy::CloudPolicyStore* store) { |
NotifyStatusChange(); |
} |
@@ -528,8 +525,8 @@ void PolicyUIHandler::RegisterMessages() { |
if (connector->IsEnterpriseManaged()) { |
if (connector->GetDeviceActiveDirectoryPolicyManager()) { |
device_status_provider_ = |
- base::MakeUnique<DeviceActiveDirectoryPolicyStatusProvider>( |
- connector->GetDeviceActiveDirectoryPolicyManager()); |
+ base::MakeUnique<ActiveDirectoryPolicyStatusProvider>( |
+ connector->GetDeviceActiveDirectoryPolicyManager()->store()); |
} else { |
device_status_provider_ = |
base::MakeUnique<DevicePolicyStatusProvider>(connector); |
@@ -538,31 +535,36 @@ void PolicyUIHandler::RegisterMessages() { |
const user_manager::UserManager* user_manager = |
user_manager::UserManager::Get(); |
- if (user_manager->IsLoggedInAsPublicAccount()) { |
- policy::DeviceLocalAccountPolicyService* local_account_service = |
- connector->GetDeviceLocalAccountPolicyService(); |
- if (local_account_service) { |
- user_status_provider_ = |
- base::MakeUnique<DeviceLocalAccountPolicyStatusProvider>( |
- user_manager->GetActiveUser()->GetAccountId().GetUserEmail(), |
- local_account_service); |
- } |
- } else { |
- policy::UserCloudPolicyManagerChromeOS* user_cloud_policy_manager = |
- policy::UserPolicyManagerFactoryChromeOS:: |
- GetCloudPolicyManagerForProfile(Profile::FromWebUI(web_ui())); |
- if (user_cloud_policy_manager) { |
- user_status_provider_ = |
- base::MakeUnique<UserPolicyStatusProvider>( |
- user_cloud_policy_manager->core()); |
- } |
+ Profile* profile = Profile::FromWebUI(web_ui()); |
+ policy::DeviceLocalAccountPolicyService* local_account_service = |
+ 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) { |
+ user_status_provider_ = |
+ base::MakeUnique<DeviceLocalAccountPolicyStatusProvider>( |
+ user_manager->GetActiveUser()->GetAccountId().GetUserEmail(), |
+ local_account_service); |
+ } else if (user_cloud_policy) { |
+ user_status_provider_ = base::MakeUnique<UserCloudPolicyStatusProvider>( |
+ user_cloud_policy->core()); |
+ } else if (active_directory_policy) { |
+ user_status_provider_ = |
+ base::MakeUnique<ActiveDirectoryPolicyStatusProvider>( |
+ active_directory_policy->store()); |
} |
#else |
policy::UserCloudPolicyManager* user_cloud_policy_manager = |
policy::UserCloudPolicyManagerFactory::GetForBrowserContext( |
web_ui()->GetWebContents()->GetBrowserContext()); |
if (user_cloud_policy_manager) { |
- user_status_provider_ = base::MakeUnique<UserPolicyStatusProvider>( |
+ user_status_provider_ = base::MakeUnique<UserCloudPolicyStatusProvider>( |
user_cloud_policy_manager->core()); |
} |
#endif |