Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / ash / solid_color_user_wallpaper_delegate.cc
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/ui/ash/solid_color_user_wallpaper_delegate.h"
6
7 #include "ash/desktop_background/desktop_background_controller.h"
8 #include "ash/desktop_background/user_wallpaper_delegate.h"
9 #include "ash/shell.h"
10 #include "ash/wm/window_animations.h"
11 #include "base/basictypes.h"
12 #include "ui/gfx/image/image_skia.h"
13
14 namespace {
15
16 const char kBackgroundRed   = 70;
17 const char kBackgroundGreen = 70;
18 const char kBackgroundBlue  = 78;
19
20 class UserWallpaperDelegate : public ash::UserWallpaperDelegate {
21  public:
22   UserWallpaperDelegate() {
23   }
24
25   ~UserWallpaperDelegate() override {}
26
27   int GetAnimationType() override {
28     return ShouldShowInitialAnimation() ?
29         ash::WINDOW_VISIBILITY_ANIMATION_TYPE_BRIGHTNESS_GRAYSCALE :
30         static_cast<int>(wm::WINDOW_VISIBILITY_ANIMATION_TYPE_FADE);
31   }
32
33   bool ShouldShowInitialAnimation() override { return true; }
34
35   int GetAnimationDurationOverride() override {
36     // Return 0 to select the default.
37     return 0;
38   }
39
40   void SetAnimationDurationOverride(int animation_duration_in_ms) override {
41     NOTIMPLEMENTED();
42   }
43
44   void UpdateWallpaper(bool clear_cache) override {
45     SkBitmap bitmap;
46     bitmap.allocN32Pixels(16, 16);
47     bitmap.eraseARGB(255, kBackgroundRed, kBackgroundGreen, kBackgroundBlue);
48 #if !defined(NDEBUG)
49     // In debug builds we generate a simple pattern that allows visually
50     // notice if transparency is broken.
51     {
52       SkAutoLockPixels alp(bitmap);
53       *bitmap.getAddr32(0,0) = SkColorSetRGB(0, 0, 0);
54     }
55 #endif
56     gfx::ImageSkia wallpaper = gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
57     ash::Shell::GetInstance()
58         ->desktop_background_controller()
59         ->SetWallpaperImage(wallpaper, ash::WALLPAPER_LAYOUT_TILE);
60   }
61
62   void InitializeWallpaper() override { UpdateWallpaper(false); }
63
64   void OpenSetWallpaperPage() override {}
65
66   bool CanOpenSetWallpaperPage() override { return false; }
67
68   void OnWallpaperAnimationFinished() override {}
69
70   void OnWallpaperBootAnimationFinished() override {}
71
72  private:
73   DISALLOW_COPY_AND_ASSIGN(UserWallpaperDelegate);
74 };
75
76 }  // namespace
77
78 ash::UserWallpaperDelegate* CreateSolidColorUserWallpaperDelegate() {
79   return new UserWallpaperDelegate();
80 }