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

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

Issue 24153012: Fix cyclic dependency between ProfilePolicyConnector and PrefService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed. Created 7 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 | Annotate | Revision Log
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.h" 5 #include "chrome/browser/policy/profile_policy_connector.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "chrome/browser/browser_process.h" 10 #include "chrome/browser/browser_process.h"
11 #include "chrome/browser/policy/browser_policy_connector.h" 11 #include "chrome/browser/policy/browser_policy_connector.h"
12 #include "chrome/browser/policy/cloud/cloud_policy_manager.h" 12 #include "chrome/browser/policy/cloud/cloud_policy_manager.h"
13 #include "chrome/browser/policy/configuration_policy_provider.h" 13 #include "chrome/browser/policy/configuration_policy_provider.h"
14 #include "chrome/browser/policy/policy_service.h" 14 #include "chrome/browser/policy/policy_service.h"
15 #include "chrome/browser/policy/schema_registry_service.h"
16 #include "chrome/browser/policy/schema_registry_service_factory.h"
17 15
18 #if defined(OS_CHROMEOS) 16 #if defined(OS_CHROMEOS)
19 #include "base/bind.h"
20 #include "base/prefs/pref_service.h"
21 #include "chrome/browser/chromeos/login/user.h" 17 #include "chrome/browser/chromeos/login/user.h"
22 #include "chrome/browser/chromeos/login/user_manager.h" 18 #include "chrome/browser/chromeos/login/user_manager.h"
23 #include "chrome/browser/chromeos/policy/device_local_account_policy_provider.h" 19 #include "chrome/browser/chromeos/policy/device_local_account_policy_provider.h"
24 #include "chrome/browser/chromeos/policy/login_profile_policy_provider.h" 20 #include "chrome/browser/chromeos/policy/login_profile_policy_provider.h"
25 #include "chrome/browser/policy/policy_service.h" 21 #include "chrome/browser/policy/policy_service.h"
26 #include "chrome/common/pref_names.h"
27 #endif 22 #endif
28 23
29 namespace policy { 24 namespace policy {
30 25
31 ProfilePolicyConnector::ProfilePolicyConnector(Profile* profile) 26 ProfilePolicyConnector::ProfilePolicyConnector()
32 :
33 #if defined(OS_CHROMEOS) 27 #if defined(OS_CHROMEOS)
34 is_primary_user_(false), 28 : is_primary_user_(false)
35 weak_ptr_factory_(this),
36 #endif 29 #endif
37 profile_(profile) {} 30 {}
38 31
39 ProfilePolicyConnector::~ProfilePolicyConnector() {} 32 ProfilePolicyConnector::~ProfilePolicyConnector() {}
40 33
41 void ProfilePolicyConnector::Init( 34 void ProfilePolicyConnector::Init(
42 bool force_immediate_load, 35 bool force_immediate_load,
43 #if defined(OS_CHROMEOS) 36 #if defined(OS_CHROMEOS)
44 const chromeos::User* user, 37 const chromeos::User* user,
38 SchemaRegistry* schema_registry,
45 #endif 39 #endif
46 CloudPolicyManager* user_cloud_policy_manager) { 40 CloudPolicyManager* user_cloud_policy_manager) {
47 BrowserPolicyConnector* connector = 41 BrowserPolicyConnector* connector =
48 g_browser_process->browser_policy_connector(); 42 g_browser_process->browser_policy_connector();
49 // |providers| contains a list of the policy providers available for the 43 // |providers| contains a list of the policy providers available for the
50 // PolicyService of this connector. 44 // PolicyService of this connector.
51 std::vector<ConfigurationPolicyProvider*> providers; 45 std::vector<ConfigurationPolicyProvider*> providers;
52 46
53 if (user_cloud_policy_manager) 47 if (user_cloud_policy_manager)
54 providers.push_back(user_cloud_policy_manager); 48 providers.push_back(user_cloud_policy_manager);
55 49
56 #if defined(OS_CHROMEOS) 50 #if defined(OS_CHROMEOS)
57 if (!user) { 51 if (!user) {
52 DCHECK(schema_registry);
58 // This case occurs for the signin profile. 53 // This case occurs for the signin profile.
59 special_user_policy_provider_.reset( 54 special_user_policy_provider_.reset(
60 new LoginProfilePolicyProvider(connector->GetPolicyService())); 55 new LoginProfilePolicyProvider(connector->GetPolicyService()));
61 special_user_policy_provider_->Init( 56 special_user_policy_provider_->Init(schema_registry);
62 SchemaRegistryServiceFactory::GetForContext(profile_));
63 } else { 57 } else {
64 // |user| should never be NULL except for the signin profile. 58 // |user| should never be NULL except for the signin profile.
65 is_primary_user_ = user == chromeos::UserManager::Get()->GetPrimaryUser(); 59 is_primary_user_ = user == chromeos::UserManager::Get()->GetPrimaryUser();
66 if (user->GetType() == chromeos::User::USER_TYPE_PUBLIC_ACCOUNT) 60 if (user->GetType() == chromeos::User::USER_TYPE_PUBLIC_ACCOUNT) {
67 InitializeDeviceLocalAccountPolicyProvider(user->email()); 61 InitializeDeviceLocalAccountPolicyProvider(user->email(),
62 schema_registry);
63 }
68 } 64 }
69 if (special_user_policy_provider_) 65 if (special_user_policy_provider_)
70 providers.push_back(special_user_policy_provider_.get()); 66 providers.push_back(special_user_policy_provider_.get());
71 #endif 67 #endif
72 68
73 policy_service_ = connector->CreatePolicyService(providers); 69 policy_service_ = connector->CreatePolicyService(providers);
74 70
75 #if defined(OS_CHROMEOS) 71 #if defined(OS_CHROMEOS)
76 if (is_primary_user_) { 72 if (is_primary_user_) {
77 if (user_cloud_policy_manager) 73 if (user_cloud_policy_manager)
(...skipping 11 matching lines...) Expand all
89 void ProfilePolicyConnector::Shutdown() { 85 void ProfilePolicyConnector::Shutdown() {
90 #if defined(OS_CHROMEOS) 86 #if defined(OS_CHROMEOS)
91 if (is_primary_user_) 87 if (is_primary_user_)
92 g_browser_process->browser_policy_connector()->SetUserPolicyDelegate(NULL); 88 g_browser_process->browser_policy_connector()->SetUserPolicyDelegate(NULL);
93 if (special_user_policy_provider_) 89 if (special_user_policy_provider_)
94 special_user_policy_provider_->Shutdown(); 90 special_user_policy_provider_->Shutdown();
95 #endif 91 #endif
96 } 92 }
97 93
98 #if defined(OS_CHROMEOS) 94 #if defined(OS_CHROMEOS)
99 base::Closure ProfilePolicyConnector::GetPolicyCertTrustedCallback() {
100 return base::Bind(&ProfilePolicyConnector::SetUsedPolicyCertificatesOnce,
101 weak_ptr_factory_.GetWeakPtr());
102 }
103 #endif
104
105 bool ProfilePolicyConnector::UsedPolicyCertificates() {
106 #if defined(OS_CHROMEOS)
107 return profile_->GetPrefs()->GetBoolean(prefs::kUsedPolicyCertificatesOnce);
108 #else
109 return false;
110 #endif
111 }
112
113 #if defined(OS_CHROMEOS)
114 void ProfilePolicyConnector::SetUsedPolicyCertificatesOnce() {
115 profile_->GetPrefs()->SetBoolean(prefs::kUsedPolicyCertificatesOnce, true);
116 }
117
118 void ProfilePolicyConnector::InitializeDeviceLocalAccountPolicyProvider( 95 void ProfilePolicyConnector::InitializeDeviceLocalAccountPolicyProvider(
119 const std::string& username) { 96 const std::string& username,
97 SchemaRegistry* schema_registry) {
120 BrowserPolicyConnector* connector = 98 BrowserPolicyConnector* connector =
121 g_browser_process->browser_policy_connector(); 99 g_browser_process->browser_policy_connector();
122 DeviceLocalAccountPolicyService* device_local_account_policy_service = 100 DeviceLocalAccountPolicyService* device_local_account_policy_service =
123 connector->GetDeviceLocalAccountPolicyService(); 101 connector->GetDeviceLocalAccountPolicyService();
124 if (!device_local_account_policy_service) 102 if (!device_local_account_policy_service)
125 return; 103 return;
126 special_user_policy_provider_.reset(new DeviceLocalAccountPolicyProvider( 104 special_user_policy_provider_.reset(new DeviceLocalAccountPolicyProvider(
127 username, device_local_account_policy_service)); 105 username, device_local_account_policy_service));
128 special_user_policy_provider_->Init( 106 special_user_policy_provider_->Init(schema_registry);
129 SchemaRegistryServiceFactory::GetForContext(profile_));
130 } 107 }
131 #endif 108 #endif
132 109
133 } // namespace policy 110 } // namespace policy
OLDNEW
« no previous file with comments | « chrome/browser/policy/profile_policy_connector.h ('k') | chrome/browser/policy/profile_policy_connector_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698