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

Side by Side Diff: ash/common/wallpaper/wallpaper_view.cc

Issue 2318223003: mash: Migrate wallpaper controllers to ash/common. (Closed)
Patch Set: Fix nit. Created 4 years, 3 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
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 #include "ash/wallpaper/wallpaper_view.h" 5 #include "ash/common/wallpaper/wallpaper_view.h"
6 6
7 #include "ash/aura/wm_window_aura.h"
8 #include "ash/common/session/session_state_delegate.h" 7 #include "ash/common/session/session_state_delegate.h"
8 #include "ash/common/wallpaper/wallpaper_controller.h"
9 #include "ash/common/wallpaper/wallpaper_delegate.h" 9 #include "ash/common/wallpaper/wallpaper_delegate.h"
10 #include "ash/common/wallpaper/wallpaper_widget_controller.h"
10 #include "ash/common/wm/overview/window_selector_controller.h" 11 #include "ash/common/wm/overview/window_selector_controller.h"
11 #include "ash/common/wm_lookup.h" 12 #include "ash/common/wm_lookup.h"
13 #include "ash/common/wm_root_window_controller.h"
12 #include "ash/common/wm_shell.h" 14 #include "ash/common/wm_shell.h"
13 #include "ash/root_window_controller.h" 15 #include "ash/common/wm_window.h"
14 #include "ash/shell.h"
15 #include "ash/wallpaper/wallpaper_controller.h"
16 #include "ash/wallpaper/wallpaper_widget_controller.h"
17 #include "ui/display/display.h" 16 #include "ui/display/display.h"
18 #include "ui/display/manager/managed_display_info.h" 17 #include "ui/display/manager/managed_display_info.h"
19 #include "ui/display/screen.h" 18 #include "ui/display/screen.h"
20 #include "ui/gfx/canvas.h" 19 #include "ui/gfx/canvas.h"
21 #include "ui/gfx/geometry/safe_integer_conversions.h" 20 #include "ui/gfx/geometry/safe_integer_conversions.h"
22 #include "ui/gfx/geometry/size_conversions.h" 21 #include "ui/gfx/geometry/size_conversions.h"
23 #include "ui/gfx/transform.h" 22 #include "ui/gfx/transform.h"
24 #include "ui/views/widget/widget.h" 23 #include "ui/views/widget/widget.h"
25 24
26 namespace ash { 25 namespace ash {
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 } 114 }
116 115
117 //////////////////////////////////////////////////////////////////////////////// 116 ////////////////////////////////////////////////////////////////////////////////
118 // WallpaperView, views::View overrides: 117 // WallpaperView, views::View overrides:
119 118
120 void WallpaperView::OnPaint(gfx::Canvas* canvas) { 119 void WallpaperView::OnPaint(gfx::Canvas* canvas) {
121 // Scale the image while maintaining the aspect ratio, cropping as necessary 120 // Scale the image while maintaining the aspect ratio, cropping as necessary
122 // to fill the wallpaper. Ideally the image should be larger than the largest 121 // to fill the wallpaper. Ideally the image should be larger than the largest
123 // display supported, if not we will scale and center it if the layout is 122 // display supported, if not we will scale and center it if the layout is
124 // wallpaper::WALLPAPER_LAYOUT_CENTER_CROPPED. 123 // wallpaper::WALLPAPER_LAYOUT_CENTER_CROPPED.
125 WallpaperController* controller = 124 WallpaperController* controller = WmShell::Get()->wallpaper_controller();
126 Shell::GetInstance()->wallpaper_controller();
127 gfx::ImageSkia wallpaper = controller->GetWallpaper(); 125 gfx::ImageSkia wallpaper = controller->GetWallpaper();
128 wallpaper::WallpaperLayout layout = controller->GetWallpaperLayout(); 126 wallpaper::WallpaperLayout layout = controller->GetWallpaperLayout();
129 127
130 // Wallpapers with png format could be partially transparent. Fill the canvas 128 // Wallpapers with png format could be partially transparent. Fill the canvas
131 // with black to make it opaque before painting the wallpaper. 129 // with black to make it opaque before painting the wallpaper.
132 canvas->FillRect(GetLocalBounds(), SK_ColorBLACK); 130 canvas->FillRect(GetLocalBounds(), SK_ColorBLACK);
133 131
134 if (wallpaper.isNull()) 132 if (wallpaper.isNull())
135 return; 133 return;
136 134
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 return true; 180 return true;
183 } 181 }
184 182
185 void WallpaperView::ShowContextMenuForView(views::View* source, 183 void WallpaperView::ShowContextMenuForView(views::View* source,
186 const gfx::Point& point, 184 const gfx::Point& point,
187 ui::MenuSourceType source_type) { 185 ui::MenuSourceType source_type) {
188 WmShell::Get()->ShowContextMenu(point, source_type); 186 WmShell::Get()->ShowContextMenu(point, source_type);
189 } 187 }
190 188
191 views::Widget* CreateWallpaper(WmWindow* root_window, int container_id) { 189 views::Widget* CreateWallpaper(WmWindow* root_window, int container_id) {
192 aura::Window* aura_root_window = WmWindowAura::GetAuraWindow(root_window); 190 WallpaperController* controller = WmShell::Get()->wallpaper_controller();
193 WallpaperController* controller =
194 Shell::GetInstance()->wallpaper_controller();
195 WallpaperDelegate* wallpaper_delegate = WmShell::Get()->wallpaper_delegate(); 191 WallpaperDelegate* wallpaper_delegate = WmShell::Get()->wallpaper_delegate();
196 192
197 views::Widget* wallpaper_widget = new views::Widget; 193 views::Widget* wallpaper_widget = new views::Widget;
198 views::Widget::InitParams params( 194 views::Widget::InitParams params(
199 views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); 195 views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
200 params.name = "WallpaperView"; 196 params.name = "WallpaperView";
201 if (controller->GetWallpaper().isNull()) 197 if (controller->GetWallpaper().isNull())
202 params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW; 198 params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
203 params.parent = aura_root_window->GetChildById(container_id); 199 root_window->GetRootWindowController()->ConfigureWidgetInitParamsForContainer(
200 wallpaper_widget, container_id, &params);
204 wallpaper_widget->Init(params); 201 wallpaper_widget->Init(params);
205 wallpaper_widget->SetContentsView(new LayerControlView(new WallpaperView())); 202 wallpaper_widget->SetContentsView(new LayerControlView(new WallpaperView()));
206 int animation_type = wallpaper_delegate->GetAnimationType(); 203 int animation_type = wallpaper_delegate->GetAnimationType();
207 WmWindow* wallpaper_window = 204 WmWindow* wallpaper_window =
208 WmLookup::Get()->GetWindowForWidget(wallpaper_widget); 205 WmLookup::Get()->GetWindowForWidget(wallpaper_widget);
209 wallpaper_window->SetVisibilityAnimationType(animation_type); 206 wallpaper_window->SetVisibilityAnimationType(animation_type);
210 207
211 RootWindowController* root_window_controller = 208 WmRootWindowController* root_window_controller =
212 GetRootWindowController(aura_root_window); 209 root_window->GetRootWindowController();
213 210
214 // Enable wallpaper transition for the following cases: 211 // Enable wallpaper transition for the following cases:
215 // 1. Initial(OOBE) wallpaper animation. 212 // 1. Initial(OOBE) wallpaper animation.
216 // 2. Wallpaper fades in from a non empty background. 213 // 2. Wallpaper fades in from a non empty background.
217 // 3. From an empty background, chrome transit to a logged in user session. 214 // 3. From an empty background, chrome transit to a logged in user session.
218 // 4. From an empty background, guest user logged in. 215 // 4. From an empty background, guest user logged in.
219 if (wallpaper_delegate->ShouldShowInitialAnimation() || 216 if (wallpaper_delegate->ShouldShowInitialAnimation() ||
220 root_window_controller->animating_wallpaper_widget_controller() || 217 root_window_controller->animating_wallpaper_widget_controller() ||
221 WmShell::Get()->GetSessionStateDelegate()->NumberOfLoggedInUsers()) { 218 WmShell::Get()->GetSessionStateDelegate()->NumberOfLoggedInUsers()) {
222 wallpaper_window->SetVisibilityAnimationTransition(::wm::ANIMATE_SHOW); 219 wallpaper_window->SetVisibilityAnimationTransition(::wm::ANIMATE_SHOW);
223 int duration_override = wallpaper_delegate->GetAnimationDurationOverride(); 220 int duration_override = wallpaper_delegate->GetAnimationDurationOverride();
224 if (duration_override) { 221 if (duration_override) {
225 wallpaper_window->SetVisibilityAnimationDuration( 222 wallpaper_window->SetVisibilityAnimationDuration(
226 base::TimeDelta::FromMilliseconds(duration_override)); 223 base::TimeDelta::FromMilliseconds(duration_override));
227 } 224 }
228 } else { 225 } else {
229 // Disable animation if transition to login screen from an empty background. 226 // Disable animation if transition to login screen from an empty background.
230 wallpaper_window->SetVisibilityAnimationTransition(::wm::ANIMATE_NONE); 227 wallpaper_window->SetVisibilityAnimationTransition(::wm::ANIMATE_NONE);
231 } 228 }
232 229
233 wallpaper_widget->SetBounds(params.parent->bounds()); 230 WmWindow* container = root_window->GetChildByShellWindowId(container_id);
231 wallpaper_widget->SetBounds(container->GetBounds());
234 return wallpaper_widget; 232 return wallpaper_widget;
235 } 233 }
236 234
237 } // namespace ash 235 } // namespace ash
OLDNEW
« no previous file with comments | « ash/common/wallpaper/wallpaper_view.h ('k') | ash/common/wallpaper/wallpaper_widget_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698