OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/immersive_fullscreen_controller.h" | 5 #include "ash/wm/immersive_fullscreen_controller.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
10 #include "ash/wm/window_state.h" | 10 #include "ash/wm/window_state.h" |
11 #include "base/metrics/histogram.h" | 11 #include "base/metrics/histogram.h" |
12 #include "ui/aura/client/activation_client.h" | 12 #include "ui/aura/client/activation_client.h" |
13 #include "ui/aura/client/aura_constants.h" | 13 #include "ui/aura/client/aura_constants.h" |
14 #include "ui/aura/client/capture_client.h" | 14 #include "ui/aura/client/capture_client.h" |
15 #include "ui/aura/client/cursor_client.h" | 15 #include "ui/aura/client/cursor_client.h" |
16 #include "ui/aura/client/screen_position_client.h" | 16 #include "ui/aura/client/screen_position_client.h" |
17 #include "ui/aura/env.h" | 17 #include "ui/aura/env.h" |
18 #include "ui/aura/root_window.h" | 18 #include "ui/aura/root_window.h" |
19 #include "ui/aura/window.h" | 19 #include "ui/aura/window.h" |
20 #include "ui/gfx/animation/slide_animation.h" | 20 #include "ui/gfx/animation/slide_animation.h" |
21 #include "ui/gfx/display.h" | 21 #include "ui/gfx/display.h" |
22 #include "ui/gfx/point.h" | 22 #include "ui/gfx/point.h" |
23 #include "ui/gfx/rect.h" | 23 #include "ui/gfx/rect.h" |
24 #include "ui/gfx/screen.h" | 24 #include "ui/gfx/screen.h" |
25 #include "ui/views/bubble/bubble_delegate.h" | 25 #include "ui/views/bubble/bubble_delegate.h" |
| 26 #include "ui/views/corewm/transient_window_manager.h" |
26 #include "ui/views/corewm/window_util.h" | 27 #include "ui/views/corewm/window_util.h" |
27 #include "ui/views/view.h" | 28 #include "ui/views/view.h" |
28 #include "ui/views/widget/widget.h" | 29 #include "ui/views/widget/widget.h" |
29 | 30 |
30 using views::View; | 31 using views::View; |
31 | 32 |
32 namespace ash { | 33 namespace ash { |
33 | 34 |
34 namespace { | 35 namespace { |
35 | 36 |
(...skipping 430 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 } | 467 } |
467 | 468 |
468 void ImmersiveFullscreenController::AnimationProgressed( | 469 void ImmersiveFullscreenController::AnimationProgressed( |
469 const gfx::Animation* animation) { | 470 const gfx::Animation* animation) { |
470 delegate_->SetVisibleFraction(animation->GetCurrentValue()); | 471 delegate_->SetVisibleFraction(animation->GetCurrentValue()); |
471 } | 472 } |
472 | 473 |
473 //////////////////////////////////////////////////////////////////////////////// | 474 //////////////////////////////////////////////////////////////////////////////// |
474 // aura::WindowObserver overrides: | 475 // aura::WindowObserver overrides: |
475 | 476 |
476 void ImmersiveFullscreenController::OnAddTransientChild( | 477 void ImmersiveFullscreenController::OnTransientChildAdded( |
477 aura::Window* window, | 478 aura::Window* window, |
478 aura::Window* transient) { | 479 aura::Window* transient) { |
479 views::BubbleDelegateView* bubble_delegate = AsBubbleDelegate(transient); | 480 views::BubbleDelegateView* bubble_delegate = AsBubbleDelegate(transient); |
480 if (bubble_delegate && | 481 if (bubble_delegate && |
481 bubble_delegate->GetAnchorView() && | 482 bubble_delegate->GetAnchorView() && |
482 top_container_->Contains(bubble_delegate->GetAnchorView())) { | 483 top_container_->Contains(bubble_delegate->GetAnchorView())) { |
483 // Observe the aura::Window because the BubbleDelegateView may not be | 484 // Observe the aura::Window because the BubbleDelegateView may not be |
484 // parented to the widget's root view yet so |bubble_delegate->GetWidget()| | 485 // parented to the widget's root view yet so |bubble_delegate->GetWidget()| |
485 // may still return NULL. | 486 // may still return NULL. |
486 bubble_manager_->StartObserving(transient); | 487 bubble_manager_->StartObserving(transient); |
487 } | 488 } |
488 } | 489 } |
489 | 490 |
490 void ImmersiveFullscreenController::OnRemoveTransientChild( | 491 void ImmersiveFullscreenController::OnTransientChildRemoved( |
491 aura::Window* window, | 492 aura::Window* window, |
492 aura::Window* transient) { | 493 aura::Window* transient) { |
493 bubble_manager_->StopObserving(transient); | 494 bubble_manager_->StopObserving(transient); |
494 } | 495 } |
495 | 496 |
496 //////////////////////////////////////////////////////////////////////////////// | 497 //////////////////////////////////////////////////////////////////////////////// |
497 // ash::ImmersiveRevealedLock::Delegate overrides: | 498 // ash::ImmersiveRevealedLock::Delegate overrides: |
498 | 499 |
499 void ImmersiveFullscreenController::LockRevealedState( | 500 void ImmersiveFullscreenController::LockRevealedState( |
500 AnimateReveal animate_reveal) { | 501 AnimateReveal animate_reveal) { |
(...skipping 19 matching lines...) Expand all Loading... |
520 if (observers_enabled_ == enable) | 521 if (observers_enabled_ == enable) |
521 return; | 522 return; |
522 observers_enabled_ = enable; | 523 observers_enabled_ = enable; |
523 | 524 |
524 views::FocusManager* focus_manager = widget_->GetFocusManager(); | 525 views::FocusManager* focus_manager = widget_->GetFocusManager(); |
525 | 526 |
526 if (enable) { | 527 if (enable) { |
527 widget_->AddObserver(this); | 528 widget_->AddObserver(this); |
528 focus_manager->AddFocusChangeListener(this); | 529 focus_manager->AddFocusChangeListener(this); |
529 Shell::GetInstance()->AddPreTargetHandler(this); | 530 Shell::GetInstance()->AddPreTargetHandler(this); |
530 native_window_->AddObserver(this); | 531 views::corewm::TransientWindowManager::Get(native_window_)-> |
| 532 AddObserver(this); |
531 | 533 |
532 RecreateBubbleManager(); | 534 RecreateBubbleManager(); |
533 } else { | 535 } else { |
534 widget_->RemoveObserver(this); | 536 widget_->RemoveObserver(this); |
535 focus_manager->RemoveFocusChangeListener(this); | 537 focus_manager->RemoveFocusChangeListener(this); |
536 Shell::GetInstance()->RemovePreTargetHandler(this); | 538 Shell::GetInstance()->RemovePreTargetHandler(this); |
537 native_window_->RemoveObserver(this); | 539 views::corewm::TransientWindowManager::Get(native_window_)-> |
| 540 RemoveObserver(this); |
538 | 541 |
539 // We have stopped observing whether transient children are added or removed | 542 // We have stopped observing whether transient children are added or removed |
540 // to |native_window_|. The set of bubbles that BubbleManager is observing | 543 // to |native_window_|. The set of bubbles that BubbleManager is observing |
541 // will become stale really quickly. Destroy BubbleManager and recreate it | 544 // will become stale really quickly. Destroy BubbleManager and recreate it |
542 // when we start observing |native_window_| again. | 545 // when we start observing |native_window_| again. |
543 bubble_manager_.reset(); | 546 bubble_manager_.reset(); |
544 | 547 |
545 animation_->Stop(); | 548 animation_->Stop(); |
546 } | 549 } |
547 } | 550 } |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
924 AsBubbleDelegate(transient_child); | 927 AsBubbleDelegate(transient_child); |
925 if (bubble_delegate && | 928 if (bubble_delegate && |
926 bubble_delegate->GetAnchorView() && | 929 bubble_delegate->GetAnchorView() && |
927 top_container_->Contains(bubble_delegate->GetAnchorView())) { | 930 top_container_->Contains(bubble_delegate->GetAnchorView())) { |
928 bubble_manager_->StartObserving(transient_child); | 931 bubble_manager_->StartObserving(transient_child); |
929 } | 932 } |
930 } | 933 } |
931 } | 934 } |
932 | 935 |
933 } // namespace ash | 936 } // namespace ash |
OLD | NEW |