diff options
author | merkulova <merkulova@chromium.org> | 2015-03-02 00:18:14 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-02 08:18:59 +0000 |
commit | c3a3f671f8e0c5777c6bc825f21d61c6bcafbec3 (patch) | |
tree | 8b8aa795a0f74cfc321af1de00951b7eaafa79bc | |
parent | 4a636301c72b71b544b3a8acc17884e1eb8f2036 (diff) | |
download | chromium_src-c3a3f671f8e0c5777c6bc825f21d61c6bcafbec3.zip chromium_src-c3a3f671f8e0c5777c6bc825f21d61c6bcafbec3.tar.gz chromium_src-c3a3f671f8e0c5777c6bc825f21d61c6bcafbec3.tar.bz2 |
Wallpaper manager now observing user child user status to update default wallpaper.
BUG=461282
Review URL: https://codereview.chromium.org/952853002
Cr-Commit-Position: refs/heads/master@{#318666}
3 files changed, 24 insertions, 2 deletions
diff --git a/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc b/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc index 20a9d98..ef44c39 100644 --- a/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc +++ b/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc @@ -307,6 +307,8 @@ WallpaperManager::WallpaperManager() base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); wallpaper_loader_ = new UserImageLoader(ImageDecoder::ROBUST_JPEG_CODEC, task_runner_); + + user_manager::UserManager::Get()->AddSessionStateObserver(this); } WallpaperManager::~WallpaperManager() { @@ -314,6 +316,8 @@ WallpaperManager::~WallpaperManager() { // http://crbug.com/171694 DCHECK(!show_user_name_on_signin_subscription_); + user_manager::UserManager::Get()->RemoveSessionStateObserver(this); + ClearObsoleteWallpaperPrefs(); weak_factory_.InvalidateWeakPtrs(); } @@ -966,6 +970,10 @@ size_t WallpaperManager::GetPendingListSizeForTesting() const { return loading_.size(); } +void WallpaperManager::UserChangedChildStatus(user_manager::User* user) { + SetUserWallpaperNow(user->email()); +} + void WallpaperManager::OnDefaultWallpaperDecoded( const base::FilePath& path, const wallpaper::WallpaperLayout layout, diff --git a/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h b/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h index 14eec18..536d752 100644 --- a/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h +++ b/chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h @@ -21,6 +21,7 @@ #include "chrome/browser/chromeos/settings/cros_settings.h" #include "components/user_manager/user.h" #include "components/user_manager/user_image/user_image.h" +#include "components/user_manager/user_manager.h" #include "components/wallpaper/wallpaper_layout.h" #include "components/wallpaper/wallpaper_manager_base.h" #include "content/public/browser/notification_observer.h" @@ -30,7 +31,9 @@ namespace chromeos { -class WallpaperManager : public wallpaper::WallpaperManagerBase { +class WallpaperManager : + public wallpaper::WallpaperManagerBase, + public user_manager::UserManager::UserSessionStateObserver { public: class PendingWallpaper; @@ -115,6 +118,9 @@ class WallpaperManager : public wallpaper::WallpaperManagerBase { // Returns queue size. size_t GetPendingListSizeForTesting() const override; + // Overridden from user_manager::UserManager::UserSessionStateObserver: + void UserChangedChildStatus(user_manager::User* user) override; + private: friend class TestApi; friend class WallpaperManagerBrowserTest; diff --git a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc index badf4a5..e683478 100644 --- a/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc +++ b/chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc @@ -18,10 +18,12 @@ #include "base/logging.h" #include "base/strings/string_util.h" #include "base/time/time.h" +#include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h" #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager.h" #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h" #include "chrome/browser/ui/ash/multi_user/user_switch_animator_chromeos.h" #include "chrome/test/base/testing_profile.h" +#include "components/user_manager/fake_user_manager.h" #include "components/user_manager/user_info.h" #include "ui/aura/client/aura_constants.h" #include "ui/aura/window_event_dispatcher.h" @@ -39,7 +41,9 @@ class MultiUserWindowManagerChromeOSTest : public AshTestBase { public: MultiUserWindowManagerChromeOSTest() : multi_user_window_manager_(NULL), - session_state_delegate_(NULL) {} + session_state_delegate_(NULL), + fake_user_manager_(new user_manager::FakeUserManager), + user_manager_enabler_(fake_user_manager_) {} void SetUp() override; void TearDown() override; @@ -158,6 +162,10 @@ class MultiUserWindowManagerChromeOSTest : public AshTestBase { // The session state delegate. ash::test::TestSessionStateDelegate* session_state_delegate_; + user_manager::FakeUserManager* fake_user_manager_; // Not owned. + + chromeos::ScopedUserManagerEnabler user_manager_enabler_; + // The maximized window manager (if enabled). scoped_ptr<MaximizeModeWindowManager> maximize_mode_window_manager_; |