| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/desktop_background/desktop_background_controller.h" | 5 #include "ash/desktop_background/desktop_background_controller.h" |
| 6 | 6 |
| 7 #include "ash/ash_switches.h" | 7 #include "ash/ash_switches.h" |
| 8 #include "ash/desktop_background/desktop_background_controller_observer.h" | 8 #include "ash/desktop_background/desktop_background_controller_observer.h" |
| 9 #include "ash/desktop_background/desktop_background_view.h" | 9 #include "ash/desktop_background/desktop_background_view.h" |
| 10 #include "ash/desktop_background/desktop_background_widget_controller.h" | 10 #include "ash/desktop_background/desktop_background_widget_controller.h" |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 // ID of an image resource to use if |file_path_| is empty or unloadable. | 148 // ID of an image resource to use if |file_path_| is empty or unloadable. |
| 149 int resource_id_; | 149 int resource_id_; |
| 150 | 150 |
| 151 // Layout to be used when displaying |resource_id_|. | 151 // Layout to be used when displaying |resource_id_|. |
| 152 WallpaperLayout resource_layout_; | 152 WallpaperLayout resource_layout_; |
| 153 | 153 |
| 154 DISALLOW_COPY_AND_ASSIGN(WallpaperLoader); | 154 DISALLOW_COPY_AND_ASSIGN(WallpaperLoader); |
| 155 }; | 155 }; |
| 156 | 156 |
| 157 DesktopBackgroundController::DesktopBackgroundController() | 157 DesktopBackgroundController::DesktopBackgroundController() |
| 158 : command_line_for_testing_(NULL), | 158 : locked_(false), |
| 159 locked_(false), | |
| 160 desktop_background_mode_(BACKGROUND_NONE), | 159 desktop_background_mode_(BACKGROUND_NONE), |
| 161 current_default_wallpaper_resource_id_(-1), | 160 current_default_wallpaper_resource_id_(-1), |
| 162 weak_ptr_factory_(this), | 161 weak_ptr_factory_(this), |
| 163 wallpaper_reload_delay_(kWallpaperReloadDelayMs) { | 162 wallpaper_reload_delay_(kWallpaperReloadDelayMs) { |
| 164 Shell::GetInstance()->display_controller()->AddObserver(this); | 163 Shell::GetInstance()->display_controller()->AddObserver(this); |
| 165 } | 164 } |
| 166 | 165 |
| 167 DesktopBackgroundController::~DesktopBackgroundController() { | 166 DesktopBackgroundController::~DesktopBackgroundController() { |
| 168 CancelDefaultWallpaperLoader(); | 167 CancelDefaultWallpaperLoader(); |
| 169 Shell::GetInstance()->display_controller()->RemoveObserver(this); | 168 Shell::GetInstance()->display_controller()->RemoveObserver(this); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 if (current_max_display_size_ != max_display_size) { | 200 if (current_max_display_size_ != max_display_size) { |
| 202 current_max_display_size_ = max_display_size; | 201 current_max_display_size_ = max_display_size; |
| 203 if (desktop_background_mode_ == BACKGROUND_IMAGE && | 202 if (desktop_background_mode_ == BACKGROUND_IMAGE && |
| 204 current_wallpaper_.get()) | 203 current_wallpaper_.get()) |
| 205 UpdateWallpaper(); | 204 UpdateWallpaper(); |
| 206 } | 205 } |
| 207 | 206 |
| 208 InstallDesktopController(root_window); | 207 InstallDesktopController(root_window); |
| 209 } | 208 } |
| 210 | 209 |
| 211 bool DesktopBackgroundController::SetDefaultWallpaper(bool is_guest) { | 210 bool DesktopBackgroundController::SetDefaultWallpaper( |
| 212 VLOG(1) << "SetDefaultWallpaper: is_guest=" << is_guest; | 211 const base::FilePath& small_resolution_path, |
| 212 const base::FilePath& large_resolution_path) { |
| 213 VLOG(1) << "SetDefaultWallpaper: small_resolution_path='" |
| 214 << small_resolution_path.value() << "' large_resolution_path='" |
| 215 << large_resolution_path.value() << "'"; |
| 213 const bool use_large = | 216 const bool use_large = |
| 214 GetAppropriateResolution() == WALLPAPER_RESOLUTION_LARGE; | 217 GetAppropriateResolution() == WALLPAPER_RESOLUTION_LARGE; |
| 215 | 218 |
| 216 base::FilePath file_path; | 219 const base::FilePath& file_path = |
| 217 WallpaperLayout file_layout = use_large ? WALLPAPER_LAYOUT_CENTER_CROPPED : | 220 use_large ? large_resolution_path : small_resolution_path; |
| 218 WALLPAPER_LAYOUT_CENTER; | 221 WallpaperLayout file_layout = |
| 219 int resource_id = use_large ? IDR_AURA_WALLPAPER_DEFAULT_LARGE : | 222 use_large ? WALLPAPER_LAYOUT_CENTER_CROPPED : WALLPAPER_LAYOUT_CENTER; |
| 220 IDR_AURA_WALLPAPER_DEFAULT_SMALL; | 223 int resource_id = use_large ? IDR_AURA_WALLPAPER_DEFAULT_LARGE |
| 224 : IDR_AURA_WALLPAPER_DEFAULT_SMALL; |
| 221 WallpaperLayout resource_layout = WALLPAPER_LAYOUT_TILE; | 225 WallpaperLayout resource_layout = WALLPAPER_LAYOUT_TILE; |
| 222 | 226 |
| 223 CommandLine* command_line = command_line_for_testing_ ? | |
| 224 command_line_for_testing_ : CommandLine::ForCurrentProcess(); | |
| 225 const char* switch_name = NULL; | |
| 226 if (is_guest) { | |
| 227 switch_name = use_large ? switches::kAshGuestWallpaperLarge : | |
| 228 switches::kAshGuestWallpaperSmall; | |
| 229 } else { | |
| 230 switch_name = use_large ? switches::kAshDefaultWallpaperLarge : | |
| 231 switches::kAshDefaultWallpaperSmall; | |
| 232 } | |
| 233 file_path = command_line->GetSwitchValuePath(switch_name); | |
| 234 | |
| 235 if (DefaultWallpaperIsAlreadyLoadingOrLoaded(file_path, resource_id)) { | 227 if (DefaultWallpaperIsAlreadyLoadingOrLoaded(file_path, resource_id)) { |
| 236 VLOG(1) << "Default wallpaper is already loading or loaded"; | 228 VLOG(1) << "Default wallpaper is already loading or loaded"; |
| 237 return false; | 229 return false; |
| 238 } | 230 } |
| 239 | 231 |
| 240 CancelDefaultWallpaperLoader(); | 232 CancelDefaultWallpaperLoader(); |
| 241 default_wallpaper_loader_ = new WallpaperLoader( | 233 default_wallpaper_loader_ = new WallpaperLoader( |
| 242 file_path, file_layout, resource_id, resource_layout); | 234 file_path, file_layout, resource_id, resource_layout); |
| 243 base::WorkerPool::PostTaskAndReply( | 235 base::WorkerPool::PostTaskAndReply( |
| 244 FROM_HERE, | 236 FROM_HERE, |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 321 current_wallpaper_.get()) { | 313 current_wallpaper_.get()) { |
| 322 timer_.Stop(); | 314 timer_.Stop(); |
| 323 timer_.Start(FROM_HERE, | 315 timer_.Start(FROM_HERE, |
| 324 base::TimeDelta::FromMilliseconds(wallpaper_reload_delay_), | 316 base::TimeDelta::FromMilliseconds(wallpaper_reload_delay_), |
| 325 this, | 317 this, |
| 326 &DesktopBackgroundController::UpdateWallpaper); | 318 &DesktopBackgroundController::UpdateWallpaper); |
| 327 } | 319 } |
| 328 } | 320 } |
| 329 } | 321 } |
| 330 | 322 |
| 323 bool DesktopBackgroundController::IsUsingDefaultWallpaper() const { |
| 324 return !current_default_wallpaper_path_.empty() || default_wallpaper_loader_; |
| 325 } |
| 326 |
| 331 bool DesktopBackgroundController::DefaultWallpaperIsAlreadyLoadingOrLoaded( | 327 bool DesktopBackgroundController::DefaultWallpaperIsAlreadyLoadingOrLoaded( |
| 332 const base::FilePath& image_file, | 328 const base::FilePath& image_file, |
| 333 int image_resource_id) const { | 329 int image_resource_id) const { |
| 334 return (default_wallpaper_loader_.get() && | 330 return (default_wallpaper_loader_.get() && |
| 335 !default_wallpaper_loader_->IsCanceled() && | 331 !default_wallpaper_loader_->IsCanceled() && |
| 336 default_wallpaper_loader_->file_path() == image_file && | 332 default_wallpaper_loader_->file_path() == image_file && |
| 337 default_wallpaper_loader_->resource_id() == image_resource_id) || | 333 default_wallpaper_loader_->resource_id() == image_resource_id) || |
| 338 (current_wallpaper_.get() && | 334 (current_wallpaper_.get() && |
| 339 current_default_wallpaper_path_ == image_file && | 335 current_default_wallpaper_path_ == image_file && |
| 340 current_default_wallpaper_resource_id_ == image_resource_id); | 336 current_default_wallpaper_resource_id_ == image_resource_id); |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 iter->rotation() == gfx::Display::ROTATE_270) { | 464 iter->rotation() == gfx::Display::ROTATE_270) { |
| 469 size_in_pixel = gfx::Size(size_in_pixel.height(), size_in_pixel.width()); | 465 size_in_pixel = gfx::Size(size_in_pixel.height(), size_in_pixel.width()); |
| 470 } | 466 } |
| 471 width = std::max(size_in_pixel.width(), width); | 467 width = std::max(size_in_pixel.width(), width); |
| 472 height = std::max(size_in_pixel.height(), height); | 468 height = std::max(size_in_pixel.height(), height); |
| 473 } | 469 } |
| 474 return gfx::Size(width, height); | 470 return gfx::Size(width, height); |
| 475 } | 471 } |
| 476 | 472 |
| 477 } // namespace ash | 473 } // namespace ash |
| OLD | NEW |