diff options
author | nkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 11:01:37 +0000 |
---|---|---|
committer | nkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-30 11:01:37 +0000 |
commit | 766be77261df60cec86c9432f2ee37be4a1dc02e (patch) | |
tree | 45c83eadee25913049aa75518dfd9e6f4286d6a5 | |
parent | 5f97a864f2a028f77a2c758075fc74242c879967 (diff) | |
download | chromium_src-766be77261df60cec86c9432f2ee37be4a1dc02e.zip chromium_src-766be77261df60cec86c9432f2ee37be4a1dc02e.tar.gz chromium_src-766be77261df60cec86c9432f2ee37be4a1dc02e.tar.bz2 |
Revert of Multiprofile: switch to newly added user to the session (https://codereview.chromium.org/246253009/)
Reason for revert:
Suspecting this change as a root cause for superflaky UserAddingScreenTest.AddingSeveralUsers
See http://crbug.com/368621
Original issue's description:
> Multiprofile: switch to newly added user to the session
>
> This CL remember pending user switch and do it as soon as profile
> ready. From UI perspective this look very smooth because profile loading
> is actually fast so previous desktop is not shown. But if it will be
> a problem on slow device we may need to stay on add user screen a bit longer.
>
> BUG=333879
> TEST=manual
> R=nkostylev@chromium.org
>
> Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=266239
TBR=dpolukhin@chromium.org,dpolukhin@google.com
NOTREECHECKS=true
NOTRY=true
BUG=333879,368621
Review URL: https://codereview.chromium.org/257393003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@267174 0039d316-1c4b-4281-b951-d872f2087c98
4 files changed, 14 insertions, 22 deletions
diff --git a/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc b/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc index 04e60ce..b6e4e8e 100644 --- a/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc +++ b/chrome/browser/chromeos/file_manager/file_manager_browsertest.cc @@ -915,6 +915,9 @@ class MultiProfileFileManagerBrowserTest : public FileManagerBrowserTestBase { const TestAccountInfo& info = kTestAccounts[PRIMARY_ACCOUNT_INDEX]; AddUser(info, true); + chromeos::UserManager* const user_manager = chromeos::UserManager::Get(); + if (user_manager->GetActiveUser() != user_manager->FindUser(info.email)) + chromeos::UserManager::Get()->SwitchActiveUser(info.email); FileManagerBrowserTestBase::SetUpOnMainThread(); } diff --git a/chrome/browser/chromeos/login/user_manager_impl.cc b/chrome/browser/chromeos/login/user_manager_impl.cc index f9c557b..9418741 100644 --- a/chrome/browser/chromeos/login/user_manager_impl.cc +++ b/chrome/browser/chromeos/login/user_manager_impl.cc @@ -426,9 +426,9 @@ void UserManagerImpl::UserLoggedIn(const std::string& user_id, lru_logged_in_users_.push_back(user); // Reset the new user flag if the user already exists. is_current_user_new_ = false; + // Set active user wallpaper back. + WallpaperManager::Get()->SetUserWallpaperNow(active_user_->email()); NotifyUserAddedToSession(user); - // Remember that we need to switch to this user as soon as profile ready. - pending_user_switch_ = user_id; return; } @@ -973,18 +973,7 @@ void UserManagerImpl::Observe(int type, User* user = GetUserByProfile(profile); if (user != NULL) user->set_profile_is_created(); - // If there is pending user switch, do it now. - if (!pending_user_switch_.empty()) { - // Call SwitchActiveUser async because otherwise it may cause - // ProfileManager::GetProfile before the profile gets registered - // in ProfileManager. It happens in case of sync profile load when - // NOTIFICATION_PROFILE_CREATED is called synchronously. - base::MessageLoop::current()->PostTask(FROM_HERE, - base::Bind(&UserManagerImpl::SwitchActiveUser, - base::Unretained(this), - pending_user_switch_)); - pending_user_switch_.clear(); - } + break; } default: diff --git a/chrome/browser/chromeos/login/user_manager_impl.h b/chrome/browser/chromeos/login/user_manager_impl.h index 1ec2c2e..ef63d1a 100644 --- a/chrome/browser/chromeos/login/user_manager_impl.h +++ b/chrome/browser/chromeos/login/user_manager_impl.h @@ -483,10 +483,6 @@ class UserManagerImpl scoped_ptr<policy::CloudExternalDataPolicyObserver> wallpaper_policy_observer_; - // ID of the user just added to the session that needs to be activated - // as soon as user's profile is loaded. - std::string pending_user_switch_; - DISALLOW_COPY_AND_ASSIGN(UserManagerImpl); }; diff --git a/chrome/browser/chromeos/preferences_browsertest.cc b/chrome/browser/chromeos/preferences_browsertest.cc index b8a5267..fe3fb00 100644 --- a/chrome/browser/chromeos/preferences_browsertest.cc +++ b/chrome/browser/chromeos/preferences_browsertest.cc @@ -153,15 +153,19 @@ IN_PROC_BROWSER_TEST_F(PreferencesTest, MultiProfiles) { // Add second user and init its prefs with different values. UserAddingScreen::Get()->Start(); content::RunAllPendingInMessageLoop(); - DisableAnimations(); AddUser(kTestUsers[1]); - content::RunAllPendingInMessageLoop(); + EXPECT_TRUE(user1->is_active()); const User* user2 = user_manager->FindUser(kTestUsers[1]); - EXPECT_TRUE(user2->is_active()); PrefService* prefs2 = user_manager->GetProfileByUser(user2)->GetPrefs(); SetPrefs(prefs2, true); - // Check that settings were changed accordingly. + // First user is still active, so settings was not changed. + EXPECT_TRUE(user1->is_active()); + CheckSettingsCorrespondToPrefs(prefs1); + + // Switch user and check that settings was changed accordingly. + DisableAnimations(); + user_manager->SwitchActiveUser(kTestUsers[1]); EXPECT_TRUE(user2->is_active()); CheckSettingsCorrespondToPrefs(prefs2); |