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

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

Issue 1693383003: ChromeOS cryptohome should be able to use gaia id as user identifier. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed unit tests. Created 4 years, 9 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
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 <stddef.h> 7 #include <stddef.h>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
288 BrowserThread::PostTask( 288 BrowserThread::PostTask(
289 BrowserThread::IO, 289 BrowserThread::IO,
290 FROM_HERE, 290 FROM_HERE,
291 base::Bind(&crypto::InitializeTPMForChromeOSUser, 291 base::Bind(&crypto::InitializeTPMForChromeOSUser,
292 username_hash, info.token_slot_id)); 292 username_hash, info.token_slot_id));
293 } else { 293 } else {
294 NOTREACHED() << "TPMTokenInfoGetter reported invalid token."; 294 NOTREACHED() << "TPMTokenInfoGetter reported invalid token.";
295 } 295 }
296 } 296 }
297 297
298 void GetTPMInfoForUserOnUIThread(const std::string& username, 298 void GetTPMInfoForUserOnUIThread(const AccountId& account_id,
299 const std::string& username_hash) { 299 const std::string& username_hash) {
300 DCHECK_CURRENTLY_ON(BrowserThread::UI); 300 DCHECK_CURRENTLY_ON(BrowserThread::UI);
301 DVLOG(1) << "Getting TPM info from cryptohome for " 301 DVLOG(1) << "Getting TPM info from cryptohome for "
302 << " " << username << " " << username_hash; 302 << " " << account_id.Serialize() << " " << username_hash;
303 scoped_ptr<chromeos::TPMTokenInfoGetter> scoped_token_info_getter = 303 scoped_ptr<chromeos::TPMTokenInfoGetter> scoped_token_info_getter =
304 chromeos::TPMTokenInfoGetter::CreateForUserToken( 304 chromeos::TPMTokenInfoGetter::CreateForUserToken(
305 username, 305 account_id, chromeos::DBusThreadManager::Get()->GetCryptohomeClient(),
306 chromeos::DBusThreadManager::Get()->GetCryptohomeClient(),
307 base::ThreadTaskRunnerHandle::Get()); 306 base::ThreadTaskRunnerHandle::Get());
308 chromeos::TPMTokenInfoGetter* token_info_getter = 307 chromeos::TPMTokenInfoGetter* token_info_getter =
309 scoped_token_info_getter.get(); 308 scoped_token_info_getter.get();
310 309
311 // Bind |token_info_getter| to the callback to ensure it does not go away 310 // Bind |token_info_getter| to the callback to ensure it does not go away
312 // before TPM token info is fetched. 311 // before TPM token info is fetched.
313 // TODO(tbarzic, pneubeck): Handle this in a nicer way when this logic is 312 // TODO(tbarzic, pneubeck): Handle this in a nicer way when this logic is
314 // moved to a separate profile service. 313 // moved to a separate profile service.
315 token_info_getter->Start( 314 token_info_getter->Start(
316 base::Bind(&DidGetTPMInfoForUserOnUIThread, 315 base::Bind(&DidGetTPMInfoForUserOnUIThread,
317 base::Passed(&scoped_token_info_getter), 316 base::Passed(&scoped_token_info_getter),
318 username_hash)); 317 username_hash));
319 } 318 }
320 319
321 void StartTPMSlotInitializationOnIOThread(const std::string& username, 320 void StartTPMSlotInitializationOnIOThread(const AccountId& account_id,
322 const std::string& username_hash) { 321 const std::string& username_hash) {
323 DCHECK_CURRENTLY_ON(BrowserThread::IO); 322 DCHECK_CURRENTLY_ON(BrowserThread::IO);
324 323
325 BrowserThread::PostTask( 324 BrowserThread::PostTask(
326 BrowserThread::UI, 325 BrowserThread::UI, FROM_HERE,
327 FROM_HERE, 326 base::Bind(&GetTPMInfoForUserOnUIThread, account_id, username_hash));
328 base::Bind(&GetTPMInfoForUserOnUIThread, username, username_hash));
329 } 327 }
330 328
331 void StartNSSInitOnIOThread(const std::string& username, 329 void StartNSSInitOnIOThread(const AccountId& account_id,
332 const std::string& username_hash, 330 const std::string& username_hash,
333 const base::FilePath& path) { 331 const base::FilePath& path) {
334 DCHECK_CURRENTLY_ON(BrowserThread::IO); 332 DCHECK_CURRENTLY_ON(BrowserThread::IO);
335 DVLOG(1) << "Starting NSS init for " << username 333 DVLOG(1) << "Starting NSS init for " << account_id.Serialize()
336 << " hash:" << username_hash; 334 << " hash:" << username_hash;
337 335
338 // Make sure NSS is initialized for the user. 336 // Make sure NSS is initialized for the user.
339 crypto::InitializeNSSForChromeOSUser(username_hash, path); 337 crypto::InitializeNSSForChromeOSUser(username_hash, path);
340 338
341 // Check if it's OK to initialize TPM for the user before continuing. This 339 // Check if it's OK to initialize TPM for the user before continuing. This
342 // may not be the case if the TPM slot initialization was previously 340 // may not be the case if the TPM slot initialization was previously
343 // requested for the same user. 341 // requested for the same user.
344 if (!crypto::ShouldInitializeTPMForChromeOSUser(username_hash)) 342 if (!crypto::ShouldInitializeTPMForChromeOSUser(username_hash))
345 return; 343 return;
346 344
347 crypto::WillInitializeTPMForChromeOSUser(username_hash); 345 crypto::WillInitializeTPMForChromeOSUser(username_hash);
348 346
349 if (crypto::IsTPMTokenEnabledForNSS()) { 347 if (crypto::IsTPMTokenEnabledForNSS()) {
350 if (crypto::IsTPMTokenReady(base::Bind( 348 if (crypto::IsTPMTokenReady(
351 &StartTPMSlotInitializationOnIOThread, username, username_hash))) { 349 base::Bind(&StartTPMSlotInitializationOnIOThread, account_id,
352 StartTPMSlotInitializationOnIOThread(username, username_hash); 350 username_hash))) {
351 StartTPMSlotInitializationOnIOThread(account_id, username_hash);
353 } else { 352 } else {
354 DVLOG(1) << "Waiting for tpm ready ..."; 353 DVLOG(1) << "Waiting for tpm ready ...";
355 } 354 }
356 } else { 355 } else {
357 crypto::InitializePrivateSoftwareSlotForChromeOSUser(username_hash); 356 crypto::InitializePrivateSoftwareSlotForChromeOSUser(username_hash);
358 } 357 }
359 } 358 }
360 #endif // defined(OS_CHROMEOS) 359 #endif // defined(OS_CHROMEOS)
361 360
362 #if defined(USE_NSS_CERTS) 361 #if defined(USE_NSS_CERTS)
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 if (user_manager) { 438 if (user_manager) {
440 const user_manager::User* user = 439 const user_manager::User* user =
441 chromeos::ProfileHelper::Get()->GetUserByProfile(profile); 440 chromeos::ProfileHelper::Get()->GetUserByProfile(profile);
442 // No need to initialize NSS for users with empty username hash: 441 // No need to initialize NSS for users with empty username hash:
443 // Getters for a user's NSS slots always return NULL slot if the user's 442 // Getters for a user's NSS slots always return NULL slot if the user's
444 // username hash is empty, even when the NSS is not initialized for the 443 // username hash is empty, even when the NSS is not initialized for the
445 // user. 444 // user.
446 if (user && !user->username_hash().empty()) { 445 if (user && !user->username_hash().empty()) {
447 params->username_hash = user->username_hash(); 446 params->username_hash = user->username_hash();
448 DCHECK(!params->username_hash.empty()); 447 DCHECK(!params->username_hash.empty());
449 BrowserThread::PostTask(BrowserThread::IO, 448 BrowserThread::PostTask(
450 FROM_HERE, 449 BrowserThread::IO, FROM_HERE,
451 base::Bind(&StartNSSInitOnIOThread, 450 base::Bind(&StartNSSInitOnIOThread, user->GetAccountId(),
452 user->email(), 451 user->username_hash(), profile->GetPath()));
453 user->username_hash(),
454 profile->GetPath()));
455 452
456 // Use the device-wide system key slot only if the user is affiliated on 453 // Use the device-wide system key slot only if the user is affiliated on
457 // the device. 454 // the device.
458 params->use_system_key_slot = user->IsAffiliated(); 455 params->use_system_key_slot = user->IsAffiliated();
459 } 456 }
460 } 457 }
461 458
462 chromeos::CertificateProviderService* cert_provider_service = 459 chromeos::CertificateProviderService* cert_provider_service =
463 chromeos::CertificateProviderServiceFactory::GetForBrowserContext( 460 chromeos::CertificateProviderServiceFactory::GetForBrowserContext(
464 profile); 461 profile);
(...skipping 857 matching lines...) Expand 10 before | Expand all | Expand 10 after
1322 make_scoped_ptr(new DevToolsNetworkTransactionFactory( 1319 make_scoped_ptr(new DevToolsNetworkTransactionFactory(
1323 network_controller_handle_.GetController(), shared_session)), 1320 network_controller_handle_.GetController(), shared_session)),
1324 std::move(backend), true /* set_up_quic_server_info */)); 1321 std::move(backend), true /* set_up_quic_server_info */));
1325 } 1322 }
1326 1323
1327 void ProfileIOData::SetCookieSettingsForTesting( 1324 void ProfileIOData::SetCookieSettingsForTesting(
1328 content_settings::CookieSettings* cookie_settings) { 1325 content_settings::CookieSettings* cookie_settings) {
1329 DCHECK(!cookie_settings_.get()); 1326 DCHECK(!cookie_settings_.get());
1330 cookie_settings_ = cookie_settings; 1327 cookie_settings_ = cookie_settings;
1331 } 1328 }
OLDNEW
« no previous file with comments | « chrome/browser/policy/cloud/cloud_policy_browsertest.cc ('k') | chrome/browser/ui/startup/startup_browser_creator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698