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

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

Issue 10914242: Improve panel tests by properly waiting for expected conditions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Synced Created 8 years, 3 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/message_loop.h" 5 #include "base/message_loop.h"
6 #include "chrome/browser/ui/panels/base_panel_browser_test.h" 6 #include "chrome/browser/ui/panels/base_panel_browser_test.h"
7 #include "chrome/browser/ui/panels/docked_panel_strip.h" 7 #include "chrome/browser/ui/panels/docked_panel_strip.h"
8 #include "chrome/browser/ui/panels/panel.h" 8 #include "chrome/browser/ui/panels/panel.h"
9 #include "chrome/browser/ui/panels/panel_manager.h" 9 #include "chrome/browser/ui/panels/panel_manager.h"
10 #include "chrome/browser/ui/panels/test_panel_strip_squeeze_observer.h"
10 #include "chrome/common/chrome_notification_types.h" 11 #include "chrome/common/chrome_notification_types.h"
11 #include "content/public/browser/notification_service.h" 12 #include "content/public/browser/notification_service.h"
12 #include "content/public/test/test_utils.h" 13 #include "content/public/test/test_utils.h"
13 14
14 class DockedPanelBrowserTest : public BasePanelBrowserTest { 15 class DockedPanelBrowserTest : public BasePanelBrowserTest {
15 public: 16 public:
16 virtual void SetUpOnMainThread() OVERRIDE { 17 virtual void SetUpOnMainThread() OVERRIDE {
17 BasePanelBrowserTest::SetUpOnMainThread(); 18 BasePanelBrowserTest::SetUpOnMainThread();
18 19
19 // All the tests here assume using mocked 800x600 screen area for the 20 // All the tests here assume using mocked 800x600 screen area for the
20 // primary monitor. Do the check now. 21 // primary monitor. Do the check now.
21 gfx::Rect primary_screen_area = PanelManager::GetInstance()-> 22 gfx::Rect primary_screen_area = PanelManager::GetInstance()->
22 display_settings_provider()->GetPrimaryScreenArea(); 23 display_settings_provider()->GetPrimaryScreenArea();
23 DCHECK(primary_screen_area.width() == 800); 24 DCHECK(primary_screen_area.width() == 800);
24 DCHECK(primary_screen_area.height() == 600); 25 DCHECK(primary_screen_area.height() == 600);
25 } 26 }
26 }; 27 };
27 28
28 IN_PROC_BROWSER_TEST_F(DockedPanelBrowserTest, FLAKY_SqueezePanelsInDock) { 29 IN_PROC_BROWSER_TEST_F(DockedPanelBrowserTest, SqueezePanelsInDock) {
29 PanelManager* panel_manager = PanelManager::GetInstance(); 30 PanelManager* panel_manager = PanelManager::GetInstance();
30 DockedPanelStrip* docked_strip = panel_manager->docked_strip(); 31 DockedPanelStrip* docked_strip = panel_manager->docked_strip();
31 32
32 // Create some docked panels. 33 // Create some docked panels.
33 Panel* panel1 = CreateDockedPanel("1", gfx::Rect(0, 0, 200, 100)); 34 Panel* panel1 = CreateDockedPanel("1", gfx::Rect(0, 0, 200, 100));
34 Panel* panel2 = CreateDockedPanel("2", gfx::Rect(0, 0, 200, 100)); 35 Panel* panel2 = CreateDockedPanel("2", gfx::Rect(0, 0, 200, 100));
35 Panel* panel3 = CreateDockedPanel("3", gfx::Rect(0, 0, 200, 100)); 36 Panel* panel3 = CreateDockedPanel("3", gfx::Rect(0, 0, 200, 100));
36 ASSERT_EQ(3, docked_strip->num_panels()); 37 ASSERT_EQ(3, docked_strip->num_panels());
37 38
38 // Check that nothing has been squeezed so far. 39 // Check that nothing has been squeezed so far.
39 EXPECT_EQ(panel1->GetBounds().width(), panel1->GetRestoredBounds().width()); 40 EXPECT_EQ(panel1->GetBounds().width(), panel1->GetRestoredBounds().width());
40 EXPECT_EQ(panel2->GetBounds().width(), panel2->GetRestoredBounds().width()); 41 EXPECT_EQ(panel2->GetBounds().width(), panel2->GetRestoredBounds().width());
41 EXPECT_EQ(panel3->GetBounds().width(), panel3->GetRestoredBounds().width()); 42 EXPECT_EQ(panel3->GetBounds().width(), panel3->GetRestoredBounds().width());
42 43
43 // Create more panels so they start getting squeezed. 44 // Create more panels so they start getting squeezed.
44 Panel* panel4 = CreateDockedPanel("4", gfx::Rect(0, 0, 200, 100)); 45 Panel* panel4 = CreateDockedPanel("4", gfx::Rect(0, 0, 200, 100));
45 Panel* panel5 = CreateDockedPanel("5", gfx::Rect(0, 0, 200, 100)); 46 Panel* panel5 = CreateDockedPanel("5", gfx::Rect(0, 0, 200, 100));
46 Panel* panel6 = CreateDockedPanel("6", gfx::Rect(0, 0, 200, 100)); 47 Panel* panel6 = CreateDockedPanel("6", gfx::Rect(0, 0, 200, 100));
47 Panel* panel7 = CreateDockedPanel("7", gfx::Rect(0, 0, 200, 100)); 48 Panel* panel7 = CreateDockedPanel("7", gfx::Rect(0, 0, 200, 100));
48 49
49 // Wait for active states to settle. 50 // Wait for active states to settle.
50 WaitForPanelActiveState(panel7, SHOW_AS_ACTIVE); 51 PanelStripSqueezeObserver panel7_settled(docked_strip, panel7);
51 52 panel7_settled.Wait();
52 // Wait for the scheduled layout to run.
53 MessageLoopForUI::current()->RunAllPending();
54 53
55 // The active panel should be at full width. 54 // The active panel should be at full width.
56 EXPECT_EQ(panel7->GetBounds().width(), panel7->GetRestoredBounds().width()); 55 EXPECT_EQ(panel7->GetBounds().width(), panel7->GetRestoredBounds().width());
57 EXPECT_GT(panel7->GetBounds().x(), docked_strip->display_area().x()); 56 EXPECT_GT(panel7->GetBounds().x(), docked_strip->display_area().x());
58 57
59 // The rest of them should be at reduced width. 58 // The rest of them should be at reduced width.
60 EXPECT_LT(panel1->GetBounds().width(), panel1->GetRestoredBounds().width()); 59 EXPECT_LT(panel1->GetBounds().width(), panel1->GetRestoredBounds().width());
61 EXPECT_LT(panel2->GetBounds().width(), panel2->GetRestoredBounds().width()); 60 EXPECT_LT(panel2->GetBounds().width(), panel2->GetRestoredBounds().width());
62 EXPECT_LT(panel3->GetBounds().width(), panel3->GetRestoredBounds().width()); 61 EXPECT_LT(panel3->GetBounds().width(), panel3->GetRestoredBounds().width());
63 EXPECT_LT(panel4->GetBounds().width(), panel4->GetRestoredBounds().width()); 62 EXPECT_LT(panel4->GetBounds().width(), panel4->GetRestoredBounds().width());
64 EXPECT_LT(panel5->GetBounds().width(), panel5->GetRestoredBounds().width()); 63 EXPECT_LT(panel5->GetBounds().width(), panel5->GetRestoredBounds().width());
65 EXPECT_LT(panel6->GetBounds().width(), panel6->GetRestoredBounds().width()); 64 EXPECT_LT(panel6->GetBounds().width(), panel6->GetRestoredBounds().width());
66 65
67 // Activate a different panel. 66 // Activate a different panel.
68 panel2->Activate(); 67 panel2->Activate();
68 WaitForPanelActiveState(panel2, SHOW_AS_ACTIVE);
69 69
70 // Wait for active states to settle. 70 // Wait for active states to settle.
71 WaitForPanelActiveState(panel2, SHOW_AS_ACTIVE); 71 PanelStripSqueezeObserver panel2_settled(docked_strip, panel2);
72 72 panel2_settled.Wait();
73 // Wait for the scheduled layout to run.
74 MessageLoopForUI::current()->RunAllPending();
75 73
76 // The active panel should be at full width. 74 // The active panel should be at full width.
77 EXPECT_EQ(panel2->GetBounds().width(), panel2->GetRestoredBounds().width()); 75 EXPECT_EQ(panel2->GetBounds().width(), panel2->GetRestoredBounds().width());
78 76
79 // The rest of them should be at reduced width. 77 // The rest of them should be at reduced width.
80 EXPECT_LT(panel1->GetBounds().width(), panel1->GetRestoredBounds().width()); 78 EXPECT_LT(panel1->GetBounds().width(), panel1->GetRestoredBounds().width());
81 EXPECT_LT(panel3->GetBounds().width(), panel3->GetRestoredBounds().width()); 79 EXPECT_LT(panel3->GetBounds().width(), panel3->GetRestoredBounds().width());
82 EXPECT_LT(panel4->GetBounds().width(), panel4->GetRestoredBounds().width()); 80 EXPECT_LT(panel4->GetBounds().width(), panel4->GetRestoredBounds().width());
83 EXPECT_LT(panel5->GetBounds().width(), panel5->GetRestoredBounds().width()); 81 EXPECT_LT(panel5->GetBounds().width(), panel5->GetRestoredBounds().width());
84 EXPECT_LT(panel6->GetBounds().width(), panel6->GetRestoredBounds().width()); 82 EXPECT_LT(panel6->GetBounds().width(), panel6->GetRestoredBounds().width());
85 EXPECT_LT(panel7->GetBounds().width(), panel7->GetRestoredBounds().width()); 83 EXPECT_LT(panel7->GetBounds().width(), panel7->GetRestoredBounds().width());
86 84
87 panel_manager->CloseAll(); 85 panel_manager->CloseAll();
88 } 86 }
89 87
90 IN_PROC_BROWSER_TEST_F(DockedPanelBrowserTest, FLAKY_SqueezeAndThenSomeMore) { 88 IN_PROC_BROWSER_TEST_F(DockedPanelBrowserTest, SqueezeAndThenSomeMore) {
91 PanelManager* panel_manager = PanelManager::GetInstance(); 89 PanelManager* panel_manager = PanelManager::GetInstance();
90 DockedPanelStrip* docked_strip = panel_manager->docked_strip();
92 91
93 // Create enough docked panels to get into squeezing. 92 // Create enough docked panels to get into squeezing.
94 Panel* panel1 = CreateDockedPanel("1", gfx::Rect(0, 0, 200, 100)); 93 Panel* panel1 = CreateDockedPanel("1", gfx::Rect(0, 0, 200, 100));
95 Panel* panel2 = CreateDockedPanel("2", gfx::Rect(0, 0, 200, 100)); 94 Panel* panel2 = CreateDockedPanel("2", gfx::Rect(0, 0, 200, 100));
96 Panel* panel3 = CreateDockedPanel("3", gfx::Rect(0, 0, 200, 100)); 95 Panel* panel3 = CreateDockedPanel("3", gfx::Rect(0, 0, 200, 100));
97 Panel* panel4 = CreateDockedPanel("4", gfx::Rect(0, 0, 200, 100)); 96 Panel* panel4 = CreateDockedPanel("4", gfx::Rect(0, 0, 200, 100));
98 Panel* panel5 = CreateDockedPanel("5", gfx::Rect(0, 0, 200, 100)); 97 Panel* panel5 = CreateDockedPanel("5", gfx::Rect(0, 0, 200, 100));
99 Panel* panel6 = CreateDockedPanel("6", gfx::Rect(0, 0, 200, 100)); 98 Panel* panel6 = CreateDockedPanel("6", gfx::Rect(0, 0, 200, 100));
100 99
101 // Wait for active states to settle. 100 // Wait for active states to settle.
102 WaitForPanelActiveState(panel6, SHOW_AS_ACTIVE); 101 PanelStripSqueezeObserver panel6_settled(docked_strip, panel6);
103 102 panel6_settled.Wait();
104 // Wait for the scheduled layout to run.
105 MessageLoopForUI::current()->RunAllPending();
106 103
107 // Record current widths of some panels. 104 // Record current widths of some panels.
108 int panel_1_width_less_squeezed = panel1->GetBounds().width(); 105 int panel_1_width_less_squeezed = panel1->GetBounds().width();
109 int panel_2_width_less_squeezed = panel2->GetBounds().width(); 106 int panel_2_width_less_squeezed = panel2->GetBounds().width();
110 int panel_3_width_less_squeezed = panel3->GetBounds().width(); 107 int panel_3_width_less_squeezed = panel3->GetBounds().width();
111 int panel_4_width_less_squeezed = panel4->GetBounds().width(); 108 int panel_4_width_less_squeezed = panel4->GetBounds().width();
112 int panel_5_width_less_squeezed = panel5->GetBounds().width(); 109 int panel_5_width_less_squeezed = panel5->GetBounds().width();
113 110
114 // These widths should be reduced. 111 // These widths should be reduced.
115 EXPECT_LT(panel_1_width_less_squeezed, panel1->GetRestoredBounds().width()); 112 EXPECT_LT(panel_1_width_less_squeezed, panel1->GetRestoredBounds().width());
116 EXPECT_LT(panel_2_width_less_squeezed, panel2->GetRestoredBounds().width()); 113 EXPECT_LT(panel_2_width_less_squeezed, panel2->GetRestoredBounds().width());
117 EXPECT_LT(panel_3_width_less_squeezed, panel3->GetRestoredBounds().width()); 114 EXPECT_LT(panel_3_width_less_squeezed, panel3->GetRestoredBounds().width());
118 EXPECT_LT(panel_4_width_less_squeezed, panel4->GetRestoredBounds().width()); 115 EXPECT_LT(panel_4_width_less_squeezed, panel4->GetRestoredBounds().width());
119 EXPECT_LT(panel_5_width_less_squeezed, panel5->GetRestoredBounds().width()); 116 EXPECT_LT(panel_5_width_less_squeezed, panel5->GetRestoredBounds().width());
120 117
121 Panel* panel7 = CreateDockedPanel("7", gfx::Rect(0, 0, 200, 100)); 118 Panel* panel7 = CreateDockedPanel("7", gfx::Rect(0, 0, 200, 100));
122 119
123 // Wait for active states to settle. 120 // Wait for active states to settle.
124 WaitForPanelActiveState(panel7, SHOW_AS_ACTIVE); 121 PanelStripSqueezeObserver panel7_settled(docked_strip, panel7);
125 122 panel7_settled.Wait();
126 // Wait for the scheduled layout to run.
127 MessageLoopForUI::current()->RunAllPending();
128 123
129 // The active panel should be at full width. 124 // The active panel should be at full width.
130 EXPECT_EQ(panel7->GetBounds().width(), panel7->GetRestoredBounds().width()); 125 EXPECT_EQ(panel7->GetBounds().width(), panel7->GetRestoredBounds().width());
131 126
132 // The panels should shrink in width. 127 // The panels should shrink in width.
133 EXPECT_LT(panel1->GetBounds().width(), panel_1_width_less_squeezed); 128 EXPECT_LT(panel1->GetBounds().width(), panel_1_width_less_squeezed);
134 EXPECT_LT(panel2->GetBounds().width(), panel_2_width_less_squeezed); 129 EXPECT_LT(panel2->GetBounds().width(), panel_2_width_less_squeezed);
135 EXPECT_LT(panel3->GetBounds().width(), panel_3_width_less_squeezed); 130 EXPECT_LT(panel3->GetBounds().width(), panel_3_width_less_squeezed);
136 EXPECT_LT(panel4->GetBounds().width(), panel_4_width_less_squeezed); 131 EXPECT_LT(panel4->GetBounds().width(), panel_4_width_less_squeezed);
137 EXPECT_LT(panel5->GetBounds().width(), panel_5_width_less_squeezed); 132 EXPECT_LT(panel5->GetBounds().width(), panel_5_width_less_squeezed);
138 133
139 panel_manager->CloseAll(); 134 panel_manager->CloseAll();
140 } 135 }
141 136
142 IN_PROC_BROWSER_TEST_F(DockedPanelBrowserTest, FLAKY_MinimizeSqueezedActive) { 137 IN_PROC_BROWSER_TEST_F(DockedPanelBrowserTest, MinimizeSqueezedActive) {
143 PanelManager* panel_manager = PanelManager::GetInstance(); 138 PanelManager* panel_manager = PanelManager::GetInstance();
139 DockedPanelStrip* docked_strip = panel_manager->docked_strip();
144 140
145 // Create enough docked panels to get into squeezing. 141 // Create enough docked panels to get into squeezing.
146 Panel* panel1 = CreateDockedPanel("1", gfx::Rect(0, 0, 200, 100)); 142 Panel* panel1 = CreateDockedPanel("1", gfx::Rect(0, 0, 200, 100));
147 Panel* panel2 = CreateDockedPanel("2", gfx::Rect(0, 0, 200, 100)); 143 Panel* panel2 = CreateDockedPanel("2", gfx::Rect(0, 0, 200, 100));
148 Panel* panel3 = CreateDockedPanel("3", gfx::Rect(0, 0, 200, 100)); 144 Panel* panel3 = CreateDockedPanel("3", gfx::Rect(0, 0, 200, 100));
149 Panel* panel4 = CreateDockedPanel("4", gfx::Rect(0, 0, 200, 100)); 145 Panel* panel4 = CreateDockedPanel("4", gfx::Rect(0, 0, 200, 100));
150 Panel* panel5 = CreateDockedPanel("5", gfx::Rect(0, 0, 200, 100)); 146 Panel* panel5 = CreateDockedPanel("5", gfx::Rect(0, 0, 200, 100));
151 Panel* panel6 = CreateDockedPanel("6", gfx::Rect(0, 0, 200, 100)); 147 Panel* panel6 = CreateDockedPanel("6", gfx::Rect(0, 0, 200, 100));
152 Panel* panel7 = CreateDockedPanel("7", gfx::Rect(0, 0, 200, 100)); 148 Panel* panel7 = CreateDockedPanel("7", gfx::Rect(0, 0, 200, 100));
153 149
154 // Wait for active states to settle. 150 // Wait for active states to settle.
155 WaitForPanelActiveState(panel7, SHOW_AS_ACTIVE); 151 PanelStripSqueezeObserver panel7_settled(docked_strip, panel7);
156 152 panel7_settled.Wait();
157 // Wait for the scheduled layout to run.
158 MessageLoopForUI::current()->RunAllPending();
159 153
160 // The active panel should be at full width. 154 // The active panel should be at full width.
161 EXPECT_EQ(panel7->GetBounds().width(), panel7->GetRestoredBounds().width()); 155 EXPECT_EQ(panel7->GetBounds().width(), panel7->GetRestoredBounds().width());
162 156
163 // The rest of them should be at reduced width. 157 // The rest of them should be at reduced width.
164 EXPECT_LT(panel1->GetBounds().width(), panel1->GetRestoredBounds().width()); 158 EXPECT_LT(panel1->GetBounds().width(), panel1->GetRestoredBounds().width());
165 EXPECT_LT(panel2->GetBounds().width(), panel2->GetRestoredBounds().width()); 159 EXPECT_LT(panel2->GetBounds().width(), panel2->GetRestoredBounds().width());
166 EXPECT_LT(panel3->GetBounds().width(), panel3->GetRestoredBounds().width()); 160 EXPECT_LT(panel3->GetBounds().width(), panel3->GetRestoredBounds().width());
167 EXPECT_LT(panel4->GetBounds().width(), panel4->GetRestoredBounds().width()); 161 EXPECT_LT(panel4->GetBounds().width(), panel4->GetRestoredBounds().width());
168 EXPECT_LT(panel5->GetBounds().width(), panel5->GetRestoredBounds().width()); 162 EXPECT_LT(panel5->GetBounds().width(), panel5->GetRestoredBounds().width());
169 EXPECT_LT(panel6->GetBounds().width(), panel6->GetRestoredBounds().width()); 163 EXPECT_LT(panel6->GetBounds().width(), panel6->GetRestoredBounds().width());
170 164
171 // Record the width of an inactive panel and minimize it. 165 // Record the width of an inactive panel and minimize it.
172 int width_of_panel3_squeezed = panel3->GetBounds().width(); 166 int width_of_panel3_squeezed = panel3->GetBounds().width();
173 panel3->Minimize(); 167 panel3->Minimize();
174 168
175 // Wait for any possible events.
176 MessageLoopForUI::current()->RunAllPending();
177
178 // Check that this panel is still at the same width. 169 // Check that this panel is still at the same width.
179 EXPECT_EQ(width_of_panel3_squeezed, panel3->GetBounds().width()); 170 EXPECT_EQ(width_of_panel3_squeezed, panel3->GetBounds().width());
180 171
181 // Minimize the active panel. It should become inactive and shrink in width. 172 // Minimize the active panel. It should become inactive and shrink in width.
182 content::WindowedNotificationObserver signal( 173 content::WindowedNotificationObserver signal(
183 chrome::NOTIFICATION_PANEL_STRIP_UPDATED, 174 chrome::NOTIFICATION_PANEL_STRIP_UPDATED,
184 content::NotificationService::AllSources()); 175 content::NotificationService::AllSources());
185 panel7->Minimize(); 176 panel7->Minimize();
186 177
187 // Wait for active states to settle. 178 // Wait for active states to settle.
188 WaitForPanelActiveState(panel7, SHOW_AS_INACTIVE); 179 WaitForPanelActiveState(panel7, SHOW_AS_INACTIVE);
189 180
190 // Wait for the scheduled layout to run. 181 // Wait for the scheduled layout to run.
191 signal.Wait(); 182 signal.Wait();
192 183
193 // The minimized panel should now be at reduced width. 184 // The minimized panel should now be at reduced width.
194 EXPECT_LT(panel7->GetBounds().width(), panel7->GetRestoredBounds().width()); 185 EXPECT_LT(panel7->GetBounds().width(), panel7->GetRestoredBounds().width());
195 186
196 panel_manager->CloseAll(); 187 panel_manager->CloseAll();
197 } 188 }
198 189
199 IN_PROC_BROWSER_TEST_F(DockedPanelBrowserTest, FLAKY_CloseSqueezedPanels) { 190 IN_PROC_BROWSER_TEST_F(DockedPanelBrowserTest, CloseSqueezedPanels) {
200 PanelManager* panel_manager = PanelManager::GetInstance(); 191 PanelManager* panel_manager = PanelManager::GetInstance();
192 DockedPanelStrip* docked_strip = panel_manager->docked_strip();
201 193
202 // Create enough docked panels to get into squeezing. 194 // Create enough docked panels to get into squeezing.
203 Panel* panel1 = CreateDockedPanel("1", gfx::Rect(0, 0, 200, 100)); 195 Panel* panel1 = CreateDockedPanel("1", gfx::Rect(0, 0, 200, 100));
204 Panel* panel2 = CreateDockedPanel("2", gfx::Rect(0, 0, 200, 100)); 196 Panel* panel2 = CreateDockedPanel("2", gfx::Rect(0, 0, 200, 100));
205 Panel* panel3 = CreateDockedPanel("3", gfx::Rect(0, 0, 200, 100)); 197 Panel* panel3 = CreateDockedPanel("3", gfx::Rect(0, 0, 200, 100));
206 Panel* panel4 = CreateDockedPanel("4", gfx::Rect(0, 0, 200, 100)); 198 Panel* panel4 = CreateDockedPanel("4", gfx::Rect(0, 0, 200, 100));
207 Panel* panel5 = CreateDockedPanel("5", gfx::Rect(0, 0, 200, 100)); 199 Panel* panel5 = CreateDockedPanel("5", gfx::Rect(0, 0, 200, 100));
208 Panel* panel6 = CreateDockedPanel("6", gfx::Rect(0, 0, 200, 100)); 200 Panel* panel6 = CreateDockedPanel("6", gfx::Rect(0, 0, 200, 100));
209 Panel* panel7 = CreateDockedPanel("7", gfx::Rect(0, 0, 200, 100)); 201 Panel* panel7 = CreateDockedPanel("7", gfx::Rect(0, 0, 200, 100));
210 202
211 // Wait for active states to settle. 203 // Wait for active states to settle.
212 WaitForPanelActiveState(panel7, SHOW_AS_ACTIVE); 204 PanelStripSqueezeObserver panel7_settled(docked_strip, panel7);
213 205 panel7_settled.Wait();
214 // Wait for the scheduled layout to run.
215 MessageLoopForUI::current()->RunAllPending();
216 206
217 // Record current widths of some panels. 207 // Record current widths of some panels.
218 int panel_1_orig_width = panel1->GetBounds().width(); 208 int panel_1_orig_width = panel1->GetBounds().width();
219 int panel_2_orig_width = panel2->GetBounds().width(); 209 int panel_2_orig_width = panel2->GetBounds().width();
220 int panel_3_orig_width = panel3->GetBounds().width(); 210 int panel_3_orig_width = panel3->GetBounds().width();
221 int panel_4_orig_width = panel4->GetBounds().width(); 211 int panel_4_orig_width = panel4->GetBounds().width();
222 int panel_5_orig_width = panel5->GetBounds().width(); 212 int panel_5_orig_width = panel5->GetBounds().width();
223 int panel_6_orig_width = panel6->GetBounds().width(); 213 int panel_6_orig_width = panel6->GetBounds().width();
224 int panel_7_orig_width = panel7->GetBounds().width(); 214 int panel_7_orig_width = panel7->GetBounds().width();
225 215
226 // The active panel should be at full width. 216 // The active panel should be at full width.
227 EXPECT_EQ(panel_7_orig_width, panel7->GetRestoredBounds().width()); 217 EXPECT_EQ(panel_7_orig_width, panel7->GetRestoredBounds().width());
228 218
229 // The rest of them should be at reduced width. 219 // The rest of them should be at reduced width.
230 EXPECT_LT(panel_1_orig_width, panel1->GetRestoredBounds().width()); 220 EXPECT_LT(panel_1_orig_width, panel1->GetRestoredBounds().width());
231 EXPECT_LT(panel_2_orig_width, panel2->GetRestoredBounds().width()); 221 EXPECT_LT(panel_2_orig_width, panel2->GetRestoredBounds().width());
232 EXPECT_LT(panel_3_orig_width, panel3->GetRestoredBounds().width()); 222 EXPECT_LT(panel_3_orig_width, panel3->GetRestoredBounds().width());
233 EXPECT_LT(panel_4_orig_width, panel4->GetRestoredBounds().width()); 223 EXPECT_LT(panel_4_orig_width, panel4->GetRestoredBounds().width());
234 EXPECT_LT(panel_5_orig_width, panel5->GetRestoredBounds().width()); 224 EXPECT_LT(panel_5_orig_width, panel5->GetRestoredBounds().width());
235 EXPECT_LT(panel_6_orig_width, panel6->GetRestoredBounds().width()); 225 EXPECT_LT(panel_6_orig_width, panel6->GetRestoredBounds().width());
236 226
237 // Close one panel. 227 // Close one panel.
228 content::WindowedNotificationObserver signal(
229 chrome::NOTIFICATION_PANEL_STRIP_UPDATED,
230 content::NotificationService::AllSources());
238 CloseWindowAndWait(panel2); 231 CloseWindowAndWait(panel2);
239 232 signal.Wait();
240 // Wait for all processing to finish.
241 MessageLoopForUI::current()->RunAllPending();
242 233
243 // The widths of the remaining panels should have increased. 234 // The widths of the remaining panels should have increased.
244 EXPECT_GT(panel1->GetBounds().width(), panel_1_orig_width); 235 EXPECT_GT(panel1->GetBounds().width(), panel_1_orig_width);
245 EXPECT_GT(panel3->GetBounds().width(), panel_3_orig_width); 236 EXPECT_GT(panel3->GetBounds().width(), panel_3_orig_width);
246 EXPECT_GT(panel4->GetBounds().width(), panel_4_orig_width); 237 EXPECT_GT(panel4->GetBounds().width(), panel_4_orig_width);
247 EXPECT_GT(panel5->GetBounds().width(), panel_5_orig_width); 238 EXPECT_GT(panel5->GetBounds().width(), panel_5_orig_width);
248 EXPECT_GT(panel6->GetBounds().width(), panel_6_orig_width); 239 EXPECT_GT(panel6->GetBounds().width(), panel_6_orig_width);
249 240
250 // The active panel should have stayed at full width. 241 // The active panel should have stayed at full width.
251 EXPECT_EQ(panel7->GetBounds().width(), panel_7_orig_width); 242 EXPECT_EQ(panel7->GetBounds().width(), panel_7_orig_width);
252 243
253 // Close several panels. 244 // Close several panels.
254 CloseWindowAndWait(panel3); 245 CloseWindowAndWait(panel3);
255 CloseWindowAndWait(panel5); 246 CloseWindowAndWait(panel5);
247
248 // Wait for strip update after last close.
249 content::WindowedNotificationObserver signal2(
250 chrome::NOTIFICATION_PANEL_STRIP_UPDATED,
251 content::NotificationService::AllSources());
256 CloseWindowAndWait(panel7); 252 CloseWindowAndWait(panel7);
257 253 signal2.Wait();
258 // Wait for all processing to finish.
259 MessageLoopForUI::current()->RunAllPending();
260 254
261 // We should not have squeezing any more; all panels should be at full width. 255 // We should not have squeezing any more; all panels should be at full width.
262 EXPECT_EQ(panel1->GetBounds().width(), panel1->GetRestoredBounds().width()); 256 EXPECT_EQ(panel1->GetBounds().width(), panel1->GetRestoredBounds().width());
263 EXPECT_EQ(panel4->GetBounds().width(), panel4->GetRestoredBounds().width()); 257 EXPECT_EQ(panel4->GetBounds().width(), panel4->GetRestoredBounds().width());
264 EXPECT_EQ(panel6->GetBounds().width(), panel6->GetRestoredBounds().width()); 258 EXPECT_EQ(panel6->GetBounds().width(), panel6->GetRestoredBounds().width());
265 259
266 panel_manager->CloseAll(); 260 panel_manager->CloseAll();
267 } 261 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/panels/detached_panel_browsertest.cc ('k') | chrome/browser/ui/panels/panel.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698