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

Side by Side Diff: chrome/browser/profiles/profile_io_data.cc

Issue 317613004: Remove usage of singleton software_slot_ in nss on ChromeOS (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 5 months 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/profiles/profile_io_data.h" 5 #include "chrome/browser/profiles/profile_io_data.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 281 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
282 282
283 BrowserThread::PostTask( 283 BrowserThread::PostTask(
284 BrowserThread::UI, 284 BrowserThread::UI,
285 FROM_HERE, 285 FROM_HERE,
286 base::Bind(&GetTPMInfoForUserOnUIThread, username, username_hash)); 286 base::Bind(&GetTPMInfoForUserOnUIThread, username, username_hash));
287 } 287 }
288 288
289 void StartNSSInitOnIOThread(const std::string& username, 289 void StartNSSInitOnIOThread(const std::string& username,
290 const std::string& username_hash, 290 const std::string& username_hash,
291 const base::FilePath& path, 291 const base::FilePath& path) {
292 bool is_primary_user) {
293 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 292 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
294 DVLOG(1) << "Starting NSS init for " << username 293 DVLOG(1) << "Starting NSS init for " << username
295 << " hash:" << username_hash 294 << " hash:" << username_hash;
296 << " is_primary_user:" << is_primary_user;
297 295
298 if (!crypto::InitializeNSSForChromeOSUser( 296 // Make sure NSS is initialized for the user.
299 username, username_hash, is_primary_user, path)) { 297 crypto::InitializeNSSForChromeOSUser(username, username_hash, path);
300 // If the user already exists in nss_util's map, it is already initialized 298
301 // or in the process of being initialized. In either case, there's no need 299 // Check if it's OK to initialize TPM for the user before continuing. This
302 // to do anything. 300 // may not be the case if the TPM slot initialization was previously
301 // requested for the same user.
302 if (!crypto::ShouldInitializeTPMForChromeOSUser(username_hash))
303 return; 303 return;
304 } 304
305 crypto::WillInitializeTPMForChromeOSUser(username_hash);
305 306
306 if (crypto::IsTPMTokenEnabledForNSS()) { 307 if (crypto::IsTPMTokenEnabledForNSS()) {
307 if (crypto::IsTPMTokenReady(base::Bind( 308 if (crypto::IsTPMTokenReady(base::Bind(
308 &StartTPMSlotInitializationOnIOThread, username, username_hash))) { 309 &StartTPMSlotInitializationOnIOThread, username, username_hash))) {
309 StartTPMSlotInitializationOnIOThread(username, username_hash); 310 StartTPMSlotInitializationOnIOThread(username, username_hash);
310 } else { 311 } else {
311 DVLOG(1) << "Waiting for tpm ready ..."; 312 DVLOG(1) << "Waiting for tpm ready ...";
312 } 313 }
313 } else { 314 } else {
314 crypto::InitializePrivateSoftwareSlotForChromeOSUser(username_hash); 315 crypto::InitializePrivateSoftwareSlotForChromeOSUser(username_hash);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 SupervisedUserService* supervised_user_service = 354 SupervisedUserService* supervised_user_service =
354 SupervisedUserServiceFactory::GetForProfile(profile); 355 SupervisedUserServiceFactory::GetForProfile(profile);
355 params->supervised_user_url_filter = 356 params->supervised_user_url_filter =
356 supervised_user_service->GetURLFilterForIOThread(); 357 supervised_user_service->GetURLFilterForIOThread();
357 #endif 358 #endif
358 #if defined(OS_CHROMEOS) 359 #if defined(OS_CHROMEOS)
359 chromeos::UserManager* user_manager = chromeos::UserManager::Get(); 360 chromeos::UserManager* user_manager = chromeos::UserManager::Get();
360 if (user_manager) { 361 if (user_manager) {
361 chromeos::User* user = 362 chromeos::User* user =
362 chromeos::ProfileHelper::Get()->GetUserByProfile(profile); 363 chromeos::ProfileHelper::Get()->GetUserByProfile(profile);
363 if (user) { 364 // No need to initialize NSS for users with empty username hash:
365 // Getters for a user's NSS slots always return NULL slot if the user's
366 // username hash is empty, even when the NSS is not initialized for the
367 // user.
368 if (user && !user->username_hash().empty()) {
364 params->username_hash = user->username_hash(); 369 params->username_hash = user->username_hash();
365 bool is_primary_user = (user_manager->GetPrimaryUser() == user);
366 BrowserThread::PostTask(BrowserThread::IO, 370 BrowserThread::PostTask(BrowserThread::IO,
367 FROM_HERE, 371 FROM_HERE,
368 base::Bind(&StartNSSInitOnIOThread, 372 base::Bind(&StartNSSInitOnIOThread,
369 user->email(), 373 user->email(),
370 user->username_hash(), 374 user->username_hash(),
371 profile->GetPath(), 375 profile->GetPath()));
372 is_primary_user));
373 } 376 }
374 } 377 }
375 if (params->username_hash.empty()) 378 if (params->username_hash.empty())
376 LOG(WARNING) << "no username_hash"; 379 LOG(WARNING) << "No username_hash; skipped NSS initialization.";
377 #endif 380 #endif
378 381
379 params->profile = profile; 382 params->profile = profile;
380 params->prerender_tracker = g_browser_process->prerender_tracker(); 383 params->prerender_tracker = g_browser_process->prerender_tracker();
381 profile_params_.reset(params.release()); 384 profile_params_.reset(params.release());
382 385
383 ChromeNetworkDelegate::InitializePrefsOnUIThread( 386 ChromeNetworkDelegate::InitializePrefsOnUIThread(
384 &enable_referrers_, 387 &enable_referrers_,
385 &enable_do_not_track_, 388 &enable_do_not_track_,
386 &force_safesearch_, 389 &force_safesearch_,
(...skipping 861 matching lines...) Expand 10 before | Expand all | Expand 10 after
1248 void ProfileIOData::SetCookieSettingsForTesting( 1251 void ProfileIOData::SetCookieSettingsForTesting(
1249 CookieSettings* cookie_settings) { 1252 CookieSettings* cookie_settings) {
1250 DCHECK(!cookie_settings_.get()); 1253 DCHECK(!cookie_settings_.get());
1251 cookie_settings_ = cookie_settings; 1254 cookie_settings_ = cookie_settings;
1252 } 1255 }
1253 1256
1254 void ProfileIOData::set_signin_names_for_testing( 1257 void ProfileIOData::set_signin_names_for_testing(
1255 SigninNamesOnIOThread* signin_names) { 1258 SigninNamesOnIOThread* signin_names) {
1256 signin_names_.reset(signin_names); 1259 signin_names_.reset(signin_names);
1257 } 1260 }
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/ownership/owner_settings_service.cc ('k') | chromeos/tpm_token_loader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698