Commit ecce5a4c authored by merkulova's avatar merkulova Committed by Commit bot

Wallpaper manager now observing user child user status to update default wallpaper.

BUG=461282

Committed: https://crrev.com/c3a3f671f8e0c5777c6bc825f21d61c6bcafbec3
Cr-Commit-Position: refs/heads/master@{#318666}

Review URL: https://codereview.chromium.org/952853002

Cr-Commit-Position: refs/heads/master@{#318697}
parent 66456ff8
...@@ -307,6 +307,8 @@ WallpaperManager::WallpaperManager() ...@@ -307,6 +307,8 @@ WallpaperManager::WallpaperManager()
base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN);
wallpaper_loader_ = new UserImageLoader(ImageDecoder::ROBUST_JPEG_CODEC, wallpaper_loader_ = new UserImageLoader(ImageDecoder::ROBUST_JPEG_CODEC,
task_runner_); task_runner_);
user_manager::UserManager::Get()->AddSessionStateObserver(this);
} }
WallpaperManager::~WallpaperManager() { WallpaperManager::~WallpaperManager() {
...@@ -314,6 +316,8 @@ WallpaperManager::~WallpaperManager() { ...@@ -314,6 +316,8 @@ WallpaperManager::~WallpaperManager() {
// http://crbug.com/171694 // http://crbug.com/171694
DCHECK(!show_user_name_on_signin_subscription_); DCHECK(!show_user_name_on_signin_subscription_);
user_manager::UserManager::Get()->RemoveSessionStateObserver(this);
ClearObsoleteWallpaperPrefs(); ClearObsoleteWallpaperPrefs();
weak_factory_.InvalidateWeakPtrs(); weak_factory_.InvalidateWeakPtrs();
} }
...@@ -966,6 +970,10 @@ size_t WallpaperManager::GetPendingListSizeForTesting() const { ...@@ -966,6 +970,10 @@ size_t WallpaperManager::GetPendingListSizeForTesting() const {
return loading_.size(); return loading_.size();
} }
void WallpaperManager::UserChangedChildStatus(user_manager::User* user) {
SetUserWallpaperNow(user->email());
}
void WallpaperManager::OnDefaultWallpaperDecoded( void WallpaperManager::OnDefaultWallpaperDecoded(
const base::FilePath& path, const base::FilePath& path,
const wallpaper::WallpaperLayout layout, const wallpaper::WallpaperLayout layout,
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include "chrome/browser/chromeos/settings/cros_settings.h" #include "chrome/browser/chromeos/settings/cros_settings.h"
#include "components/user_manager/user.h" #include "components/user_manager/user.h"
#include "components/user_manager/user_image/user_image.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_layout.h"
#include "components/wallpaper/wallpaper_manager_base.h" #include "components/wallpaper/wallpaper_manager_base.h"
#include "content/public/browser/notification_observer.h" #include "content/public/browser/notification_observer.h"
...@@ -30,7 +31,9 @@ ...@@ -30,7 +31,9 @@
namespace chromeos { namespace chromeos {
class WallpaperManager : public wallpaper::WallpaperManagerBase { class WallpaperManager :
public wallpaper::WallpaperManagerBase,
public user_manager::UserManager::UserSessionStateObserver {
public: public:
class PendingWallpaper; class PendingWallpaper;
...@@ -115,6 +118,9 @@ class WallpaperManager : public wallpaper::WallpaperManagerBase { ...@@ -115,6 +118,9 @@ class WallpaperManager : public wallpaper::WallpaperManagerBase {
// Returns queue size. // Returns queue size.
size_t GetPendingListSizeForTesting() const override; size_t GetPendingListSizeForTesting() const override;
// Overridden from user_manager::UserManager::UserSessionStateObserver:
void UserChangedChildStatus(user_manager::User* user) override;
private: private:
friend class TestApi; friend class TestApi;
friend class WallpaperManagerBrowserTest; friend class WallpaperManagerBrowserTest;
......
...@@ -8,10 +8,12 @@ ...@@ -8,10 +8,12 @@
#include "ash/test/ash_test_base.h" #include "ash/test/ash_test_base.h"
#include "ash/test/test_session_state_delegate.h" #include "ash/test/test_session_state_delegate.h"
#include "ash/test/test_shell_delegate.h" #include "ash/test/test_shell_delegate.h"
#include "chrome/browser/chromeos/login/users/scoped_user_manager_enabler.h"
#include "chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.h" #include "chrome/browser/ui/ash/multi_user/multi_user_notification_blocker_chromeos.h"
#include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h" #include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.h"
#include "chrome/test/base/testing_browser_process.h" #include "chrome/test/base/testing_browser_process.h"
#include "chrome/test/base/testing_profile_manager.h" #include "chrome/test/base/testing_profile_manager.h"
#include "components/user_manager/fake_user_manager.h"
#include "components/user_manager/user_info.h" #include "components/user_manager/user_info.h"
#include "ui/message_center/message_center.h" #include "ui/message_center/message_center.h"
#include "ui/message_center/notification.h" #include "ui/message_center/notification.h"
...@@ -23,7 +25,9 @@ class MultiUserNotificationBlockerChromeOSTest ...@@ -23,7 +25,9 @@ class MultiUserNotificationBlockerChromeOSTest
MultiUserNotificationBlockerChromeOSTest() MultiUserNotificationBlockerChromeOSTest()
: state_changed_count_(0), : state_changed_count_(0),
testing_profile_manager_(TestingBrowserProcess::GetGlobal()), testing_profile_manager_(TestingBrowserProcess::GetGlobal()),
window_id_(0) {} window_id_(0),
fake_user_manager_(new user_manager::FakeUserManager),
user_manager_enabler_(fake_user_manager_) {}
~MultiUserNotificationBlockerChromeOSTest() override {} ~MultiUserNotificationBlockerChromeOSTest() override {}
// ash::test::AshTestBase overrides: // ash::test::AshTestBase overrides:
...@@ -128,6 +132,10 @@ class MultiUserNotificationBlockerChromeOSTest ...@@ -128,6 +132,10 @@ class MultiUserNotificationBlockerChromeOSTest
TestingProfileManager testing_profile_manager_; TestingProfileManager testing_profile_manager_;
int window_id_; int window_id_;
user_manager::FakeUserManager* fake_user_manager_; // Not owned.
chromeos::ScopedUserManagerEnabler user_manager_enabler_;
DISALLOW_COPY_AND_ASSIGN(MultiUserNotificationBlockerChromeOSTest); DISALLOW_COPY_AND_ASSIGN(MultiUserNotificationBlockerChromeOSTest);
}; };
......
...@@ -18,10 +18,12 @@ ...@@ -18,10 +18,12 @@
#include "base/logging.h" #include "base/logging.h"
#include "base/strings/string_util.h" #include "base/strings/string_util.h"
#include "base/time/time.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.h"
#include "chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos.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/browser/ui/ash/multi_user/user_switch_animator_chromeos.h"
#include "chrome/test/base/testing_profile.h" #include "chrome/test/base/testing_profile.h"
#include "components/user_manager/fake_user_manager.h"
#include "components/user_manager/user_info.h" #include "components/user_manager/user_info.h"
#include "ui/aura/client/aura_constants.h" #include "ui/aura/client/aura_constants.h"
#include "ui/aura/window_event_dispatcher.h" #include "ui/aura/window_event_dispatcher.h"
...@@ -39,7 +41,9 @@ class MultiUserWindowManagerChromeOSTest : public AshTestBase { ...@@ -39,7 +41,9 @@ class MultiUserWindowManagerChromeOSTest : public AshTestBase {
public: public:
MultiUserWindowManagerChromeOSTest() MultiUserWindowManagerChromeOSTest()
: multi_user_window_manager_(NULL), : 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 SetUp() override;
void TearDown() override; void TearDown() override;
...@@ -158,6 +162,10 @@ class MultiUserWindowManagerChromeOSTest : public AshTestBase { ...@@ -158,6 +162,10 @@ class MultiUserWindowManagerChromeOSTest : public AshTestBase {
// The session state delegate. // The session state delegate.
ash::test::TestSessionStateDelegate* 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). // The maximized window manager (if enabled).
scoped_ptr<MaximizeModeWindowManager> maximize_mode_window_manager_; scoped_ptr<MaximizeModeWindowManager> maximize_mode_window_manager_;
......
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