diff options
author | bshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-12 02:00:35 +0000 |
---|---|---|
committer | bshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-12 02:00:35 +0000 |
commit | 0c4f87dffe63fdbb20c073f849a7663afbe8cf6e (patch) | |
tree | 16fec8608423a8b07dc197a7e8915b3843f1797a | |
parent | a45b752cd91adf18d56e407ec77874b0a39c5aca (diff) | |
download | chromium_src-0c4f87dffe63fdbb20c073f849a7663afbe8cf6e.zip chromium_src-0c4f87dffe63fdbb20c073f849a7663afbe8cf6e.tar.gz chromium_src-0c4f87dffe63fdbb20c073f849a7663afbe8cf6e.tar.bz2 |
Use a #fefefe solid color wallpaper background before user login for GAIA login flow.
BUG=130635
TEST=
Enable new OOBE login from about:flags and relaunch browser, in
the loggin screen, the background color should be white (#FEFEFE).
Review URL: https://chromiumcodereview.appspot.com/10492003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@141596 0039d316-1c4b-4281-b951-d872f2087c98
12 files changed, 53 insertions, 26 deletions
diff --git a/ash/accelerators/accelerator_controller.cc b/ash/accelerators/accelerator_controller.cc index b3435d3..1c3da9f 100644 --- a/ash/accelerators/accelerator_controller.cc +++ b/ash/accelerators/accelerator_controller.cc @@ -159,10 +159,11 @@ bool HandleToggleDesktopBackgroundMode() { Shell::GetInstance()->desktop_background_controller(); if (desktop_background_controller->desktop_background_mode() == DesktopBackgroundController::BACKGROUND_IMAGE) { - desktop_background_controller->SetDesktopBackgroundSolidColorMode(); + desktop_background_controller->SetDesktopBackgroundSolidColorMode( + SK_ColorBLACK); } else { - Shell::GetInstance()->user_wallpaper_delegate()-> - SetLoggedInUserWallpaper(); + ash::Shell::GetInstance()->user_wallpaper_delegate()-> + InitializeWallpaper(); } return true; } diff --git a/ash/desktop_background/desktop_background_controller.cc b/ash/desktop_background/desktop_background_controller.cc index 9014754..f6e6dfc 100644 --- a/ash/desktop_background/desktop_background_controller.cc +++ b/ash/desktop_background/desktop_background_controller.cc @@ -104,6 +104,9 @@ void DesktopBackgroundController::SetDefaultWallpaper(int index) { if (index == ash::GetInvalidWallpaperIndex()) { CreateEmptyWallpaper(); return; + } else if (index == ash::GetSolidColorIndex()) { + SetDesktopBackgroundSolidColorMode(kLoginWallpaperColor); + return; } if (previous_index_ == index) @@ -138,13 +141,14 @@ void DesktopBackgroundController::CancelPendingWallpaperOperation() { weak_ptr_factory_.InvalidateWeakPtrs(); } -void DesktopBackgroundController::SetDesktopBackgroundSolidColorMode() { +void DesktopBackgroundController::SetDesktopBackgroundSolidColorMode( + SkColor color) { // Set a solid black background. // TODO(derat): Remove this in favor of having the compositor only clear the // viewport when there are regions not covered by a layer: // http://crbug.com/113445 ui::Layer* background_layer = new ui::Layer(ui::LAYER_SOLID_COLOR); - background_layer->SetColor(SK_ColorBLACK); + background_layer->SetColor(color); root_window_->GetChildById( internal::kShellWindowId_DesktopBackgroundContainer)-> layer()->Add(background_layer); diff --git a/ash/desktop_background/desktop_background_controller.h b/ash/desktop_background/desktop_background_controller.h index 4fdeeab..3a90684 100644 --- a/ash/desktop_background/desktop_background_controller.h +++ b/ash/desktop_background/desktop_background_controller.h @@ -10,6 +10,7 @@ #include "ash/desktop_background/desktop_background_resources.h" #include "base/basictypes.h" #include "base/memory/weak_ptr.h" +#include "third_party/skia/include/core/SkColor.h" namespace aura { class RootWindow; @@ -25,9 +26,8 @@ class UserWallpaperDelegate { public: virtual ~UserWallpaperDelegate() {} - // Loads logged in user wallpaper asynchronously and sets to current wallpaper - // after loaded. - virtual void SetLoggedInUserWallpaper() = 0; + // Initialize wallpaper. + virtual void InitializeWallpaper() = 0; // Opens the set wallpaper page in the browser. virtual void OpenSetWallpaperPage() = 0; @@ -66,9 +66,9 @@ class ASH_EXPORT DesktopBackgroundController { // Cancels the current wallpaper loading operation. void CancelPendingWallpaperOperation(); - // Sets the desktop background to solid color mode and creates a solid color - // layout. - void SetDesktopBackgroundSolidColorMode(); + // Sets the desktop background to solid color mode and creates a solid + // |color| layout. + void SetDesktopBackgroundSolidColorMode(SkColor color); // Creates an empty wallpaper. Some tests require a wallpaper widget is ready // when running. However, the wallpaper widgets are now created asynchronously diff --git a/ash/desktop_background/desktop_background_resources.cc b/ash/desktop_background/desktop_background_resources.cc index 76dc091..8219624 100644 --- a/ash/desktop_background/desktop_background_resources.cc +++ b/ash/desktop_background/desktop_background_resources.cc @@ -223,6 +223,7 @@ const ash::WallpaperInfo kDefaultWallpapers[] = { const int kDefaultWallpaperCount = arraysize(kDefaultWallpapers); const int kInvalidWallpaperIndex = -1; +const int kSolidColorIndex = -2; // TODO(saintlou): These hardcoded indexes, although checked against the size // of the array are really hacky. @@ -243,6 +244,10 @@ const int kGuestWallpaperIndex = kDefaultWallpaperIndex; namespace ash { +int GetSolidColorIndex() { + return kSolidColorIndex; +} + int GetInvalidWallpaperIndex() { return kInvalidWallpaperIndex; } diff --git a/ash/desktop_background/desktop_background_resources.h b/ash/desktop_background/desktop_background_resources.h index 1de8762..a25afa2 100644 --- a/ash/desktop_background/desktop_background_resources.h +++ b/ash/desktop_background/desktop_background_resources.h @@ -6,6 +6,7 @@ #define ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_RESOURCES_H_ #include "ash/ash_export.h" +#include "third_party/skia/include/core/SkColor.h" namespace ash { @@ -26,6 +27,9 @@ struct ASH_EXPORT WallpaperInfo { const char* website; }; +const SkColor kLoginWallpaperColor = 0xFEFEFE; + +ASH_EXPORT int GetSolidColorIndex(); ASH_EXPORT int GetInvalidWallpaperIndex(); ASH_EXPORT int GetDefaultWallpaperIndex(); ASH_EXPORT int GetGuestWallpaperIndex(); diff --git a/ash/shell.cc b/ash/shell.cc index 0b3a92c..dc67178 100644 --- a/ash/shell.cc +++ b/ash/shell.cc @@ -247,7 +247,7 @@ class DummyUserWallpaperDelegate : public UserWallpaperDelegate { virtual ~DummyUserWallpaperDelegate() {} - virtual void SetLoggedInUserWallpaper() OVERRIDE { + virtual void InitializeWallpaper() OVERRIDE { ash::Shell::GetInstance()->desktop_background_controller()-> CreateEmptyWallpaper(); } @@ -861,7 +861,7 @@ void Shell::Init() { // It needs to be created after OnWindowResized has been called, otherwise the // widget will not paint when restoring after a browser crash. - user_wallpaper_delegate_->SetLoggedInUserWallpaper(); + user_wallpaper_delegate_->InitializeWallpaper(); window_modality_controller_.reset(new internal::WindowModalityController); AddEnvEventFilter(window_modality_controller_.get()); diff --git a/chrome/browser/chromeos/background/ash_user_wallpaper_delegate.cc b/chrome/browser/chromeos/background/ash_user_wallpaper_delegate.cc index bef27b4..1e8181b 100644 --- a/chrome/browser/chromeos/background/ash_user_wallpaper_delegate.cc +++ b/chrome/browser/chromeos/background/ash_user_wallpaper_delegate.cc @@ -27,8 +27,8 @@ class UserWallpaperDelegate: public ash::UserWallpaperDelegate { virtual ~UserWallpaperDelegate() { } - virtual void SetLoggedInUserWallpaper() OVERRIDE { - chromeos::UserManager::Get()->SetLoggedInUserWallpaper(); + virtual void InitializeWallpaper() OVERRIDE { + chromeos::UserManager::Get()->InitializeWallpaper(); } virtual void OpenSetWallpaperPage() OVERRIDE { diff --git a/chrome/browser/chromeos/login/mock_user_manager.h b/chrome/browser/chromeos/login/mock_user_manager.h index 295028b..804c2da 100644 --- a/chrome/browser/chromeos/login/mock_user_manager.h +++ b/chrome/browser/chromeos/login/mock_user_manager.h @@ -24,7 +24,7 @@ class MockUserManager : public UserManager { MOCK_METHOD0(DemoUserLoggedIn, void(void)); MOCK_METHOD0(GuestUserLoggedIn, void(void)); MOCK_METHOD1(EphemeralUserLoggedIn, void(const std::string&)); - MOCK_METHOD0(SetLoggedInUserWallpaper, void(void)); + MOCK_METHOD0(InitializeWallpaper, void(void)); MOCK_METHOD1(UserSelected, void(const std::string&)); MOCK_METHOD0(SessionStarted, void(void)); MOCK_METHOD2(RemoveUser, void(const std::string&, RemoveUserDelegate*)); diff --git a/chrome/browser/chromeos/login/user_manager.h b/chrome/browser/chromeos/login/user_manager.h index 159819f..623ad4a 100644 --- a/chrome/browser/chromeos/login/user_manager.h +++ b/chrome/browser/chromeos/login/user_manager.h @@ -104,10 +104,10 @@ class UserManager { // Indicates that a user just logged in as ephemeral. virtual void EphemeralUserLoggedIn(const std::string& email) = 0; - // Loads logged in user wallpaper asynchronously and sets to current wallpaper - // after loaded. If not logged in or logged in as stub user, uses an empty - // wallpaper. - virtual void SetLoggedInUserWallpaper() = 0; + // Initializes wallpaper. If logged in, loads user's wallpaper. If not logged + // in, uses a solid color wallpaper. If logged in as a stub user, uses an + // empty wallpaper. + virtual void InitializeWallpaper() = 0; // Called when user pod with |email| is selected. virtual void UserSelected(const std::string& email) = 0; diff --git a/chrome/browser/chromeos/login/user_manager_impl.cc b/chrome/browser/chromeos/login/user_manager_impl.cc index 789b643..ef1126f 100644 --- a/chrome/browser/chromeos/login/user_manager_impl.cc +++ b/chrome/browser/chromeos/login/user_manager_impl.cc @@ -361,10 +361,23 @@ void UserManagerImpl::StubUserLoggedIn() { kStubDefaultImageIndex); } -void UserManagerImpl::SetLoggedInUserWallpaper() { +void UserManagerImpl::InitializeWallpaper() { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - if (!IsUserLoggedIn() || IsLoggedInAsStub()) { + if (!IsUserLoggedIn()) { + if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableNewOobe)) { + bool show_users = true; + bool result = CrosSettings::Get()->GetBoolean( + kAccountsPrefShowUserNamesOnSignIn, &show_users); + DCHECK(result) << "Unable to fetch setting " + << kAccountsPrefShowUserNamesOnSignIn; + if (!show_users) { + ash::Shell::GetInstance()->desktop_background_controller()-> + SetDefaultWallpaper(ash::GetSolidColorIndex()); + } + } + return; + } else if (IsLoggedInAsStub()) { ash::Shell::GetInstance()->desktop_background_controller()-> SetDefaultWallpaper(ash::GetInvalidWallpaperIndex()); return; @@ -1023,8 +1036,9 @@ void UserManagerImpl::GetLoggedInUserWallpaperProperties( User::WallpaperType* type, int* index) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + DCHECK(logged_in_user_); - if (!IsUserLoggedIn() || IsLoggedInAsStub()) { + if (IsLoggedInAsStub()) { *type = current_user_wallpaper_type_ = User::DEFAULT; *index = current_user_wallpaper_index_ = ash::GetInvalidWallpaperIndex(); return; diff --git a/chrome/browser/chromeos/login/user_manager_impl.h b/chrome/browser/chromeos/login/user_manager_impl.h index 8bb42a1..af888d5 100644 --- a/chrome/browser/chromeos/login/user_manager_impl.h +++ b/chrome/browser/chromeos/login/user_manager_impl.h @@ -47,7 +47,7 @@ class UserManagerImpl : public UserManager, virtual void DemoUserLoggedIn() OVERRIDE; virtual void GuestUserLoggedIn() OVERRIDE; virtual void EphemeralUserLoggedIn(const std::string& email) OVERRIDE; - virtual void SetLoggedInUserWallpaper() OVERRIDE; + virtual void InitializeWallpaper() OVERRIDE; virtual void UserSelected(const std::string& email) OVERRIDE; virtual void SessionStarted() OVERRIDE; virtual void RemoveUser(const std::string& email, diff --git a/chrome/browser/ui/webui/options2/chromeos/set_wallpaper_options_handler2.cc b/chrome/browser/ui/webui/options2/chromeos/set_wallpaper_options_handler2.cc index fc45365..f023781 100644 --- a/chrome/browser/ui/webui/options2/chromeos/set_wallpaper_options_handler2.cc +++ b/chrome/browser/ui/webui/options2/chromeos/set_wallpaper_options_handler2.cc @@ -219,8 +219,7 @@ void SetWallpaperOptionsHandler::HandleDefaultWallpaper(const ListValue* args) { if (IsDefaultWallpaperURL(image_url, &user_image_index)) { UserManager::Get()->SaveLoggedInUserWallpaperProperties(User::DEFAULT, user_image_index); - ash::Shell::GetInstance()->user_wallpaper_delegate()-> - SetLoggedInUserWallpaper(); + ash::Shell::GetInstance()->user_wallpaper_delegate()->InitializeWallpaper(); } } |