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