| 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 #ifndef ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ | 5 #ifndef ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ |
| 6 #define ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ | 6 #define ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ |
| 7 | 7 |
| 8 #include "ash/ash_export.h" | 8 #include "ash/ash_export.h" |
| 9 #include "ash/display/display_controller.h" | 9 #include "ash/display/display_controller.h" |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| 11 #include "base/files/file_path.h" | 11 #include "base/files/file_path.h" |
| 12 #include "base/gtest_prod_util.h" | 12 #include "base/gtest_prod_util.h" |
| 13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 14 #include "base/memory/weak_ptr.h" | 14 #include "base/memory/weak_ptr.h" |
| 15 #include "base/observer_list.h" | 15 #include "base/observer_list.h" |
| 16 #include "base/timer/timer.h" | 16 #include "base/timer/timer.h" |
| 17 #include "ui/compositor/layer.h" | 17 #include "ui/compositor/layer.h" |
| 18 #include "ui/gfx/image/image_skia.h" | 18 #include "ui/gfx/image/image_skia.h" |
| 19 | 19 |
| 20 typedef unsigned int SkColor; | 20 typedef unsigned int SkColor; |
| 21 | 21 |
| 22 namespace aura { | 22 namespace aura { |
| 23 class Window; | 23 class Window; |
| 24 } | 24 } |
| 25 | 25 |
| 26 namespace base { | |
| 27 class CommandLine; | |
| 28 } | |
| 29 | |
| 30 namespace ash { | 26 namespace ash { |
| 31 | 27 |
| 32 enum WallpaperLayout { | 28 enum WallpaperLayout { |
| 33 // Center the wallpaper on the desktop without scaling it. The wallpaper | 29 // Center the wallpaper on the desktop without scaling it. The wallpaper |
| 34 // may be cropped. | 30 // may be cropped. |
| 35 WALLPAPER_LAYOUT_CENTER, | 31 WALLPAPER_LAYOUT_CENTER, |
| 36 // Scale the wallpaper (while preserving its aspect ratio) to cover the | 32 // Scale the wallpaper (while preserving its aspect ratio) to cover the |
| 37 // desktop; the wallpaper may be cropped. | 33 // desktop; the wallpaper may be cropped. |
| 38 WALLPAPER_LAYOUT_CENTER_CROPPED, | 34 WALLPAPER_LAYOUT_CENTER_CROPPED, |
| 39 // Scale the wallpaper (without preserving its aspect ratio) to match the | 35 // Scale the wallpaper (without preserving its aspect ratio) to match the |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 BACKGROUND_IMAGE, | 72 BACKGROUND_IMAGE, |
| 77 }; | 73 }; |
| 78 | 74 |
| 79 DesktopBackgroundController(); | 75 DesktopBackgroundController(); |
| 80 virtual ~DesktopBackgroundController(); | 76 virtual ~DesktopBackgroundController(); |
| 81 | 77 |
| 82 BackgroundMode desktop_background_mode() const { | 78 BackgroundMode desktop_background_mode() const { |
| 83 return desktop_background_mode_; | 79 return desktop_background_mode_; |
| 84 } | 80 } |
| 85 | 81 |
| 86 void set_command_line_for_testing(base::CommandLine* command_line) { | |
| 87 command_line_for_testing_ = command_line; | |
| 88 } | |
| 89 | |
| 90 // Add/Remove observers. | 82 // Add/Remove observers. |
| 91 void AddObserver(DesktopBackgroundControllerObserver* observer); | 83 void AddObserver(DesktopBackgroundControllerObserver* observer); |
| 92 void RemoveObserver(DesktopBackgroundControllerObserver* observer); | 84 void RemoveObserver(DesktopBackgroundControllerObserver* observer); |
| 93 | 85 |
| 94 // Provides current image on the background, or empty gfx::ImageSkia if there | 86 // Provides current image on the background, or empty gfx::ImageSkia if there |
| 95 // is no image, e.g. background is none. | 87 // is no image, e.g. background is none. |
| 96 gfx::ImageSkia GetWallpaper() const; | 88 gfx::ImageSkia GetWallpaper() const; |
| 97 | 89 |
| 98 WallpaperLayout GetWallpaperLayout() const; | 90 WallpaperLayout GetWallpaperLayout() const; |
| 99 | 91 |
| 100 // Initialize root window's background. | 92 // Initialize root window's background. |
| 101 void OnRootWindowAdded(aura::Window* root_window); | 93 void OnRootWindowAdded(aura::Window* root_window); |
| 102 | 94 |
| 103 // Loads builtin wallpaper asynchronously and sets to current wallpaper | 95 // Loads builtin wallpaper asynchronously and sets to current wallpaper |
| 104 // after loaded. Returns true if the controller started loading the | 96 // after loaded. Returns true if the controller started loading the |
| 105 // wallpaper and false otherwise (i.e. the appropriate wallpaper was | 97 // wallpaper and false otherwise (i.e. the appropriate wallpaper was |
| 106 // already loading or loaded). | 98 // already loading or loaded). |
| 107 bool SetDefaultWallpaper(bool is_guest); | 99 bool SetDefaultWallpaper(const base::FilePath& small_resolution_path, |
| 100 const base::FilePath& large_resolution_path); |
| 108 | 101 |
| 109 // Sets the user selected custom wallpaper. Called when user selected a file | 102 // Sets the user selected custom wallpaper. Called when user selected a file |
| 110 // from file system or changed the layout of wallpaper. | 103 // from file system or changed the layout of wallpaper. |
| 111 void SetCustomWallpaper(const gfx::ImageSkia& image, WallpaperLayout layout); | 104 void SetCustomWallpaper(const gfx::ImageSkia& image, WallpaperLayout layout); |
| 112 | 105 |
| 113 // Cancels |default_wallpaper_loader_| if non-NULL. | 106 // Cancels |default_wallpaper_loader_| if non-NULL. |
| 114 void CancelDefaultWallpaperLoader(); | 107 void CancelDefaultWallpaperLoader(); |
| 115 | 108 |
| 116 // Creates an empty wallpaper. Some tests require a wallpaper widget is ready | 109 // Creates an empty wallpaper. Some tests require a wallpaper widget is ready |
| 117 // when running. However, the wallpaper widgets are now created | 110 // when running. However, the wallpaper widgets are now created |
| (...skipping 10 matching lines...) Expand all Loading... |
| 128 // Returns true if the desktop moved. | 121 // Returns true if the desktop moved. |
| 129 bool MoveDesktopToLockedContainer(); | 122 bool MoveDesktopToLockedContainer(); |
| 130 | 123 |
| 131 // Move all desktop widgets to unlocked container. | 124 // Move all desktop widgets to unlocked container. |
| 132 // Returns true if the desktop moved. | 125 // Returns true if the desktop moved. |
| 133 bool MoveDesktopToUnlockedContainer(); | 126 bool MoveDesktopToUnlockedContainer(); |
| 134 | 127 |
| 135 // Overrides DisplayController::Observer: | 128 // Overrides DisplayController::Observer: |
| 136 virtual void OnDisplayConfigurationChanged() OVERRIDE; | 129 virtual void OnDisplayConfigurationChanged() OVERRIDE; |
| 137 | 130 |
| 131 // Returns true if current wallpaper was loaded using SetDefaultWallpaper. |
| 132 // (i.e. if current wallpaper is "default" and we need to replace the default |
| 133 // wallpaper with another file, we need to initiate SetDefaultWallpaper() ) |
| 134 bool IsUsingDefaultWallpaper() const; |
| 135 |
| 138 private: | 136 private: |
| 139 friend class DesktopBackgroundControllerTest; | 137 friend class DesktopBackgroundControllerTest; |
| 140 FRIEND_TEST_ALL_PREFIXES(DesktopBackgroundControllerTest, GetMaxDisplaySize); | 138 FRIEND_TEST_ALL_PREFIXES(DesktopBackgroundControllerTest, GetMaxDisplaySize); |
| 141 | 139 |
| 142 // An operation to asynchronously loads wallpaper. | 140 // An operation to asynchronously loads wallpaper. |
| 143 class WallpaperLoader; | 141 class WallpaperLoader; |
| 144 | 142 |
| 145 // Returns true if the specified default wallpaper is already being | 143 // Returns true if the specified default wallpaper is already being |
| 146 // loaded by |wallpaper_loader_| or stored in |current_wallpaper_|. | 144 // loaded by |wallpaper_loader_| or stored in |current_wallpaper_|. |
| 145 // (i.e. no need to reload if exactly duplicate request received) |
| 147 bool DefaultWallpaperIsAlreadyLoadingOrLoaded( | 146 bool DefaultWallpaperIsAlreadyLoadingOrLoaded( |
| 148 const base::FilePath& image_file, int image_resource_id) const; | 147 const base::FilePath& image_file, int image_resource_id) const; |
| 149 | 148 |
| 150 // Returns true if the specified custom wallpaper is already stored | 149 // Returns true if the specified custom wallpaper is already stored |
| 151 // in |current_wallpaper_|. | 150 // in |current_wallpaper_|. |
| 152 bool CustomWallpaperIsAlreadyLoaded(const gfx::ImageSkia& image) const; | 151 bool CustomWallpaperIsAlreadyLoaded(const gfx::ImageSkia& image) const; |
| 153 | 152 |
| 154 // Creates view for all root windows, or notifies them to repaint if they | 153 // Creates view for all root windows, or notifies them to repaint if they |
| 155 // already exist. | 154 // already exist. |
| 156 void SetDesktopBackgroundImageMode(); | 155 void SetDesktopBackgroundImageMode(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 183 void set_wallpaper_reload_delay_for_test(bool value) { | 182 void set_wallpaper_reload_delay_for_test(bool value) { |
| 184 wallpaper_reload_delay_ = value; | 183 wallpaper_reload_delay_ = value; |
| 185 } | 184 } |
| 186 | 185 |
| 187 // Returns the maximum size of all displays combined in native | 186 // Returns the maximum size of all displays combined in native |
| 188 // resolutions. Note that this isn't the bounds of the display who | 187 // resolutions. Note that this isn't the bounds of the display who |
| 189 // has maximum resolutions. Instead, this returns the size of the | 188 // has maximum resolutions. Instead, this returns the size of the |
| 190 // maximum width of all displays, and the maximum height of all displays. | 189 // maximum width of all displays, and the maximum height of all displays. |
| 191 static gfx::Size GetMaxDisplaySizeInNative(); | 190 static gfx::Size GetMaxDisplaySizeInNative(); |
| 192 | 191 |
| 193 // If non-NULL, used in place of the real command line. | |
| 194 base::CommandLine* command_line_for_testing_; | |
| 195 | |
| 196 // Can change at runtime. | 192 // Can change at runtime. |
| 197 bool locked_; | 193 bool locked_; |
| 198 | 194 |
| 199 BackgroundMode desktop_background_mode_; | 195 BackgroundMode desktop_background_mode_; |
| 200 | 196 |
| 201 SkColor background_color_; | 197 SkColor background_color_; |
| 202 | 198 |
| 203 ObserverList<DesktopBackgroundControllerObserver> observers_; | 199 ObserverList<DesktopBackgroundControllerObserver> observers_; |
| 204 | 200 |
| 205 // The current wallpaper. | 201 // The current wallpaper. |
| (...skipping 15 matching lines...) Expand all Loading... |
| 221 base::OneShotTimer<DesktopBackgroundController> timer_; | 217 base::OneShotTimer<DesktopBackgroundController> timer_; |
| 222 | 218 |
| 223 int wallpaper_reload_delay_; | 219 int wallpaper_reload_delay_; |
| 224 | 220 |
| 225 DISALLOW_COPY_AND_ASSIGN(DesktopBackgroundController); | 221 DISALLOW_COPY_AND_ASSIGN(DesktopBackgroundController); |
| 226 }; | 222 }; |
| 227 | 223 |
| 228 } // namespace ash | 224 } // namespace ash |
| 229 | 225 |
| 230 #endif // ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ | 226 #endif // ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ |
| OLD | NEW |