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

Side by Side Diff: chrome/browser/ui/views/frame/immersive_mode_controller_ash_unittest.cc

Issue 22238003: Keep the top-of-window views revealed when clicking on the top-of-window views with a bubble open (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 4 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 | Annotate | Revision Log
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 "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h" 5 #include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h"
6 6
7 #include "ash/test/ash_test_base.h" 7 #include "ash/test/ash_test_base.h"
8 #include "chrome/browser/ui/immersive_fullscreen_configuration.h" 8 #include "chrome/browser/ui/immersive_fullscreen_configuration.h"
9 #include "ui/aura/client/cursor_client.h" 9 #include "ui/aura/client/cursor_client.h"
10 #include "ui/aura/root_window.h" 10 #include "ui/aura/root_window.h"
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 widget_->Init(params); 92 widget_->Init(params);
93 widget_->Show(); 93 widget_->Show();
94 94
95 top_container_ = new views::View(); 95 top_container_ = new views::View();
96 top_container_->SetBounds(0, 0, 500, 100); 96 top_container_->SetBounds(0, 0, 500, 100);
97 top_container_->set_focusable(true); 97 top_container_->set_focusable(true);
98 98
99 widget_->GetContentsView()->AddChildView(top_container_); 99 widget_->GetContentsView()->AddChildView(top_container_);
100 100
101 controller_->Init(delegate_.get(), widget_, top_container_); 101 controller_->Init(delegate_.get(), widget_, top_container_);
102 controller_->DisableAnimationsForTest(); 102 SetAnimationsDisabled(true);
103 }
104
105 // Enable or disable the immersive mode controller's animations. When the
106 // immersive mode controller's animations are disabled, some behavior is
107 // slightly different. In particular, the behavior is different when there
108 // is a transfer in which lock keeps the top-of-window views revealed (eg
109 // (bubble keeps top-of-window views revealed -> mouse keeps top-of-window
110 // views revealed). It is necessary to temparily enable the immersive
111 // controller's animations to get the correct behavior in tests.
112 void SetAnimationsDisabled(bool disabled) {
113 controller_->animations_disabled_for_test_ = disabled;
114 // Force any in progress animations to finish.
115 if (disabled)
116 controller_->MaybeEndReveal(ImmersiveModeControllerAsh::ANIMATE_NO);
103 } 117 }
104 118
105 // Attempt to reveal the top-of-window views via |modality|. 119 // Attempt to reveal the top-of-window views via |modality|.
106 // The top-of-window views can only be revealed via mouse hover or a gesture. 120 // The top-of-window views can only be revealed via mouse hover or a gesture.
107 void AttemptReveal(Modality modality) { 121 void AttemptReveal(Modality modality) {
108 ASSERT_NE(modality, MODALITY_TOUCH); 122 ASSERT_NE(modality, MODALITY_TOUCH);
109 AttemptRevealStateChange(true, modality); 123 AttemptRevealStateChange(true, modality);
110 } 124 }
111 125
112 // Attempt to unreveal the top-of-window views via |modality|. The 126 // Attempt to unreveal the top-of-window views via |modality|. The
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
559 views::Widget* bubble_widget2 = views::BubbleDelegateView::CreateBubble( 573 views::Widget* bubble_widget2 = views::BubbleDelegateView::CreateBubble(
560 new views::BubbleDelegateView(child_view, views::BubbleBorder::NONE)); 574 new views::BubbleDelegateView(child_view, views::BubbleBorder::NONE));
561 bubble_widget2->Show(); 575 bubble_widget2->Show();
562 EXPECT_TRUE(controller()->IsRevealed()); 576 EXPECT_TRUE(controller()->IsRevealed());
563 revealed_lock.reset(); 577 revealed_lock.reset();
564 SetHovered(false); 578 SetHovered(false);
565 EXPECT_TRUE(controller()->IsRevealed()); 579 EXPECT_TRUE(controller()->IsRevealed());
566 bubble_widget2->Close(); 580 bubble_widget2->Close();
567 EXPECT_FALSE(controller()->IsRevealed()); 581 EXPECT_FALSE(controller()->IsRevealed());
568 582
569 // 2) Test that the top-of-window views stay revealed as long as at least one 583 // 2) Test that transitioning from keeping the top-of-window views revealed
584 // because of a bubble to keeping the top-of-window views revealed because of
585 // mouse hover by activating |top_container_widget| works.
586 views::Widget* bubble_widget3 = views::BubbleDelegateView::CreateBubble(
587 new views::BubbleDelegateView(child_view, views::BubbleBorder::NONE));
588 bubble_widget3->Show();
589 SetHovered(true);
590 EXPECT_TRUE(controller()->IsRevealed());
591
592 SetAnimationsDisabled(false);
593 // Activating |top_container_widget| will close |bubble_widget3|.
594 top_container_widget->Activate();
595 SetAnimationsDisabled(true);
596 EXPECT_TRUE(controller()->IsRevealed());
597
598 // 3) Test that the top-of-window views stay revealed as long as at least one
570 // bubble anchored to a child of the top container is visible. 599 // bubble anchored to a child of the top container is visible.
571 views::BubbleDelegateView* bubble_delegate3(new views::BubbleDelegateView( 600 SetHovered(false);
572 child_view, views::BubbleBorder::NONE)); 601 EXPECT_FALSE(controller()->IsRevealed());
573 bubble_delegate3->set_use_focusless(true);
574 views::Widget* bubble_widget3(views::BubbleDelegateView::CreateBubble(
575 bubble_delegate3));
576 bubble_widget3->Show();
577 602
578 views::BubbleDelegateView* bubble_delegate4(new views::BubbleDelegateView( 603 views::BubbleDelegateView* bubble_delegate4(new views::BubbleDelegateView(
579 child_view, views::BubbleBorder::NONE)); 604 child_view, views::BubbleBorder::NONE));
580 bubble_delegate4->set_use_focusless(true); 605 bubble_delegate4->set_use_focusless(true);
581 views::Widget* bubble_widget4(views::BubbleDelegateView::CreateBubble( 606 views::Widget* bubble_widget4(views::BubbleDelegateView::CreateBubble(
582 bubble_delegate4)); 607 bubble_delegate4));
583 bubble_widget4->Show(); 608 bubble_widget4->Show();
584 609
585 EXPECT_TRUE(controller()->IsRevealed()); 610 views::BubbleDelegateView* bubble_delegate5(new views::BubbleDelegateView(
586 bubble_widget3->Hide(); 611 child_view, views::BubbleBorder::NONE));
612 bubble_delegate5->set_use_focusless(true);
613 views::Widget* bubble_widget5(views::BubbleDelegateView::CreateBubble(
614 bubble_delegate5));
615 bubble_widget5->Show();
616
587 EXPECT_TRUE(controller()->IsRevealed()); 617 EXPECT_TRUE(controller()->IsRevealed());
588 bubble_widget4->Hide(); 618 bubble_widget4->Hide();
619 EXPECT_TRUE(controller()->IsRevealed());
620 bubble_widget5->Hide();
589 EXPECT_FALSE(controller()->IsRevealed()); 621 EXPECT_FALSE(controller()->IsRevealed());
590 bubble_widget4->Show(); 622 bubble_widget5->Show();
591 EXPECT_TRUE(controller()->IsRevealed()); 623 EXPECT_TRUE(controller()->IsRevealed());
592 624
593 // 3) Test that visibility changes which occur while immersive fullscreen is 625 // 4) Test that visibility changes which occur while immersive fullscreen is
594 // disabled are handled upon reenabling immersive fullscreen. 626 // disabled are handled upon reenabling immersive fullscreen.
595 controller()->SetEnabled(false); 627 controller()->SetEnabled(false);
596 bubble_widget4->Hide(); 628 bubble_widget5->Hide();
597 controller()->SetEnabled(true); 629 controller()->SetEnabled(true);
598 EXPECT_FALSE(controller()->IsRevealed()); 630 EXPECT_FALSE(controller()->IsRevealed());
599 631
600 // We do not need |bubble_widget3| or |bubble_widget4| anymore, close them. 632 // We do not need |bubble_widget4| or |bubble_widget5| anymore, close them.
601 bubble_widget3->Close();
602 bubble_widget4->Close(); 633 bubble_widget4->Close();
634 bubble_widget5->Close();
603 635
604 // 4) Test that a bubble added while immersive fullscreen is disabled is 636 // 5) Test that a bubble added while immersive fullscreen is disabled is
605 // handled upon reenabling immersive fullscreen. 637 // handled upon reenabling immersive fullscreen.
606 controller()->SetEnabled(false); 638 controller()->SetEnabled(false);
607 639
608 views::Widget* bubble_widget5 = views::BubbleDelegateView::CreateBubble( 640 views::Widget* bubble_widget6 = views::BubbleDelegateView::CreateBubble(
609 new views::BubbleDelegateView(child_view, views::BubbleBorder::NONE)); 641 new views::BubbleDelegateView(child_view, views::BubbleBorder::NONE));
610 bubble_widget5->Show(); 642 bubble_widget6->Show();
611 643
612 controller()->SetEnabled(true); 644 controller()->SetEnabled(true);
613 EXPECT_TRUE(controller()->IsRevealed()); 645 EXPECT_TRUE(controller()->IsRevealed());
614 646
615 bubble_widget5->Close(); 647 bubble_widget6->Close();
616 648
617 // 5) Test that a bubble which is not anchored to a child of the 649 // 6) Test that a bubble which is not anchored to a child of the
618 // TopContainerView does not trigger a reveal or keep the 650 // TopContainerView does not trigger a reveal or keep the
619 // top-of-window views revealed if they are already revealed. 651 // top-of-window views revealed if they are already revealed.
620 views::Widget* bubble_widget6 = views::BubbleDelegateView::CreateBubble( 652 views::Widget* bubble_widget7 = views::BubbleDelegateView::CreateBubble(
621 new views::BubbleDelegateView(unrelated_view, views::BubbleBorder::NONE)); 653 new views::BubbleDelegateView(unrelated_view, views::BubbleBorder::NONE));
622 bubble_widget6->Show(); 654 bubble_widget7->Show();
623 EXPECT_FALSE(controller()->IsRevealed()); 655 EXPECT_FALSE(controller()->IsRevealed());
624 656
625 // Activating |top_container_widget| will close |bubble_widget6|. 657 // Activating |top_container_widget| will close |bubble_widget6|.
626 top_container_widget->Activate(); 658 top_container_widget->Activate();
627 AttemptReveal(MODALITY_MOUSE); 659 AttemptReveal(MODALITY_MOUSE);
628 EXPECT_TRUE(controller()->IsRevealed()); 660 EXPECT_TRUE(controller()->IsRevealed());
629 661
630 views::Widget* bubble_widget7 = views::BubbleDelegateView::CreateBubble( 662 views::Widget* bubble_widget8 = views::BubbleDelegateView::CreateBubble(
631 new views::BubbleDelegateView(unrelated_view, views::BubbleBorder::NONE)); 663 new views::BubbleDelegateView(unrelated_view, views::BubbleBorder::NONE));
632 bubble_widget7->Show(); 664 bubble_widget8->Show();
633 SetHovered(false); 665 SetHovered(false);
634 EXPECT_FALSE(controller()->IsRevealed()); 666 EXPECT_FALSE(controller()->IsRevealed());
635 bubble_widget7->Close(); 667 bubble_widget8->Close();
636 } 668 }
637 669
638 #endif // defined(OS_WIN) 670 #endif // defined(OS_WIN)
639 671
640 #endif // defined(OS_CHROMEOS) 672 #endif // defined(OS_CHROMEOS)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698