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

Side by Side Diff: chrome/browser/chromeos/policy/user_network_configuration_updater.cc

Issue 24153012: Fix cyclic dependency between ProfilePolicyConnector and PrefService. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed another bug for OTRProfile. 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 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/chromeos/policy/user_network_configuration_updater.h" 5 #include "chrome/browser/chromeos/policy/user_network_configuration_updater.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/bind_helpers.h" 8 #include "base/bind_helpers.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "chrome/browser/chromeos/login/user.h" 10 #include "chrome/browser/chromeos/login/user.h"
11 #include "chrome/browser/chromeos/net/onc_utils.h" 11 #include "chrome/browser/chromeos/net/onc_utils.h"
12 #include "chrome/browser/chromeos/policy/policy_cert_verifier.h" 12 #include "chrome/browser/chromeos/policy/policy_cert_verifier.h"
13 #include "chromeos/network/managed_network_configuration_handler.h" 13 #include "chromeos/network/managed_network_configuration_handler.h"
14 #include "chromeos/network/onc/onc_certificate_importer.h" 14 #include "chromeos/network/onc/onc_certificate_importer.h"
15 #include "content/public/browser/browser_thread.h" 15 #include "content/public/browser/browser_thread.h"
16 #include "net/cert/x509_certificate.h" 16 #include "net/cert/x509_certificate.h"
17 #include "policy/policy_constants.h" 17 #include "policy/policy_constants.h"
18 18
19 namespace policy { 19 namespace policy {
20 20
21 UserNetworkConfigurationUpdater::~UserNetworkConfigurationUpdater() {} 21 UserNetworkConfigurationUpdater::~UserNetworkConfigurationUpdater() {
22 DCHECK(cert_verifiers_.empty());
23 }
22 24
23 // static 25 // static
24 scoped_ptr<UserNetworkConfigurationUpdater> 26 scoped_ptr<UserNetworkConfigurationUpdater>
25 UserNetworkConfigurationUpdater::CreateForUserPolicy( 27 UserNetworkConfigurationUpdater::CreateForUserPolicy(
26 bool allow_trusted_certs_from_policy, 28 bool allow_trusted_certs_from_policy,
27 const chromeos::User& user, 29 const chromeos::User& user,
28 scoped_ptr<chromeos::onc::CertificateImporter> certificate_importer, 30 scoped_ptr<chromeos::onc::CertificateImporter> certificate_importer,
29 PolicyService* policy_service, 31 PolicyService* policy_service,
30 chromeos::ManagedNetworkConfigurationHandler* network_config_handler) { 32 chromeos::ManagedNetworkConfigurationHandler* network_config_handler) {
31 scoped_ptr<UserNetworkConfigurationUpdater> updater( 33 scoped_ptr<UserNetworkConfigurationUpdater> updater(
(...skipping 11 matching lines...) Expand all
43 const chromeos::User& user, 45 const chromeos::User& user,
44 scoped_ptr<chromeos::onc::CertificateImporter> certificate_importer, 46 scoped_ptr<chromeos::onc::CertificateImporter> certificate_importer,
45 PolicyService* policy_service, 47 PolicyService* policy_service,
46 chromeos::ManagedNetworkConfigurationHandler* network_config_handler) 48 chromeos::ManagedNetworkConfigurationHandler* network_config_handler)
47 : NetworkConfigurationUpdater(onc::ONC_SOURCE_USER_POLICY, 49 : NetworkConfigurationUpdater(onc::ONC_SOURCE_USER_POLICY,
48 key::kOpenNetworkConfiguration, 50 key::kOpenNetworkConfiguration,
49 certificate_importer.Pass(), 51 certificate_importer.Pass(),
50 policy_service, 52 policy_service,
51 network_config_handler), 53 network_config_handler),
52 allow_trusted_certificates_from_policy_(allow_trusted_certs_from_policy), 54 allow_trusted_certificates_from_policy_(allow_trusted_certs_from_policy),
53 user_(&user), 55 user_(&user) {}
54 cert_verifier_(NULL) {}
55 56
56 void UserNetworkConfigurationUpdater::SetPolicyCertVerifier( 57 void UserNetworkConfigurationUpdater::AddPolicyCertVerifier(
57 PolicyCertVerifier* cert_verifier) { 58 PolicyCertVerifier* cert_verifier) {
58 cert_verifier_ = cert_verifier; 59 DCHECK(cert_verifiers_.find(cert_verifier) == cert_verifiers_.end());
60 cert_verifiers_.insert(cert_verifier);
59 SetTrustAnchors(); 61 SetTrustAnchors();
60 } 62 }
61 63
64 void UserNetworkConfigurationUpdater::RemovePolicyCertVerifier(
65 PolicyCertVerifier* cert_verifier) {
66 size_t count = cert_verifiers_.erase(cert_verifier);
67 DCHECK(count > 0);
68 }
69
62 void UserNetworkConfigurationUpdater::GetWebTrustedCertificates( 70 void UserNetworkConfigurationUpdater::GetWebTrustedCertificates(
63 net::CertificateList* certs) const { 71 net::CertificateList* certs) const {
64 *certs = web_trust_certs_; 72 *certs = web_trust_certs_;
65 } 73 }
66 74
67 void UserNetworkConfigurationUpdater::ImportCertificates( 75 void UserNetworkConfigurationUpdater::ImportCertificates(
68 const base::ListValue& certificates_onc) { 76 const base::ListValue& certificates_onc) {
69 web_trust_certs_.clear(); 77 web_trust_certs_.clear();
70 certificate_importer_->ImportCertificates( 78 certificate_importer_->ImportCertificates(
71 certificates_onc, 79 certificates_onc,
72 onc_source_, 80 onc_source_,
73 allow_trusted_certificates_from_policy_ ? &web_trust_certs_ : NULL); 81 allow_trusted_certificates_from_policy_ ? &web_trust_certs_ : NULL);
74 82
75 SetTrustAnchors(); 83 SetTrustAnchors();
76 } 84 }
77 85
78 void UserNetworkConfigurationUpdater::ApplyNetworkPolicy( 86 void UserNetworkConfigurationUpdater::ApplyNetworkPolicy(
79 base::ListValue* network_configs_onc, 87 base::ListValue* network_configs_onc,
80 base::DictionaryValue* global_network_config) { 88 base::DictionaryValue* global_network_config) {
81 DCHECK(user_); 89 DCHECK(user_);
82 chromeos::onc::ExpandStringPlaceholdersInNetworksForUser(user_, 90 chromeos::onc::ExpandStringPlaceholdersInNetworksForUser(user_,
83 network_configs_onc); 91 network_configs_onc);
84 network_config_handler_->SetPolicy(onc_source_, 92 network_config_handler_->SetPolicy(onc_source_,
85 user_->username_hash(), 93 user_->username_hash(),
86 *network_configs_onc, 94 *network_configs_onc,
87 *global_network_config); 95 *global_network_config);
88 } 96 }
89 97
90 void UserNetworkConfigurationUpdater::SetTrustAnchors() { 98 void UserNetworkConfigurationUpdater::SetTrustAnchors() {
91 if (!cert_verifier_) 99 for (std::set<PolicyCertVerifier*>::const_iterator it =
92 return; 100 cert_verifiers_.begin();
93 content::BrowserThread::PostTask( 101 it != cert_verifiers_.end();
94 content::BrowserThread::IO, 102 ++it) {
95 FROM_HERE, 103 content::BrowserThread::PostTask(
96 base::Bind(&PolicyCertVerifier::SetTrustAnchors, 104 content::BrowserThread::IO,
97 base::Unretained(cert_verifier_), 105 FROM_HERE,
98 web_trust_certs_)); 106 base::Bind(&PolicyCertVerifier::SetTrustAnchors,
107 base::Unretained(*it),
108 web_trust_certs_));
Joao da Silva 2013/10/25 11:57:10 Leave a comment here explaining why it's safe to p
pneubeck (no reviews) 2013/10/25 12:17:00 Done.
109 }
99 } 110 }
100 111
101 } // namespace policy 112 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698