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 #include "ash/wm/session_state_animator.h" | 5 #include "ash/wm/session_state_animator.h" |
6 | 6 |
7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
8 #include "ash/shell_window_ids.h" | 8 #include "ash/shell_window_ids.h" |
9 #include "ash/wm/workspace/workspace_animations.h" | 9 #include "ash/wm/workspace/workspace_animations.h" |
10 #include "ui/aura/client/aura_constants.h" | 10 #include "ui/aura/client/aura_constants.h" |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 virtual void OnLayerAnimationScheduled(ui::LayerAnimationSequence* seq) | 195 virtual void OnLayerAnimationScheduled(ui::LayerAnimationSequence* seq) |
196 OVERRIDE {} | 196 OVERRIDE {} |
197 | 197 |
198 SessionStateAnimator* animator_; | 198 SessionStateAnimator* animator_; |
199 | 199 |
200 DISALLOW_COPY_AND_ASSIGN(ForegroundDropAnimationObserver); | 200 DISALLOW_COPY_AND_ASSIGN(ForegroundDropAnimationObserver); |
201 }; | 201 }; |
202 | 202 |
203 } // namespace | 203 } // namespace |
204 | 204 |
205 void SessionStateAnimator::TestApi::TriggerHideBlackLayerTimeout() { | |
206 animator_->DropBlackLayer(); | |
207 animator_->hide_black_layer_timer_.Stop(); | |
208 } | |
209 | |
210 bool SessionStateAnimator::TestApi::ContainersAreAnimated( | 205 bool SessionStateAnimator::TestApi::ContainersAreAnimated( |
211 int container_mask, AnimationType type) const { | 206 int container_mask, AnimationType type) const { |
212 aura::Window::Windows containers; | 207 aura::Window::Windows containers; |
213 animator_->GetContainers(container_mask, &containers); | 208 animator_->GetContainers(container_mask, &containers); |
214 for (aura::Window::Windows::const_iterator it = containers.begin(); | 209 for (aura::Window::Windows::const_iterator it = containers.begin(); |
215 it != containers.end(); ++it) { | 210 it != containers.end(); ++it) { |
216 aura::Window* window = *it; | 211 aura::Window* window = *it; |
217 ui::Layer* layer = window->layer(); | 212 ui::Layer* layer = window->layer(); |
218 | 213 |
219 switch (type) { | 214 switch (type) { |
(...skipping 23 matching lines...) Expand all Loading... |
243 return false; | 238 return false; |
244 break; | 239 break; |
245 default: | 240 default: |
246 NOTREACHED() << "Unhandled animation type " << type; | 241 NOTREACHED() << "Unhandled animation type " << type; |
247 return false; | 242 return false; |
248 } | 243 } |
249 } | 244 } |
250 return true; | 245 return true; |
251 } | 246 } |
252 | 247 |
253 bool SessionStateAnimator::TestApi::BlackLayerIsVisible() const { | |
254 return animator_->black_layer_.get() && | |
255 animator_->black_layer_->visible(); | |
256 } | |
257 | |
258 gfx::Rect SessionStateAnimator::TestApi::GetBlackLayerBounds() const { | |
259 ui::Layer* layer = animator_->black_layer_.get(); | |
260 return layer ? layer->bounds() : gfx::Rect(); | |
261 } | |
262 | |
263 const int SessionStateAnimator::kAllLockScreenContainersMask = | 248 const int SessionStateAnimator::kAllLockScreenContainersMask = |
264 SessionStateAnimator::LOCK_SCREEN_BACKGROUND | | 249 SessionStateAnimator::LOCK_SCREEN_BACKGROUND | |
265 SessionStateAnimator::LOCK_SCREEN_CONTAINERS | | 250 SessionStateAnimator::LOCK_SCREEN_CONTAINERS | |
266 SessionStateAnimator::LOCK_SCREEN_RELATED_CONTAINERS; | 251 SessionStateAnimator::LOCK_SCREEN_RELATED_CONTAINERS; |
267 | 252 |
268 const int SessionStateAnimator::kAllContainersMask = | 253 const int SessionStateAnimator::kAllContainersMask = |
269 SessionStateAnimator::kAllLockScreenContainersMask | | 254 SessionStateAnimator::kAllLockScreenContainersMask | |
270 SessionStateAnimator::DESKTOP_BACKGROUND | | 255 SessionStateAnimator::DESKTOP_BACKGROUND | |
271 SessionStateAnimator::LAUNCHER | | 256 SessionStateAnimator::LAUNCHER | |
272 SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS; | 257 SessionStateAnimator::NON_LOCK_SCREEN_CONTAINERS; |
273 | 258 |
274 SessionStateAnimator::SessionStateAnimator() { | 259 SessionStateAnimator::SessionStateAnimator() { |
275 Shell::GetPrimaryRootWindow()->AddRootWindowObserver(this); | |
276 } | 260 } |
277 | 261 |
278 SessionStateAnimator::~SessionStateAnimator() { | 262 SessionStateAnimator::~SessionStateAnimator() { |
279 Shell::GetPrimaryRootWindow()->RemoveRootWindowObserver(this); | |
280 } | 263 } |
281 | 264 |
282 // Fills |containers| with the containers described by |container_mask|. | 265 // Fills |containers| with the containers described by |container_mask|. |
283 void SessionStateAnimator::GetContainers(int container_mask, | 266 void SessionStateAnimator::GetContainers(int container_mask, |
284 aura::Window::Windows* containers) { | 267 aura::Window::Windows* containers) { |
285 aura::RootWindow* root_window = Shell::GetPrimaryRootWindow(); | 268 aura::RootWindow* root_window = Shell::GetPrimaryRootWindow(); |
286 containers->clear(); | 269 containers->clear(); |
287 | 270 |
288 if (container_mask & DESKTOP_BACKGROUND) { | 271 if (container_mask & DESKTOP_BACKGROUND) { |
289 containers->push_back(Shell::GetContainer( | 272 containers->push_back(Shell::GetContainer( |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 case ANIMATION_FULL_FADE_IN: | 365 case ANIMATION_FULL_FADE_IN: |
383 StartPartialFadeAnimation(window, 1.0, | 366 StartPartialFadeAnimation(window, 1.0, |
384 base::TimeDelta::FromMilliseconds(kFastCloseAnimMs), NULL); | 367 base::TimeDelta::FromMilliseconds(kFastCloseAnimMs), NULL); |
385 break; | 368 break; |
386 default: | 369 default: |
387 NOTREACHED() << "Unhandled animation type " << type; | 370 NOTREACHED() << "Unhandled animation type " << type; |
388 } | 371 } |
389 } | 372 } |
390 } | 373 } |
391 | 374 |
392 void SessionStateAnimator::OnRootWindowResized(const aura::RootWindow* root, | |
393 const gfx::Size& new_size) { | |
394 if (black_layer_.get()) | |
395 black_layer_->SetBounds(gfx::Rect(root->bounds().size())); | |
396 } | |
397 | |
398 void SessionStateAnimator::ShowBlackLayer() { | |
399 if (hide_black_layer_timer_.IsRunning()) | |
400 hide_black_layer_timer_.Stop(); | |
401 | |
402 if (!black_layer_.get()) { | |
403 black_layer_.reset(new ui::Layer(ui::LAYER_SOLID_COLOR)); | |
404 black_layer_->SetColor(SK_ColorBLACK); | |
405 | |
406 ui::Layer* root_layer = Shell::GetPrimaryRootWindow()->layer(); | |
407 black_layer_->SetBounds(root_layer->bounds()); | |
408 root_layer->Add(black_layer_.get()); | |
409 root_layer->StackAtBottom(black_layer_.get()); | |
410 } | |
411 black_layer_->SetVisible(true); | |
412 } | |
413 | |
414 void SessionStateAnimator::DropBlackLayer() { | |
415 black_layer_.reset(); | |
416 } | |
417 | |
418 void SessionStateAnimator::ScheduleDropBlackLayer() { | |
419 hide_black_layer_timer_.Stop(); | |
420 hide_black_layer_timer_.Start( | |
421 FROM_HERE, | |
422 base::TimeDelta::FromMilliseconds(kUndoSlowCloseAnimMs), | |
423 this, &SessionStateAnimator::DropBlackLayer); | |
424 } | |
425 | |
426 void SessionStateAnimator::CreateForeground() { | 375 void SessionStateAnimator::CreateForeground() { |
427 if (foreground_.get()) | 376 if (foreground_.get()) |
428 return; | 377 return; |
429 aura::Window* window = Shell::GetContainer( | 378 aura::Window* window = Shell::GetContainer( |
430 Shell::GetPrimaryRootWindow(), | 379 Shell::GetPrimaryRootWindow(), |
431 internal::kShellWindowId_PowerButtonAnimationContainer); | 380 internal::kShellWindowId_PowerButtonAnimationContainer); |
432 HideWindow(window); | 381 HideWindow(window); |
433 foreground_.reset( | 382 foreground_.reset( |
434 new ColoredWindowController(window, "SessionStateAnimatorForeground")); | 383 new ColoredWindowController(window, "SessionStateAnimatorForeground")); |
435 foreground_->SetColor(SK_ColorWHITE); | 384 foreground_->SetColor(SK_ColorWHITE); |
436 foreground_->GetWidget()->Show(); | 385 foreground_->GetWidget()->Show(); |
437 } | 386 } |
438 | 387 |
439 void SessionStateAnimator::DropForeground() { | 388 void SessionStateAnimator::DropForeground() { |
440 foreground_.reset(); | 389 foreground_.reset(); |
441 } | 390 } |
442 | 391 |
443 } // namespace internal | 392 } // namespace internal |
444 } // namespace ash | 393 } // namespace ash |
OLD | NEW |