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

Side by Side Diff: ash/wm/immersive_fullscreen_controller.cc

Issue 2095193002: clang-format all of //ash (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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 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/common/ash_constants.h" 9 #include "ash/common/ash_constants.h"
10 #include "ash/common/wm/window_state.h" 10 #include "ash/common/wm/window_state.h"
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 widget_(NULL), 242 widget_(NULL),
243 native_window_(NULL), 243 native_window_(NULL),
244 observers_enabled_(false), 244 observers_enabled_(false),
245 enabled_(false), 245 enabled_(false),
246 reveal_state_(CLOSED), 246 reveal_state_(CLOSED),
247 revealed_lock_count_(0), 247 revealed_lock_count_(0),
248 mouse_x_when_hit_top_in_screen_(-1), 248 mouse_x_when_hit_top_in_screen_(-1),
249 gesture_begun_(false), 249 gesture_begun_(false),
250 animation_(new gfx::SlideAnimation(this)), 250 animation_(new gfx::SlideAnimation(this)),
251 animations_disabled_for_test_(false), 251 animations_disabled_for_test_(false),
252 weak_ptr_factory_(this) { 252 weak_ptr_factory_(this) {}
253 }
254 253
255 ImmersiveFullscreenController::~ImmersiveFullscreenController() { 254 ImmersiveFullscreenController::~ImmersiveFullscreenController() {
256 EnableWindowObservers(false); 255 EnableWindowObservers(false);
257 } 256 }
258 257
259 void ImmersiveFullscreenController::Init(Delegate* delegate, 258 void ImmersiveFullscreenController::Init(Delegate* delegate,
260 views::Widget* widget, 259 views::Widget* widget,
261 views::View* top_container) { 260 views::View* top_container) {
262 delegate_ = delegate; 261 delegate_ = delegate;
263 top_container_ = top_container; 262 top_container_ = top_container;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 } 307 }
309 } else { 308 } else {
310 // Stop cursor-at-top tracking. 309 // Stop cursor-at-top tracking.
311 top_edge_hover_timer_.Stop(); 310 top_edge_hover_timer_.Stop();
312 reveal_state_ = CLOSED; 311 reveal_state_ = CLOSED;
313 312
314 delegate_->OnImmersiveFullscreenExited(); 313 delegate_->OnImmersiveFullscreenExited();
315 } 314 }
316 315
317 if (enabled_) { 316 if (enabled_) {
318 UMA_HISTOGRAM_ENUMERATION("Ash.ImmersiveFullscreen.WindowType", 317 UMA_HISTOGRAM_ENUMERATION("Ash.ImmersiveFullscreen.WindowType", window_type,
319 window_type,
320 WINDOW_TYPE_COUNT); 318 WINDOW_TYPE_COUNT);
321 } 319 }
322 } 320 }
323 321
324 bool ImmersiveFullscreenController::IsEnabled() const { 322 bool ImmersiveFullscreenController::IsEnabled() const {
325 return enabled_; 323 return enabled_;
326 } 324 }
327 325
328 bool ImmersiveFullscreenController::IsRevealed() const { 326 bool ImmersiveFullscreenController::IsRevealed() const {
329 return enabled_ && reveal_state_ != CLOSED; 327 return enabled_ && reveal_state_ != CLOSED;
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 default: 432 default:
435 break; 433 break;
436 } 434 }
437 } 435 }
438 436
439 //////////////////////////////////////////////////////////////////////////////// 437 ////////////////////////////////////////////////////////////////////////////////
440 // views::FocusChangeListener overrides: 438 // views::FocusChangeListener overrides:
441 439
442 void ImmersiveFullscreenController::OnWillChangeFocus( 440 void ImmersiveFullscreenController::OnWillChangeFocus(
443 views::View* focused_before, 441 views::View* focused_before,
444 views::View* focused_now) { 442 views::View* focused_now) {}
445 }
446 443
447 void ImmersiveFullscreenController::OnDidChangeFocus( 444 void ImmersiveFullscreenController::OnDidChangeFocus(
448 views::View* focused_before, 445 views::View* focused_before,
449 views::View* focused_now) { 446 views::View* focused_now) {
450 UpdateFocusRevealedLock(); 447 UpdateFocusRevealedLock();
451 } 448 }
452 449
453 //////////////////////////////////////////////////////////////////////////////// 450 ////////////////////////////////////////////////////////////////////////////////
454 // views::WidgetObserver overrides: 451 // views::WidgetObserver overrides:
455 452
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 aura::Window* transient) { 502 aura::Window* transient) {
506 bubble_observer_->StopObserving(transient); 503 bubble_observer_->StopObserving(transient);
507 } 504 }
508 505
509 //////////////////////////////////////////////////////////////////////////////// 506 ////////////////////////////////////////////////////////////////////////////////
510 // ash::ImmersiveRevealedLock::Delegate overrides: 507 // ash::ImmersiveRevealedLock::Delegate overrides:
511 508
512 void ImmersiveFullscreenController::LockRevealedState( 509 void ImmersiveFullscreenController::LockRevealedState(
513 AnimateReveal animate_reveal) { 510 AnimateReveal animate_reveal) {
514 ++revealed_lock_count_; 511 ++revealed_lock_count_;
515 Animate animate = (animate_reveal == ANIMATE_REVEAL_YES) ? 512 Animate animate =
516 ANIMATE_FAST : ANIMATE_NO; 513 (animate_reveal == ANIMATE_REVEAL_YES) ? ANIMATE_FAST : ANIMATE_NO;
517 MaybeStartReveal(animate); 514 MaybeStartReveal(animate);
518 } 515 }
519 516
520 void ImmersiveFullscreenController::UnlockRevealedState() { 517 void ImmersiveFullscreenController::UnlockRevealedState() {
521 --revealed_lock_count_; 518 --revealed_lock_count_;
522 DCHECK_GE(revealed_lock_count_, 0); 519 DCHECK_GE(revealed_lock_count_, 0);
523 if (revealed_lock_count_ == 0) { 520 if (revealed_lock_count_ == 0) {
524 // Always animate ending the reveal fast. 521 // Always animate ending the reveal fast.
525 MaybeEndReveal(ANIMATE_FAST); 522 MaybeEndReveal(ANIMATE_FAST);
526 } 523 }
527 } 524 }
528 525
529 //////////////////////////////////////////////////////////////////////////////// 526 ////////////////////////////////////////////////////////////////////////////////
530 // private: 527 // private:
531 528
532 void ImmersiveFullscreenController::EnableWindowObservers(bool enable) { 529 void ImmersiveFullscreenController::EnableWindowObservers(bool enable) {
533 if (observers_enabled_ == enable) 530 if (observers_enabled_ == enable)
534 return; 531 return;
535 observers_enabled_ = enable; 532 observers_enabled_ = enable;
536 533
537 views::FocusManager* focus_manager = widget_->GetFocusManager(); 534 views::FocusManager* focus_manager = widget_->GetFocusManager();
538 535
539 if (enable) { 536 if (enable) {
540 widget_->AddObserver(this); 537 widget_->AddObserver(this);
541 focus_manager->AddFocusChangeListener(this); 538 focus_manager->AddFocusChangeListener(this);
542 Shell::GetInstance()->AddPreTargetHandler(this); 539 Shell::GetInstance()->AddPreTargetHandler(this);
543 ::wm::TransientWindowManager::Get(native_window_)-> 540 ::wm::TransientWindowManager::Get(native_window_)->AddObserver(this);
544 AddObserver(this);
545 541
546 RecreateBubbleObserver(); 542 RecreateBubbleObserver();
547 } else { 543 } else {
548 widget_->RemoveObserver(this); 544 widget_->RemoveObserver(this);
549 focus_manager->RemoveFocusChangeListener(this); 545 focus_manager->RemoveFocusChangeListener(this);
550 Shell::GetInstance()->RemovePreTargetHandler(this); 546 Shell::GetInstance()->RemovePreTargetHandler(this);
551 ::wm::TransientWindowManager::Get(native_window_)-> 547 ::wm::TransientWindowManager::Get(native_window_)->RemoveObserver(this);
552 RemoveObserver(this);
553 548
554 // We have stopped observing whether transient children are added or removed 549 // We have stopped observing whether transient children are added or removed
555 // to |native_window_|. The set of bubbles that BubbleObserver is observing 550 // to |native_window_|. The set of bubbles that BubbleObserver is observing
556 // will become stale really quickly. Destroy BubbleObserver and recreate it 551 // will become stale really quickly. Destroy BubbleObserver and recreate it
557 // when we start observing |native_window_| again. 552 // when we start observing |native_window_| again.
558 bubble_observer_.reset(); 553 bubble_observer_.reset();
559 554
560 animation_->Stop(); 555 animation_->Stop();
561 } 556 }
562 } 557 }
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
600 if (top_edge_hover_timer_.IsRunning() && 595 if (top_edge_hover_timer_.IsRunning() &&
601 abs(location_in_screen.x() - mouse_x_when_hit_top_in_screen_) <= 596 abs(location_in_screen.x() - mouse_x_when_hit_top_in_screen_) <=
602 kMouseRevealXThresholdPixels) 597 kMouseRevealXThresholdPixels)
603 return; 598 return;
604 599
605 // Start the reveal if the cursor doesn't move for some amount of time. 600 // Start the reveal if the cursor doesn't move for some amount of time.
606 mouse_x_when_hit_top_in_screen_ = location_in_screen.x(); 601 mouse_x_when_hit_top_in_screen_ = location_in_screen.x();
607 top_edge_hover_timer_.Stop(); 602 top_edge_hover_timer_.Stop();
608 // Timer is stopped when |this| is destroyed, hence Unretained() is safe. 603 // Timer is stopped when |this| is destroyed, hence Unretained() is safe.
609 top_edge_hover_timer_.Start( 604 top_edge_hover_timer_.Start(
610 FROM_HERE, 605 FROM_HERE, base::TimeDelta::FromMilliseconds(kMouseRevealDelayMs),
611 base::TimeDelta::FromMilliseconds(kMouseRevealDelayMs),
612 base::Bind( 606 base::Bind(
613 &ImmersiveFullscreenController::AcquireLocatedEventRevealedLock, 607 &ImmersiveFullscreenController::AcquireLocatedEventRevealedLock,
614 base::Unretained(this))); 608 base::Unretained(this)));
615 } 609 }
616 610
617 void ImmersiveFullscreenController::UpdateLocatedEventRevealedLock( 611 void ImmersiveFullscreenController::UpdateLocatedEventRevealedLock(
618 ui::LocatedEvent* event) { 612 ui::LocatedEvent* event) {
619 if (!enabled_) 613 if (!enabled_)
620 return; 614 return;
621 DCHECK(!event || event->IsMouseEvent() || event->IsTouchEvent()); 615 DCHECK(!event || event->IsMouseEvent() || event->IsTouchEvent());
(...skipping 13 matching lines...) Expand all
635 629
636 // Ignore all events while a window has capture. This keeps the top-of-window 630 // Ignore all events while a window has capture. This keeps the top-of-window
637 // views revealed during a drag. 631 // views revealed during a drag.
638 if (aura::client::GetCaptureWindow(native_window_)) 632 if (aura::client::GetCaptureWindow(native_window_))
639 return; 633 return;
640 634
641 gfx::Point location_in_screen; 635 gfx::Point location_in_screen;
642 if (event && event->type() != ui::ET_MOUSE_CAPTURE_CHANGED) { 636 if (event && event->type() != ui::ET_MOUSE_CAPTURE_CHANGED) {
643 location_in_screen = GetEventLocationInScreen(*event); 637 location_in_screen = GetEventLocationInScreen(*event);
644 } else { 638 } else {
645 aura::client::CursorClient* cursor_client = aura::client::GetCursorClient( 639 aura::client::CursorClient* cursor_client =
646 native_window_->GetRootWindow()); 640 aura::client::GetCursorClient(native_window_->GetRootWindow());
647 if (!cursor_client->IsMouseEventsEnabled()) { 641 if (!cursor_client->IsMouseEventsEnabled()) {
648 // If mouse events are disabled, the user's last interaction was probably 642 // If mouse events are disabled, the user's last interaction was probably
649 // via touch. Do no do further processing in this case as there is no easy 643 // via touch. Do no do further processing in this case as there is no easy
650 // way of retrieving the position of the user's last touch. 644 // way of retrieving the position of the user's last touch.
651 return; 645 return;
652 } 646 }
653 location_in_screen = aura::Env::GetInstance()->last_mouse_location(); 647 location_in_screen = aura::Env::GetInstance()->last_mouse_location();
654 } 648 }
655 649
656 if ((!event || event->IsMouseEvent()) && 650 if ((!event || event->IsMouseEvent()) &&
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 void ImmersiveFullscreenController::UpdateFocusRevealedLock() { 690 void ImmersiveFullscreenController::UpdateFocusRevealedLock() {
697 if (!enabled_) 691 if (!enabled_)
698 return; 692 return;
699 693
700 bool hold_lock = false; 694 bool hold_lock = false;
701 if (widget_->IsActive()) { 695 if (widget_->IsActive()) {
702 views::View* focused_view = widget_->GetFocusManager()->GetFocusedView(); 696 views::View* focused_view = widget_->GetFocusManager()->GetFocusedView();
703 if (top_container_->Contains(focused_view)) 697 if (top_container_->Contains(focused_view))
704 hold_lock = true; 698 hold_lock = true;
705 } else { 699 } else {
706 aura::Window* active_window = aura::client::GetActivationClient( 700 aura::Window* active_window =
707 native_window_->GetRootWindow())->GetActiveWindow(); 701 aura::client::GetActivationClient(native_window_->GetRootWindow())
702 ->GetActiveWindow();
708 if (GetAnchorView(active_window)) { 703 if (GetAnchorView(active_window)) {
709 // BubbleObserver will already have locked the top-of-window views if the 704 // BubbleObserver will already have locked the top-of-window views if the
710 // bubble is anchored to a child of |top_container_|. Don't acquire 705 // bubble is anchored to a child of |top_container_|. Don't acquire
711 // |focus_revealed_lock_| here for the sake of simplicity. 706 // |focus_revealed_lock_| here for the sake of simplicity.
712 // Note: Instead of checking for the existence of the |anchor_view|, 707 // Note: Instead of checking for the existence of the |anchor_view|,
713 // the existence of the |anchor_widget| is performed to avoid the case 708 // the existence of the |anchor_widget| is performed to avoid the case
714 // where the view is already gone (and the widget is still running). 709 // where the view is already gone (and the widget is still running).
715 } else { 710 } else {
716 // The currently active window is not |native_window_| and it is not a 711 // The currently active window is not |native_window_| and it is not a
717 // bubble with an anchor view. The top-of-window views should be revealed 712 // bubble with an anchor view. The top-of-window views should be revealed
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 ::wm::GetTransientChildren(native_window_); 932 ::wm::GetTransientChildren(native_window_);
938 for (size_t i = 0; i < transient_children.size(); ++i) { 933 for (size_t i = 0; i < transient_children.size(); ++i) {
939 aura::Window* transient_child = transient_children[i]; 934 aura::Window* transient_child = transient_children[i];
940 views::View* anchor_view = GetAnchorView(transient_child); 935 views::View* anchor_view = GetAnchorView(transient_child);
941 if (anchor_view && top_container_->Contains(anchor_view)) 936 if (anchor_view && top_container_->Contains(anchor_view))
942 bubble_observer_->StartObserving(transient_child); 937 bubble_observer_->StartObserving(transient_child);
943 } 938 }
944 } 939 }
945 940
946 } // namespace ash 941 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/immersive_fullscreen_controller.h ('k') | ash/wm/immersive_fullscreen_controller_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698