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

Side by Side Diff: chrome/browser/chromeos/policy/browser_policy_connector_chromeos.cc

Issue 2486813002: Add DeviceADPolicyManager to provide AD policy. (Closed)
Patch Set: Address Bernhard's comments Created 4 years, 1 month 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/chromeos/policy/browser_policy_connector_chromeos.h" 5 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h"
6 6
7 #include <string> 7 #include <string>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/files/file_path.h" 12 #include "base/files/file_path.h"
13 #include "base/location.h" 13 #include "base/location.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/memory/ptr_util.h" 15 #include "base/memory/ptr_util.h"
16 #include "base/path_service.h" 16 #include "base/path_service.h"
17 #include "base/sequenced_task_runner.h" 17 #include "base/sequenced_task_runner.h"
18 #include "base/single_thread_task_runner.h" 18 #include "base/single_thread_task_runner.h"
19 #include "base/strings/utf_string_conversions.h" 19 #include "base/strings/utf_string_conversions.h"
20 #include "base/threading/sequenced_worker_pool.h" 20 #include "base/threading/sequenced_worker_pool.h"
21 #include "base/threading/thread_task_runner_handle.h" 21 #include "base/threading/thread_task_runner_handle.h"
22 #include "chrome/browser/chromeos/attestation/attestation_ca_client.h" 22 #include "chrome/browser/chromeos/attestation/attestation_ca_client.h"
23 #include "chrome/browser/chromeos/policy/affiliated_cloud_policy_invalidator.h" 23 #include "chrome/browser/chromeos/policy/affiliated_cloud_policy_invalidator.h"
24 #include "chrome/browser/chromeos/policy/affiliated_invalidation_service_provide r.h" 24 #include "chrome/browser/chromeos/policy/affiliated_invalidation_service_provide r.h"
25 #include "chrome/browser/chromeos/policy/affiliated_invalidation_service_provide r_impl.h" 25 #include "chrome/browser/chromeos/policy/affiliated_invalidation_service_provide r_impl.h"
26 #include "chrome/browser/chromeos/policy/bluetooth_policy_handler.h" 26 #include "chrome/browser/chromeos/policy/bluetooth_policy_handler.h"
27 #include "chrome/browser/chromeos/policy/device_active_directory_policy_manager. h"
27 #include "chrome/browser/chromeos/policy/device_cloud_policy_initializer.h" 28 #include "chrome/browser/chromeos/policy/device_cloud_policy_initializer.h"
28 #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h" 29 #include "chrome/browser/chromeos/policy/device_cloud_policy_store_chromeos.h"
29 #include "chrome/browser/chromeos/policy/device_local_account.h" 30 #include "chrome/browser/chromeos/policy/device_local_account.h"
30 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h" 31 #include "chrome/browser/chromeos/policy/device_local_account_policy_service.h"
31 #include "chrome/browser/chromeos/policy/device_network_configuration_updater.h" 32 #include "chrome/browser/chromeos/policy/device_network_configuration_updater.h"
32 #include "chrome/browser/chromeos/policy/enrollment_config.h" 33 #include "chrome/browser/chromeos/policy/enrollment_config.h"
33 #include "chrome/browser/chromeos/policy/remote_commands/affiliated_remote_comma nds_invalidator.h" 34 #include "chrome/browser/chromeos/policy/remote_commands/affiliated_remote_comma nds_invalidator.h"
34 #include "chrome/browser/chromeos/policy/server_backed_state_keys_broker.h" 35 #include "chrome/browser/chromeos/policy/server_backed_state_keys_broker.h"
35 #include "chrome/browser/chromeos/settings/cros_settings.h" 36 #include "chrome/browser/chromeos/settings/cros_settings.h"
36 #include "chrome/browser/chromeos/settings/device_settings_service.h" 37 #include "chrome/browser/chromeos/settings/device_settings_service.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 scoped_refptr<base::SequencedTaskRunner> GetBackgroundTaskRunner() { 74 scoped_refptr<base::SequencedTaskRunner> GetBackgroundTaskRunner() {
74 base::SequencedWorkerPool* pool = BrowserThread::GetBlockingPool(); 75 base::SequencedWorkerPool* pool = BrowserThread::GetBlockingPool();
75 CHECK(pool); 76 CHECK(pool);
76 return pool->GetSequencedTaskRunnerWithShutdownBehavior( 77 return pool->GetSequencedTaskRunnerWithShutdownBehavior(
77 pool->GetSequenceToken(), base::SequencedWorkerPool::SKIP_ON_SHUTDOWN); 78 pool->GetSequenceToken(), base::SequencedWorkerPool::SKIP_ON_SHUTDOWN);
78 } 79 }
79 80
80 } // namespace 81 } // namespace
81 82
82 BrowserPolicyConnectorChromeOS::BrowserPolicyConnectorChromeOS() 83 BrowserPolicyConnectorChromeOS::BrowserPolicyConnectorChromeOS()
83 : device_cloud_policy_manager_(nullptr), 84 : weak_ptr_factory_(this) {
84 global_user_cloud_policy_provider_(nullptr),
85 weak_ptr_factory_(this) {
86 if (g_testing_install_attributes) { 85 if (g_testing_install_attributes) {
87 install_attributes_.reset(g_testing_install_attributes); 86 install_attributes_.reset(g_testing_install_attributes);
88 g_testing_install_attributes = nullptr; 87 g_testing_install_attributes = nullptr;
89 } 88 }
90 89
91 // SystemSaltGetter or DBusThreadManager may be uninitialized on unit tests. 90 // SystemSaltGetter or DBusThreadManager may be uninitialized on unit tests.
92 91
93 // TODO(satorux): Remove SystemSaltGetter::IsInitialized() when it's ready 92 // TODO(satorux): Remove SystemSaltGetter::IsInitialized() when it's ready
94 // (removing it now breaks tests). crbug.com/141016. 93 // (removing it now breaks tests). crbug.com/141016.
95 if (chromeos::SystemSaltGetter::IsInitialized() && 94 if (chromeos::SystemSaltGetter::IsInitialized() &&
96 chromeos::DBusThreadManager::IsInitialized()) { 95 chromeos::DBusThreadManager::IsInitialized()) {
97 state_keys_broker_ = base::MakeUnique<ServerBackedStateKeysBroker>(
98 chromeos::DBusThreadManager::Get()->GetSessionManagerClient(),
99 base::ThreadTaskRunnerHandle::Get());
100
101 chromeos::CryptohomeClient* cryptohome_client =
102 chromeos::DBusThreadManager::Get()->GetCryptohomeClient();
103
104 // Don't initialize install attributes if g_testing_install_attributes have 96 // Don't initialize install attributes if g_testing_install_attributes have
105 // been injected. 97 // been injected.
106 if (!install_attributes_) { 98 if (!install_attributes_) {
107 install_attributes_ = 99 install_attributes_ = base::MakeUnique<chromeos::InstallAttributes>(
108 base::MakeUnique<chromeos::InstallAttributes>(cryptohome_client); 100 chromeos::DBusThreadManager::Get()->GetCryptohomeClient());
109 base::FilePath install_attrs_file; 101 base::FilePath install_attrs_file;
110 CHECK(PathService::Get(chromeos::FILE_INSTALL_ATTRIBUTES, 102 CHECK(PathService::Get(chromeos::FILE_INSTALL_ATTRIBUTES,
111 &install_attrs_file)); 103 &install_attrs_file));
112 install_attributes_->Init(install_attrs_file); 104 install_attributes_->Init(install_attrs_file);
113 } 105 }
114 106
115 std::unique_ptr<DeviceCloudPolicyStoreChromeOS> device_cloud_policy_store = 107 std::unique_ptr<DeviceCloudPolicyStoreChromeOS> device_cloud_policy_store =
116 base::MakeUnique<DeviceCloudPolicyStoreChromeOS>( 108 base::MakeUnique<DeviceCloudPolicyStoreChromeOS>(
117 chromeos::DeviceSettingsService::Get(), install_attributes_.get(), 109 chromeos::DeviceSettingsService::Get(), install_attributes_.get(),
118 GetBackgroundTaskRunner()); 110 GetBackgroundTaskRunner());
119 device_cloud_policy_manager_ = new DeviceCloudPolicyManagerChromeOS( 111
120 std::move(device_cloud_policy_store), 112 if (install_attributes_->IsActiveDirectoryManaged()) {
121 base::ThreadTaskRunnerHandle::Get(), state_keys_broker_.get()); 113 device_active_directory_policy_manager_ =
122 AddPolicyProvider(std::unique_ptr<ConfigurationPolicyProvider>( 114 new DeviceActiveDirectoryPolicyManager(
123 device_cloud_policy_manager_)); 115 std::move(device_cloud_policy_store));
116 AddPolicyProvider(base::WrapUnique<ConfigurationPolicyProvider>(
117 device_active_directory_policy_manager_));
118 } else {
119 state_keys_broker_ = base::MakeUnique<ServerBackedStateKeysBroker>(
120 chromeos::DBusThreadManager::Get()->GetSessionManagerClient(),
121 base::ThreadTaskRunnerHandle::Get());
122
123 device_cloud_policy_manager_ = new DeviceCloudPolicyManagerChromeOS(
124 std::move(device_cloud_policy_store),
125 base::ThreadTaskRunnerHandle::Get(), state_keys_broker_.get());
126 AddPolicyProvider(base::WrapUnique<ConfigurationPolicyProvider>(
127 device_cloud_policy_manager_));
128 }
124 } 129 }
125 130
126 global_user_cloud_policy_provider_ = new ProxyPolicyProvider(); 131 global_user_cloud_policy_provider_ = new ProxyPolicyProvider();
127 AddPolicyProvider(std::unique_ptr<ConfigurationPolicyProvider>( 132 AddPolicyProvider(std::unique_ptr<ConfigurationPolicyProvider>(
128 global_user_cloud_policy_provider_)); 133 global_user_cloud_policy_provider_));
129 } 134 }
130 135
131 BrowserPolicyConnectorChromeOS::~BrowserPolicyConnectorChromeOS() {} 136 BrowserPolicyConnectorChromeOS::~BrowserPolicyConnectorChromeOS() {}
132 137
133 void BrowserPolicyConnectorChromeOS::Init( 138 void BrowserPolicyConnectorChromeOS::Init(
134 PrefService* local_state, 139 PrefService* local_state,
135 scoped_refptr<net::URLRequestContextGetter> request_context) { 140 scoped_refptr<net::URLRequestContextGetter> request_context) {
136 local_state_ = local_state; 141 local_state_ = local_state;
137 ChromeBrowserPolicyConnector::Init(local_state, request_context); 142 ChromeBrowserPolicyConnector::Init(local_state, request_context);
138 143
139 affiliated_invalidation_service_provider_ = 144 affiliated_invalidation_service_provider_ =
140 base::MakeUnique<AffiliatedInvalidationServiceProviderImpl>(); 145 base::MakeUnique<AffiliatedInvalidationServiceProviderImpl>();
141 146
142 if (device_cloud_policy_manager_) { 147 if (device_cloud_policy_manager_) {
143 // Note: for now the |device_cloud_policy_manager_| is using the global 148 // Note: for now the |device_cloud_policy_manager_| is using the global
144 // schema registry. Eventually it will have its own registry, once device 149 // schema registry. Eventually it will have its own registry, once device
145 // cloud policy for extensions is introduced. That means it'd have to be 150 // cloud policy for extensions is introduced. That means it'd have to be
146 // initialized from here instead of BrowserPolicyConnector::Init(). 151 // initialized from here instead of BrowserPolicyConnector::Init().
147 152
148 device_cloud_policy_manager_->Initialize(local_state); 153 device_cloud_policy_manager_->Initialize(local_state);
149 device_cloud_policy_manager_->AddDeviceCloudPolicyManagerObserver(this); 154 device_cloud_policy_manager_->AddDeviceCloudPolicyManagerObserver(this);
150 RestartDeviceCloudPolicyInitializer(); 155 RestartDeviceCloudPolicyInitializer();
151 } 156 }
152 157
153 device_local_account_policy_service_ = 158 DCHECK(install_attributes_);
154 base::MakeUnique<DeviceLocalAccountPolicyService>( 159 if (install_attributes_->IsCloudManaged()) {
155 chromeos::DBusThreadManager::Get()->GetSessionManagerClient(), 160 device_local_account_policy_service_ =
156 chromeos::DeviceSettingsService::Get(), chromeos::CrosSettings::Get(), 161 base::MakeUnique<DeviceLocalAccountPolicyService>(
157 affiliated_invalidation_service_provider_.get(), 162 chromeos::DBusThreadManager::Get()->GetSessionManagerClient(),
158 GetBackgroundTaskRunner(), GetBackgroundTaskRunner(), 163 chromeos::DeviceSettingsService::Get(),
159 GetBackgroundTaskRunner(), 164 chromeos::CrosSettings::Get(),
160 content::BrowserThread::GetTaskRunnerForThread( 165 affiliated_invalidation_service_provider_.get(),
161 content::BrowserThread::IO), 166 GetBackgroundTaskRunner(), GetBackgroundTaskRunner(),
162 request_context); 167 GetBackgroundTaskRunner(),
163 device_local_account_policy_service_->Connect(device_management_service()); 168 content::BrowserThread::GetTaskRunnerForThread(
169 content::BrowserThread::IO),
170 request_context);
171 device_local_account_policy_service_->Connect(device_management_service());
172 }
173
164 if (device_cloud_policy_manager_) { 174 if (device_cloud_policy_manager_) {
165 device_cloud_policy_invalidator_ = 175 device_cloud_policy_invalidator_ =
166 base::MakeUnique<AffiliatedCloudPolicyInvalidator>( 176 base::MakeUnique<AffiliatedCloudPolicyInvalidator>(
167 enterprise_management::DeviceRegisterRequest::DEVICE, 177 enterprise_management::DeviceRegisterRequest::DEVICE,
168 device_cloud_policy_manager_->core(), 178 device_cloud_policy_manager_->core(),
169 affiliated_invalidation_service_provider_.get()); 179 affiliated_invalidation_service_provider_.get());
170 device_remote_commands_invalidator_ = 180 device_remote_commands_invalidator_ =
171 base::MakeUnique<AffiliatedRemoteCommandsInvalidator>( 181 base::MakeUnique<AffiliatedRemoteCommandsInvalidator>(
172 device_cloud_policy_manager_->core(), 182 device_cloud_policy_manager_->core(),
173 affiliated_invalidation_service_provider_.get()); 183 affiliated_invalidation_service_provider_.get());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 if (device_cloud_policy_initializer_) 215 if (device_cloud_policy_initializer_)
206 device_cloud_policy_initializer_->Shutdown(); 216 device_cloud_policy_initializer_->Shutdown();
207 217
208 if (device_cloud_policy_manager_) 218 if (device_cloud_policy_manager_)
209 device_cloud_policy_manager_->RemoveDeviceCloudPolicyManagerObserver(this); 219 device_cloud_policy_manager_->RemoveDeviceCloudPolicyManagerObserver(this);
210 220
211 ChromeBrowserPolicyConnector::Shutdown(); 221 ChromeBrowserPolicyConnector::Shutdown();
212 } 222 }
213 223
214 bool BrowserPolicyConnectorChromeOS::IsEnterpriseManaged() const { 224 bool BrowserPolicyConnectorChromeOS::IsEnterpriseManaged() const {
215 return install_attributes_ && install_attributes_->IsEnterpriseDevice(); 225 return install_attributes_ && install_attributes_->IsEnterpriseManaged();
216 } 226 }
217 227
218 std::string BrowserPolicyConnectorChromeOS::GetEnterpriseDomain() const { 228 std::string BrowserPolicyConnectorChromeOS::GetEnterpriseDomain() const {
219 return install_attributes_ ? install_attributes_->GetDomain() : std::string(); 229 return install_attributes_ ? install_attributes_->GetDomain() : std::string();
220 } 230 }
221 231
222 std::string BrowserPolicyConnectorChromeOS::GetRealm() const { 232 std::string BrowserPolicyConnectorChromeOS::GetRealm() const {
223 return install_attributes_ ? install_attributes_->GetRealm() : std::string(); 233 return install_attributes_ ? install_attributes_->GetRealm() : std::string();
224 } 234 }
225 235
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 device_cloud_policy_manager_->device_store()->policy(); 362 device_cloud_policy_manager_->device_store()->policy();
353 if (policy_data) { 363 if (policy_data) {
354 affiliation_ids.insert(policy_data->device_affiliation_ids().begin(), 364 affiliation_ids.insert(policy_data->device_affiliation_ids().begin(),
355 policy_data->device_affiliation_ids().end()); 365 policy_data->device_affiliation_ids().end());
356 } 366 }
357 } 367 }
358 return affiliation_ids; 368 return affiliation_ids;
359 } 369 }
360 370
361 } // namespace policy 371 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698