| Index: chrome/browser/chromeos/policy/user_network_configuration_updater.cc
|
| diff --git a/chrome/browser/chromeos/policy/user_network_configuration_updater.cc b/chrome/browser/chromeos/policy/user_network_configuration_updater.cc
|
| index 49c2552ded99d32337fc11d173e004524e360862..8bcf47baded5d816320b923b58120bc29aba8790 100644
|
| --- a/chrome/browser/chromeos/policy/user_network_configuration_updater.cc
|
| +++ b/chrome/browser/chromeos/policy/user_network_configuration_updater.cc
|
| @@ -18,7 +18,9 @@
|
|
|
| namespace policy {
|
|
|
| -UserNetworkConfigurationUpdater::~UserNetworkConfigurationUpdater() {}
|
| +UserNetworkConfigurationUpdater::~UserNetworkConfigurationUpdater() {
|
| + DCHECK(cert_verifiers_.empty());
|
| +}
|
|
|
| // static
|
| scoped_ptr<UserNetworkConfigurationUpdater>
|
| @@ -50,15 +52,21 @@ UserNetworkConfigurationUpdater::UserNetworkConfigurationUpdater(
|
| policy_service,
|
| network_config_handler),
|
| allow_trusted_certificates_from_policy_(allow_trusted_certs_from_policy),
|
| - user_(&user),
|
| - cert_verifier_(NULL) {}
|
| + user_(&user) {}
|
|
|
| -void UserNetworkConfigurationUpdater::SetPolicyCertVerifier(
|
| +void UserNetworkConfigurationUpdater::AddPolicyCertVerifier(
|
| PolicyCertVerifier* cert_verifier) {
|
| - cert_verifier_ = cert_verifier;
|
| + DCHECK(cert_verifiers_.find(cert_verifier) == cert_verifiers_.end());
|
| + cert_verifiers_.insert(cert_verifier);
|
| SetTrustAnchors();
|
| }
|
|
|
| +void UserNetworkConfigurationUpdater::RemovePolicyCertVerifier(
|
| + PolicyCertVerifier* cert_verifier) {
|
| + size_t count = cert_verifiers_.erase(cert_verifier);
|
| + DCHECK(count > 0);
|
| +}
|
| +
|
| void UserNetworkConfigurationUpdater::GetWebTrustedCertificates(
|
| net::CertificateList* certs) const {
|
| *certs = web_trust_certs_;
|
| @@ -88,14 +96,20 @@ void UserNetworkConfigurationUpdater::ApplyNetworkPolicy(
|
| }
|
|
|
| void UserNetworkConfigurationUpdater::SetTrustAnchors() {
|
| - if (!cert_verifier_)
|
| - return;
|
| - content::BrowserThread::PostTask(
|
| - content::BrowserThread::IO,
|
| - FROM_HERE,
|
| - base::Bind(&PolicyCertVerifier::SetTrustAnchors,
|
| - base::Unretained(cert_verifier_),
|
| - web_trust_certs_));
|
| + for (std::set<PolicyCertVerifier*>::const_iterator it =
|
| + cert_verifiers_.begin();
|
| + it != cert_verifiers_.end();
|
| + ++it) {
|
| + // It's safe to use base::Unretained here, because profile_io_data which
|
| + // owns the CertVerifier is deleted by a DeleteSoon on IO, i.e. after all
|
| + // pending tasks on IO are finished.
|
| + content::BrowserThread::PostTask(
|
| + content::BrowserThread::IO,
|
| + FROM_HERE,
|
| + base::Bind(&PolicyCertVerifier::SetTrustAnchors,
|
| + base::Unretained(*it),
|
| + web_trust_certs_));
|
| + }
|
| }
|
|
|
| } // namespace policy
|
|
|