Index: ash/desktop_background/desktop_background_controller.cc |
diff --git a/ash/desktop_background/desktop_background_controller.cc b/ash/desktop_background/desktop_background_controller.cc |
index 8575c1e0176941e4d0df8e02ec8923f397ce1539..857ee036905acf5b626f70affb2eee283e817270 100644 |
--- a/ash/desktop_background/desktop_background_controller.cc |
+++ b/ash/desktop_background/desktop_background_controller.cc |
@@ -18,6 +18,7 @@ |
#include "base/synchronization/cancellation_flag.h" |
#include "base/threading/worker_pool.h" |
#include "content/public/browser/browser_thread.h" |
+#include "grit/ash_wallpaper_resources.h" |
#include "ui/aura/root_window.h" |
#include "ui/aura/window.h" |
#include "ui/base/resource/resource_bundle.h" |
@@ -43,6 +44,24 @@ internal::RootWindowLayoutManager* GetRootWindowLayoutManager( |
} |
} // namespace |
+#if defined(GOOGLE_CHROME_BUILD) |
+const WallpaperInfo kDefaultLargeWallpaper = |
+ { IDR_AURA_WALLPAPERS_2_LANDSCAPE8_LARGE, CENTER_CROPPED }; |
+const WallpaperInfo kDefaultSmallWallpaper = |
+ { IDR_AURA_WALLPAPERS_2_LANDSCAPE8_SMALL, CENTER }; |
+const WallpaperInfo kGuestLargeWallpaper = |
+ { IDR_AURA_WALLPAPERS_2_LANDSCAPE7_LARGE, CENTER_CROPPED }; |
+const WallpaperInfo kGuestSmallWallpaper = |
+ { IDR_AURA_WALLPAPERS_2_LANDSCAPE7_SMALL, CENTER }; |
+#else |
+const WallpaperInfo kDefaultLargeWallpaper = |
+ { IDR_AURA_WALLPAPERS_5_GRADIENT5_LARGE, TILE }; |
+const WallpaperInfo kDefaultSmallWallpaper = |
+ { IDR_AURA_WALLPAPERS_5_GRADIENT5_SMALL, TILE }; |
+const WallpaperInfo kGuestLargeWallpaper = kDefaultLargeWallpaper; |
+const WallpaperInfo kGuestSmallWallpaper = kDefaultSmallWallpaper; |
+#endif |
+ |
const int kSmallWallpaperMaxWidth = 1366; |
const int kSmallWallpaperMaxHeight = 800; |
const int kLargeWallpaperMaxWidth = 2560; |
@@ -50,21 +69,18 @@ const int kLargeWallpaperMaxHeight = 1700; |
// Stores the current wallpaper data. |
struct DesktopBackgroundController::WallpaperData { |
- WallpaperData(int index, WallpaperResolution resolution) |
- : is_default_wallpaper(true), |
- wallpaper_index(index), |
- wallpaper_layout(GetWallpaperViewInfo(index, resolution).layout), |
+ explicit WallpaperData(const WallpaperInfo& info) |
+ : wallpaper_idr(info.idr), |
+ wallpaper_layout(info.layout), |
wallpaper_image(*(ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
- GetWallpaperViewInfo(index, resolution).id).ToImageSkia())) { |
+ info.idr).ToImageSkia())) { |
} |
WallpaperData(WallpaperLayout layout, const gfx::ImageSkia& image) |
- : is_default_wallpaper(false), |
- wallpaper_index(-1), |
+ : wallpaper_idr(-1), |
wallpaper_layout(layout), |
wallpaper_image(image) { |
} |
- const bool is_default_wallpaper; |
- const int wallpaper_index; |
+ int wallpaper_idr; |
sky
2012/11/19 22:21:19
Can this use WallpaperInfo?
bshe
2012/11/20 00:33:59
Done.
|
const WallpaperLayout wallpaper_layout; |
const gfx::ImageSkia wallpaper_image; |
}; |
@@ -75,9 +91,8 @@ class DesktopBackgroundController::WallpaperOperation |
: public base::RefCountedThreadSafe< |
DesktopBackgroundController::WallpaperOperation> { |
public: |
- WallpaperOperation(int index, WallpaperResolution resolution) |
- : index_(index), |
- resolution_(resolution) { |
+ explicit WallpaperOperation(const WallpaperInfo& info) |
+ : info_(info) { |
} |
static void Run(scoped_refptr<WallpaperOperation> wo) { |
@@ -87,15 +102,15 @@ class DesktopBackgroundController::WallpaperOperation |
void LoadingWallpaper() { |
sky
2012/11/19 22:21:19
Does this need to be public?
bshe
2012/11/20 00:33:59
Done.
|
if (cancel_flag_.IsSet()) |
return; |
- wallpaper_data_.reset(new WallpaperData(index_, resolution_)); |
+ wallpaper_data_.reset(new WallpaperData(info_)); |
} |
void Cancel() { |
cancel_flag_.Set(); |
} |
- int index() const { |
- return index_; |
+ int idr() { |
sky
2012/11/19 22:21:19
how come you removed the const?
bshe
2012/11/20 00:33:59
Done.
|
+ return info_.idr; |
} |
WallpaperData* ReleaseWallpaperData() { |
@@ -112,9 +127,7 @@ class DesktopBackgroundController::WallpaperOperation |
scoped_ptr<WallpaperData> wallpaper_data_; |
- const int index_; |
- |
- const WallpaperResolution resolution_; |
+ const WallpaperInfo info_; |
DISALLOW_COPY_AND_ASSIGN(WallpaperOperation); |
}; |
@@ -158,6 +171,15 @@ gfx::ImageSkia DesktopBackgroundController::GetCurrentWallpaperImage() { |
return GetWallpaper(); |
} |
+int DesktopBackgroundController::GetWallpaperIDR() const { |
+ if (wallpaper_op_.get()) |
+ return wallpaper_op_->idr(); |
+ else if (current_wallpaper_.get()) |
+ return current_wallpaper_->wallpaper_idr; |
+ else |
+ return -1; |
+} |
+ |
void DesktopBackgroundController::OnRootWindowAdded( |
aura::RootWindow* root_window) { |
// Handle resolution change for "built-in" images." |
@@ -168,54 +190,20 @@ void DesktopBackgroundController::OnRootWindowAdded( |
// small screen. |
if (kSmallWallpaperMaxWidth < root_window_size.width() || |
kSmallWallpaperMaxHeight < root_window_size.height()) { |
- if (current_wallpaper_->is_default_wallpaper) { |
- ReloadDefaultWallpaper(); |
- } else { |
- ash::Shell::GetInstance()->user_wallpaper_delegate()-> |
- UpdateWallpaper(); |
- } |
+ current_wallpaper_.reset(NULL); |
+ ash::Shell::GetInstance()->user_wallpaper_delegate()-> |
+ UpdateWallpaper(); |
} |
} |
InstallDesktopController(root_window); |
} |
-void DesktopBackgroundController::CacheDefaultWallpaper(int index) { |
- DCHECK(index >= 0); |
- |
- WallpaperResolution resolution = GetAppropriateResolution(); |
- scoped_refptr<WallpaperOperation> wallpaper_op = |
- new WallpaperOperation(index, resolution); |
- base::WorkerPool::PostTask( |
- FROM_HERE, |
- base::Bind(&WallpaperOperation::Run, wallpaper_op), |
- true); |
-} |
- |
-void DesktopBackgroundController::SetDefaultWallpaper(int index) { |
- // We should not change background when index is invalid. For instance, at |
- // login screen or stub_user login. |
- if (index == GetInvalidWallpaperIndex()) { |
- CreateEmptyWallpaper(); |
- return; |
- } else if (index == GetSolidColorIndex()) { |
- SetDesktopBackgroundSolidColorMode(kLoginWallpaperColor); |
- return; |
- } |
- |
- // Prevents loading of the same wallpaper as the currently loading/loaded |
- // one. |
- if ((wallpaper_op_.get() && wallpaper_op_->index() == index) || |
- (current_wallpaper_.get() && |
- current_wallpaper_->wallpaper_index == index)) { |
- return; |
- } |
+void DesktopBackgroundController::SetDefaultWallpaper(WallpaperInfo info) { |
+ DCHECK(GetWallpaperIDR() != info.idr); |
sky
2012/11/19 22:21:19
DCHECK_NE
How come this is a DCHECK? Isn't it poss
bshe
2012/11/20 00:33:59
I have moved the logic to prevent reloading same w
|
CancelPendingWallpaperOperation(); |
- |
- WallpaperResolution resolution = GetAppropriateResolution(); |
- |
- wallpaper_op_ = new WallpaperOperation(index, resolution); |
+ wallpaper_op_ = new WallpaperOperation(info); |
base::WorkerPool::PostTaskAndReply( |
FROM_HERE, |
base::Bind(&WallpaperOperation::Run, wallpaper_op_), |
@@ -225,12 +213,6 @@ void DesktopBackgroundController::SetDefaultWallpaper(int index) { |
true /* task_is_slow */); |
} |
-void DesktopBackgroundController::ReloadDefaultWallpaper() { |
- int index = current_wallpaper_->wallpaper_index; |
- current_wallpaper_.reset(NULL); |
- SetDefaultWallpaper(index); |
-} |
- |
void DesktopBackgroundController::SetCustomWallpaper( |
const gfx::ImageSkia& wallpaper, |
WallpaperLayout layout) { |