| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |