Index: chrome/browser/chromeos/login/login_utils.cc |
diff --git a/chrome/browser/chromeos/login/login_utils.cc b/chrome/browser/chromeos/login/login_utils.cc |
index cdf7261f9f759b8e9fd0a9ac9cd4c7e849471daa..9d14cc3e82d9d19ebb9e2100f29ea18508c83821 100644 |
--- a/chrome/browser/chromeos/login/login_utils.cc |
+++ b/chrome/browser/chromeos/login/login_utils.cc |
@@ -46,6 +46,8 @@ |
#include "chrome/browser/chromeos/login/screen_locker.h" |
#include "chrome/browser/chromeos/login/supervised_user_manager.h" |
#include "chrome/browser/chromeos/login/user_manager.h" |
+#include "chrome/browser/chromeos/policy/user_network_configuration_updater.h" |
+#include "chrome/browser/chromeos/policy/user_network_configuration_updater_factory.h" |
#include "chrome/browser/chromeos/settings/cros_settings.h" |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/first_run/first_run.h" |
@@ -140,7 +142,7 @@ class LoginUtilsImpl |
LoginStatusConsumer* consumer) OVERRIDE; |
virtual void RestoreAuthenticationSession(Profile* profile) OVERRIDE; |
virtual void InitRlzDelayed(Profile* user_profile) OVERRIDE; |
- virtual void StartCertLoader(Profile* user_profile) OVERRIDE; |
+ virtual void InitNSSCertDatabaseUsers(Profile* user_profile) OVERRIDE; |
// OAuth2LoginManager::Observer overrides. |
virtual void OnSessionRestoreStateChanged( |
@@ -204,9 +206,10 @@ class LoginUtilsImpl |
// Initializes RLZ. If |disabled| is true, RLZ pings are disabled. |
void InitRlz(Profile* user_profile, bool disabled); |
- // Starts CertLoader with the provided NSS database. It must be called at most |
- // once, and with the primary user's database. |
- void StartCertLoaderWithNSSDB(net::NSSCertDatabase* database); |
+ // Starts CertLoader with the provided NSS database and sets the database for |
+ // the user's NetworkConfigrationUpdater. It must be called at most once, and |
+ // with the primary user's database. |
+ void OnNSSCertDatabase(Profile* user_proilfe, net::NSSCertDatabase* database); |
// Attempts restarting the browser process and esures that this does |
// not happen while we are still fetching new OAuth refresh tokens. |
@@ -595,12 +598,12 @@ void LoginUtilsImpl::FinalizePrepareProfile(Profile* user_profile) { |
content::NotificationService::AllSources(), |
content::Details<Profile>(user_profile)); |
- // Initialize RLZ and CertLoader only for primary user. |
+ // Initialize RLZ, and sets user NSSDB where needed. Both should be done for |
+ // the primary user only. |
if (UserManager::Get()->GetPrimaryUser() == |
UserManager::Get()->GetUserByProfile(user_profile)) { |
InitRlzDelayed(user_profile); |
- if (CertLoader::IsInitialized()) |
- StartCertLoader(user_profile); |
+ InitNSSCertDatabaseUsers(user_profile); |
} |
// TODO(altimofeev): This pointer should probably never be NULL, but it looks |
// like LoginUtilsImpl::OnProfileCreated() may be getting called before |
@@ -653,14 +656,19 @@ void LoginUtilsImpl::InitRlz(Profile* user_profile, bool disabled) { |
#endif |
} |
-void LoginUtilsImpl::StartCertLoader(Profile* user_profile) { |
+void LoginUtilsImpl::InitNSSCertDatabaseUsers(Profile* user_profile) { |
GetNSSCertDatabaseForProfile( |
user_profile, |
- base::Bind(&LoginUtilsImpl::StartCertLoaderWithNSSDB, AsWeakPtr())); |
+ base::Bind(&LoginUtilsImpl::OnNSSCertDatabase, AsWeakPtr(), |
+ base::Unretained(user_profile))); |
} |
-void LoginUtilsImpl::StartCertLoaderWithNSSDB(net::NSSCertDatabase* database) { |
- CertLoader::Get()->StartWithNSSDB(database); |
+void LoginUtilsImpl::OnNSSCertDatabase(Profile* user_profile, |
+ net::NSSCertDatabase* database) { |
+ if (CertLoader::IsInitialized()) |
+ CertLoader::Get()->StartWithNSSDB(database); |
+ policy::UserNetworkConfigurationUpdaterFactory::GetForProfile(user_profile) |
+ ->SetCertDatabase(database); |
} |
void LoginUtilsImpl::CompleteOffTheRecordLogin(const GURL& start_url) { |