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

Side by Side Diff: chrome/browser/chromeos/login/login_utils.cc

Issue 14139003: Chrome OS multi-profiles backend and UI. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 8 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/chromeos/login/login_utils.h" 5 #include "chrome/browser/chromeos/login/login_utils.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/chromeos/chromeos_version.h" 10 #include "base/chromeos/chromeos_version.h"
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 void LoginUtilsImpl::PrepareProfile( 319 void LoginUtilsImpl::PrepareProfile(
320 const UserContext& user_context, 320 const UserContext& user_context,
321 const std::string& display_email, 321 const std::string& display_email,
322 bool using_oauth, 322 bool using_oauth,
323 bool has_cookies, 323 bool has_cookies,
324 LoginUtils::Delegate* delegate) { 324 LoginUtils::Delegate* delegate) {
325 BootTimesLoader* btl = BootTimesLoader::Get(); 325 BootTimesLoader* btl = BootTimesLoader::Get();
326 326
327 VLOG(1) << "Completing login for " << user_context.username; 327 VLOG(1) << "Completing login for " << user_context.username;
328 328
329 // TODO(nkostylev): Eliminate this flag.
330 bool is_primary_user = !UserManager::Get()->IsUserLoggedIn();
Dmitry Polukhin 2013/04/11 13:34:15 Please move definition closer to use.
Nikita (slow) 2013/04/12 15:41:25 Done.
331
329 btl->AddLoginTimeMarker("StartSession-Start", false); 332 btl->AddLoginTimeMarker("StartSession-Start", false);
330 DBusThreadManager::Get()->GetSessionManagerClient()->StartSession( 333 DBusThreadManager::Get()->GetSessionManagerClient()->StartSession(
331 user_context.username); 334 user_context.username);
332 btl->AddLoginTimeMarker("StartSession-End", false); 335 btl->AddLoginTimeMarker("StartSession-End", false);
333 336
334 btl->AddLoginTimeMarker("UserLoggedIn-Start", false); 337 btl->AddLoginTimeMarker("UserLoggedIn-Start", false);
335 UserManager* user_manager = UserManager::Get(); 338 UserManager* user_manager = UserManager::Get();
336 user_manager->UserLoggedIn(user_context.username, 339 user_manager->UserLoggedIn(user_context.username,
337 user_context.username_hash, 340 user_context.username_hash,
338 false); 341 false);
339 btl->AddLoginTimeMarker("UserLoggedIn-End", false); 342 btl->AddLoginTimeMarker("UserLoggedIn-End", false);
340 343
341 // Switch log file as soon as possible. 344 // Switch log file as soon as possible.
342 if (base::chromeos::IsRunningOnChromeOS()) 345 if (base::chromeos::IsRunningOnChromeOS())
343 logging::RedirectChromeLogging(*(CommandLine::ForCurrentProcess())); 346 logging::RedirectChromeLogging(*(CommandLine::ForCurrentProcess()));
344 347
345 // Update user's displayed email. 348 // Update user's displayed email.
346 if (!display_email.empty()) 349 if (!display_email.empty())
347 user_manager->SaveUserDisplayEmail(user_context.username, display_email); 350 user_manager->SaveUserDisplayEmail(user_context.username, display_email);
348 351
349 user_context_ = user_context; 352 user_context_ = user_context;
350 353
351 using_oauth_ = using_oauth; 354 using_oauth_ = using_oauth;
352 has_web_auth_cookies_ = has_cookies; 355 has_web_auth_cookies_ = has_cookies;
353 delegate_ = delegate; 356 delegate_ = delegate;
354 InitSessionRestoreStrategy(); 357 InitSessionRestoreStrategy();
355 358
356 policy::BrowserPolicyConnector* connector = 359 bool wait_for_policy_fetch = false;
357 g_browser_process->browser_policy_connector();
358 360
359 // If this is an enterprise device and the user belongs to the enterprise 361 // TODO(nkostylev): Figure out implementation for multiple-profiles.
360 // domain, then wait for a policy fetch before logging the user in. This 362 if (is_primary_user) {
361 // will delay Profile creation until the policy is fetched, so that features 363 policy::BrowserPolicyConnector* connector =
362 // controlled by policy (e.g. Sync, Startup tabs) only start after the 364 g_browser_process->browser_policy_connector();
363 // PrefService has the right values.
364 // Profile creation is also resumed if the fetch attempt fails.
365 bool wait_for_policy_fetch =
366 using_oauth_ &&
367 authenticator_.get() &&
368 (connector->GetUserAffiliation(user_context_.username) ==
369 policy::USER_AFFILIATION_MANAGED);
370 365
371 // Initialize user policy before the profile is created so the profile 366 // If this is an enterprise device and the user belongs to the enterprise
372 // initialization code sees the cached policy settings. 367 // domain, then wait for a policy fetch before logging the user in. This
373 connector->InitializeUserPolicy(user_context_.username, 368 // will delay Profile creation until the policy is fetched, so that features
374 user_manager->IsLoggedInAsPublicAccount(), 369 // controlled by policy (e.g. Sync, Startup tabs) only start after the
375 wait_for_policy_fetch); 370 // PrefService has the right values.
371 // Profile creation is also resumed if the fetch attempt fails.
372 wait_for_policy_fetch =
373 using_oauth_ &&
374 authenticator_.get() &&
375 (connector->GetUserAffiliation(user_context_.username) ==
376 policy::USER_AFFILIATION_MANAGED);
377
378 // Initialize user policy before the profile is created so the profile
379 // initialization code sees the cached policy settings.
380 connector->InitializeUserPolicy(user_context_.username,
381 user_manager->IsLoggedInAsPublicAccount(),
382 wait_for_policy_fetch);
383 }
376 384
377 // The default profile will have been changed because the ProfileManager 385 // The default profile will have been changed because the ProfileManager
378 // will process the notification that the UserManager sends out. 386 // will process the notification that the UserManager sends out so
387 // username_hash has been already propogated to ProfileManager.
379 ProfileManager::CreateDefaultProfileAsync( 388 ProfileManager::CreateDefaultProfileAsync(
380 base::Bind(&LoginUtilsImpl::OnProfileCreated, AsWeakPtr())); 389 base::Bind(&LoginUtilsImpl::OnProfileCreated, AsWeakPtr()));
381 390
382 if (wait_for_policy_fetch) { 391 if (wait_for_policy_fetch) {
383 // Profile creation will block until user policy is fetched, which 392 // Profile creation will block until user policy is fetched, which
384 // requires the DeviceManagement token. Try to fetch it now. 393 // requires the DeviceManagement token. Try to fetch it now.
385 // TODO(atwilson): This is somewhat racy, as we are trying to fetch a 394 // TODO(atwilson): This is somewhat racy, as we are trying to fetch a
386 // DMToken in parallel with loading the cached policy blob (there could 395 // DMToken in parallel with loading the cached policy blob (there could
387 // already be a DMToken in the cached policy). Once the legacy policy 396 // already be a DMToken in the cached policy). Once the legacy policy
388 // framework is removed, this code can register a 397 // framework is removed, this code can register a
(...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after
951 bool LoginUtils::IsWhitelisted(const std::string& username) { 960 bool LoginUtils::IsWhitelisted(const std::string& username) {
952 CrosSettings* cros_settings = CrosSettings::Get(); 961 CrosSettings* cros_settings = CrosSettings::Get();
953 bool allow_new_user = false; 962 bool allow_new_user = false;
954 cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user); 963 cros_settings->GetBoolean(kAccountsPrefAllowNewUser, &allow_new_user);
955 if (allow_new_user) 964 if (allow_new_user)
956 return true; 965 return true;
957 return cros_settings->FindEmailInList(kAccountsPrefUsers, username); 966 return cros_settings->FindEmailInList(kAccountsPrefUsers, username);
958 } 967 }
959 968
960 } // namespace chromeos 969 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698