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

Side by Side Diff: chrome/browser/policy/profile_policy_connector_factory.cc

Issue 2606773002: Setup Chromad user policy plumbing (Closed)
Patch Set: Address remaining comments Created 3 years, 11 months 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 (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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/policy/profile_policy_connector.cc ('k') | chrome/browser/policy/profile_policy_connector_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698