Chromium Code Reviews| Index: chrome/browser/chromeos/policy/device_active_directory_policy_manager.cc |
| diff --git a/chrome/browser/chromeos/policy/device_active_directory_policy_manager.cc b/chrome/browser/chromeos/policy/device_active_directory_policy_manager.cc |
| index 8c349ff1e198c28963752d02a2bd211909c97b45..410002ffd53c4e8321623237762e65ee7f8f35d5 100644 |
| --- a/chrome/browser/chromeos/policy/device_active_directory_policy_manager.cc |
| +++ b/chrome/browser/chromeos/policy/device_active_directory_policy_manager.cc |
| @@ -9,6 +9,8 @@ |
| #include "base/logging.h" |
| #include "base/memory/ptr_util.h" |
| +#include "chromeos/dbus/auth_policy_client.h" |
| +#include "chromeos/dbus/dbus_thread_manager.h" |
| #include "components/policy/core/common/policy_bundle.h" |
| #include "components/policy/core/common/policy_types.h" |
| @@ -16,7 +18,7 @@ namespace policy { |
| DeviceActiveDirectoryPolicyManager::DeviceActiveDirectoryPolicyManager( |
| std::unique_ptr<CloudPolicyStore> store) |
| - : store_(std::move(store)) {} |
| + : store_(std::move(store)), weak_ptr_factory_(this) {} |
| DeviceActiveDirectoryPolicyManager::~DeviceActiveDirectoryPolicyManager() {} |
| @@ -24,10 +26,12 @@ void DeviceActiveDirectoryPolicyManager::Init(SchemaRegistry* registry) { |
| ConfigurationPolicyProvider::Init(registry); |
| store_->AddObserver(this); |
| - PublishPolicy(); |
| if (!store_->is_initialized()) { |
| store_->Load(); |
| } |
| + |
| + // Does nothing if |store_| hasn't yet initialized. |
| + PublishPolicy(); |
| } |
| void DeviceActiveDirectoryPolicyManager::Shutdown() { |
| @@ -43,7 +47,15 @@ bool DeviceActiveDirectoryPolicyManager::IsInitializationComplete( |
| } |
| void DeviceActiveDirectoryPolicyManager::RefreshPolicies() { |
| - store_->Load(); |
| + chromeos::DBusThreadManager* thread_manager = |
| + chromeos::DBusThreadManager::Get(); |
| + DCHECK(thread_manager); |
| + chromeos::AuthPolicyClient* auth_policy_client = |
| + thread_manager->GetAuthPolicyClient(); |
| + DCHECK(auth_policy_client); |
| + auth_policy_client->RefreshDevicePolicy( |
| + base::Bind(&DeviceActiveDirectoryPolicyManager::OnPolicyRefreshed, |
| + weak_ptr_factory_.GetWeakPtr())); |
| } |
| void DeviceActiveDirectoryPolicyManager::OnStoreLoaded( |
| @@ -77,4 +89,13 @@ void DeviceActiveDirectoryPolicyManager::PublishPolicy() { |
| UpdatePolicy(std::move(bundle)); |
| } |
| +void DeviceActiveDirectoryPolicyManager::OnPolicyRefreshed(bool success) { |
| + if (!success) { |
| + LOG(ERROR) << "AD policy refresh failed."; |
|
Roman Sorokin (ftl)
2016/11/21 16:47:53
nit: s/AD/Active Directory
Thiemo Nagel
2016/11/21 17:06:20
Done, although this is bloating the Chrome executa
|
| + } |
| + // Load independently of success or failure to keep up to date with whatever |
| + // has happened on the authpolicyd / session manager side. |
| + store_->Load(); |
| +} |
| + |
| } // namespace policy |