OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/session/user_session_manager.h" | 5 #include "chrome/browser/chromeos/login/session/user_session_manager.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 #include "components/signin/core/browser/signin_manager_base.h" | 106 #include "components/signin/core/browser/signin_manager_base.h" |
107 #include "components/user_manager/known_user.h" | 107 #include "components/user_manager/known_user.h" |
108 #include "components/user_manager/user.h" | 108 #include "components/user_manager/user.h" |
109 #include "components/user_manager/user_manager.h" | 109 #include "components/user_manager/user_manager.h" |
110 #include "components/user_manager/user_names.h" | 110 #include "components/user_manager/user_names.h" |
111 #include "components/user_manager/user_type.h" | 111 #include "components/user_manager/user_type.h" |
112 #include "content/public/browser/browser_thread.h" | 112 #include "content/public/browser/browser_thread.h" |
113 #include "content/public/browser/notification_service.h" | 113 #include "content/public/browser/notification_service.h" |
114 #include "content/public/browser/storage_partition.h" | 114 #include "content/public/browser/storage_partition.h" |
115 #include "content/public/common/content_switches.h" | 115 #include "content/public/common/content_switches.h" |
| 116 #include "extensions/common/features/feature_session_type.h" |
116 #include "net/cert/sth_distributor.h" | 117 #include "net/cert/sth_distributor.h" |
117 #include "rlz/features/features.h" | 118 #include "rlz/features/features.h" |
118 #include "ui/base/ime/chromeos/input_method_descriptor.h" | 119 #include "ui/base/ime/chromeos/input_method_descriptor.h" |
119 #include "ui/base/ime/chromeos/input_method_manager.h" | 120 #include "ui/base/ime/chromeos/input_method_manager.h" |
120 #include "url/gurl.h" | 121 #include "url/gurl.h" |
121 | 122 |
122 #if BUILDFLAG(ENABLE_RLZ) | 123 #if BUILDFLAG(ENABLE_RLZ) |
123 #include "chrome/browser/rlz/chrome_rlz_tracker_delegate.h" | 124 #include "chrome/browser/rlz/chrome_rlz_tracker_delegate.h" |
124 #include "components/rlz/rlz_tracker.h" | 125 #include "components/rlz/rlz_tracker.h" |
125 #endif | 126 #endif |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
499 delegate_ = nullptr; | 500 delegate_ = nullptr; |
500 } | 501 } |
501 | 502 |
502 void UserSessionManager::PerformPostUserLoggedInActions() { | 503 void UserSessionManager::PerformPostUserLoggedInActions() { |
503 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); | 504 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); |
504 if (user_manager->GetLoggedInUsers().size() == 1) { | 505 if (user_manager->GetLoggedInUsers().size() == 1) { |
505 if (network_portal_detector::IsInitialized()) { | 506 if (network_portal_detector::IsInitialized()) { |
506 network_portal_detector::GetInstance()->SetStrategy( | 507 network_portal_detector::GetInstance()->SetStrategy( |
507 PortalDetectorStrategy::STRATEGY_ID_SESSION); | 508 PortalDetectorStrategy::STRATEGY_ID_SESSION); |
508 } | 509 } |
| 510 |
| 511 InitNonKioskExtensionFeaturesSessionType(user_manager->GetPrimaryUser()); |
509 } | 512 } |
510 } | 513 } |
511 | 514 |
512 void UserSessionManager::RestoreAuthenticationSession(Profile* user_profile) { | 515 void UserSessionManager::RestoreAuthenticationSession(Profile* user_profile) { |
513 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); | 516 user_manager::UserManager* user_manager = user_manager::UserManager::Get(); |
514 // We need to restore session only for logged in GAIA (regular) users. | 517 // We need to restore session only for logged in GAIA (regular) users. |
515 // Note: stub user is a special case that is used for tests, running | 518 // Note: stub user is a special case that is used for tests, running |
516 // linux_chromeos build on dev workstations w/o user_id parameters. | 519 // linux_chromeos build on dev workstations w/o user_id parameters. |
517 // Stub user is considered to be a regular GAIA user but it has special | 520 // Stub user is considered to be a regular GAIA user but it has special |
518 // user_id (kStubUser) and certain services like restoring OAuth session are | 521 // user_id (kStubUser) and certain services like restoring OAuth session are |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
567 FROM_HERE, base::TaskTraits() | 570 FROM_HERE, base::TaskTraits() |
568 .WithShutdownBehavior( | 571 .WithShutdownBehavior( |
569 base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN) | 572 base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN) |
570 .WithPriority(base::TaskPriority::BACKGROUND) | 573 .WithPriority(base::TaskPriority::BACKGROUND) |
571 .MayBlock(), | 574 .MayBlock(), |
572 base::Bind(&base::PathExists, GetRlzDisabledFlagPath()), | 575 base::Bind(&base::PathExists, GetRlzDisabledFlagPath()), |
573 base::Bind(&UserSessionManager::InitRlzImpl, AsWeakPtr(), profile)); | 576 base::Bind(&UserSessionManager::InitRlzImpl, AsWeakPtr(), profile)); |
574 #endif | 577 #endif |
575 } | 578 } |
576 | 579 |
| 580 void UserSessionManager::InitNonKioskExtensionFeaturesSessionType( |
| 581 const user_manager::User* user) { |
| 582 // Kiosk session should be set as part of kiosk user session initialization |
| 583 // in normal circumstances (to be able to properly determine whether kiosk |
| 584 // was auto-launched); in case of user session restore, feature session |
| 585 // type has be set before kiosk app controller takes over, as at that point |
| 586 // kiosk app profile would already be initialized - feature session type |
| 587 // should be set before that. |
| 588 // TODO(tbarzic): Note that this does not work well for auto-launched |
| 589 // sessions, as information about whether session was auto-launched is not |
| 590 // persisted over session restart - http://crbug.com/677340. |
| 591 if (user->GetType() == user_manager::USER_TYPE_KIOSK_APP) { |
| 592 if (base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 593 switches::kLoginUser)) { |
| 594 extensions::SetCurrentFeatureSessionType( |
| 595 extensions::FeatureSessionType::KIOSK); |
| 596 } |
| 597 return; |
| 598 } |
| 599 |
| 600 extensions::SetCurrentFeatureSessionType( |
| 601 user->HasGaiaAccount() ? extensions::FeatureSessionType::REGULAR |
| 602 : extensions::FeatureSessionType::UNKNOWN); |
| 603 } |
| 604 |
577 void UserSessionManager::SetFirstLoginPrefs( | 605 void UserSessionManager::SetFirstLoginPrefs( |
578 Profile* profile, | 606 Profile* profile, |
579 const std::string& public_session_locale, | 607 const std::string& public_session_locale, |
580 const std::string& public_session_input_method) { | 608 const std::string& public_session_input_method) { |
581 VLOG(1) << "Setting first login prefs"; | 609 VLOG(1) << "Setting first login prefs"; |
582 InitLocaleAndInputMethodsForNewUser( | 610 InitLocaleAndInputMethodsForNewUser( |
583 this, profile, public_session_locale, public_session_input_method); | 611 this, profile, public_session_locale, public_session_input_method); |
584 } | 612 } |
585 | 613 |
586 bool UserSessionManager::GetAppModeChromeClientOAuthInfo( | 614 bool UserSessionManager::GetAppModeChromeClientOAuthInfo( |
(...skipping 1256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1843 ->browser_policy_connector_chromeos() | 1871 ->browser_policy_connector_chromeos() |
1844 ->IsEnterpriseManaged()) { | 1872 ->IsEnterpriseManaged()) { |
1845 return false; | 1873 return false; |
1846 } | 1874 } |
1847 | 1875 |
1848 // Do not show end of life notification if this is a guest session | 1876 // Do not show end of life notification if this is a guest session |
1849 return !profile->IsGuestSession(); | 1877 return !profile->IsGuestSession(); |
1850 } | 1878 } |
1851 | 1879 |
1852 } // namespace chromeos | 1880 } // namespace chromeos |
OLD | NEW |