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

Side by Side Diff: ash/desktop_background/desktop_background_controller.h

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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 BACKGROUND_IMAGE, 76 BACKGROUND_IMAGE,
77 }; 77 };
78 78
79 DesktopBackgroundController(); 79 DesktopBackgroundController();
80 virtual ~DesktopBackgroundController(); 80 virtual ~DesktopBackgroundController();
81 81
82 BackgroundMode desktop_background_mode() const { 82 BackgroundMode desktop_background_mode() const {
83 return desktop_background_mode_; 83 return desktop_background_mode_;
84 } 84 }
85 85
86 void set_command_line_for_testing(base::CommandLine* command_line) {
87 command_line_for_testing_ = command_line;
88 }
89
90 // Add/Remove observers. 86 // Add/Remove observers.
91 void AddObserver(DesktopBackgroundControllerObserver* observer); 87 void AddObserver(DesktopBackgroundControllerObserver* observer);
92 void RemoveObserver(DesktopBackgroundControllerObserver* observer); 88 void RemoveObserver(DesktopBackgroundControllerObserver* observer);
93 89
94 // Provides current image on the background, or empty gfx::ImageSkia if there 90 // Provides current image on the background, or empty gfx::ImageSkia if there
95 // is no image, e.g. background is none. 91 // is no image, e.g. background is none.
96 gfx::ImageSkia GetWallpaper() const; 92 gfx::ImageSkia GetWallpaper() const;
97 93
98 WallpaperLayout GetWallpaperLayout() const; 94 WallpaperLayout GetWallpaperLayout() const;
99 95
100 // Initialize root window's background. 96 // Initialize root window's background.
101 void OnRootWindowAdded(aura::Window* root_window); 97 void OnRootWindowAdded(aura::Window* root_window);
102 98
99 // Initializes |small_default_wallpaper_path_|,
100 // |large_default_wallpaper_path_|, |small_guest_wallpaper_path_|, and
101 // |large_guest_wallpaper_path_| based on the flags in |cl|.
102 // Called from the c'tor with the current process's command line, but also
103 // made public so that tests can call it with a custom command line.
104 void InitWallpaperPathsFromCommandLine(base::CommandLine* cl);
105
106 // Overrides command-line arguments specifying the default wallpaper.
107 // If the previous default wallpaper is currently being shown, the new default
108 // wallpaper is loaded instead.
109 void SetDefaultWallpaperPaths(const base::FilePath& small_path,
110 const base::FilePath& large_path,
111 bool is_guest);
112
103 // Loads builtin wallpaper asynchronously and sets to current wallpaper 113 // Loads builtin wallpaper asynchronously and sets to current wallpaper
104 // after loaded. Returns true if the controller started loading the 114 // after loaded. Returns true if the controller started loading the
105 // wallpaper and false otherwise (i.e. the appropriate wallpaper was 115 // wallpaper and false otherwise (i.e. the appropriate wallpaper was
106 // already loading or loaded). 116 // already loading or loaded).
107 bool SetDefaultWallpaper(bool is_guest); 117 bool SetDefaultWallpaper(bool is_guest);
108 118
109 // Sets the user selected custom wallpaper. Called when user selected a file 119 // Sets the user selected custom wallpaper. Called when user selected a file
110 // from file system or changed the layout of wallpaper. 120 // from file system or changed the layout of wallpaper.
111 void SetCustomWallpaper(const gfx::ImageSkia& image, WallpaperLayout layout); 121 void SetCustomWallpaper(const gfx::ImageSkia& image, WallpaperLayout layout);
112 122
(...skipping 22 matching lines...) Expand all
135 // Overrides DisplayController::Observer: 145 // Overrides DisplayController::Observer:
136 virtual void OnDisplayConfigurationChanged() OVERRIDE; 146 virtual void OnDisplayConfigurationChanged() OVERRIDE;
137 147
138 private: 148 private:
139 friend class DesktopBackgroundControllerTest; 149 friend class DesktopBackgroundControllerTest;
140 FRIEND_TEST_ALL_PREFIXES(DesktopBackgroundControllerTest, GetMaxDisplaySize); 150 FRIEND_TEST_ALL_PREFIXES(DesktopBackgroundControllerTest, GetMaxDisplaySize);
141 151
142 // An operation to asynchronously loads wallpaper. 152 // An operation to asynchronously loads wallpaper.
143 class WallpaperLoader; 153 class WallpaperLoader;
144 154
155 // Determines information about the default wallpaper that should currently be
156 // used. Out-param pointers may be NULL, in which case they will be ignored.
157 void GetDefaultWallpaperInfo(bool is_guest,
158 base::FilePath* file_path,
159 WallpaperLayout* file_layout,
160 int* resource_id,
161 WallpaperLayout* resource_layout);
162
145 // Returns true if the specified default wallpaper is already being 163 // Returns true if the specified default wallpaper is already being
146 // loaded by |wallpaper_loader_| or stored in |current_wallpaper_|. 164 // loaded by |wallpaper_loader_| or stored in |current_wallpaper_|.
147 bool DefaultWallpaperIsAlreadyLoadingOrLoaded( 165 bool DefaultWallpaperIsAlreadyLoadingOrLoaded(
148 const base::FilePath& image_file, int image_resource_id) const; 166 const base::FilePath& image_file,
167 int image_resource_id) const;
149 168
150 // Returns true if the specified custom wallpaper is already stored 169 // Returns true if the specified custom wallpaper is already stored
151 // in |current_wallpaper_|. 170 // in |current_wallpaper_|.
152 bool CustomWallpaperIsAlreadyLoaded(const gfx::ImageSkia& image) const; 171 bool CustomWallpaperIsAlreadyLoaded(const gfx::ImageSkia& image) const;
153 172
154 // Creates view for all root windows, or notifies them to repaint if they 173 // Creates view for all root windows, or notifies them to repaint if they
155 // already exist. 174 // already exist.
156 void SetDesktopBackgroundImageMode(); 175 void SetDesktopBackgroundImageMode();
157 176
158 // Creates a new background widget and sets the background mode to image mode. 177 // Creates a new background widget and sets the background mode to image mode.
(...skipping 14 matching lines...) Expand all
173 192
174 // Returns id for background container for unlocked and locked states. 193 // Returns id for background container for unlocked and locked states.
175 int GetBackgroundContainerId(bool locked); 194 int GetBackgroundContainerId(bool locked);
176 195
177 // Send notification that background animation finished. 196 // Send notification that background animation finished.
178 void NotifyAnimationFinished(); 197 void NotifyAnimationFinished();
179 198
180 // Reload the wallpaper. 199 // Reload the wallpaper.
181 void UpdateWallpaper(); 200 void UpdateWallpaper();
182 201
183 void set_wallpaper_reload_delay_for_test(bool value) { 202 void set_wallpaper_reload_delay_for_test(base::TimeDelta delay) {
184 wallpaper_reload_delay_ = value; 203 wallpaper_reload_delay_ = delay;
185 } 204 }
186 205
187 // Returns the maximum size of all displays combined in native 206 // Returns the maximum size of all displays combined in native
188 // resolutions. Note that this isn't the bounds of the display who 207 // resolutions. Note that this isn't the bounds of the display who
189 // has maximum resolutions. Instead, this returns the size of the 208 // has maximum resolutions. Instead, this returns the size of the
190 // maximum width of all displays, and the maximum height of all displays. 209 // maximum width of all displays, and the maximum height of all displays.
191 static gfx::Size GetMaxDisplaySizeInNative(); 210 static gfx::Size GetMaxDisplaySizeInNative();
192 211
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. 212 // Can change at runtime.
197 bool locked_; 213 bool locked_;
198 214
215 // Wallpaper images loaded by SetDefaultWallpaper().
216 base::FilePath small_default_wallpaper_path_;
217 base::FilePath large_default_wallpaper_path_;
218 base::FilePath small_guest_wallpaper_path_;
219 base::FilePath large_guest_wallpaper_path_;
220
199 BackgroundMode desktop_background_mode_; 221 BackgroundMode desktop_background_mode_;
200 222
201 SkColor background_color_; 223 SkColor background_color_;
202 224
203 ObserverList<DesktopBackgroundControllerObserver> observers_; 225 ObserverList<DesktopBackgroundControllerObserver> observers_;
204 226
205 // The current wallpaper. 227 // The current wallpaper.
206 scoped_ptr<WallpaperResizer> current_wallpaper_; 228 scoped_ptr<WallpaperResizer> current_wallpaper_;
207 229
208 // If a default wallpaper is stored in |current_wallpaper_|, the path and 230 // If a default wallpaper is stored in |current_wallpaper_|, the path and
209 // resource ID that were passed to WallpaperLoader when loading it. 231 // resource ID that were passed to WallpaperLoader when loading it.
210 // Otherwise, empty and -1, respectively. 232 // Otherwise, empty and -1, respectively.
211 base::FilePath current_default_wallpaper_path_; 233 base::FilePath current_default_wallpaper_path_;
212 int current_default_wallpaper_resource_id_; 234 int current_default_wallpaper_resource_id_;
213 235
214 gfx::Size current_max_display_size_; 236 gfx::Size current_max_display_size_;
215 237
216 // Loads default wallpaper from disk. 238 // Loads default wallpaper from disk.
217 scoped_refptr<WallpaperLoader> default_wallpaper_loader_; 239 scoped_refptr<WallpaperLoader> default_wallpaper_loader_;
218 240
219 base::WeakPtrFactory<DesktopBackgroundController> weak_ptr_factory_; 241 base::WeakPtrFactory<DesktopBackgroundController> weak_ptr_factory_;
220 242
221 base::OneShotTimer<DesktopBackgroundController> timer_; 243 base::OneShotTimer<DesktopBackgroundController> timer_;
222 244
223 int wallpaper_reload_delay_; 245 // Delay before updating the wallpaper when the display configuration changes.
246 base::TimeDelta wallpaper_reload_delay_;
224 247
225 DISALLOW_COPY_AND_ASSIGN(DesktopBackgroundController); 248 DISALLOW_COPY_AND_ASSIGN(DesktopBackgroundController);
226 }; 249 };
227 250
228 } // namespace ash 251 } // namespace ash
229 252
230 #endif // ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ 253 #endif // ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698