| Index: chrome/browser/ui/app_list/app_list_service_impl.cc
|
| diff --git a/chrome/browser/ui/app_list/app_list_service_impl.cc b/chrome/browser/ui/app_list/app_list_service_impl.cc
|
| index 8b5c91422bc3020ad6c4d5bd64f7bb065c7ddcbf..5ec6e6386f58b3c175536f07d1ad71d09bd6695b 100644
|
| --- a/chrome/browser/ui/app_list/app_list_service_impl.cc
|
| +++ b/chrome/browser/ui/app_list/app_list_service_impl.cc
|
| @@ -18,6 +18,7 @@
|
| #include "chrome/browser/ui/app_list/app_list_view_delegate.h"
|
| #include "chrome/browser/ui/app_list/profile_loader.h"
|
| #include "chrome/browser/ui/app_list/profile_store.h"
|
| +#include "chrome/browser/ui/user_manager.h"
|
| #include "chrome/common/chrome_constants.h"
|
| #include "chrome/common/chrome_switches.h"
|
| #include "chrome/common/pref_names.h"
|
| @@ -93,6 +94,13 @@ class ProfileStoreImpl : public ProfileStore {
|
|
|
| void LoadProfileAsync(const base::FilePath& path,
|
| base::Callback<void(Profile*)> callback) override {
|
| + if (IsProfileLocked(path)) {
|
| + UserManager::Show(base::FilePath(),
|
| + profiles::USER_MANAGER_NO_TUTORIAL,
|
| + profiles::USER_MANAGER_SELECT_PROFILE_APP_LAUNCHER);
|
| + return;
|
| + }
|
| +
|
| profile_manager_->CreateProfileAsync(
|
| path,
|
| base::Bind(&ProfileStoreImpl::OnProfileCreated,
|
| @@ -123,6 +131,8 @@ class ProfileStoreImpl : public ProfileStore {
|
| }
|
|
|
| Profile* GetProfileByPath(const base::FilePath& path) override {
|
| + if (IsProfileLocked(path))
|
| + return nullptr;
|
| return profile_manager_->GetProfileByPath(path);
|
| }
|
|
|
| @@ -138,6 +148,14 @@ class ProfileStoreImpl : public ProfileStore {
|
| profile_info.ProfileIsSupervisedAtIndex(profile_index);
|
| }
|
|
|
| + bool IsProfileLocked(const base::FilePath& profile_path) {
|
| + ProfileInfoCache& profile_info =
|
| + g_browser_process->profile_manager()->GetProfileInfoCache();
|
| + size_t profile_index = profile_info.GetIndexOfProfileWithPath(profile_path);
|
| + return profile_index != std::string::npos &&
|
| + profile_info.ProfileIsSigninRequiredAtIndex(profile_index);
|
| + }
|
| +
|
| private:
|
| ProfileManager* profile_manager_;
|
| base::WeakPtrFactory<ProfileStoreImpl> weak_factory_;
|
|
|