summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-12 02:00:35 +0000
committerbshe@chromium.org <bshe@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-06-12 02:00:35 +0000
commit0c4f87dffe63fdbb20c073f849a7663afbe8cf6e (patch)
tree16fec8608423a8b07dc197a7e8915b3843f1797a
parenta45b752cd91adf18d56e407ec77874b0a39c5aca (diff)
downloadchromium_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
-rw-r--r--ash/accelerators/accelerator_controller.cc7
-rw-r--r--ash/desktop_background/desktop_background_controller.cc8
-rw-r--r--ash/desktop_background/desktop_background_controller.h12
-rw-r--r--ash/desktop_background/desktop_background_resources.cc5
-rw-r--r--ash/desktop_background/desktop_background_resources.h4
-rw-r--r--ash/shell.cc4
-rw-r--r--chrome/browser/chromeos/background/ash_user_wallpaper_delegate.cc4
-rw-r--r--chrome/browser/chromeos/login/mock_user_manager.h2
-rw-r--r--chrome/browser/chromeos/login/user_manager.h8
-rw-r--r--chrome/browser/chromeos/login/user_manager_impl.cc20
-rw-r--r--chrome/browser/chromeos/login/user_manager_impl.h2
-rw-r--r--chrome/browser/ui/webui/options2/chromeos/set_wallpaper_options_handler2.cc3
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();
}
}