Commit 6126fb31 authored by ivankr@chromium.org's avatar ivankr@chromium.org

[cros] Update wallpaper when displaying Gaia frame.

*) When adding new user, show the default wallpaper.
*) When clicking on a user, who requires online auth, load their wallpaper.
*) When cancelling online auth, revert to the last active user's wallpaper.

BUG=153700,139074


Review URL: https://chromiumcodereview.appspot.com/11190022

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@162454 0039d316-1c4b-4281-b951-d872f2087c98
parent 07d75322
...@@ -681,6 +681,11 @@ void WallpaperManager::SetUserWallpaper(const std::string& email) { ...@@ -681,6 +681,11 @@ void WallpaperManager::SetUserWallpaper(const std::string& email) {
} }
} }
void WallpaperManager::SetSigninWallpaper() {
ash::Shell::GetInstance()->desktop_background_controller()->
SetDefaultWallpaper(kDefaultOOBEWallpaperIndex, false);
}
void WallpaperManager::SetWallpaperFromImageSkia( void WallpaperManager::SetWallpaperFromImageSkia(
const gfx::ImageSkia& wallpaper, const gfx::ImageSkia& wallpaper,
ash::WallpaperLayout layout) { ash::WallpaperLayout layout) {
...@@ -688,10 +693,6 @@ void WallpaperManager::SetWallpaperFromImageSkia( ...@@ -688,10 +693,6 @@ void WallpaperManager::SetWallpaperFromImageSkia(
SetCustomWallpaper(wallpaper, layout); SetCustomWallpaper(wallpaper, layout);
} }
void WallpaperManager::OnUserSelected(const std::string& email) {
SetUserWallpaper(email);
}
// WallpaperManager, private: -------------------------------------------------- // WallpaperManager, private: --------------------------------------------------
WallpaperManager::~WallpaperManager() { WallpaperManager::~WallpaperManager() {
......
...@@ -165,16 +165,13 @@ class WallpaperManager: public system::TimezoneSettings::Observer, ...@@ -165,16 +165,13 @@ class WallpaperManager: public system::TimezoneSettings::Observer,
// Sets |email|'s wallpaper. // Sets |email|'s wallpaper.
void SetUserWallpaper(const std::string& email); void SetUserWallpaper(const std::string& email);
// Sets the default wallpaper for the sign-in screen.
void SetSigninWallpaper();
// Sets wallpaper to |wallpaper|. // Sets wallpaper to |wallpaper|.
void SetWallpaperFromImageSkia(const gfx::ImageSkia& wallpaper, void SetWallpaperFromImageSkia(const gfx::ImageSkia& wallpaper,
ash::WallpaperLayout layout); ash::WallpaperLayout layout);
// User was deselected at login screen, reset wallpaper if needed.
void OnUserDeselected() {}
// User |email| was selected at login screen, load wallpaper.
void OnUserSelected(const std::string& email);
private: private:
typedef std::map<std::string, gfx::ImageSkia> CustomWallpaperMap; typedef std::map<std::string, gfx::ImageSkia> CustomWallpaperMap;
......
...@@ -196,12 +196,12 @@ void WebUILoginDisplay::CreateAccount() { ...@@ -196,12 +196,12 @@ void WebUILoginDisplay::CreateAccount() {
delegate_->CreateAccount(); delegate_->CreateAccount();
} }
void WebUILoginDisplay::OnUserDeselected() { void WebUILoginDisplay::LoadWallpaper(const std::string& username) {
WallpaperManager::Get()->OnUserDeselected(); WallpaperManager::Get()->SetUserWallpaper(username);
} }
void WebUILoginDisplay::OnUserSelected(const std::string& username) { void WebUILoginDisplay::LoadSigninWallpaper() {
WallpaperManager::Get()->OnUserSelected(username); WallpaperManager::Get()->SetSigninWallpaper();
} }
void WebUILoginDisplay::RemoveUser(const std::string& username) { void WebUILoginDisplay::RemoveUser(const std::string& username) {
......
...@@ -54,8 +54,8 @@ class WebUILoginDisplay : public LoginDisplay, ...@@ -54,8 +54,8 @@ class WebUILoginDisplay : public LoginDisplay,
virtual void LoginAsGuest() OVERRIDE; virtual void LoginAsGuest() OVERRIDE;
virtual void Signout() OVERRIDE; virtual void Signout() OVERRIDE;
virtual void CreateAccount() OVERRIDE; virtual void CreateAccount() OVERRIDE;
virtual void OnUserDeselected() OVERRIDE; virtual void LoadWallpaper(const std::string& username) OVERRIDE;
virtual void OnUserSelected(const std::string& username) OVERRIDE; virtual void LoadSigninWallpaper() OVERRIDE;
virtual void RemoveUser(const std::string& username) OVERRIDE; virtual void RemoveUser(const std::string& username) OVERRIDE;
virtual void ShowEnterpriseEnrollmentScreen() OVERRIDE; virtual void ShowEnterpriseEnrollmentScreen() OVERRIDE;
virtual void ShowResetScreen() OVERRIDE; virtual void ShowResetScreen() OVERRIDE;
......
...@@ -76,6 +76,7 @@ cr.define('login', function() { ...@@ -76,6 +76,7 @@ cr.define('login', function() {
*/ */
handleCancelAddUserClick_: function(e) { handleCancelAddUserClick_: function(e) {
$('login-header-bar').signinUIActive = false; $('login-header-bar').signinUIActive = false;
$('pod-row').loadLastWallpaper();
Oobe.showScreen({id: SCREEN_ACCOUNT_PICKER}); Oobe.showScreen({id: SCREEN_ACCOUNT_PICKER});
Oobe.resetSigninUI(true); Oobe.resetSigninUI(true);
}, },
......
...@@ -426,6 +426,9 @@ cr.define('login', function() { ...@@ -426,6 +426,9 @@ cr.define('login', function() {
// Activated pod, i.e. the pod of current login attempt. // Activated pod, i.e. the pod of current login attempt.
activatedPod_: undefined, activatedPod_: undefined,
// Pod that was most recently focused, if any.
lastFocusedPod_: undefined,
// When moving through users quickly at login screen, set a timeout to // When moving through users quickly at login screen, set a timeout to
// prevent loading intermediate wallpapers. // prevent loading intermediate wallpapers.
loadWallpaperTimeout_: null, loadWallpaperTimeout_: null,
...@@ -596,6 +599,7 @@ cr.define('login', function() { ...@@ -596,6 +599,7 @@ cr.define('login', function() {
this.innerHTML = ''; this.innerHTML = '';
this.focusedPod_ = undefined; this.focusedPod_ = undefined;
this.activatedPod_ = undefined; this.activatedPod_ = undefined;
this.lastFocusedPod_ = undefined;
// Populate the pod row. // Populate the pod row.
for (var i = 0; i < users.length; ++i) { for (var i = 0; i < users.length; ++i) {
...@@ -667,16 +671,27 @@ cr.define('login', function() { ...@@ -667,16 +671,27 @@ cr.define('login', function() {
this.loadWallpaper_(); this.loadWallpaper_();
} }
this.firstShown_ = false; this.firstShown_ = false;
} else { this.lastFocusedPod_ = podToFocus;
chrome.send('userDeselected');
} }
this.insideFocusPod_ = false; this.insideFocusPod_ = false;
this.keyboardActivated_ = false; this.keyboardActivated_ = false;
}, },
/**
* Loads wallpaper for the active user pod, if any.
* @private
*/
loadWallpaper_: function() { loadWallpaper_: function() {
if (this.focusedPod_) if (this.focusedPod_)
chrome.send('userSelectedDelayed', [this.focusedPod_.user.username]); chrome.send('loadWallpaper', [this.focusedPod_.user.username]);
},
/**
* Resets wallpaper to the last active user's wallpaper, if any.
*/
loadLastWallpaper: function() {
if (this.lastFocusedPod_)
chrome.send('loadWallpaper', [this.lastFocusedPod_.user.username]);
}, },
/** /**
...@@ -732,6 +747,7 @@ cr.define('login', function() { ...@@ -732,6 +747,7 @@ cr.define('login', function() {
// Clear any error messages that might still be around. // Clear any error messages that might still be around.
Oobe.clearErrors(); Oobe.clearErrors();
this.disabled = true; this.disabled = true;
this.lastFocusedPod_ = this.getPodWithUsername_(email);
Oobe.showSigninUI(email); Oobe.showSigninUI(email);
}, },
......
...@@ -304,11 +304,8 @@ void SigninScreenHandler::RegisterMessages() { ...@@ -304,11 +304,8 @@ void SigninScreenHandler::RegisterMessages() {
web_ui()->RegisterMessageCallback("shutdownSystem", web_ui()->RegisterMessageCallback("shutdownSystem",
base::Bind(&SigninScreenHandler::HandleShutdownSystem, base::Bind(&SigninScreenHandler::HandleShutdownSystem,
base::Unretained(this))); base::Unretained(this)));
web_ui()->RegisterMessageCallback("userSelectedDelayed", web_ui()->RegisterMessageCallback("loadWallpaper",
base::Bind(&SigninScreenHandler::HandleUserSelected, base::Bind(&SigninScreenHandler::HandleLoadWallpaper,
base::Unretained(this)));
web_ui()->RegisterMessageCallback("userDeselected",
base::Bind(&SigninScreenHandler::HandleUserDeselected,
base::Unretained(this))); base::Unretained(this)));
web_ui()->RegisterMessageCallback("removeUser", web_ui()->RegisterMessageCallback("removeUser",
base::Bind(&SigninScreenHandler::HandleRemoveUser, base::Bind(&SigninScreenHandler::HandleRemoveUser,
...@@ -474,6 +471,12 @@ void SigninScreenHandler::ShowSigninScreenIfReady() { ...@@ -474,6 +471,12 @@ void SigninScreenHandler::ShowSigninScreenIfReady() {
focus_stolen_ = false; focus_stolen_ = false;
} }
// Note that LoadAuthExtension clears |email_|.
if (email_.empty())
delegate_->LoadSigninWallpaper();
else
delegate_->LoadWallpaper(email_);
LoadAuthExtension(!gaia_silent_load_, false, false); LoadAuthExtension(!gaia_silent_load_, false, false);
ShowScreen(kGaiaSigninScreen, NULL); ShowScreen(kGaiaSigninScreen, NULL);
...@@ -632,12 +635,7 @@ void SigninScreenHandler::HandleShutdownSystem(const base::ListValue* args) { ...@@ -632,12 +635,7 @@ void SigninScreenHandler::HandleShutdownSystem(const base::ListValue* args) {
#endif #endif
} }
void SigninScreenHandler::HandleUserDeselected(const base::ListValue* args) { void SigninScreenHandler::HandleLoadWallpaper(const base::ListValue* args) {
if (delegate_)
delegate_->OnUserDeselected();
}
void SigninScreenHandler::HandleUserSelected(const base::ListValue* args) {
if (!delegate_) if (!delegate_)
return; return;
...@@ -647,7 +645,7 @@ void SigninScreenHandler::HandleUserSelected(const base::ListValue* args) { ...@@ -647,7 +645,7 @@ void SigninScreenHandler::HandleUserSelected(const base::ListValue* args) {
return; return;
} }
delegate_->OnUserSelected(email); delegate_->LoadWallpaper(email);
} }
void SigninScreenHandler::HandleRemoveUser(const base::ListValue* args) { void SigninScreenHandler::HandleRemoveUser(const base::ListValue* args) {
......
...@@ -78,12 +78,11 @@ class SigninScreenHandlerDelegate { ...@@ -78,12 +78,11 @@ class SigninScreenHandlerDelegate {
// Create a new Google account. // Create a new Google account.
virtual void CreateAccount() = 0; virtual void CreateAccount() = 0;
// Called user pod selection is canceled. // Load wallpaper for given |username|.
virtual void OnUserDeselected() = 0; virtual void LoadWallpaper(const std::string& username) = 0;
// Called when user pod with |username| is selected at login screen. // Loads the default sign-in wallpaper.
// |username| is the email address of the selected user. virtual void LoadSigninWallpaper() = 0;
virtual void OnUserSelected(const std::string& username) = 0;
// Attempts to remove given user. // Attempts to remove given user.
virtual void RemoveUser(const std::string& username) = 0; virtual void RemoveUser(const std::string& username) = 0;
...@@ -214,8 +213,7 @@ class SigninScreenHandler ...@@ -214,8 +213,7 @@ class SigninScreenHandler
void HandleLaunchIncognito(const base::ListValue* args); void HandleLaunchIncognito(const base::ListValue* args);
void HandleOfflineLogin(const base::ListValue* args); void HandleOfflineLogin(const base::ListValue* args);
void HandleShutdownSystem(const base::ListValue* args); void HandleShutdownSystem(const base::ListValue* args);
void HandleUserDeselected(const base::ListValue* args); void HandleLoadWallpaper(const base::ListValue* args);
void HandleUserSelected(const base::ListValue* args);
void HandleRemoveUser(const base::ListValue* args); void HandleRemoveUser(const base::ListValue* args);
void HandleShowAddUser(const base::ListValue* args); void HandleShowAddUser(const base::ListValue* args);
void HandleToggleEnrollmentScreen(const base::ListValue* args); void HandleToggleEnrollmentScreen(const base::ListValue* args);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment