summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormerkulova <merkulova@chromium.org>2015-03-02 00:18:14 -0800
committerCommit bot <commit-bot@chromium.org>2015-03-02 08:18:59 +0000
commitc3a3f671f8e0c5777c6bc825f21d61c6bcafbec3 (patch)
tree8b8aa795a0f74cfc321af1de00951b7eaafa79bc
parent4a636301c72b71b544b3a8acc17884e1eb8f2036 (diff)
downloadchromium_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}
-rw-r--r--chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.cc8
-rw-r--r--chrome/browser/chromeos/login/users/wallpaper/wallpaper_manager.h8
-rw-r--r--chrome/browser/ui/ash/multi_user/multi_user_window_manager_chromeos_unittest.cc10
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_;