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 |