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 57df96531f530a6a7ba8eadc8d30877f4c6d45db..cdf7261f9f759b8e9fd0a9ac9cd4c7e849471daa 100644 |
--- a/chrome/browser/chromeos/login/login_utils.cc |
+++ b/chrome/browser/chromeos/login/login_utils.cc |
@@ -51,6 +51,7 @@ |
#include "chrome/browser/first_run/first_run.h" |
#include "chrome/browser/google/google_util_chromeos.h" |
#include "chrome/browser/lifetime/application_lifetime.h" |
+#include "chrome/browser/net/nss_context.h" |
#include "chrome/browser/pref_service_flags_storage.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/profiles/profile_manager.h" |
@@ -63,6 +64,7 @@ |
#include "chrome/common/chrome_switches.h" |
#include "chrome/common/logging_chrome.h" |
#include "chrome/common/pref_names.h" |
+#include "chromeos/cert_loader.h" |
#include "chromeos/chromeos_switches.h" |
#include "chromeos/cryptohome/cryptohome_util.h" |
#include "chromeos/dbus/cryptohome_client.h" |
@@ -81,6 +83,10 @@ |
using content::BrowserThread; |
+namespace net { |
+class NSSCertDatabase; |
+} |
+ |
namespace chromeos { |
namespace { |
@@ -134,6 +140,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; |
// OAuth2LoginManager::Observer overrides. |
virtual void OnSessionRestoreStateChanged( |
@@ -197,6 +204,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); |
+ |
// Attempts restarting the browser process and esures that this does |
// not happen while we are still fetching new OAuth refresh tokens. |
void AttemptRestart(Profile* profile); |
@@ -584,10 +595,12 @@ void LoginUtilsImpl::FinalizePrepareProfile(Profile* user_profile) { |
content::NotificationService::AllSources(), |
content::Details<Profile>(user_profile)); |
- // Initialize RLZ only for primary user. |
+ // Initialize RLZ and CertLoader only for primary user. |
if (UserManager::Get()->GetPrimaryUser() == |
UserManager::Get()->GetUserByProfile(user_profile)) { |
InitRlzDelayed(user_profile); |
+ if (CertLoader::IsInitialized()) |
+ StartCertLoader(user_profile); |
} |
// TODO(altimofeev): This pointer should probably never be NULL, but it looks |
// like LoginUtilsImpl::OnProfileCreated() may be getting called before |
@@ -640,6 +653,16 @@ void LoginUtilsImpl::InitRlz(Profile* user_profile, bool disabled) { |
#endif |
} |
+void LoginUtilsImpl::StartCertLoader(Profile* user_profile) { |
+ GetNSSCertDatabaseForProfile( |
+ user_profile, |
+ base::Bind(&LoginUtilsImpl::StartCertLoaderWithNSSDB, AsWeakPtr())); |
+} |
+ |
+void LoginUtilsImpl::StartCertLoaderWithNSSDB(net::NSSCertDatabase* database) { |
+ CertLoader::Get()->StartWithNSSDB(database); |
+} |
+ |
void LoginUtilsImpl::CompleteOffTheRecordLogin(const GURL& start_url) { |
VLOG(1) << "Completing incognito login"; |