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

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

Issue 9616037: Change panel drag related methods to use mouse location in screen coordinates. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch to reland Created 8 years, 9 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 (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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/utf_string_conversions.h" 6 #include "base/utf_string_conversions.h"
7 #include "chrome/browser/browser_process.h" 7 #include "chrome/browser/browser_process.h"
8 #include "chrome/browser/download/download_service.h" 8 #include "chrome/browser/download/download_service.h"
9 #include "chrome/browser/download/download_service_factory.h" 9 #include "chrome/browser/download/download_service_factory.h"
10 #include "chrome/browser/net/url_request_mock_util.h" 10 #include "chrome/browser/net/url_request_mock_util.h"
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 // expected_bounds_after_cancel != test_begin_bounds. 171 // expected_bounds_after_cancel != test_begin_bounds.
172 std::vector<gfx::Rect> test_begin_bounds = GetAllPanelBounds(); 172 std::vector<gfx::Rect> test_begin_bounds = GetAllPanelBounds();
173 173
174 NativePanel* panel_to_drag = panels[drag_index]->native_panel(); 174 NativePanel* panel_to_drag = panels[drag_index]->native_panel();
175 scoped_ptr<NativePanelTesting> panel_testing_to_drag( 175 scoped_ptr<NativePanelTesting> panel_testing_to_drag(
176 NativePanelTesting::Create(panel_to_drag)); 176 NativePanelTesting::Create(panel_to_drag));
177 177
178 if (drag_action & DRAG_ACTION_BEGIN) { 178 if (drag_action & DRAG_ACTION_BEGIN) {
179 // Trigger the mouse-pressed event. 179 // Trigger the mouse-pressed event.
180 // All panels should remain in their original positions. 180 // All panels should remain in their original positions.
181 test_dragging_mouse_location_ = panels[drag_index]->GetBounds().origin();
181 panel_testing_to_drag->PressLeftMouseButtonTitlebar( 182 panel_testing_to_drag->PressLeftMouseButtonTitlebar(
182 panels[drag_index]->GetBounds().origin()); 183 test_dragging_mouse_location_);
183 EXPECT_EQ(test_begin_bounds, GetPanelBounds(panels)); 184 EXPECT_EQ(test_begin_bounds, GetPanelBounds(panels));
184 } 185 }
185 186
186 // Trigger the drag. 187 // Trigger the drag.
187 panel_testing_to_drag->DragTitlebar(delta_x, delta_y); 188 test_dragging_mouse_location_.Offset(delta_x, delta_y);
189 panel_testing_to_drag->DragTitlebar(test_dragging_mouse_location_);
188 190
189 // Compare against expected bounds. 191 // Compare against expected bounds.
190 EXPECT_EQ(AddXDeltaToBounds(test_begin_bounds, expected_delta_x_after_drag), 192 EXPECT_EQ(AddXDeltaToBounds(test_begin_bounds, expected_delta_x_after_drag),
191 GetPanelBounds(panels)); 193 GetPanelBounds(panels));
192 194
193 if (drag_action & DRAG_ACTION_CANCEL) { 195 if (drag_action & DRAG_ACTION_CANCEL) {
194 // Cancel the drag. 196 // Cancel the drag.
195 // All panels should return to their initial positions. 197 // All panels should return to their initial positions.
196 panel_testing_to_drag->CancelDragTitlebar(); 198 panel_testing_to_drag->CancelDragTitlebar();
197 EXPECT_EQ(expected_bounds_after_cancel, GetAllPanelBounds()); 199 EXPECT_EQ(expected_bounds_after_cancel, GetAllPanelBounds());
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
398 MoveMouse(minimized_bounds[index].origin()); 400 MoveMouse(minimized_bounds[index].origin());
399 } 401 }
400 402
401 // The below could be separate tests, just adding a TODO here for tracking. 403 // The below could be separate tests, just adding a TODO here for tracking.
402 // TODO(prasadt): Add test for dragging when in titlebar exposed state. 404 // TODO(prasadt): Add test for dragging when in titlebar exposed state.
403 // TODO(prasadt): Add test in presence of auto hiding task bar. 405 // TODO(prasadt): Add test in presence of auto hiding task bar.
404 406
405 for (size_t i = 0; i < panels.size(); ++i) 407 for (size_t i = 0; i < panels.size(); ++i)
406 delete native_panels_testing[i]; 408 delete native_panels_testing[i];
407 } 409 }
410
411 private:
412 // TODO(jianli): This is a temporary workaround to make TestDragging work
413 // with mouse location parameter changes. Fix this when we move drag related
414 // tests to new testing class.
415 gfx::Point test_dragging_mouse_location_;
408 }; 416 };
409 417
410 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, CreatePanel) { 418 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, CreatePanel) {
411 PanelManager* panel_manager = PanelManager::GetInstance(); 419 PanelManager* panel_manager = PanelManager::GetInstance();
412 EXPECT_EQ(0, panel_manager->num_panels()); // No panels initially. 420 EXPECT_EQ(0, panel_manager->num_panels()); // No panels initially.
413 421
414 Panel* panel = CreatePanel("PanelTest"); 422 Panel* panel = CreatePanel("PanelTest");
415 EXPECT_EQ(1, panel_manager->num_panels()); 423 EXPECT_EQ(1, panel_manager->num_panels());
416 424
417 gfx::Rect bounds = panel->GetBounds(); 425 gfx::Rect bounds = panel->GetBounds();
(...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after
772 780
773 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, NotDraggable) { 781 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, NotDraggable) {
774 Panel* panel = CreatePanel("panel"); 782 Panel* panel = CreatePanel("panel");
775 // This is used to simulate making a docked panel not draggable. 783 // This is used to simulate making a docked panel not draggable.
776 panel->set_has_temporary_layout(true); 784 panel->set_has_temporary_layout(true);
777 Panel* panel2 = CreatePanel("panel2"); 785 Panel* panel2 = CreatePanel("panel2");
778 786
779 scoped_ptr<NativePanelTesting> panel_testing( 787 scoped_ptr<NativePanelTesting> panel_testing(
780 NativePanelTesting::Create(panel->native_panel())); 788 NativePanelTesting::Create(panel->native_panel()));
781 gfx::Rect bounds = panel->GetBounds(); 789 gfx::Rect bounds = panel->GetBounds();
782 panel_testing->PressLeftMouseButtonTitlebar(bounds.origin()); 790 gfx::Point mouse_location = bounds.origin();
791 panel_testing->PressLeftMouseButtonTitlebar(mouse_location);
783 EXPECT_EQ(bounds.x(), panel->GetBounds().x()); 792 EXPECT_EQ(bounds.x(), panel->GetBounds().x());
784 panel_testing->DragTitlebar(-50, 10); 793 mouse_location.Offset(-50, 10);
794 panel_testing->DragTitlebar(mouse_location);
785 EXPECT_EQ(bounds.x(), panel->GetBounds().x()); 795 EXPECT_EQ(bounds.x(), panel->GetBounds().x());
786 panel_testing->FinishDragTitlebar(); 796 panel_testing->FinishDragTitlebar();
787 EXPECT_EQ(bounds.x(), panel->GetBounds().x()); 797 EXPECT_EQ(bounds.x(), panel->GetBounds().x());
788 798
789 // Reset the simulation hack so that the panel can be closed correctly. 799 // Reset the simulation hack so that the panel can be closed correctly.
790 panel->set_has_temporary_layout(false); 800 panel->set_has_temporary_layout(false);
791 panel->Close(); 801 panel->Close();
792 panel2->Close(); 802 panel2->Close();
793 } 803 }
794 804
795 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, CloseDockedPanelOnDrag) { 805 IN_PROC_BROWSER_TEST_F(PanelBrowserTest, CloseDockedPanelOnDrag) {
796 PanelManager* panel_manager = PanelManager::GetInstance(); 806 PanelManager* panel_manager = PanelManager::GetInstance();
797 PanelDragController* drag_controller = panel_manager->drag_controller(); 807 PanelDragController* drag_controller = panel_manager->drag_controller();
798 DockedPanelStrip* docked_strip = panel_manager->docked_strip(); 808 DockedPanelStrip* docked_strip = panel_manager->docked_strip();
799 809
800 // Create 4 detached panels. 810 // Create 4 docked panels.
801 // We have: P4 P3 P2 P1 811 // We have: P4 P3 P2 P1
802 Panel* panel1 = CreatePanelWithBounds("Panel1", gfx::Rect(0, 0, 100, 100)); 812 Panel* panel1 = CreatePanelWithBounds("Panel1", gfx::Rect(0, 0, 100, 100));
803 Panel* panel2 = CreatePanelWithBounds("Panel2", gfx::Rect(0, 0, 100, 100)); 813 Panel* panel2 = CreatePanelWithBounds("Panel2", gfx::Rect(0, 0, 100, 100));
804 Panel* panel3 = CreatePanelWithBounds("Panel3", gfx::Rect(0, 0, 100, 100)); 814 Panel* panel3 = CreatePanelWithBounds("Panel3", gfx::Rect(0, 0, 100, 100));
805 Panel* panel4 = CreatePanelWithBounds("Panel4", gfx::Rect(0, 0, 100, 100)); 815 Panel* panel4 = CreatePanelWithBounds("Panel4", gfx::Rect(0, 0, 100, 100));
806 ASSERT_EQ(4, docked_strip->num_panels()); 816 ASSERT_EQ(4, docked_strip->num_panels());
807 817
808 scoped_ptr<NativePanelTesting> panel1_testing( 818 scoped_ptr<NativePanelTesting> panel1_testing(
809 NativePanelTesting::Create(panel1->native_panel())); 819 NativePanelTesting::Create(panel1->native_panel()));
810 gfx::Point position1 = panel1->GetBounds().origin(); 820 gfx::Point position1 = panel1->GetBounds().origin();
811 gfx::Point position2 = panel2->GetBounds().origin(); 821 gfx::Point position2 = panel2->GetBounds().origin();
812 gfx::Point position3 = panel3->GetBounds().origin(); 822 gfx::Point position3 = panel3->GetBounds().origin();
813 gfx::Point position4 = panel4->GetBounds().origin(); 823 gfx::Point position4 = panel4->GetBounds().origin();
814 824
815 // Test the scenario: drag a panel, close another panel, cancel the drag. 825 // Test the scenario: drag a panel, close another panel, cancel the drag.
816 { 826 {
817 std::vector<Panel*> panels; 827 std::vector<Panel*> panels;
818 gfx::Point panel1_new_position = position1; 828 gfx::Point panel1_new_position = position1;
819 panel1_new_position.Offset(-500, 0); 829 panel1_new_position.Offset(-500, 0);
820 830
821 // Start dragging a panel. 831 // Start dragging a panel.
822 // We have: P1* P4 P3 P2 832 // We have: P1* P4 P3 P2
823 panel1_testing->PressLeftMouseButtonTitlebar(panel1->GetBounds().origin()); 833 gfx::Point mouse_location = panel1->GetBounds().origin();
824 panel1_testing->DragTitlebar(-500, -5); 834 panel1_testing->PressLeftMouseButtonTitlebar(mouse_location);
835 mouse_location.Offset(-500, -5);
836 panel1_testing->DragTitlebar(mouse_location);
825 EXPECT_TRUE(drag_controller->IsDragging()); 837 EXPECT_TRUE(drag_controller->IsDragging());
826 EXPECT_EQ(panel1, drag_controller->dragging_panel()); 838 EXPECT_EQ(panel1, drag_controller->dragging_panel());
827 839
828 ASSERT_EQ(4, docked_strip->num_panels()); 840 ASSERT_EQ(4, docked_strip->num_panels());
829 panels = PanelManager::GetInstance()->panels(); 841 panels = PanelManager::GetInstance()->panels();
830 EXPECT_EQ(panel2, panels[0]); 842 EXPECT_EQ(panel2, panels[0]);
831 EXPECT_EQ(panel3, panels[1]); 843 EXPECT_EQ(panel3, panels[1]);
832 EXPECT_EQ(panel4, panels[2]); 844 EXPECT_EQ(panel4, panels[2]);
833 EXPECT_EQ(panel1, panels[3]); 845 EXPECT_EQ(panel1, panels[3]);
834 EXPECT_EQ(position1, panel2->GetBounds().origin()); 846 EXPECT_EQ(position1, panel2->GetBounds().origin());
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
868 } 880 }
869 881
870 // Test the scenario: drag a panel, close another panel, end the drag. 882 // Test the scenario: drag a panel, close another panel, end the drag.
871 { 883 {
872 std::vector<Panel*> panels; 884 std::vector<Panel*> panels;
873 gfx::Point panel1_new_position = position1; 885 gfx::Point panel1_new_position = position1;
874 panel1_new_position.Offset(-500, 0); 886 panel1_new_position.Offset(-500, 0);
875 887
876 // Start dragging a panel. 888 // Start dragging a panel.
877 // We have: P1* P4 P3 889 // We have: P1* P4 P3
878 panel1_testing->PressLeftMouseButtonTitlebar(panel1->GetBounds().origin()); 890 gfx::Point mouse_location = panel1->GetBounds().origin();
879 panel1_testing->DragTitlebar(-500, -5); 891 panel1_testing->PressLeftMouseButtonTitlebar(mouse_location);
892 mouse_location.Offset(-500, -5);
893 panel1_testing->DragTitlebar(mouse_location);
880 EXPECT_TRUE(drag_controller->IsDragging()); 894 EXPECT_TRUE(drag_controller->IsDragging());
881 EXPECT_EQ(panel1, drag_controller->dragging_panel()); 895 EXPECT_EQ(panel1, drag_controller->dragging_panel());
882 896
883 ASSERT_EQ(3, docked_strip->num_panels()); 897 ASSERT_EQ(3, docked_strip->num_panels());
884 panels = PanelManager::GetInstance()->panels(); 898 panels = PanelManager::GetInstance()->panels();
885 EXPECT_EQ(panel3, panels[0]); 899 EXPECT_EQ(panel3, panels[0]);
886 EXPECT_EQ(panel4, panels[1]); 900 EXPECT_EQ(panel4, panels[1]);
887 EXPECT_EQ(panel1, panels[2]); 901 EXPECT_EQ(panel1, panels[2]);
888 EXPECT_EQ(position1, panel3->GetBounds().origin()); 902 EXPECT_EQ(position1, panel3->GetBounds().origin());
889 EXPECT_EQ(position2, panel4->GetBounds().origin()); 903 EXPECT_EQ(position2, panel4->GetBounds().origin());
(...skipping 27 matching lines...) Expand all
917 } 931 }
918 932
919 // Test the scenario: drag a panel and close the dragging panel. 933 // Test the scenario: drag a panel and close the dragging panel.
920 { 934 {
921 std::vector<Panel*> panels; 935 std::vector<Panel*> panels;
922 gfx::Point panel1_new_position = position2; 936 gfx::Point panel1_new_position = position2;
923 panel1_new_position.Offset(-500, 0); 937 panel1_new_position.Offset(-500, 0);
924 938
925 // Start dragging a panel again. 939 // Start dragging a panel again.
926 // We have: P1* P4 940 // We have: P1* P4
927 panel1_testing->PressLeftMouseButtonTitlebar(panel1->GetBounds().origin()); 941 gfx::Point mouse_location = panel1->GetBounds().origin();
928 panel1_testing->DragTitlebar(-500, -5); 942 panel1_testing->PressLeftMouseButtonTitlebar(mouse_location);
943 mouse_location.Offset(-500, -5);
944 panel1_testing->DragTitlebar(mouse_location);
929 EXPECT_TRUE(drag_controller->IsDragging()); 945 EXPECT_TRUE(drag_controller->IsDragging());
930 EXPECT_EQ(panel1, drag_controller->dragging_panel()); 946 EXPECT_EQ(panel1, drag_controller->dragging_panel());
931 EXPECT_EQ(panel1_new_position, panel1->GetBounds().origin()); 947 EXPECT_EQ(panel1_new_position, panel1->GetBounds().origin());
932 948
933 ASSERT_EQ(2, docked_strip->num_panels()); 949 ASSERT_EQ(2, docked_strip->num_panels());
934 panels = PanelManager::GetInstance()->panels(); 950 panels = PanelManager::GetInstance()->panels();
935 EXPECT_EQ(panel4, panels[0]); 951 EXPECT_EQ(panel4, panels[0]);
936 EXPECT_EQ(panel1, panels[1]); 952 EXPECT_EQ(panel1, panels[1]);
937 EXPECT_EQ(position1, panel4->GetBounds().origin()); 953 EXPECT_EQ(position1, panel4->GetBounds().origin());
938 954
(...skipping 1236 matching lines...) Expand 10 before | Expand all | Expand 10 after
2175 // position when tall panel brings up its titlebar. 2191 // position when tall panel brings up its titlebar.
2176 CloseWindowAndWait(panel1->browser()); 2192 CloseWindowAndWait(panel1->browser());
2177 EXPECT_EQ(balloon_bottom_after_tall_panel_titlebar_up, 2193 EXPECT_EQ(balloon_bottom_after_tall_panel_titlebar_up,
2178 GetBalloonBottomPosition(balloon)); 2194 GetBalloonBottomPosition(balloon));
2179 2195
2180 // Closing the remaining tall panel should move the notification balloon back 2196 // Closing the remaining tall panel should move the notification balloon back
2181 // to its original position. 2197 // to its original position.
2182 CloseWindowAndWait(panel2->browser()); 2198 CloseWindowAndWait(panel2->browser());
2183 EXPECT_EQ(original_balloon_bottom, GetBalloonBottomPosition(balloon)); 2199 EXPECT_EQ(original_balloon_bottom, GetBalloonBottomPosition(balloon));
2184 } 2200 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/panels/panel_browser_window_gtk.cc ('k') | chrome/browser/ui/panels/panel_drag_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698