Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/policy/profile_policy_connector_factory.h" | 5 #include "chrome/browser/policy/profile_policy_connector_factory.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/memory/singleton.h" | 10 #include "base/memory/singleton.h" |
| 11 #include "build/build_config.h" | 11 #include "build/build_config.h" |
| 12 #include "chrome/browser/browser_process.h" | 12 #include "chrome/browser/browser_process.h" |
| 13 #include "chrome/browser/policy/profile_policy_connector.h" | 13 #include "chrome/browser/policy/profile_policy_connector.h" |
| 14 #include "chrome/browser/policy/schema_registry_service.h" | 14 #include "chrome/browser/policy/schema_registry_service.h" |
| 15 #include "chrome/browser/policy/schema_registry_service_factory.h" | 15 #include "chrome/browser/policy/schema_registry_service_factory.h" |
| 16 #include "chrome/browser/profiles/incognito_helpers.h" | 16 #include "chrome/browser/profiles/incognito_helpers.h" |
| 17 #include "chrome/browser/profiles/profile.h" | 17 #include "chrome/browser/profiles/profile.h" |
| 18 #include "components/keyed_service/content/browser_context_dependency_manager.h" | 18 #include "components/keyed_service/content/browser_context_dependency_manager.h" |
| 19 #include "components/policy/core/common/policy_service.h" | 19 #include "components/policy/core/common/policy_service.h" |
| 20 #include "components/policy/core/common/policy_service_impl.h" | 20 #include "components/policy/core/common/policy_service_impl.h" |
| 21 | 21 |
| 22 #if defined(OS_CHROMEOS) | 22 #if defined(OS_CHROMEOS) |
| 23 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" | 23 #include "chrome/browser/chromeos/policy/browser_policy_connector_chromeos.h" |
| 24 #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h" | 24 #include "chrome/browser/chromeos/policy/device_cloud_policy_manager_chromeos.h" |
| 25 #include "chrome/browser/chromeos/policy/user_active_directory_policy_manager.h" | |
| 25 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" | 26 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_chromeos.h" |
| 26 #include "chrome/browser/chromeos/policy/user_cloud_policy_manager_factory_chrom eos.h" | 27 #include "chrome/browser/chromeos/policy/user_policy_manager_factory_chromeos.h" |
| 27 #include "chrome/browser/chromeos/profiles/profile_helper.h" | 28 #include "chrome/browser/chromeos/profiles/profile_helper.h" |
| 28 #include "components/user_manager/user.h" | 29 #include "components/user_manager/user.h" |
| 29 #else // Non-ChromeOS. | 30 #else // Non-ChromeOS. |
| 30 #include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h" | 31 #include "chrome/browser/policy/cloud/user_cloud_policy_manager_factory.h" |
| 31 #include "components/policy/core/common/cloud/user_cloud_policy_manager.h" | 32 #include "components/policy/core/common/cloud/user_cloud_policy_manager.h" |
| 32 #endif | 33 #endif |
| 33 | 34 |
| 34 namespace policy { | 35 namespace policy { |
| 35 | 36 |
| 36 // static | 37 // static |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 65 ConfigurationPolicyProvider* provider) { | 66 ConfigurationPolicyProvider* provider) { |
| 66 test_providers_.push_back(provider); | 67 test_providers_.push_back(provider); |
| 67 } | 68 } |
| 68 | 69 |
| 69 ProfilePolicyConnectorFactory::ProfilePolicyConnectorFactory() | 70 ProfilePolicyConnectorFactory::ProfilePolicyConnectorFactory() |
| 70 : BrowserContextKeyedBaseFactory( | 71 : BrowserContextKeyedBaseFactory( |
| 71 "ProfilePolicyConnector", | 72 "ProfilePolicyConnector", |
| 72 BrowserContextDependencyManager::GetInstance()) { | 73 BrowserContextDependencyManager::GetInstance()) { |
| 73 DependsOn(SchemaRegistryServiceFactory::GetInstance()); | 74 DependsOn(SchemaRegistryServiceFactory::GetInstance()); |
| 74 #if defined(OS_CHROMEOS) | 75 #if defined(OS_CHROMEOS) |
| 75 DependsOn(UserCloudPolicyManagerFactoryChromeOS::GetInstance()); | 76 DependsOn(UserPolicyManagerFactoryChromeOS::GetInstance()); |
| 76 #else | 77 #else |
| 77 DependsOn(UserCloudPolicyManagerFactory::GetInstance()); | 78 DependsOn(UserCloudPolicyManagerFactory::GetInstance()); |
| 78 #endif | 79 #endif |
| 79 } | 80 } |
| 80 | 81 |
| 81 ProfilePolicyConnectorFactory::~ProfilePolicyConnectorFactory() { | 82 ProfilePolicyConnectorFactory::~ProfilePolicyConnectorFactory() { |
| 82 DCHECK(connectors_.empty()); | 83 DCHECK(connectors_.empty()); |
| 83 } | 84 } |
| 84 | 85 |
| 85 ProfilePolicyConnector* | 86 ProfilePolicyConnector* |
| 86 ProfilePolicyConnectorFactory::GetForBrowserContextInternal( | 87 ProfilePolicyConnectorFactory::GetForBrowserContextInternal( |
| 87 content::BrowserContext* context) { | 88 content::BrowserContext* context) { |
| 88 // Get the connector for the original Profile, so that the incognito Profile | 89 // Get the connector for the original Profile, so that the incognito Profile |
| 89 // gets managed settings from the same PolicyService. | 90 // gets managed settings from the same PolicyService. |
| 90 content::BrowserContext* const original_context = | 91 content::BrowserContext* const original_context = |
| 91 chrome::GetBrowserContextRedirectedInIncognito(context); | 92 chrome::GetBrowserContextRedirectedInIncognito(context); |
| 92 const ConnectorMap::const_iterator it = connectors_.find(original_context); | 93 const ConnectorMap::const_iterator it = connectors_.find(original_context); |
| 93 CHECK(it != connectors_.end()); | 94 CHECK(it != connectors_.end()); |
| 94 return it->second; | 95 return it->second; |
| 95 } | 96 } |
| 96 | 97 |
| 97 std::unique_ptr<ProfilePolicyConnector> | 98 std::unique_ptr<ProfilePolicyConnector> |
| 98 ProfilePolicyConnectorFactory::CreateForBrowserContextInternal( | 99 ProfilePolicyConnectorFactory::CreateForBrowserContextInternal( |
| 99 content::BrowserContext* context, | 100 content::BrowserContext* context, |
| 100 bool force_immediate_load) { | 101 bool force_immediate_load) { |
| 101 DCHECK(connectors_.find(context) == connectors_.end()); | 102 DCHECK(connectors_.find(context) == connectors_.end()); |
| 102 | 103 |
| 103 SchemaRegistry* schema_registry = nullptr; | 104 const user_manager::User* user = nullptr; |
| 104 CloudPolicyManager* user_cloud_policy_manager = nullptr; | 105 SchemaRegistry* schema_registry = |
| 106 SchemaRegistryServiceFactory::GetForContext(context)->registry(); | |
| 105 | 107 |
| 106 schema_registry = | 108 ConfigurationPolicyProvider* policy_provider = nullptr; |
| 107 SchemaRegistryServiceFactory::GetForContext(context)->registry(); | 109 const CloudPolicyStore* policy_store = nullptr; |
| 108 | 110 |
| 109 #if defined(OS_CHROMEOS) | 111 #if defined(OS_CHROMEOS) |
| 110 Profile* const profile = Profile::FromBrowserContext(context); | 112 Profile* const profile = Profile::FromBrowserContext(context); |
| 111 const user_manager::User* user = nullptr; | |
| 112 if (chromeos::ProfileHelper::IsSigninProfile(profile)) { | 113 if (chromeos::ProfileHelper::IsSigninProfile(profile)) { |
| 113 policy::DeviceCloudPolicyManagerChromeOS* device_cloud_policy_manager = | 114 policy::DeviceCloudPolicyManagerChromeOS* device_cloud_policy_manager = |
| 114 g_browser_process->platform_part() | 115 g_browser_process->platform_part() |
| 115 ->browser_policy_connector_chromeos() | 116 ->browser_policy_connector_chromeos() |
| 116 ->GetDeviceCloudPolicyManager(); | 117 ->GetDeviceCloudPolicyManager(); |
| 117 // TODO(tnagel): Do we need to do something for Active Directory management? | 118 // TODO(tnagel): Do we need to do something for Active Directory management? |
| 118 if (device_cloud_policy_manager) { | 119 if (device_cloud_policy_manager) { |
| 119 device_cloud_policy_manager->SetSigninProfileSchemaRegistry( | 120 device_cloud_policy_manager->SetSigninProfileSchemaRegistry( |
| 120 schema_registry); | 121 schema_registry); |
| 121 } | 122 } |
| 122 } else { | 123 } else { |
| 123 user = chromeos::ProfileHelper::Get()->GetUserByProfile(profile); | 124 user = chromeos::ProfileHelper::Get()->GetUserByProfile(profile); |
| 124 CHECK(user); | 125 CHECK(user); |
| 125 } | 126 } |
| 126 user_cloud_policy_manager = | 127 |
| 127 UserCloudPolicyManagerFactoryChromeOS::GetForProfile(profile); | 128 CloudPolicyManager* user_cloud_policy_manager = |
| 129 UserPolicyManagerFactoryChromeOS::GetCloudPolicyManagerForProfile( | |
| 130 profile); | |
| 131 UserActiveDirectoryPolicyManager* active_directory_manager = | |
| 132 UserPolicyManagerFactoryChromeOS:: | |
| 133 GetActiveDirectoryPolicyManagerForProfile(profile); | |
| 134 if (user_cloud_policy_manager) { | |
| 135 policy_provider = user_cloud_policy_manager; | |
| 136 policy_store = user_cloud_policy_manager->core()->store(); | |
| 137 } else if (active_directory_manager) { | |
|
Thiemo Nagel
2016/12/29 15:08:28
I've flattened the code nesting in the same way as
| |
| 138 policy_provider = active_directory_manager; | |
| 139 policy_store = active_directory_manager->store(); | |
| 140 } | |
| 128 #else | 141 #else |
| 129 user_cloud_policy_manager = | 142 CloudPolicyManager* user_cloud_policy_manager = |
| 130 UserCloudPolicyManagerFactory::GetForBrowserContext(context); | 143 UserCloudPolicyManagerFactory::GetForBrowserContext(context); |
| 144 if (user_cloud_policy_manager) { | |
| 145 policy_provider = user_cloud_policy_manager; | |
| 146 policy_store = user_cloud_policy_manager->core()->store(); | |
| 147 } | |
| 131 #endif // defined(OS_CHROMEOS) | 148 #endif // defined(OS_CHROMEOS) |
| 132 | 149 |
| 133 std::unique_ptr<ProfilePolicyConnector> connector( | 150 std::unique_ptr<ProfilePolicyConnector> connector( |
| 134 new ProfilePolicyConnector()); | 151 new ProfilePolicyConnector()); |
| 135 | 152 |
| 136 if (test_providers_.empty()) { | 153 if (test_providers_.empty()) { |
| 137 connector->Init( | 154 connector->Init(user, schema_registry, policy_provider, policy_store); |
| 138 #if defined(OS_CHROMEOS) | |
| 139 user, | |
| 140 #endif | |
| 141 schema_registry, user_cloud_policy_manager); | |
| 142 } else { | 155 } else { |
| 143 PolicyServiceImpl::Providers providers; | 156 PolicyServiceImpl::Providers providers; |
| 144 providers.push_back(test_providers_.front()); | 157 providers.push_back(test_providers_.front()); |
| 145 test_providers_.pop_front(); | 158 test_providers_.pop_front(); |
| 146 std::unique_ptr<PolicyService> service(new PolicyServiceImpl(providers)); | 159 std::unique_ptr<PolicyService> service(new PolicyServiceImpl(providers)); |
| 147 connector->InitForTesting(std::move(service)); | 160 connector->InitForTesting(std::move(service)); |
| 148 } | 161 } |
| 149 | 162 |
| 150 connectors_[context] = connector.get(); | 163 connectors_[context] = connector.get(); |
| 151 return connector; | 164 return connector; |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 173 | 186 |
| 174 bool ProfilePolicyConnectorFactory::HasTestingFactory( | 187 bool ProfilePolicyConnectorFactory::HasTestingFactory( |
| 175 content::BrowserContext* context) { | 188 content::BrowserContext* context) { |
| 176 return false; | 189 return false; |
| 177 } | 190 } |
| 178 | 191 |
| 179 void ProfilePolicyConnectorFactory::CreateServiceNow( | 192 void ProfilePolicyConnectorFactory::CreateServiceNow( |
| 180 content::BrowserContext* context) {} | 193 content::BrowserContext* context) {} |
| 181 | 194 |
| 182 } // namespace policy | 195 } // namespace policy |
| OLD | NEW |