| 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 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 154 }; | 154 }; |
| 155 | 155 |
| 156 DesktopBackgroundController::DesktopBackgroundController() | 156 DesktopBackgroundController::DesktopBackgroundController() |
| 157 : command_line_for_testing_(NULL), | 157 : command_line_for_testing_(NULL), |
| 158 locked_(false), | 158 locked_(false), |
| 159 desktop_background_mode_(BACKGROUND_NONE), | 159 desktop_background_mode_(BACKGROUND_NONE), |
| 160 current_default_wallpaper_resource_id_(-1), | 160 current_default_wallpaper_resource_id_(-1), |
| 161 weak_ptr_factory_(this), | 161 weak_ptr_factory_(this), |
| 162 wallpaper_reload_delay_(kWallpaperReloadDelayMs) { | 162 wallpaper_reload_delay_(kWallpaperReloadDelayMs) { |
| 163 Shell::GetInstance()->display_controller()->AddObserver(this); | 163 Shell::GetInstance()->display_controller()->AddObserver(this); |
| 164 Shell::GetInstance()->AddShellObserver(this); |
| 164 } | 165 } |
| 165 | 166 |
| 166 DesktopBackgroundController::~DesktopBackgroundController() { | 167 DesktopBackgroundController::~DesktopBackgroundController() { |
| 167 CancelDefaultWallpaperLoader(); | 168 CancelDefaultWallpaperLoader(); |
| 168 Shell::GetInstance()->display_controller()->RemoveObserver(this); | 169 Shell::GetInstance()->display_controller()->RemoveObserver(this); |
| 170 Shell::GetInstance()->RemoveShellObserver(this); |
| 169 } | 171 } |
| 170 | 172 |
| 171 gfx::ImageSkia DesktopBackgroundController::GetWallpaper() const { | 173 gfx::ImageSkia DesktopBackgroundController::GetWallpaper() const { |
| 172 if (current_wallpaper_) | 174 if (current_wallpaper_) |
| 173 return current_wallpaper_->image(); | 175 return current_wallpaper_->image(); |
| 174 return gfx::ImageSkia(); | 176 return gfx::ImageSkia(); |
| 175 } | 177 } |
| 176 | 178 |
| 177 void DesktopBackgroundController::AddObserver( | 179 void DesktopBackgroundController::AddObserver( |
| 178 DesktopBackgroundControllerObserver* observer) { | 180 DesktopBackgroundControllerObserver* observer) { |
| 179 observers_.AddObserver(observer); | 181 observers_.AddObserver(observer); |
| 180 } | 182 } |
| 181 | 183 |
| 182 void DesktopBackgroundController::RemoveObserver( | 184 void DesktopBackgroundController::RemoveObserver( |
| 183 DesktopBackgroundControllerObserver* observer) { | 185 DesktopBackgroundControllerObserver* observer) { |
| 184 observers_.RemoveObserver(observer); | 186 observers_.RemoveObserver(observer); |
| 185 } | 187 } |
| 186 | 188 |
| 187 WallpaperLayout DesktopBackgroundController::GetWallpaperLayout() const { | 189 WallpaperLayout DesktopBackgroundController::GetWallpaperLayout() const { |
| 188 if (current_wallpaper_) | 190 if (current_wallpaper_) |
| 189 return current_wallpaper_->layout(); | 191 return current_wallpaper_->layout(); |
| 190 return WALLPAPER_LAYOUT_CENTER_CROPPED; | 192 return WALLPAPER_LAYOUT_CENTER_CROPPED; |
| 191 } | 193 } |
| 192 | 194 |
| 193 void DesktopBackgroundController::OnRootWindowAdded(aura::Window* root_window) { | |
| 194 // The background hasn't been set yet. | |
| 195 if (desktop_background_mode_ == BACKGROUND_NONE) | |
| 196 return; | |
| 197 | |
| 198 // Handle resolution change for "built-in" images. | |
| 199 gfx::Size max_display_size = GetMaxDisplaySizeInNative(); | |
| 200 if (current_max_display_size_ != max_display_size) { | |
| 201 current_max_display_size_ = max_display_size; | |
| 202 if (desktop_background_mode_ == BACKGROUND_IMAGE && | |
| 203 current_wallpaper_.get()) | |
| 204 UpdateWallpaper(); | |
| 205 } | |
| 206 | |
| 207 InstallDesktopController(root_window); | |
| 208 } | |
| 209 | |
| 210 bool DesktopBackgroundController::SetDefaultWallpaper(bool is_guest) { | 195 bool DesktopBackgroundController::SetDefaultWallpaper(bool is_guest) { |
| 211 VLOG(1) << "SetDefaultWallpaper: is_guest=" << is_guest; | 196 VLOG(1) << "SetDefaultWallpaper: is_guest=" << is_guest; |
| 212 const bool use_large = | 197 const bool use_large = |
| 213 GetAppropriateResolution() == WALLPAPER_RESOLUTION_LARGE; | 198 GetAppropriateResolution() == WALLPAPER_RESOLUTION_LARGE; |
| 214 | 199 |
| 215 base::FilePath file_path; | 200 base::FilePath file_path; |
| 216 WallpaperLayout file_layout = use_large ? WALLPAPER_LAYOUT_CENTER_CROPPED : | 201 WallpaperLayout file_layout = use_large ? WALLPAPER_LAYOUT_CENTER_CROPPED : |
| 217 WALLPAPER_LAYOUT_CENTER; | 202 WALLPAPER_LAYOUT_CENTER; |
| 218 int resource_id = use_large ? IDR_AURA_WALLPAPER_DEFAULT_LARGE : | 203 int resource_id = use_large ? IDR_AURA_WALLPAPER_DEFAULT_LARGE : |
| 219 IDR_AURA_WALLPAPER_DEFAULT_SMALL; | 204 IDR_AURA_WALLPAPER_DEFAULT_SMALL; |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 320 current_wallpaper_.get()) { | 305 current_wallpaper_.get()) { |
| 321 timer_.Stop(); | 306 timer_.Stop(); |
| 322 timer_.Start(FROM_HERE, | 307 timer_.Start(FROM_HERE, |
| 323 base::TimeDelta::FromMilliseconds(wallpaper_reload_delay_), | 308 base::TimeDelta::FromMilliseconds(wallpaper_reload_delay_), |
| 324 this, | 309 this, |
| 325 &DesktopBackgroundController::UpdateWallpaper); | 310 &DesktopBackgroundController::UpdateWallpaper); |
| 326 } | 311 } |
| 327 } | 312 } |
| 328 } | 313 } |
| 329 | 314 |
| 315 void DesktopBackgroundController::OnRootWindowAdded(aura::Window* root_window) { |
| 316 // The background hasn't been set yet. |
| 317 if (desktop_background_mode_ == BACKGROUND_NONE) |
| 318 return; |
| 319 |
| 320 // Handle resolution change for "built-in" images. |
| 321 gfx::Size max_display_size = GetMaxDisplaySizeInNative(); |
| 322 if (current_max_display_size_ != max_display_size) { |
| 323 current_max_display_size_ = max_display_size; |
| 324 if (desktop_background_mode_ == BACKGROUND_IMAGE && |
| 325 current_wallpaper_.get()) |
| 326 UpdateWallpaper(); |
| 327 } |
| 328 |
| 329 InstallDesktopController(root_window); |
| 330 } |
| 331 |
| 330 bool DesktopBackgroundController::DefaultWallpaperIsAlreadyLoadingOrLoaded( | 332 bool DesktopBackgroundController::DefaultWallpaperIsAlreadyLoadingOrLoaded( |
| 331 const base::FilePath& image_file, | 333 const base::FilePath& image_file, |
| 332 int image_resource_id) const { | 334 int image_resource_id) const { |
| 333 return (default_wallpaper_loader_.get() && | 335 return (default_wallpaper_loader_.get() && |
| 334 !default_wallpaper_loader_->IsCanceled() && | 336 !default_wallpaper_loader_->IsCanceled() && |
| 335 default_wallpaper_loader_->file_path() == image_file && | 337 default_wallpaper_loader_->file_path() == image_file && |
| 336 default_wallpaper_loader_->resource_id() == image_resource_id) || | 338 default_wallpaper_loader_->resource_id() == image_resource_id) || |
| 337 (current_wallpaper_.get() && | 339 (current_wallpaper_.get() && |
| 338 current_default_wallpaper_path_ == image_file && | 340 current_default_wallpaper_path_ == image_file && |
| 339 current_default_wallpaper_resource_id_ == image_resource_id); | 341 current_default_wallpaper_resource_id_ == image_resource_id); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 465 iter->rotation() == gfx::Display::ROTATE_270) { | 467 iter->rotation() == gfx::Display::ROTATE_270) { |
| 466 size_in_pixel = gfx::Size(size_in_pixel.height(), size_in_pixel.width()); | 468 size_in_pixel = gfx::Size(size_in_pixel.height(), size_in_pixel.width()); |
| 467 } | 469 } |
| 468 width = std::max(size_in_pixel.width(), width); | 470 width = std::max(size_in_pixel.width(), width); |
| 469 height = std::max(size_in_pixel.height(), height); | 471 height = std::max(size_in_pixel.height(), height); |
| 470 } | 472 } |
| 471 return gfx::Size(width, height); | 473 return gfx::Size(width, height); |
| 472 } | 474 } |
| 473 | 475 |
| 474 } // namespace ash | 476 } // namespace ash |
| OLD | NEW |