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

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

Issue 9546001: Support detaching/attaching panels via inter-strip drags. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch to land 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 "chrome/browser/ui/panels/base_panel_browser_test.h" 5 #include "chrome/browser/ui/panels/base_panel_browser_test.h"
6 #include "chrome/browser/ui/panels/detached_panel_strip.h" 6 #include "chrome/browser/ui/panels/detached_panel_strip.h"
7 #include "chrome/browser/ui/panels/native_panel.h" 7 #include "chrome/browser/ui/panels/native_panel.h"
8 #include "chrome/browser/ui/panels/panel.h" 8 #include "chrome/browser/ui/panels/panel.h"
9 #include "chrome/browser/ui/panels/panel_drag_controller.h" 9 #include "chrome/browser/ui/panels/panel_drag_controller.h"
10 #include "chrome/browser/ui/panels/panel_manager.h" 10 #include "chrome/browser/ui/panels/panel_manager.h"
11 11
12 class DetachedPanelBrowserTest : public BasePanelBrowserTest { 12 class DetachedPanelBrowserTest : public BasePanelBrowserTest {
13 }; 13 };
14 14
15 IN_PROC_BROWSER_TEST_F(DetachedPanelBrowserTest, CheckDetachedPanelProperties) { 15 IN_PROC_BROWSER_TEST_F(DetachedPanelBrowserTest, CheckDetachedPanelProperties) {
16 PanelManager* panel_manager = PanelManager::GetInstance(); 16 PanelManager* panel_manager = PanelManager::GetInstance();
17 DetachedPanelStrip* detached_strip = panel_manager->detached_strip(); 17 DetachedPanelStrip* detached_strip = panel_manager->detached_strip();
18 18
19 // Create 2 panels. 19 // Create 2 panels.
20 Panel* panel1 = CreatePanelWithBounds("Panel1", gfx::Rect(0, 0, 250, 200)); 20 Panel* panel1 = CreateDetachedPanel("1", gfx::Rect(300, 200, 250, 200));
21 Panel* panel2 = CreatePanelWithBounds("Panel2", gfx::Rect(0, 0, 300, 200)); 21 Panel* panel2 = CreateDetachedPanel("2", gfx::Rect(350, 180, 300, 200));
22 22
23 EXPECT_TRUE(panel1->draggable());
24 EXPECT_TRUE(panel2->draggable());
25
26 // Move panels to detached strip.
27 EXPECT_EQ(2, panel_manager->num_panels());
28 EXPECT_EQ(0, detached_strip->num_panels());
29 panel_manager->MovePanelToStrip(panel1, PanelStrip::DETACHED);
30 panel_manager->MovePanelToStrip(panel2, PanelStrip::DETACHED);
31 EXPECT_EQ(2, panel_manager->num_panels()); 23 EXPECT_EQ(2, panel_manager->num_panels());
32 EXPECT_EQ(2, detached_strip->num_panels()); 24 EXPECT_EQ(2, detached_strip->num_panels());
33 25
34 EXPECT_TRUE(detached_strip->HasPanel(panel1)); 26 EXPECT_TRUE(detached_strip->HasPanel(panel1));
35 EXPECT_TRUE(detached_strip->HasPanel(panel2)); 27 EXPECT_TRUE(detached_strip->HasPanel(panel2));
36 28
37 EXPECT_TRUE(panel1->draggable()); 29 EXPECT_TRUE(panel1->draggable());
38 EXPECT_TRUE(panel2->draggable()); 30 EXPECT_TRUE(panel2->draggable());
39 31
40 panel_manager->CloseAll(); 32 panel_manager->CloseAll();
41 } 33 }
42 34
43 IN_PROC_BROWSER_TEST_F(DetachedPanelBrowserTest, DragDetachedPanel) { 35 IN_PROC_BROWSER_TEST_F(DetachedPanelBrowserTest, DragDetachedPanel) {
44 PanelManager* panel_manager = PanelManager::GetInstance(); 36 PanelManager* panel_manager = PanelManager::GetInstance();
45 37
46 // Create one detached panel. 38 Panel* panel = CreateDetachedPanel("1", gfx::Rect(300, 200, 250, 200));
47 Panel* panel = CreatePanelWithBounds("Panel1", gfx::Rect(0, 0, 250, 200));
48 panel_manager->MovePanelToStrip(panel, PanelStrip::DETACHED);
49 39
50 // Test that the detached panel can be dragged anywhere. 40 // Test that the detached panel can be dragged almost anywhere except getting
41 // close to the bottom of the docked area to trigger the attach.
51 scoped_ptr<NativePanelTesting> panel_testing( 42 scoped_ptr<NativePanelTesting> panel_testing(
52 NativePanelTesting::Create(panel->native_panel())); 43 NativePanelTesting::Create(panel->native_panel()));
53 gfx::Point origin = panel->GetBounds().origin(); 44 gfx::Point origin = panel->GetBounds().origin();
54 45
55 panel_testing->PressLeftMouseButtonTitlebar(origin); 46 panel_testing->PressLeftMouseButtonTitlebar(origin);
56 EXPECT_EQ(origin, panel->GetBounds().origin()); 47 EXPECT_EQ(origin, panel->GetBounds().origin());
57 48
58 origin.Offset(-51, -102); 49 origin.Offset(-51, -102);
59 panel_testing->DragTitlebar(origin); 50 panel_testing->DragTitlebar(origin);
60 WaitForBoundsAnimationFinished(panel);
61 EXPECT_EQ(origin, panel->GetBounds().origin()); 51 EXPECT_EQ(origin, panel->GetBounds().origin());
62 52
63 origin.Offset(37, 45); 53 origin.Offset(37, 45);
64 panel_testing->DragTitlebar(origin); 54 panel_testing->DragTitlebar(origin);
65 WaitForBoundsAnimationFinished(panel);
66 EXPECT_EQ(origin, panel->GetBounds().origin()); 55 EXPECT_EQ(origin, panel->GetBounds().origin());
67 56
68 panel_testing->FinishDragTitlebar(); 57 panel_testing->FinishDragTitlebar();
69 EXPECT_EQ(origin, panel->GetBounds().origin()); 58 EXPECT_EQ(origin, panel->GetBounds().origin());
70 59
71 // Test that cancelling the drag will return the panel the the original 60 // Test that cancelling the drag will return the panel the the original
72 // position. 61 // position.
73 gfx::Point original_position = panel->GetBounds().origin(); 62 gfx::Point original_position = panel->GetBounds().origin();
74 origin = original_position; 63 origin = original_position;
75 64
76 panel_testing->PressLeftMouseButtonTitlebar(origin); 65 panel_testing->PressLeftMouseButtonTitlebar(origin);
77 EXPECT_EQ(origin, panel->GetBounds().origin()); 66 EXPECT_EQ(origin, panel->GetBounds().origin());
78 67
79 origin.Offset(-51, -102); 68 origin.Offset(-51, -102);
80 panel_testing->DragTitlebar(origin); 69 panel_testing->DragTitlebar(origin);
81 WaitForBoundsAnimationFinished(panel);
82 EXPECT_EQ(origin, panel->GetBounds().origin()); 70 EXPECT_EQ(origin, panel->GetBounds().origin());
83 71
84 origin.Offset(37, 45); 72 origin.Offset(37, 45);
85 panel_testing->DragTitlebar(origin); 73 panel_testing->DragTitlebar(origin);
86 WaitForBoundsAnimationFinished(panel);
87 EXPECT_EQ(origin, panel->GetBounds().origin()); 74 EXPECT_EQ(origin, panel->GetBounds().origin());
88 75
89 panel_testing->CancelDragTitlebar(); 76 panel_testing->CancelDragTitlebar();
90 WaitForBoundsAnimationFinished(panel); 77 WaitForBoundsAnimationFinished(panel);
91 EXPECT_EQ(original_position, panel->GetBounds().origin()); 78 EXPECT_EQ(original_position, panel->GetBounds().origin());
92 79
93 panel_manager->CloseAll(); 80 panel_manager->CloseAll();
94 } 81 }
95 82
96 IN_PROC_BROWSER_TEST_F(DetachedPanelBrowserTest, CloseDetachedPanelOnDrag) { 83 IN_PROC_BROWSER_TEST_F(DetachedPanelBrowserTest, CloseDetachedPanelOnDrag) {
97 PanelManager* panel_manager = PanelManager::GetInstance(); 84 PanelManager* panel_manager = PanelManager::GetInstance();
98 PanelDragController* drag_controller = panel_manager->drag_controller(); 85 PanelDragController* drag_controller = panel_manager->drag_controller();
99 DetachedPanelStrip* detached_strip = panel_manager->detached_strip(); 86 DetachedPanelStrip* detached_strip = panel_manager->detached_strip();
100 87
101 // Create 4 detached panels. 88 // Create 4 detached panels.
102 Panel* panel1 = CreatePanelWithBounds("Panel1", gfx::Rect(0, 0, 100, 100)); 89 Panel* panel1 = CreateDetachedPanel("1", gfx::Rect(100, 200, 100, 100));
103 Panel* panel2 = CreatePanelWithBounds("Panel2", gfx::Rect(0, 0, 110, 110)); 90 Panel* panel2 = CreateDetachedPanel("2", gfx::Rect(200, 210, 110, 110));
104 Panel* panel3 = CreatePanelWithBounds("Panel3", gfx::Rect(0, 0, 120, 120)); 91 Panel* panel3 = CreateDetachedPanel("3", gfx::Rect(300, 220, 120, 120));
105 Panel* panel4 = CreatePanelWithBounds("Panel4", gfx::Rect(0, 0, 130, 130)); 92 Panel* panel4 = CreateDetachedPanel("4", gfx::Rect(400, 230, 130, 130));
106 panel_manager->MovePanelToStrip(panel1, PanelStrip::DETACHED);
107 panel_manager->MovePanelToStrip(panel2, PanelStrip::DETACHED);
108 panel_manager->MovePanelToStrip(panel3, PanelStrip::DETACHED);
109 panel_manager->MovePanelToStrip(panel4, PanelStrip::DETACHED);
110 ASSERT_EQ(4, detached_strip->num_panels()); 93 ASSERT_EQ(4, detached_strip->num_panels());
111 94
112 scoped_ptr<NativePanelTesting> panel1_testing( 95 scoped_ptr<NativePanelTesting> panel1_testing(
113 NativePanelTesting::Create(panel1->native_panel())); 96 NativePanelTesting::Create(panel1->native_panel()));
114 gfx::Point panel1_old_position = panel1->GetBounds().origin(); 97 gfx::Point panel1_old_position = panel1->GetBounds().origin();
115 gfx::Point panel2_position = panel2->GetBounds().origin(); 98 gfx::Point panel2_position = panel2->GetBounds().origin();
116 gfx::Point panel3_position = panel3->GetBounds().origin(); 99 gfx::Point panel3_position = panel3->GetBounds().origin();
117 gfx::Point panel4_position = panel4->GetBounds().origin(); 100 gfx::Point panel4_position = panel4->GetBounds().origin();
118 101
119 // Test the scenario: drag a panel, close another panel, cancel the drag. 102 // Test the scenario: drag a panel, close another panel, cancel the drag.
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 CloseWindowAndWait(panel1->browser()); 210 CloseWindowAndWait(panel1->browser());
228 EXPECT_FALSE(drag_controller->IsDragging()); 211 EXPECT_FALSE(drag_controller->IsDragging());
229 212
230 ASSERT_EQ(1, detached_strip->num_panels()); 213 ASSERT_EQ(1, detached_strip->num_panels());
231 EXPECT_TRUE(detached_strip->HasPanel(panel4)); 214 EXPECT_TRUE(detached_strip->HasPanel(panel4));
232 EXPECT_EQ(panel4_position, panel4->GetBounds().origin()); 215 EXPECT_EQ(panel4_position, panel4->GetBounds().origin());
233 } 216 }
234 217
235 panel_manager->CloseAll(); 218 panel_manager->CloseAll();
236 } 219 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/panels/base_panel_browser_test.cc ('k') | chrome/browser/ui/panels/detached_panel_strip.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698