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

Side by Side Diff: chrome/browser/ui/panels/panel_browsertest.cc

Issue 8827011: Panel strip refactor cleanup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Finish cleanup. Created 9 years 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 (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/string_number_conversions.h" 6 #include "base/string_number_conversions.h"
7 #include "base/utf_string_conversions.h" 7 #include "base/utf_string_conversions.h"
8 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/download/download_service.h" 9 #include "chrome/browser/download/download_service.h"
10 #include "chrome/browser/download/download_service_factory.h" 10 #include "chrome/browser/download/download_service_factory.h"
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 CloseWindowAndWait(panel4->browser()); 157 CloseWindowAndWait(panel4->browser());
158 ASSERT_EQ(2, panel_manager->num_panels()); 158 ASSERT_EQ(2, panel_manager->num_panels());
159 EXPECT_EQ(2, panel_strip->num_panels()); 159 EXPECT_EQ(2, panel_strip->num_panels());
160 EXPECT_EQ(0, panel_overflow_strip->num_panels()); 160 EXPECT_EQ(0, panel_overflow_strip->num_panels());
161 EXPECT_NE(Panel::IN_OVERFLOW, panel5->expansion_state()); 161 EXPECT_NE(Panel::IN_OVERFLOW, panel5->expansion_state());
162 162
163 panel1->Close(); 163 panel1->Close();
164 panel5->Close(); 164 panel5->Close();
165 } 165 }
166 166
167 int horizontal_spacing() {
168 return PanelManager::horizontal_spacing();
169 }
170
171 // Helper function for debugging. 167 // Helper function for debugging.
172 void PrintAllPanelBounds() { 168 void PrintAllPanelBounds() {
173 const std::vector<Panel*>& panels = PanelManager::GetInstance()->panels(); 169 const std::vector<Panel*>& panels = PanelManager::GetInstance()->panels();
174 DLOG(WARNING) << "PanelBounds:"; 170 DLOG(WARNING) << "PanelBounds:";
175 for (size_t i = 0; i < panels.size(); ++i) { 171 for (size_t i = 0; i < panels.size(); ++i) {
176 DLOG(WARNING) << "#=" << i 172 DLOG(WARNING) << "#=" << i
177 << ", ptr=" << panels[i] 173 << ", ptr=" << panels[i]
178 << ", x=" << panels[i]->GetBounds().x() 174 << ", x=" << panels[i]->GetBounds().x()
179 << ", y=" << panels[i]->GetBounds().y() 175 << ", y=" << panels[i]->GetBounds().y()
180 << ", width=" << panels[i]->GetBounds().width() 176 << ", width=" << panels[i]->GetBounds().width()
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
554 // platforms. http://crbug.com/105073 550 // platforms. http://crbug.com/105073
555 #if defined(OS_WIN) 551 #if defined(OS_WIN)
556 #define MAYBE_CreatePanelOnOverflow CreatePanelOnOverflow 552 #define MAYBE_CreatePanelOnOverflow CreatePanelOnOverflow
557 #else 553 #else
558 #define MAYBE_CreatePanelOnOverflow DISABLED_CreatePanelOnOverflow 554 #define MAYBE_CreatePanelOnOverflow DISABLED_CreatePanelOnOverflow
559 #endif 555 #endif
560 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MAYBE_CreatePanelOnOverflow) { 556 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MAYBE_CreatePanelOnOverflow) {
561 TestCreatePanelOnOverflow(); 557 TestCreatePanelOnOverflow();
562 } 558 }
563 559
564 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DragPanels) { 560 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DragOnePanel) {
565 static const int max_panels = 3; 561 static const int num_panels = 1;
562 static const int zero_delta = 0;
563 static const int big_delta = 70;
564
565 static const std::vector<int> zero_deltas(num_panels, zero_delta);
566 std::vector<int> expected_delta_x_after_drag(num_panels, zero_delta);
567 std::vector<int> expected_delta_x_after_finish(num_panels, zero_delta);
568
569 Panel* panel1 =
570 CreatePanelWithBounds("PanelTest1", gfx::Rect(0, 0, 100, 100));
571
572 // Drag left.
573 expected_delta_x_after_drag[0] = -big_delta;
574 expected_delta_x_after_finish = zero_deltas;
575 TestDragging(-big_delta, zero_delta, 0, expected_delta_x_after_drag,
576 zero_deltas, GetAllPanelBounds(),
577 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
578
579 // Drag left and cancel.
580 expected_delta_x_after_drag[0] = -big_delta;
581 expected_delta_x_after_finish = zero_deltas;
582 TestDragging(-big_delta, zero_delta, 0, expected_delta_x_after_drag,
583 zero_deltas, GetAllPanelBounds(),
584 DRAG_ACTION_BEGIN | DRAG_ACTION_CANCEL);
585
586 // Drag right.
587 expected_delta_x_after_drag[0] = big_delta;
588 TestDragging(big_delta, zero_delta, 0, expected_delta_x_after_drag,
589 zero_deltas, GetAllPanelBounds(),
590 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
591
592 // Drag right and up. Expect no vertical movement.
593 TestDragging(big_delta, big_delta, 0, expected_delta_x_after_drag,
594 zero_deltas, GetAllPanelBounds(),
595 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
596
597 // Drag up. Expect no movement on drag.
598 TestDragging(0, -big_delta, 0, zero_deltas, zero_deltas,
599 GetAllPanelBounds(), DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
600
601 // Drag down. Expect no movement on drag.
602 TestDragging(0, big_delta, 0, zero_deltas, zero_deltas,
603 GetAllPanelBounds(), DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
604
605 panel1->Close();
606 }
607
608 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DragTwoPanels) {
609 static const int num_panels = 2;
610 static const int zero_delta = 0;
611 static const int small_delta = 10;
612 static const int big_delta = 70;
613
614 static const std::vector<int> zero_deltas(num_panels, zero_delta);
615 std::vector<int> expected_delta_x_after_drag(num_panels, zero_delta);
616 std::vector<int> expected_delta_x_after_finish(num_panels, zero_delta);
617 std::vector<gfx::Rect> initial_bounds;
618
619 Panel* panel1 =
620 CreatePanelWithBounds("PanelTest1", gfx::Rect(0, 0, 100, 100));
621 Panel* panel2 =
622 CreatePanelWithBounds("PanelTest2", gfx::Rect(0, 0, 120, 120));
623
624 int horizontal_spacing =
625 panel1->GetBounds().x() - panel2->GetBounds().right();
626
627 // Drag left, small delta, expect no shuffle.
628 {
629 expected_delta_x_after_drag = zero_deltas;
630 expected_delta_x_after_drag[0] = -small_delta;
631 TestDragging(-small_delta, zero_delta, 0, expected_delta_x_after_drag,
632 zero_deltas, GetAllPanelBounds(),
633 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
634
635 // Drag right panel i.e index 0, towards left, big delta, expect shuffle.
636 initial_bounds = GetAllPanelBounds();
637 expected_delta_x_after_drag = zero_deltas;
638
639 // Deltas for panel being dragged.
640 expected_delta_x_after_drag[0] = -big_delta;
641 expected_delta_x_after_finish[0] =
642 -(initial_bounds[1].width() + horizontal_spacing);
643
644 // Deltas for panel being shuffled.
645 expected_delta_x_after_drag[1] =
646 initial_bounds[0].width() + horizontal_spacing;
647 expected_delta_x_after_finish[1] = expected_delta_x_after_drag[1];
648
649 TestDragging(-big_delta, zero_delta, 0, expected_delta_x_after_drag,
650 expected_delta_x_after_finish, initial_bounds,
651 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
652 }
653
654 // Drag left panel i.e index 1, towards right, big delta, expect shuffle.
655 {
656 initial_bounds = GetAllPanelBounds();
657 expected_delta_x_after_drag = zero_deltas;
658 expected_delta_x_after_finish = zero_deltas;
659
660 // Deltas for panel being dragged.
661 expected_delta_x_after_drag[1] = big_delta;
662 expected_delta_x_after_finish[1] =
663 initial_bounds[0].width() + horizontal_spacing;
664
665 // Deltas for panel being shuffled.
666 expected_delta_x_after_drag[0] =
667 -(initial_bounds[1].width() + horizontal_spacing);
668 expected_delta_x_after_finish[0] = expected_delta_x_after_drag[0];
669
670 TestDragging(big_delta, zero_delta, 1, expected_delta_x_after_drag,
671 expected_delta_x_after_finish, initial_bounds,
672 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
673 }
674
675 // Drag left panel i.e index 1, towards right, big delta, expect shuffle.
676 // Cancel drag.
677 {
678 initial_bounds = GetAllPanelBounds();
679 expected_delta_x_after_drag = zero_deltas;
680
681 // Delta for panel being dragged.
682 expected_delta_x_after_drag[1] = big_delta;
683
684 // Delta for panel being shuffled.
685 expected_delta_x_after_drag[0] =
686 -(initial_bounds[1].width() + horizontal_spacing);
687
688 // As the drag is being canceled, we don't need expected_delta_x_after
689 // finish. Instead initial_bounds will be used.
690 TestDragging(big_delta, zero_delta, 1, expected_delta_x_after_drag,
691 zero_deltas, initial_bounds,
692 DRAG_ACTION_BEGIN | DRAG_ACTION_CANCEL);
693 }
694
695 panel1->Close();
696 panel2->Close();
697 }
698
699 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DragThreePanels) {
700 static const int num_panels = 3;
566 static const int zero_delta = 0; 701 static const int zero_delta = 0;
567 static const int small_delta = 10; 702 static const int small_delta = 10;
568 static const int big_delta = 70; 703 static const int big_delta = 70;
569 static const int bigger_delta = 120; 704 static const int bigger_delta = 120;
570 static const int biggest_delta = 200; 705 static const int biggest_delta = 200;
571 static const std::vector<int> zero_deltas(max_panels, zero_delta); 706
572 707 static const std::vector<int> zero_deltas(num_panels, zero_delta);
573 std::vector<int> expected_delta_x_after_drag(max_panels, zero_delta); 708 std::vector<int> expected_delta_x_after_drag(num_panels, zero_delta);
574 std::vector<int> expected_delta_x_after_finish(max_panels, zero_delta); 709 std::vector<int> expected_delta_x_after_finish(num_panels, zero_delta);
575 std::vector<gfx::Rect> current_bounds; 710 std::vector<gfx::Rect> current_bounds;
576 std::vector<gfx::Rect> initial_bounds; 711 std::vector<gfx::Rect> initial_bounds;
577 712
578 // Tests with a single panel. 713 Panel* panel1 =
579 { 714 CreatePanelWithBounds("PanelTest1", gfx::Rect(0, 0, 100, 100));
580 CreatePanelWithBounds("PanelTest1", gfx::Rect(0, 0, 100, 100)); 715 Panel* panel2 =
581 716 CreatePanelWithBounds("PanelTest2", gfx::Rect(0, 0, 120, 120));
582 // Drag left. 717 Panel* panel3 =
718 CreatePanelWithBounds("PanelTest3", gfx::Rect(0, 0, 110, 110));
719
720 int horizontal_spacing =
721 panel1->GetBounds().x() - panel2->GetBounds().right();
722
723 // Drag leftmost panel to become rightmost with two shuffles.
724 // We test both shuffles.
725 {
726 // Drag the left-most panel towards right without ending or cancelling it.
727 // Expect shuffle.
728 initial_bounds = GetAllPanelBounds();
729 expected_delta_x_after_drag = zero_deltas;
730
731 // Delta for panel being dragged.
732 expected_delta_x_after_drag[2] = big_delta;
733
734 // Delta for panel being shuffled.
735 expected_delta_x_after_drag[1] =
736 -(initial_bounds[2].width() + horizontal_spacing);
737
738 // There is no delta after finish as drag is not done yet.
739 TestDragging(big_delta, zero_delta, 2, expected_delta_x_after_drag,
740 zero_deltas, initial_bounds, DRAG_ACTION_BEGIN);
741
742 // The drag index changes from 2 to 1 because of the first shuffle above.
743 // Drag the panel further enough to the right to trigger a another
744 // shuffle. We finish the drag here.
745 current_bounds = GetAllPanelBounds();
746 expected_delta_x_after_drag = zero_deltas;
747 expected_delta_x_after_finish = zero_deltas;
748
749 // big_delta is not enough to cause the second shuffle as the panel being
750 // dragged is in the middle of a drag and big_delta won't go far enough.
751 // So we use bigger_delta.
752
753 // Deltas for panel being dragged.
754 expected_delta_x_after_drag[1] = bigger_delta;
755 int x_after_finish = current_bounds[0].x() +
756 (current_bounds[0].width() - current_bounds[1].width());
757 expected_delta_x_after_finish[1] = x_after_finish - current_bounds[1].x();
758
759 // Deltas for panel being shuffled.
760 expected_delta_x_after_drag[0] =
761 -(current_bounds[1].width() + horizontal_spacing);
762 expected_delta_x_after_finish[0] = expected_delta_x_after_drag[0];
763
764 TestDragging(bigger_delta, zero_delta, 1, expected_delta_x_after_drag,
765 expected_delta_x_after_finish, initial_bounds,
766 DRAG_ACTION_FINISH);
767 }
768
769 // Drag rightmost panel to become leftmost with two shuffles.
770 // And then cancel the drag.
771 {
772 // First drag and shuffle.
773 initial_bounds = GetAllPanelBounds();
774 expected_delta_x_after_drag = zero_deltas;
775
776 // Delta for panel being dragged.
583 expected_delta_x_after_drag[0] = -big_delta; 777 expected_delta_x_after_drag[0] = -big_delta;
778
779 // Delta for panel being shuffled.
780 expected_delta_x_after_drag[1] =
781 (initial_bounds[0].width() + horizontal_spacing);
782
783 // There is no delta after finish as drag is done yet.
784 TestDragging(-big_delta, zero_delta, 0, expected_delta_x_after_drag,
785 zero_deltas, initial_bounds, DRAG_ACTION_BEGIN);
786
787 // Second drag and shuffle. We cancel the drag here. The drag index
788 // changes from 0 to 1 because of the first shuffle above.
789 current_bounds = GetAllPanelBounds();
790 expected_delta_x_after_drag = zero_deltas;
791
792 // Delta for panel being dragged.
793 expected_delta_x_after_drag[1] = -bigger_delta;
794
795 // Deltas for panel being shuffled.
796 int x_after_shuffle = current_bounds[0].x() - horizontal_spacing
797 - current_bounds[2].width();
798 expected_delta_x_after_drag[2] = x_after_shuffle - current_bounds[2].x();
799
800 // There is no delta after finish as drag canceled.
801 TestDragging(-bigger_delta, zero_delta, 1, expected_delta_x_after_drag,
802 zero_deltas, initial_bounds, DRAG_ACTION_CANCEL);
803 }
804
805 // Drag leftmost panel to become the rightmost in a single drag. This
806 // will shuffle middle panel to leftmost and rightmost to middle.
807 {
808 initial_bounds = GetAllPanelBounds();
809 expected_delta_x_after_drag = zero_deltas;
584 expected_delta_x_after_finish = zero_deltas; 810 expected_delta_x_after_finish = zero_deltas;
585 TestDragging(-big_delta, zero_delta, 0, expected_delta_x_after_drag, 811
586 zero_deltas, GetAllPanelBounds(), 812 // Use a delta big enough to go across two panels.
587 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH); 813 // Deltas for panel being dragged.
588 814 expected_delta_x_after_drag[2] = biggest_delta;
589 // Drag left and cancel. 815 expected_delta_x_after_finish[2] =
590 expected_delta_x_after_drag[0] = -big_delta; 816 initial_bounds[1].width() + horizontal_spacing +
817 initial_bounds[0].width() + horizontal_spacing;
818
819 // Deltas for middle panels being shuffled.
820 expected_delta_x_after_drag[1] =
821 -(initial_bounds[2].width() + horizontal_spacing);
822 expected_delta_x_after_finish[1] = expected_delta_x_after_drag[1];
823
824 expected_delta_x_after_drag[0] = expected_delta_x_after_drag[1];
825 expected_delta_x_after_finish[0] = expected_delta_x_after_drag[0];
826
827 TestDragging(biggest_delta, zero_delta, 2, expected_delta_x_after_drag,
828 expected_delta_x_after_finish, initial_bounds,
829 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
830 }
831
832 // Drag rightmost panel to become the leftmost in a single drag. This
833 // will shuffle middle panel to rightmost and leftmost to middle.
834 {
835 initial_bounds = GetAllPanelBounds();
836 expected_delta_x_after_drag = zero_deltas;
591 expected_delta_x_after_finish = zero_deltas; 837 expected_delta_x_after_finish = zero_deltas;
592 TestDragging(-big_delta, zero_delta, 0, expected_delta_x_after_drag, 838
593 zero_deltas, GetAllPanelBounds(), 839 // Deltas for panel being dragged.
840 expected_delta_x_after_drag[0] = -biggest_delta;
841 expected_delta_x_after_finish[0] =
842 -(initial_bounds[1].width() + horizontal_spacing +
843 initial_bounds[2].width() + horizontal_spacing);
844
845 // Deltas for panels being shuffled.
846 expected_delta_x_after_drag[1] =
847 initial_bounds[0].width() + horizontal_spacing;
848 expected_delta_x_after_finish[1] = expected_delta_x_after_drag[1];
849
850 expected_delta_x_after_drag[2] = expected_delta_x_after_drag[1];
851 expected_delta_x_after_finish[2] = expected_delta_x_after_drag[2];
852
853 TestDragging(-biggest_delta, zero_delta, 0, expected_delta_x_after_drag,
854 expected_delta_x_after_finish, initial_bounds,
855 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
856 }
857
858 // Drag rightmost panel to become the leftmost in a single drag. Then
859 // cancel the drag.
860 {
861 initial_bounds = GetAllPanelBounds();
862 expected_delta_x_after_drag = zero_deltas;
863
864 // Deltas for panel being dragged.
865 expected_delta_x_after_drag[0] = -biggest_delta;
866
867 // Deltas for panels being shuffled.
868 expected_delta_x_after_drag[1] =
869 initial_bounds[0].width() + horizontal_spacing;
870 expected_delta_x_after_drag[2] = expected_delta_x_after_drag[1];
871
872 // No delta after finish as drag is canceled.
873 TestDragging(-biggest_delta, zero_delta, 0, expected_delta_x_after_drag,
874 zero_deltas, initial_bounds,
594 DRAG_ACTION_BEGIN | DRAG_ACTION_CANCEL); 875 DRAG_ACTION_BEGIN | DRAG_ACTION_CANCEL);
595 876 }
596 // Drag right. 877
597 expected_delta_x_after_drag[0] = big_delta; 878 panel1->Close();
598 TestDragging(big_delta, zero_delta, 0, expected_delta_x_after_drag, 879 panel2->Close();
599 zero_deltas, GetAllPanelBounds(), 880 panel3->Close();
600 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
601
602 // Drag right and up. Expect no vertical movement.
603 TestDragging(big_delta, big_delta, 0, expected_delta_x_after_drag,
604 zero_deltas, GetAllPanelBounds(),
605 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
606
607 // Drag up. Expect no movement on drag.
608 TestDragging(0, -big_delta, 0, zero_deltas, zero_deltas,
609 GetAllPanelBounds(), DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
610
611 // Drag down. Expect no movement on drag.
612 TestDragging(0, big_delta, 0, zero_deltas, zero_deltas,
613 GetAllPanelBounds(), DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
614 }
615
616 // Tests with two panels.
617 {
618 CreatePanelWithBounds("PanelTest2", gfx::Rect(0, 0, 120, 120));
619
620 // Drag left, small delta, expect no shuffle.
621 {
622 expected_delta_x_after_drag = zero_deltas;
623 expected_delta_x_after_drag[0] = -small_delta;
624 TestDragging(-small_delta, zero_delta, 0, expected_delta_x_after_drag,
625 zero_deltas, GetAllPanelBounds(),
626 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
627
628 // Drag right panel i.e index 0, towards left, big delta, expect shuffle.
629 initial_bounds = GetAllPanelBounds();
630 expected_delta_x_after_drag = zero_deltas;
631
632 // Deltas for panel being dragged.
633 expected_delta_x_after_drag[0] = -big_delta;
634 expected_delta_x_after_finish[0] =
635 -(initial_bounds[1].width() + horizontal_spacing());
636
637 // Deltas for panel being shuffled.
638 expected_delta_x_after_drag[1] =
639 initial_bounds[0].width() + horizontal_spacing();
640 expected_delta_x_after_finish[1] = expected_delta_x_after_drag[1];
641
642 TestDragging(-big_delta, zero_delta, 0, expected_delta_x_after_drag,
643 expected_delta_x_after_finish, initial_bounds,
644 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
645 }
646
647 // Drag left panel i.e index 1, towards right, big delta, expect shuffle.
648 {
649 initial_bounds = GetAllPanelBounds();
650 expected_delta_x_after_drag = zero_deltas;
651 expected_delta_x_after_finish = zero_deltas;
652
653 // Deltas for panel being dragged.
654 expected_delta_x_after_drag[1] = big_delta;
655 expected_delta_x_after_finish[1] =
656 initial_bounds[0].width() + horizontal_spacing();
657
658 // Deltas for panel being shuffled.
659 expected_delta_x_after_drag[0] =
660 -(initial_bounds[1].width() + horizontal_spacing());
661 expected_delta_x_after_finish[0] = expected_delta_x_after_drag[0];
662
663 TestDragging(big_delta, zero_delta, 1, expected_delta_x_after_drag,
664 expected_delta_x_after_finish, initial_bounds,
665 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
666 }
667
668 // Drag left panel i.e index 1, towards right, big delta, expect shuffle.
669 // Cancel drag.
670 {
671 initial_bounds = GetAllPanelBounds();
672 expected_delta_x_after_drag = zero_deltas;
673
674 // Delta for panel being dragged.
675 expected_delta_x_after_drag[1] = big_delta;
676
677 // Delta for panel being shuffled.
678 expected_delta_x_after_drag[0] =
679 -(initial_bounds[1].width() + horizontal_spacing());
680
681 // As the drag is being canceled, we don't need expected_delta_x_after
682 // finish. Instead initial_bounds will be used.
683 TestDragging(big_delta, zero_delta, 1, expected_delta_x_after_drag,
684 zero_deltas, initial_bounds,
685 DRAG_ACTION_BEGIN | DRAG_ACTION_CANCEL);
686 }
687 }
688
689 // Tests with three panels.
690 {
691 CreatePanelWithBounds("PanelTest3", gfx::Rect(0, 0, 110, 110));
692
693 // Drag leftmost panel to become rightmost with two shuffles.
694 // We test both shuffles.
695 {
696 // Drag the left-most panel towards right without ending or cancelling it.
697 // Expect shuffle.
698 initial_bounds = GetAllPanelBounds();
699 expected_delta_x_after_drag = zero_deltas;
700
701 // Delta for panel being dragged.
702 expected_delta_x_after_drag[2] = big_delta;
703
704 // Delta for panel being shuffled.
705 expected_delta_x_after_drag[1] =
706 -(initial_bounds[2].width() + horizontal_spacing());
707
708 // There is no delta after finish as drag is not done yet.
709 TestDragging(big_delta, zero_delta, 2, expected_delta_x_after_drag,
710 zero_deltas, initial_bounds, DRAG_ACTION_BEGIN);
711
712 // The drag index changes from 2 to 1 because of the first shuffle above.
713 // Drag the panel further enough to the right to trigger a another
714 // shuffle. We finish the drag here.
715 current_bounds = GetAllPanelBounds();
716 expected_delta_x_after_drag = zero_deltas;
717 expected_delta_x_after_finish = zero_deltas;
718
719 // big_delta is not enough to cause the second shuffle as the panel being
720 // dragged is in the middle of a drag and big_delta won't go far enough.
721 // So we use bigger_delta.
722
723 // Deltas for panel being dragged.
724 expected_delta_x_after_drag[1] = bigger_delta;
725 int x_after_finish = current_bounds[0].x() +
726 (current_bounds[0].width() - current_bounds[1].width());
727 expected_delta_x_after_finish[1] = x_after_finish - current_bounds[1].x();
728
729 // Deltas for panel being shuffled.
730 expected_delta_x_after_drag[0] =
731 -(current_bounds[1].width() + horizontal_spacing());
732 expected_delta_x_after_finish[0] = expected_delta_x_after_drag[0];
733
734 TestDragging(bigger_delta, zero_delta, 1, expected_delta_x_after_drag,
735 expected_delta_x_after_finish, initial_bounds,
736 DRAG_ACTION_FINISH);
737 }
738
739 // Drag rightmost panel to become leftmost with two shuffles.
740 // And then cancel the drag.
741 {
742 // First drag and shuffle.
743 initial_bounds = GetAllPanelBounds();
744 expected_delta_x_after_drag = zero_deltas;
745
746 // Delta for panel being dragged.
747 expected_delta_x_after_drag[0] = -big_delta;
748
749 // Delta for panel being shuffled.
750 expected_delta_x_after_drag[1] =
751 (initial_bounds[0].width() + horizontal_spacing());
752
753 // There is no delta after finish as drag is done yet.
754 TestDragging(-big_delta, zero_delta, 0, expected_delta_x_after_drag,
755 zero_deltas, initial_bounds, DRAG_ACTION_BEGIN);
756
757 // Second drag and shuffle. We cancel the drag here. The drag index
758 // changes from 0 to 1 because of the first shuffle above.
759 current_bounds = GetAllPanelBounds();
760 expected_delta_x_after_drag = zero_deltas;
761
762 // Delta for panel being dragged.
763 expected_delta_x_after_drag[1] = -bigger_delta;
764
765 // Deltas for panel being shuffled.
766 int x_after_shuffle = current_bounds[0].x() - horizontal_spacing()
767 - current_bounds[2].width();
768 expected_delta_x_after_drag[2] = x_after_shuffle - current_bounds[2].x();
769
770 // There is no delta after finish as drag canceled.
771 TestDragging(-bigger_delta, zero_delta, 1, expected_delta_x_after_drag,
772 zero_deltas, initial_bounds, DRAG_ACTION_CANCEL);
773 }
774
775 // Drag leftmost panel to become the rightmost in a single drag. This
776 // will shuffle middle panel to leftmost and rightmost to middle.
777 {
778 initial_bounds = GetAllPanelBounds();
779 expected_delta_x_after_drag = zero_deltas;
780 expected_delta_x_after_finish = zero_deltas;
781
782 // Use a delta big enough to go across two panels.
783 // Deltas for panel being dragged.
784 expected_delta_x_after_drag[2] = biggest_delta;
785 expected_delta_x_after_finish[2] =
786 initial_bounds[1].width() + horizontal_spacing() +
787 initial_bounds[0].width() + horizontal_spacing();
788
789 // Deltas for middle panels being shuffled.
790 expected_delta_x_after_drag[1] =
791 -(initial_bounds[2].width() + horizontal_spacing());
792 expected_delta_x_after_finish[1] = expected_delta_x_after_drag[1];
793
794 expected_delta_x_after_drag[0] = expected_delta_x_after_drag[1];
795 expected_delta_x_after_finish[0] = expected_delta_x_after_drag[0];
796
797 TestDragging(biggest_delta, zero_delta, 2, expected_delta_x_after_drag,
798 expected_delta_x_after_finish, initial_bounds,
799 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
800 }
801
802 // Drag rightmost panel to become the leftmost in a single drag. This
803 // will shuffle middle panel to rightmost and leftmost to middle.
804 {
805 initial_bounds = GetAllPanelBounds();
806 expected_delta_x_after_drag = zero_deltas;
807 expected_delta_x_after_finish = zero_deltas;
808
809 // Deltas for panel being dragged.
810 expected_delta_x_after_drag[0] = -biggest_delta;
811 expected_delta_x_after_finish[0] =
812 -(initial_bounds[1].width() + horizontal_spacing() +
813 initial_bounds[2].width() + horizontal_spacing());
814
815 // Deltas for panels being shuffled.
816 expected_delta_x_after_drag[1] =
817 initial_bounds[0].width() + horizontal_spacing();
818 expected_delta_x_after_finish[1] = expected_delta_x_after_drag[1];
819
820 expected_delta_x_after_drag[2] = expected_delta_x_after_drag[1];
821 expected_delta_x_after_finish[2] = expected_delta_x_after_drag[2];
822
823 TestDragging(-biggest_delta, zero_delta, 0, expected_delta_x_after_drag,
824 expected_delta_x_after_finish, initial_bounds,
825 DRAG_ACTION_BEGIN | DRAG_ACTION_FINISH);
826 }
827
828 // Drag rightmost panel to become the leftmost in a single drag. Then
829 // cancel the drag.
830 {
831 initial_bounds = GetAllPanelBounds();
832 expected_delta_x_after_drag = zero_deltas;
833
834 // Deltas for panel being dragged.
835 expected_delta_x_after_drag[0] = -biggest_delta;
836
837 // Deltas for panels being shuffled.
838 expected_delta_x_after_drag[1] =
839 initial_bounds[0].width() + horizontal_spacing();
840 expected_delta_x_after_drag[2] = expected_delta_x_after_drag[1];
841
842 // No delta after finish as drag is canceled.
843 TestDragging(-biggest_delta, zero_delta, 0, expected_delta_x_after_drag,
844 zero_deltas, initial_bounds,
845 DRAG_ACTION_BEGIN | DRAG_ACTION_CANCEL);
846 }
847 }
848
849 PanelManager::GetInstance()->RemoveAll();
850 } 881 }
851 882
jennb 2011/12/07 20:04:11 Oops. will delete this extra line.
883
852 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, CreateSettingsMenu) { 884 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, CreateSettingsMenu) {
853 TestCreateSettingsMenuForExtension( 885 TestCreateSettingsMenuForExtension(
854 FILE_PATH_LITERAL("extension1"), Extension::EXTERNAL_POLICY_DOWNLOAD, 886 FILE_PATH_LITERAL("extension1"), Extension::EXTERNAL_POLICY_DOWNLOAD,
855 "", ""); 887 "", "");
856 TestCreateSettingsMenuForExtension( 888 TestCreateSettingsMenuForExtension(
857 FILE_PATH_LITERAL("extension2"), Extension::INVALID, 889 FILE_PATH_LITERAL("extension2"), Extension::INVALID,
858 "http://home", "options.html"); 890 "http://home", "options.html");
859 } 891 }
860 892
861 // Flaky: http://crbug.com/105445 893 // Flaky: http://crbug.com/105445
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
922 EXPECT_FALSE(panel_testing->IsAnimatingBounds()); 954 EXPECT_FALSE(panel_testing->IsAnimatingBounds());
923 EXPECT_EQ(bounds, panel->GetBounds()); 955 EXPECT_EQ(bounds, panel->GetBounds());
924 956
925 panel->Close(); 957 panel->Close();
926 } 958 }
927 959
928 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, RestoredBounds) { 960 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, RestoredBounds) {
929 // Disable mouse watcher. We don't care about mouse movements in this test. 961 // Disable mouse watcher. We don't care about mouse movements in this test.
930 PanelManager* panel_manager = PanelManager::GetInstance(); 962 PanelManager* panel_manager = PanelManager::GetInstance();
931 PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher(); 963 PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher();
932 panel_manager->set_mouse_watcher(mouse_watcher); 964 panel_manager->SetMouseWatcher(mouse_watcher);
933 Panel* panel = CreatePanelWithBounds("PanelTest", gfx::Rect(0, 0, 100, 100)); 965 Panel* panel = CreatePanelWithBounds("PanelTest", gfx::Rect(0, 0, 100, 100));
934 EXPECT_EQ(Panel::EXPANDED, panel->expansion_state()); 966 EXPECT_EQ(Panel::EXPANDED, panel->expansion_state());
935 EXPECT_EQ(panel->GetBounds(), panel->GetRestoredBounds()); 967 EXPECT_EQ(panel->GetBounds(), panel->GetRestoredBounds());
936 EXPECT_EQ(0, panel_manager->minimized_panel_count());
937 968
938 panel->SetExpansionState(Panel::MINIMIZED); 969 panel->SetExpansionState(Panel::MINIMIZED);
939 EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state()); 970 EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state());
940 gfx::Rect bounds = panel->GetBounds(); 971 gfx::Rect bounds = panel->GetBounds();
941 gfx::Rect restored = panel->GetRestoredBounds(); 972 gfx::Rect restored = panel->GetRestoredBounds();
942 EXPECT_EQ(bounds.x(), restored.x()); 973 EXPECT_EQ(bounds.x(), restored.x());
943 EXPECT_GT(bounds.y(), restored.y()); 974 EXPECT_GT(bounds.y(), restored.y());
944 EXPECT_EQ(bounds.width(), restored.width()); 975 EXPECT_EQ(bounds.width(), restored.width());
945 EXPECT_LT(bounds.height(), restored.height()); 976 EXPECT_LT(bounds.height(), restored.height());
946 EXPECT_EQ(1, panel_manager->minimized_panel_count());
947 977
948 panel->SetExpansionState(Panel::TITLE_ONLY); 978 panel->SetExpansionState(Panel::TITLE_ONLY);
949 EXPECT_EQ(Panel::TITLE_ONLY, panel->expansion_state()); 979 EXPECT_EQ(Panel::TITLE_ONLY, panel->expansion_state());
950 bounds = panel->GetBounds(); 980 bounds = panel->GetBounds();
951 restored = panel->GetRestoredBounds(); 981 restored = panel->GetRestoredBounds();
952 EXPECT_EQ(bounds.x(), restored.x()); 982 EXPECT_EQ(bounds.x(), restored.x());
953 EXPECT_GT(bounds.y(), restored.y()); 983 EXPECT_GT(bounds.y(), restored.y());
954 EXPECT_EQ(bounds.width(), restored.width()); 984 EXPECT_EQ(bounds.width(), restored.width());
955 EXPECT_LT(bounds.height(), restored.height()); 985 EXPECT_LT(bounds.height(), restored.height());
956 EXPECT_EQ(1, panel_manager->minimized_panel_count());
957 986
958 panel->SetExpansionState(Panel::MINIMIZED); 987 panel->SetExpansionState(Panel::MINIMIZED);
959 EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state()); 988 EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state());
960 bounds = panel->GetBounds(); 989 bounds = panel->GetBounds();
961 restored = panel->GetRestoredBounds(); 990 restored = panel->GetRestoredBounds();
962 EXPECT_EQ(bounds.x(), restored.x()); 991 EXPECT_EQ(bounds.x(), restored.x());
963 EXPECT_GT(bounds.y(), restored.y()); 992 EXPECT_GT(bounds.y(), restored.y());
964 EXPECT_EQ(bounds.width(), restored.width()); 993 EXPECT_EQ(bounds.width(), restored.width());
965 EXPECT_LT(bounds.height(), restored.height()); 994 EXPECT_LT(bounds.height(), restored.height());
966 EXPECT_EQ(1, panel_manager->minimized_panel_count());
967 995
968 panel->SetExpansionState(Panel::EXPANDED); 996 panel->SetExpansionState(Panel::EXPANDED);
969 EXPECT_EQ(panel->GetBounds(), panel->GetRestoredBounds()); 997 EXPECT_EQ(panel->GetBounds(), panel->GetRestoredBounds());
970 EXPECT_EQ(0, panel_manager->minimized_panel_count());
971 998
972 // Verify that changing the panel bounds only affects restored height 999 // Verify that changing the panel bounds only affects restored height
973 // when panel is expanded. 1000 // when panel is expanded.
974 int saved_restored_height = restored.height(); 1001 int saved_restored_height = restored.height();
975 panel->SetExpansionState(Panel::MINIMIZED); 1002 panel->SetExpansionState(Panel::MINIMIZED);
976 bounds = gfx::Rect(10, 20, 300, 400); 1003 bounds = gfx::Rect(10, 20, 300, 400);
977 panel->SetPanelBounds(bounds); 1004 panel->SetPanelBounds(bounds);
978 EXPECT_EQ(saved_restored_height, panel->GetRestoredBounds().height()); 1005 EXPECT_EQ(saved_restored_height, panel->GetRestoredBounds().height());
979 EXPECT_EQ(1, panel_manager->minimized_panel_count());
980 1006
981 panel->SetExpansionState(Panel::TITLE_ONLY); 1007 panel->SetExpansionState(Panel::TITLE_ONLY);
982 bounds = gfx::Rect(20, 30, 100, 200); 1008 bounds = gfx::Rect(20, 30, 100, 200);
983 panel->SetPanelBounds(bounds); 1009 panel->SetPanelBounds(bounds);
984 EXPECT_EQ(saved_restored_height, panel->GetRestoredBounds().height()); 1010 EXPECT_EQ(saved_restored_height, panel->GetRestoredBounds().height());
985 EXPECT_EQ(1, panel_manager->minimized_panel_count());
986 1011
987 panel->SetExpansionState(Panel::EXPANDED); 1012 panel->SetExpansionState(Panel::EXPANDED);
988 bounds = gfx::Rect(40, 60, 300, 400); 1013 bounds = gfx::Rect(40, 60, 300, 400);
989 panel->SetPanelBounds(bounds); 1014 panel->SetPanelBounds(bounds);
990 EXPECT_NE(saved_restored_height, panel->GetRestoredBounds().height()); 1015 EXPECT_NE(saved_restored_height, panel->GetRestoredBounds().height());
991 EXPECT_EQ(0, panel_manager->minimized_panel_count());
992 1016
993 panel->Close(); 1017 panel->Close();
994 } 1018 }
995 1019
996 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MinimizeRestore) { 1020 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MinimizeRestore) {
997 // We'll simulate mouse movements for test. 1021 // We'll simulate mouse movements for test.
998 PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher(); 1022 PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher();
999 PanelManager::GetInstance()->set_mouse_watcher(mouse_watcher); 1023 PanelManager::GetInstance()->SetMouseWatcher(mouse_watcher);
1000 1024
1001 // Test with one panel. 1025 // Test with one panel.
1002 CreatePanelWithBounds("PanelTest1", gfx::Rect(0, 0, 100, 100)); 1026 CreatePanelWithBounds("PanelTest1", gfx::Rect(0, 0, 100, 100));
1003 TestMinimizeRestore(); 1027 TestMinimizeRestore();
1004 1028
1005 PanelManager::GetInstance()->RemoveAll(); 1029 PanelManager::GetInstance()->RemoveAll();
1006 } 1030 }
1007 1031
1008 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MinimizeRestoreTwoPanels) { 1032 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MinimizeRestoreTwoPanels) {
1009 // We'll simulate mouse movements for test. 1033 // We'll simulate mouse movements for test.
1010 PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher(); 1034 PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher();
1011 PanelManager::GetInstance()->set_mouse_watcher(mouse_watcher); 1035 PanelManager::GetInstance()->SetMouseWatcher(mouse_watcher);
1012 1036
1013 // Test with two panels. 1037 // Test with two panels.
1014 CreatePanelWithBounds("PanelTest1", gfx::Rect(0, 0, 100, 100)); 1038 CreatePanelWithBounds("PanelTest1", gfx::Rect(0, 0, 100, 100));
1015 CreatePanelWithBounds("PanelTest2", gfx::Rect(0, 0, 110, 110)); 1039 CreatePanelWithBounds("PanelTest2", gfx::Rect(0, 0, 110, 110));
1016 TestMinimizeRestore(); 1040 TestMinimizeRestore();
1017 1041
1018 PanelManager::GetInstance()->RemoveAll(); 1042 PanelManager::GetInstance()->RemoveAll();
1019 } 1043 }
1020 1044
1021 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MinimizeRestoreThreePanels) { 1045 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, MinimizeRestoreThreePanels) {
1022 // We'll simulate mouse movements for test. 1046 // We'll simulate mouse movements for test.
1023 PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher(); 1047 PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher();
1024 PanelManager::GetInstance()->set_mouse_watcher(mouse_watcher); 1048 PanelManager::GetInstance()->SetMouseWatcher(mouse_watcher);
1025 1049
1026 // Test with three panels. 1050 // Test with three panels.
1027 CreatePanelWithBounds("PanelTest1", gfx::Rect(0, 0, 100, 100)); 1051 CreatePanelWithBounds("PanelTest1", gfx::Rect(0, 0, 100, 100));
1028 CreatePanelWithBounds("PanelTest2", gfx::Rect(0, 0, 110, 110)); 1052 CreatePanelWithBounds("PanelTest2", gfx::Rect(0, 0, 110, 110));
1029 CreatePanelWithBounds("PanelTest3", gfx::Rect(0, 0, 120, 120)); 1053 CreatePanelWithBounds("PanelTest3", gfx::Rect(0, 0, 120, 120));
1030 TestMinimizeRestore(); 1054 TestMinimizeRestore();
1031 1055
1032 PanelManager::GetInstance()->RemoveAll(); 1056 PanelManager::GetInstance()->RemoveAll();
1033 } 1057 }
1034 1058
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
1178 EXPECT_TRUE(panel->IsDrawingAttention()); 1202 EXPECT_TRUE(panel->IsDrawingAttention());
1179 MessageLoop::current()->RunAllPending(); 1203 MessageLoop::current()->RunAllPending();
1180 EXPECT_TRUE(native_panel_testing->VerifyDrawingAttention()); 1204 EXPECT_TRUE(native_panel_testing->VerifyDrawingAttention());
1181 1205
1182 panel->Close(); 1206 panel->Close();
1183 } 1207 }
1184 1208
1185 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DrawAttentionWhileMinimized) { 1209 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, DrawAttentionWhileMinimized) {
1186 // We'll simulate mouse movements for test. 1210 // We'll simulate mouse movements for test.
1187 PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher(); 1211 PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher();
1188 PanelManager::GetInstance()->set_mouse_watcher(mouse_watcher); 1212 PanelManager::GetInstance()->SetMouseWatcher(mouse_watcher);
1189 1213
1190 CreatePanelParams params("Initially Active", gfx::Rect(), SHOW_AS_ACTIVE); 1214 CreatePanelParams params("Initially Active", gfx::Rect(), SHOW_AS_ACTIVE);
1191 Panel* panel = CreatePanelWithParams(params); 1215 Panel* panel = CreatePanelWithParams(params);
1192 NativePanel* native_panel = panel->native_panel(); 1216 NativePanel* native_panel = panel->native_panel();
1193 scoped_ptr<NativePanelTesting> native_panel_testing( 1217 scoped_ptr<NativePanelTesting> native_panel_testing(
1194 NativePanelTesting::Create(native_panel)); 1218 NativePanelTesting::Create(native_panel));
1195 1219
1196 // Test that the attention is drawn and the title-bar is brought up when the 1220 // Test that the attention is drawn and the title-bar is brought up when the
1197 // minimized panel is drawing attention. 1221 // minimized panel is drawing attention.
1198 panel->SetExpansionState(Panel::MINIMIZED); 1222 panel->SetExpansionState(Panel::MINIMIZED);
(...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after
1959 // position when tall panel brings up its titlebar. 1983 // position when tall panel brings up its titlebar.
1960 CloseWindowAndWait(panel1->browser()); 1984 CloseWindowAndWait(panel1->browser());
1961 EXPECT_EQ(balloon_bottom_after_tall_panel_titlebar_up, 1985 EXPECT_EQ(balloon_bottom_after_tall_panel_titlebar_up,
1962 GetBalloonBottomPosition(balloon)); 1986 GetBalloonBottomPosition(balloon));
1963 1987
1964 // Closing the remaining tall panel should move the notification balloon back 1988 // Closing the remaining tall panel should move the notification balloon back
1965 // to its original position. 1989 // to its original position.
1966 CloseWindowAndWait(panel2->browser()); 1990 CloseWindowAndWait(panel2->browser());
1967 EXPECT_EQ(original_balloon_bottom, GetBalloonBottomPosition(balloon)); 1991 EXPECT_EQ(original_balloon_bottom, GetBalloonBottomPosition(balloon));
1968 } 1992 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698