| Index: chrome/browser/chromeos/login/wallpaper_manager.cc
|
| diff --git a/chrome/browser/chromeos/login/wallpaper_manager.cc b/chrome/browser/chromeos/login/wallpaper_manager.cc
|
| index 3692a2acafa4b939a5842cc4274123a8646b26d4..7235f64df4ba275c6c896f7e36fa5fc00af68bb9 100644
|
| --- a/chrome/browser/chromeos/login/wallpaper_manager.cc
|
| +++ b/chrome/browser/chromeos/login/wallpaper_manager.cc
|
| @@ -299,6 +299,7 @@ void WallpaperManager::Observe(int type,
|
| break;
|
| }
|
| case chrome::NOTIFICATION_WALLPAPER_ANIMATION_FINISHED: {
|
| + NotifyAnimationFinished();
|
| if (should_cache_wallpaper_) {
|
| BrowserThread::PostDelayedTask(
|
| BrowserThread::UI, FROM_HERE,
|
| @@ -591,6 +592,33 @@ void WallpaperManager::UpdateWallpaper() {
|
| SetUserWallpaper(last_selected_user_);
|
| }
|
|
|
| +void WallpaperManager::AddObserver(
|
| + base::WeakPtr<WallpaperManager::Observer> observer) {
|
| + ObserverList::iterator i = observers_.begin();
|
| + while (i != observers_.end()) {
|
| + if (*i != NULL) {
|
| + if (i->get() == observer.get())
|
| + return;
|
| + ++i;
|
| + continue;
|
| + }
|
| + observers_.erase(i++);
|
| + }
|
| + observers_.push_back(observer);
|
| +}
|
| +
|
| +void WallpaperManager::NotifyAnimationFinished() {
|
| + ObserverList::iterator i = observers_.begin();
|
| + while (i != observers_.end()) {
|
| + if (*i != NULL) {
|
| + (*i)->OnWallpaperAnimationFinished(last_selected_user_);
|
| + ++i;
|
| + continue;
|
| + }
|
| + observers_.erase(i++);
|
| + }
|
| +}
|
| +
|
| // WallpaperManager, private: --------------------------------------------------
|
|
|
| void WallpaperManager::CacheUsersWallpapers() {
|
|
|