summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-30 11:01:37 +0000
committernkostylev@chromium.org <nkostylev@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-30 11:01:37 +0000
commit766be77261df60cec86c9432f2ee37be4a1dc02e (patch)
tree45c83eadee25913049aa75518dfd9e6f4286d6a5
parent5f97a864f2a028f77a2c758075fc74242c879967 (diff)
downloadchromium_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
-rw-r--r--chrome/browser/chromeos/file_manager/file_manager_browsertest.cc3
-rw-r--r--chrome/browser/chromeos/login/user_manager_impl.cc17
-rw-r--r--chrome/browser/chromeos/login/user_manager_impl.h4
-rw-r--r--chrome/browser/chromeos/preferences_browsertest.cc12
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);