| 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 "ash/shell_observer.h" |
| 10 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
| 11 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
| 12 #include "base/gtest_prod_util.h" | 13 #include "base/gtest_prod_util.h" |
| 13 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
| 14 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
| 15 #include "base/observer_list.h" | 16 #include "base/observer_list.h" |
| 16 #include "base/timer/timer.h" | 17 #include "base/timer/timer.h" |
| 17 #include "ui/compositor/layer.h" | 18 #include "ui/compositor/layer.h" |
| 18 #include "ui/gfx/image/image_skia.h" | 19 #include "ui/gfx/image/image_skia.h" |
| 19 | 20 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 39 WALLPAPER_LAYOUT_TILE, | 40 WALLPAPER_LAYOUT_TILE, |
| 40 }; | 41 }; |
| 41 | 42 |
| 42 const SkColor kLoginWallpaperColor = 0xFEFEFE; | 43 const SkColor kLoginWallpaperColor = 0xFEFEFE; |
| 43 | 44 |
| 44 class DesktopBackgroundControllerObserver; | 45 class DesktopBackgroundControllerObserver; |
| 45 class WallpaperResizer; | 46 class WallpaperResizer; |
| 46 | 47 |
| 47 // Updates background layer if necessary. | 48 // Updates background layer if necessary. |
| 48 class ASH_EXPORT DesktopBackgroundController | 49 class ASH_EXPORT DesktopBackgroundController |
| 49 : public DisplayController::Observer { | 50 : public DisplayController::Observer, |
| 51 public ShellObserver { |
| 50 public: | 52 public: |
| 51 class TestAPI; | 53 class TestAPI; |
| 52 | 54 |
| 53 enum BackgroundMode { | 55 enum BackgroundMode { |
| 54 BACKGROUND_NONE, | 56 BACKGROUND_NONE, |
| 55 BACKGROUND_IMAGE, | 57 BACKGROUND_IMAGE, |
| 56 }; | 58 }; |
| 57 | 59 |
| 58 DesktopBackgroundController(); | 60 DesktopBackgroundController(); |
| 59 virtual ~DesktopBackgroundController(); | 61 virtual ~DesktopBackgroundController(); |
| 60 | 62 |
| 61 BackgroundMode desktop_background_mode() const { | 63 BackgroundMode desktop_background_mode() const { |
| 62 return desktop_background_mode_; | 64 return desktop_background_mode_; |
| 63 } | 65 } |
| 64 | 66 |
| 65 // Add/Remove observers. | 67 // Add/Remove observers. |
| 66 void AddObserver(DesktopBackgroundControllerObserver* observer); | 68 void AddObserver(DesktopBackgroundControllerObserver* observer); |
| 67 void RemoveObserver(DesktopBackgroundControllerObserver* observer); | 69 void RemoveObserver(DesktopBackgroundControllerObserver* observer); |
| 68 | 70 |
| 69 // Provides current image on the background, or empty gfx::ImageSkia if there | 71 // Provides current image on the background, or empty gfx::ImageSkia if there |
| 70 // is no image, e.g. background is none. | 72 // is no image, e.g. background is none. |
| 71 gfx::ImageSkia GetWallpaper() const; | 73 gfx::ImageSkia GetWallpaper() const; |
| 72 | 74 |
| 73 WallpaperLayout GetWallpaperLayout() const; | 75 WallpaperLayout GetWallpaperLayout() const; |
| 74 | 76 |
| 75 // Initialize root window's background. | |
| 76 void OnRootWindowAdded(aura::Window* root_window); | |
| 77 | |
| 78 // Sets wallpaper. This is mostly called by WallpaperManager to set | 77 // Sets wallpaper. This is mostly called by WallpaperManager to set |
| 79 // the default or user selected custom wallpaper. | 78 // the default or user selected custom wallpaper. |
| 80 // Returns true if new image was actually set. And false when duplicate set | 79 // Returns true if new image was actually set. And false when duplicate set |
| 81 // request detected. | 80 // request detected. |
| 82 bool SetWallpaperImage(const gfx::ImageSkia& image, WallpaperLayout layout); | 81 bool SetWallpaperImage(const gfx::ImageSkia& image, WallpaperLayout layout); |
| 83 // The same, but image from resources is used. | 82 // The same, but image from resources is used. |
| 84 bool SetWallpaperResource(int resource_id, WallpaperLayout layout); | 83 bool SetWallpaperResource(int resource_id, WallpaperLayout layout); |
| 85 | 84 |
| 86 // Creates an empty wallpaper. Some tests require a wallpaper widget is ready | 85 // Creates an empty wallpaper. Some tests require a wallpaper widget is ready |
| 87 // when running. However, the wallpaper widgets are now created | 86 // when running. However, the wallpaper widgets are now created |
| 88 // asynchronously. If loading a real wallpaper, there are cases that these | 87 // asynchronously. If loading a real wallpaper, there are cases that these |
| 89 // tests crash because the required widget is not ready. This function | 88 // tests crash because the required widget is not ready. This function |
| 90 // synchronously creates an empty widget for those tests to prevent | 89 // synchronously creates an empty widget for those tests to prevent |
| 91 // crashes. An example test is SystemGestureEventFilterTest.ThreeFingerSwipe. | 90 // crashes. An example test is SystemGestureEventFilterTest.ThreeFingerSwipe. |
| 92 void CreateEmptyWallpaper(); | 91 void CreateEmptyWallpaper(); |
| 93 | 92 |
| 94 // Move all desktop widgets to locked container. | 93 // Move all desktop widgets to locked container. |
| 95 // Returns true if the desktop moved. | 94 // Returns true if the desktop moved. |
| 96 bool MoveDesktopToLockedContainer(); | 95 bool MoveDesktopToLockedContainer(); |
| 97 | 96 |
| 98 // Move all desktop widgets to unlocked container. | 97 // Move all desktop widgets to unlocked container. |
| 99 // Returns true if the desktop moved. | 98 // Returns true if the desktop moved. |
| 100 bool MoveDesktopToUnlockedContainer(); | 99 bool MoveDesktopToUnlockedContainer(); |
| 101 | 100 |
| 102 // Overrides DisplayController::Observer: | 101 // DisplayController::Observer: |
| 103 virtual void OnDisplayConfigurationChanged() OVERRIDE; | 102 virtual void OnDisplayConfigurationChanged() OVERRIDE; |
| 104 | 103 |
| 104 // ShellObserver: |
| 105 virtual void OnRootWindowAdded(aura::Window* root_window) OVERRIDE; |
| 106 |
| 105 // Returns the maximum size of all displays combined in native | 107 // Returns the maximum size of all displays combined in native |
| 106 // resolutions. Note that this isn't the bounds of the display who | 108 // resolutions. Note that this isn't the bounds of the display who |
| 107 // has maximum resolutions. Instead, this returns the size of the | 109 // has maximum resolutions. Instead, this returns the size of the |
| 108 // maximum width of all displays, and the maximum height of all displays. | 110 // maximum width of all displays, and the maximum height of all displays. |
| 109 static gfx::Size GetMaxDisplaySizeInNative(); | 111 static gfx::Size GetMaxDisplaySizeInNative(); |
| 110 | 112 |
| 111 private: | 113 private: |
| 112 friend class DesktopBackgroundControllerTest; | 114 friend class DesktopBackgroundControllerTest; |
| 113 // friend class chromeos::WallpaperManagerBrowserTestDefaultWallpaper; | 115 // friend class chromeos::WallpaperManagerBrowserTestDefaultWallpaper; |
| 114 FRIEND_TEST_ALL_PREFIXES(DesktopBackgroundControllerTest, GetMaxDisplaySize); | 116 FRIEND_TEST_ALL_PREFIXES(DesktopBackgroundControllerTest, GetMaxDisplaySize); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 166 base::OneShotTimer<DesktopBackgroundController> timer_; | 168 base::OneShotTimer<DesktopBackgroundController> timer_; |
| 167 | 169 |
| 168 int wallpaper_reload_delay_; | 170 int wallpaper_reload_delay_; |
| 169 | 171 |
| 170 DISALLOW_COPY_AND_ASSIGN(DesktopBackgroundController); | 172 DISALLOW_COPY_AND_ASSIGN(DesktopBackgroundController); |
| 171 }; | 173 }; |
| 172 | 174 |
| 173 } // namespace ash | 175 } // namespace ash |
| 174 | 176 |
| 175 #endif // ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ | 177 #endif // ASH_DESKTOP_BACKGROUND_DESKTOP_BACKGROUND_CONTROLLER_H_ |
| OLD | NEW |