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() { |