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 d9bb3ccd01874c90768d230acfea3fcf460cabf9..78e641b39f089de47ec458a3fb5b6af2b1618830 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_cloud_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 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
|
+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); |
@@ -548,13 +545,22 @@ void PolicyUIHandler::RegisterMessages() { |
local_account_service); |
} |
} else { |
- policy::UserCloudPolicyManagerChromeOS* user_cloud_policy_manager = |
- policy::UserCloudPolicyManagerFactoryChromeOS::GetForProfile( |
- 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::UserCloudPolicyManagerChromeOS* user_cloud_policy = |
+ policy::UserCloudPolicyManagerFactoryChromeOS:: |
+ GetCloudPolicyManagerForProfile(profile); |
+ if (user_cloud_policy) { |
+ user_status_provider_ = base::MakeUnique<UserCloudPolicyStatusProvider>( |
+ user_cloud_policy->core()); |
+ } else { |
+ policy::UserActiveDirectoryPolicyManager* active_directory_policy = |
+ policy::UserCloudPolicyManagerFactoryChromeOS:: |
+ GetActiveDirectoryPolicyManagerForProfile(profile); |
+ 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.)
|
+ user_status_provider_ = |
+ base::MakeUnique<ActiveDirectoryPolicyStatusProvider>( |
+ active_directory_policy->store()); |
+ } |
} |
} |
#else |
@@ -562,7 +568,7 @@ void PolicyUIHandler::RegisterMessages() { |
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 |