Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1702)

Unified Diff: ash/desktop_background/desktop_background_controller.cc

Issue 210313004: ABANDONED: ash: Support changing default wallpaper at runtime. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 7673f29aa6a48d9439e9397c4663105e09f001b3..4249b4a4e6ad482ef4bb073ebf357b0cde98fc5c 100644
--- a/ash/desktop_background/desktop_background_controller.cc
+++ b/ash/desktop_background/desktop_background_controller.cc
@@ -155,13 +155,14 @@ class DesktopBackgroundController::WallpaperLoader
};
DesktopBackgroundController::DesktopBackgroundController()
- : command_line_for_testing_(NULL),
- locked_(false),
+ : locked_(false),
desktop_background_mode_(BACKGROUND_NONE),
current_default_wallpaper_resource_id_(-1),
weak_ptr_factory_(this),
- wallpaper_reload_delay_(kWallpaperReloadDelayMs) {
+ wallpaper_reload_delay_(
+ base::TimeDelta::FromMilliseconds(kWallpaperReloadDelayMs)) {
Shell::GetInstance()->display_controller()->AddObserver(this);
+ InitWallpaperPathsFromCommandLine(base::CommandLine::ForCurrentProcess());
}
DesktopBackgroundController::~DesktopBackgroundController() {
@@ -169,12 +170,6 @@ DesktopBackgroundController::~DesktopBackgroundController() {
Shell::GetInstance()->display_controller()->RemoveObserver(this);
}
-gfx::ImageSkia DesktopBackgroundController::GetWallpaper() const {
- if (current_wallpaper_)
- return current_wallpaper_->image();
- return gfx::ImageSkia();
-}
-
void DesktopBackgroundController::AddObserver(
DesktopBackgroundControllerObserver* observer) {
observers_.AddObserver(observer);
@@ -191,6 +186,12 @@ WallpaperLayout DesktopBackgroundController::GetWallpaperLayout() const {
return WALLPAPER_LAYOUT_CENTER_CROPPED;
}
+gfx::ImageSkia DesktopBackgroundController::GetWallpaper() const {
+ if (current_wallpaper_)
+ return current_wallpaper_->image();
+ return gfx::ImageSkia();
+}
+
void DesktopBackgroundController::OnRootWindowAdded(aura::Window* root_window) {
// The background hasn't been set yet.
if (desktop_background_mode_ == BACKGROUND_NONE)
@@ -208,29 +209,41 @@ void DesktopBackgroundController::OnRootWindowAdded(aura::Window* root_window) {
InstallDesktopController(root_window);
}
+void DesktopBackgroundController::InitWallpaperPathsFromCommandLine(
+ base::CommandLine* cl) {
+ small_default_wallpaper_path_ =
+ cl->GetSwitchValuePath(switches::kAshDefaultWallpaperSmall);
+ large_default_wallpaper_path_ =
+ cl->GetSwitchValuePath(switches::kAshDefaultWallpaperLarge);
+ small_guest_wallpaper_path_ =
+ cl->GetSwitchValuePath(switches::kAshGuestWallpaperSmall);
+ large_guest_wallpaper_path_ =
+ cl->GetSwitchValuePath(switches::kAshGuestWallpaperLarge);
+}
+
+void DesktopBackgroundController::SetDefaultWallpaperPaths(
+ const base::FilePath& small_path,
+ const base::FilePath& large_path,
+ bool is_guest) {
+ base::FilePath old_path;
+ WallpaperLayout old_layout;
+ GetDefaultWallpaperInfo(is_guest, &old_path, &old_layout, NULL, NULL);
Alexander Alekseev 2014/03/24 23:04:12 This call returns "Future wallpaper parameters, th
Daniel Erat 2014/03/24 23:12:05 "first of all" -> is this the only concern? is yo
+
+ small_default_wallpaper_path_ = small_path;
+ large_default_wallpaper_path_ = large_path;
Alexander Alekseev 2014/03/24 23:04:12 if (is_guest) { ... } else { ... } ?
Daniel Erat 2014/03/24 23:12:05 do you need to override the default guest wallpape
+
+ // If the default was previously in use, update it.
+ if (DefaultWallpaperIsAlreadyLoadingOrLoaded(old_path, old_layout))
+ SetDefaultWallpaper(is_guest);
+}
+
bool DesktopBackgroundController::SetDefaultWallpaper(bool is_guest) {
VLOG(1) << "SetDefaultWallpaper: is_guest=" << is_guest;
- const bool use_large =
- GetAppropriateResolution() == WALLPAPER_RESOLUTION_LARGE;
-
base::FilePath file_path;
- WallpaperLayout file_layout = use_large ? WALLPAPER_LAYOUT_CENTER_CROPPED :
- WALLPAPER_LAYOUT_CENTER;
- int resource_id = use_large ? IDR_AURA_WALLPAPER_DEFAULT_LARGE :
- IDR_AURA_WALLPAPER_DEFAULT_SMALL;
- WallpaperLayout resource_layout = WALLPAPER_LAYOUT_TILE;
-
- CommandLine* command_line = command_line_for_testing_ ?
- command_line_for_testing_ : CommandLine::ForCurrentProcess();
- const char* switch_name = NULL;
- if (is_guest) {
- switch_name = use_large ? switches::kAshGuestWallpaperLarge :
- switches::kAshGuestWallpaperSmall;
- } else {
- switch_name = use_large ? switches::kAshDefaultWallpaperLarge :
- switches::kAshDefaultWallpaperSmall;
- }
- file_path = command_line->GetSwitchValuePath(switch_name);
+ int resource_id;
+ WallpaperLayout file_layout, resource_layout;
+ GetDefaultWallpaperInfo(
+ is_guest, &file_path, &file_layout, &resource_id, &resource_layout);
if (DefaultWallpaperIsAlreadyLoadingOrLoaded(file_path, resource_id)) {
VLOG(1) << "Default wallpaper is already loading or loaded";
@@ -320,14 +333,43 @@ void DesktopBackgroundController::OnDisplayConfigurationChanged() {
if (desktop_background_mode_ == BACKGROUND_IMAGE &&
current_wallpaper_.get()) {
timer_.Stop();
- timer_.Start(FROM_HERE,
- base::TimeDelta::FromMilliseconds(wallpaper_reload_delay_),
- this,
+ timer_.Start(FROM_HERE, wallpaper_reload_delay_, this,
&DesktopBackgroundController::UpdateWallpaper);
}
}
}
+void DesktopBackgroundController::GetDefaultWallpaperInfo(
+ bool is_guest,
+ base::FilePath* file_path,
+ WallpaperLayout* file_layout,
+ int* resource_id,
+ WallpaperLayout* resource_layout) {
+ const bool use_large =
+ GetAppropriateResolution() == WALLPAPER_RESOLUTION_LARGE;
+
+ if (file_path) {
+ if (is_guest) {
+ *file_path = use_large ? large_guest_wallpaper_path_ :
+ small_guest_wallpaper_path_;
+ } else {
+ *file_path = use_large ? large_default_wallpaper_path_ :
+ small_default_wallpaper_path_;
+ }
+ }
+ if (file_layout) {
+ *file_layout = use_large ? WALLPAPER_LAYOUT_CENTER_CROPPED :
+ WALLPAPER_LAYOUT_CENTER;
+ }
+
+ if (resource_id) {
+ *resource_id = use_large ? IDR_AURA_WALLPAPER_DEFAULT_LARGE :
+ IDR_AURA_WALLPAPER_DEFAULT_SMALL;
+ }
+ if (resource_layout)
+ *resource_layout = WALLPAPER_LAYOUT_TILE;
+}
+
bool DesktopBackgroundController::DefaultWallpaperIsAlreadyLoadingOrLoaded(
const base::FilePath& image_file,
int image_resource_id) const {

Powered by Google App Engine
This is Rietveld 408576698