Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 <vector> | 5 #include <vector> |
| 6 #include "chrome/browser/ui/browser.h" | 6 #include "chrome/browser/ui/browser.h" |
| 7 #include "chrome/browser/ui/panels/base_panel_browser_test.h" | 7 #include "chrome/browser/ui/panels/base_panel_browser_test.h" |
| 8 #include "chrome/browser/ui/panels/native_panel.h" | 8 #include "chrome/browser/ui/panels/native_panel.h" |
| 9 #include "chrome/browser/ui/panels/panel.h" | 9 #include "chrome/browser/ui/panels/panel.h" |
| 10 #include "chrome/browser/ui/panels/panel_manager.h" | 10 #include "chrome/browser/ui/panels/panel_manager.h" |
| 11 #include "chrome/browser/ui/panels/panel_overflow_indicator.h" | 11 #include "chrome/browser/ui/panels/panel_overflow_indicator.h" |
| 12 #include "chrome/browser/ui/panels/panel_overflow_strip.h" | 12 #include "chrome/browser/ui/panels/panel_overflow_strip.h" |
| 13 #include "chrome/browser/ui/panels/panel_settings_menu_model.h" | 13 #include "chrome/browser/ui/panels/panel_settings_menu_model.h" |
| 14 #include "chrome/browser/ui/panels/panel_strip.h" | 14 #include "chrome/browser/ui/panels/panel_strip.h" |
| 15 #include "chrome/browser/ui/panels/test_panel_mouse_watcher.h" | 15 #include "chrome/browser/ui/panels/test_panel_mouse_watcher.h" |
| 16 #include "chrome/common/chrome_notification_types.h" | 16 #include "chrome/common/chrome_notification_types.h" |
| 17 #include "chrome/test/base/ui_test_utils.h" | 17 #include "chrome/test/base/ui_test_utils.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
| 19 | 19 |
| 20 namespace { | 20 namespace { |
| 21 | 21 |
| 22 // We override the default value for testing purpose. | 22 // We override the default value for testing purpose. |
| 23 const int kMaxVisibleOverflowPanelsForTesting = 3; | 23 const int kMaxVisibleOverflowPanelsForTesting = 3; |
| 24 const int kMaxVisibleOverflowPanelsOnHoverForTesting = 6; | 24 const int kMaxVisibleOverflowPanelsOnHoverForTesting = 6; |
| 25 | 25 |
| 26 // Encapsulates all the info we need to verify if a panel behaves as expected | 26 // Encapsulates all the info we need to verify if a panel behaves as expected |
| 27 // when we do the overflow testing. | 27 // when we do the overflow testing. |
| 28 struct PanelData { | 28 struct PanelData { |
| 29 Panel* panel; | 29 Panel* panel; |
| 30 Panel::LayoutState layout_state; | |
| 30 Panel::ExpansionState expansion_state; | 31 Panel::ExpansionState expansion_state; |
| 31 bool visible; | 32 bool visible; |
| 32 bool active; | 33 bool active; |
| 33 | 34 |
| 34 explicit PanelData(Panel* panel) | 35 explicit PanelData(Panel* panel) |
| 35 : panel(panel), | 36 : panel(panel), |
| 37 layout_state(panel->layout_state()), | |
| 36 expansion_state(panel->expansion_state()), | 38 expansion_state(panel->expansion_state()), |
| 37 visible(!panel->GetBounds().IsEmpty()), | 39 visible(!panel->GetBounds().IsEmpty()), |
| 38 active(panel->IsActive()) { | 40 active(panel->IsActive()) { |
| 39 } | 41 } |
| 40 | 42 |
| 41 PanelData(Panel* panel, Panel::ExpansionState expansion_state, | 43 PanelData(Panel* panel, Panel::LayoutState layout_state, |
| 44 Panel::ExpansionState expansion_state, | |
| 42 bool visible, bool active) | 45 bool visible, bool active) |
| 43 : panel(panel), | 46 : panel(panel), |
| 47 layout_state(layout_state), | |
| 44 expansion_state(expansion_state), | 48 expansion_state(expansion_state), |
| 45 visible(visible), | 49 visible(visible), |
| 46 active(active) { | 50 active(active) { |
| 47 } | 51 } |
| 48 | 52 |
| 49 bool operator==(const PanelData& another) const { | 53 bool operator==(const PanelData& another) const { |
| 54 if (layout_state != another.layout_state) | |
| 55 return false; | |
| 56 if (layout_state == Panel::DOCKED && | |
| 57 expansion_state != another.expansion_state) | |
| 58 return false; | |
| 50 return panel == another.panel && | 59 return panel == another.panel && |
| 51 expansion_state == another.expansion_state && | |
| 52 visible == another.visible && | 60 visible == another.visible && |
| 53 active == another.active; | 61 active == another.active; |
| 54 } | 62 } |
| 55 | 63 |
| 56 bool operator!=(const PanelData& another) const { | 64 bool operator!=(const PanelData& another) const { |
| 57 return !(*this == another); | 65 return !(*this == another); |
| 58 } | 66 } |
| 59 }; | 67 }; |
| 60 | 68 |
| 61 // For gtest printing. | 69 // For gtest printing. |
| 62 ::std::ostream& operator<<(::std::ostream& os, const PanelData& data); | |
| 63 ::std::ostream& operator<<(::std::ostream& os, const PanelData& data) { | 70 ::std::ostream& operator<<(::std::ostream& os, const PanelData& data) { |
| 64 return os << "(" << data.panel->browser()->app_name() << ", " | 71 return os << "(" << data.panel->browser()->app_name() << ", " |
| 65 << data.expansion_state << ", " << data.visible << ", " | 72 << data.layout_state << ", " << data.expansion_state << ", " |
| 66 << data.active << ")"; | 73 << data.visible << ", " << data.active << ")"; |
| 67 } | 74 } |
| 68 | 75 |
| 76 class PanelDataList : public std::vector<PanelData> { | |
| 77 }; | |
| 69 | 78 |
| 70 class PanelDataList : public std::vector<PanelData> { | 79 class DockedPanelDataList : public PanelDataList { |
| 71 public: | 80 public: |
| 72 void Add(Panel* panel, Panel::ExpansionState expansion_state, | 81 void Add(Panel* panel, Panel::ExpansionState expansion_state, |
| 73 bool visible, bool active) { | 82 bool visible, bool active) { |
|
jennb
2012/01/20 02:01:54
Still need to drop this 'visible' param and change
| |
| 74 push_back(PanelData(panel, expansion_state, visible, active)); | 83 push_back(PanelData(panel, Panel::DOCKED, expansion_state, |
| 84 visible, active)); | |
| 75 } | 85 } |
| 76 }; | 86 }; |
| 77 | 87 |
| 88 class OverflowPanelDataList : public PanelDataList { | |
| 89 public: | |
| 90 void Add(Panel* panel, bool visible, bool active) { | |
| 91 // Note that the expansion state is ignored when we check overflow panel. | |
| 92 push_back(PanelData(panel, Panel::IN_OVERFLOW, Panel::EXPANDED, | |
| 93 visible, active)); | |
| 94 } | |
| 95 }; | |
| 96 | |
| 78 } // namespace | 97 } // namespace |
| 79 | 98 |
| 80 class PanelOverflowBrowserTest : public BasePanelBrowserTest { | 99 class PanelOverflowBrowserTest : public BasePanelBrowserTest { |
| 81 public: | 100 public: |
| 82 PanelOverflowBrowserTest() : BasePanelBrowserTest() { | 101 PanelOverflowBrowserTest() : BasePanelBrowserTest() { |
| 83 } | 102 } |
| 84 | 103 |
| 85 virtual ~PanelOverflowBrowserTest() { | 104 virtual ~PanelOverflowBrowserTest() { |
| 86 } | 105 } |
| 87 | 106 |
| 88 virtual void SetUpOnMainThread() OVERRIDE { | 107 virtual void SetUpOnMainThread() OVERRIDE { |
| 89 BasePanelBrowserTest::SetUpOnMainThread(); | 108 BasePanelBrowserTest::SetUpOnMainThread(); |
| 90 | 109 |
| 91 PanelManager* panel_manager = PanelManager::GetInstance(); | 110 PanelManager* panel_manager = PanelManager::GetInstance(); |
| 92 panel_manager->panel_overflow_strip()->set_max_visible_panels( | 111 panel_manager->panel_overflow_strip()->set_max_visible_panels( |
| 93 kMaxVisibleOverflowPanelsForTesting); | 112 kMaxVisibleOverflowPanelsForTesting); |
| 94 panel_manager->panel_overflow_strip()->set_max_visible_panels_on_hover( | 113 panel_manager->panel_overflow_strip()->set_max_visible_panels_on_hover( |
| 95 kMaxVisibleOverflowPanelsOnHoverForTesting); | 114 kMaxVisibleOverflowPanelsOnHoverForTesting); |
| 96 | 115 |
| 97 PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher(); | 116 PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher(); |
| 98 panel_manager->SetMouseWatcherForTesting(mouse_watcher); | 117 panel_manager->SetMouseWatcherForTesting(mouse_watcher); |
| 99 | 118 |
| 100 // All the overflow tests assume 800x600 work area. Do the check now. | 119 // All the overflow tests assume 800x600 work area. Do the check now. |
| 101 DCHECK(PanelManager::GetInstance()->work_area().width() == 800); | 120 DCHECK(PanelManager::GetInstance()->work_area().width() == 800); |
| 102 } | 121 } |
| 103 | 122 |
| 104 protected: | 123 protected: |
| 105 static PanelDataList GetAllNormalPanelData() { | 124 static DockedPanelDataList GetAllDockedPanelData() { |
| 106 PanelDataList panel_data_list; | 125 DockedPanelDataList panel_data_list; |
| 107 PanelStrip::Panels panels = | 126 PanelStrip::Panels panels = |
| 108 PanelManager::GetInstance()->panel_strip()->panels(); | 127 PanelManager::GetInstance()->panel_strip()->panels(); |
| 109 for (PanelStrip::Panels::const_iterator iter = panels.begin(); | 128 for (PanelStrip::Panels::const_iterator iter = panels.begin(); |
| 110 iter != panels.end(); ++iter) { | 129 iter != panels.end(); ++iter) { |
| 111 Panel* panel = *iter; | 130 Panel* panel = *iter; |
| 112 panel_data_list.push_back(PanelData(panel)); | 131 panel_data_list.push_back(PanelData(panel)); |
| 113 } | 132 } |
| 114 return panel_data_list; | 133 return panel_data_list; |
| 115 } | 134 } |
| 116 | 135 |
| 117 static PanelDataList GetAllOverflowPanelData() { | 136 static OverflowPanelDataList GetAllOverflowPanelData() { |
| 118 PanelDataList panel_data_list; | 137 OverflowPanelDataList panel_data_list; |
| 119 PanelOverflowStrip::Panels panels = | 138 PanelOverflowStrip::Panels panels = |
| 120 PanelManager::GetInstance()->panel_overflow_strip()->panels(); | 139 PanelManager::GetInstance()->panel_overflow_strip()->panels(); |
| 121 for (PanelOverflowStrip::Panels::const_iterator iter = panels.begin(); | 140 for (PanelOverflowStrip::Panels::const_iterator iter = panels.begin(); |
| 122 iter != panels.end(); ++iter) { | 141 iter != panels.end(); ++iter) { |
| 123 Panel* panel = *iter; | 142 Panel* panel = *iter; |
| 124 panel_data_list.push_back(PanelData(panel)); | 143 panel_data_list.push_back(PanelData(panel)); |
| 125 } | 144 } |
| 126 return panel_data_list; | 145 return panel_data_list; |
| 127 } | 146 } |
| 128 | 147 |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 145 PanelManager::GetInstance()->panel_overflow_strip(); | 164 PanelManager::GetInstance()->panel_overflow_strip(); |
| 146 int expected_x = overflow_strip->display_area().x(); | 165 int expected_x = overflow_strip->display_area().x(); |
| 147 gfx::Size expected_size(overflow_strip->current_display_width(), | 166 gfx::Size expected_size(overflow_strip->current_display_width(), |
| 148 panel->IconOnlySize().height()); | 167 panel->IconOnlySize().height()); |
| 149 gfx::Rect bounds = panel->GetBounds(); | 168 gfx::Rect bounds = panel->GetBounds(); |
| 150 EXPECT_EQ(expected_x, bounds.x()); | 169 EXPECT_EQ(expected_x, bounds.x()); |
| 151 EXPECT_EQ(expected_size, bounds.size()); | 170 EXPECT_EQ(expected_size, bounds.size()); |
| 152 return expected_x == bounds.x() && expected_size == bounds.size(); | 171 return expected_x == bounds.x() && expected_size == bounds.size(); |
| 153 } | 172 } |
| 154 | 173 |
| 155 std::vector<Panel*> CreateOverflowPanels(int num_normal_panels, | 174 std::vector<Panel*> CreateOverflowPanels(int num_docked_panels, |
| 156 int num_overflow_panels, | 175 int num_overflow_panels, |
| 157 const int* panel_widths) { | 176 const int* panel_widths) { |
| 158 const int kTestPanelHeight = 200; | 177 const int kTestPanelHeight = 200; |
| 159 std::vector<Panel*> panels; | 178 std::vector<Panel*> panels; |
| 160 | 179 |
| 161 // First, create normal panels to fill the panel strip. | 180 // First, create docked panels to fill the panel strip. |
| 162 int i = 0; | 181 int i = 0; |
| 163 for (; i < num_normal_panels; ++i) { | 182 for (; i < num_docked_panels; ++i) { |
| 164 CreatePanelParams params( | 183 CreatePanelParams params( |
| 165 MakePanelName(i), | 184 MakePanelName(i), |
| 166 gfx::Rect(0, 0, panel_widths[i], kTestPanelHeight), | 185 gfx::Rect(0, 0, panel_widths[i], kTestPanelHeight), |
| 167 SHOW_AS_INACTIVE); | 186 SHOW_AS_INACTIVE); |
| 168 Panel* panel = CreatePanelWithParams(params); | 187 Panel* panel = CreatePanelWithParams(params); |
| 169 panels.push_back(panel); | 188 panels.push_back(panel); |
| 170 } | 189 } |
| 171 | 190 |
| 172 // Then, create panels that would be placed in the overflow strip. | 191 // Then, create panels that would be placed in the overflow strip. |
| 173 int num_panels = num_normal_panels + num_overflow_panels; | 192 int num_panels = num_docked_panels + num_overflow_panels; |
| 174 for (; i < num_panels; ++i) { | 193 for (; i < num_panels; ++i) { |
| 175 CreatePanelParams params( | 194 CreatePanelParams params( |
| 176 MakePanelName(i), | 195 MakePanelName(i), |
| 177 gfx::Rect(0, 0, panel_widths[i], kTestPanelHeight), | 196 gfx::Rect(0, 0, panel_widths[i], kTestPanelHeight), |
| 178 SHOW_AS_INACTIVE); | 197 SHOW_AS_INACTIVE); |
| 179 Panel* panel = CreatePanelWithParams(params); | 198 Panel* panel = CreatePanelWithParams(params); |
| 180 WaitForExpansionStateChanged(panel, Panel::IN_OVERFLOW); | 199 WaitForLayoutStateChanged(panel, Panel::IN_OVERFLOW); |
| 181 panels.push_back(panel); | 200 panels.push_back(panel); |
| 182 } | 201 } |
| 183 | 202 |
| 184 return panels; | 203 return panels; |
| 185 } | 204 } |
| 186 }; | 205 }; |
| 187 | 206 |
| 188 // TODO(jianli): remove the guard when overflow support is enabled on other | 207 // TODO(jianli): remove the guard when overflow support is enabled on other |
| 189 // platforms. http://crbug.com/105073 | 208 // platforms. http://crbug.com/105073 |
| 190 #if defined(OS_WIN) | 209 #if defined(OS_WIN) |
| 191 #define MAYBE_CheckPanelProperties CheckPanelProperties | 210 #define MAYBE_CheckPanelProperties CheckPanelProperties |
| 192 #define MAYBE_UpdateDraggableStatus UpdateDraggableStatus | 211 #define MAYBE_UpdateDraggableStatus UpdateDraggableStatus |
| 193 #define MAYBE_CreateOverflowPanels CreateOverflowPanels | 212 #define MAYBE_CreateOverflowPanels CreateOverflowPanels |
| 194 #define MAYBE_CreateMoreOverflowPanels CreateMoreOverflowPanels | 213 #define MAYBE_CreateMoreOverflowPanels CreateMoreOverflowPanels |
| 195 // http://crbug.com/107230 | 214 // http://crbug.com/107230 |
| 196 #define MAYBE_CreatePanelOnDelayedOverflow CreatePanelOnDelayedOverflow | 215 #define MAYBE_CreatePanelOnDelayedOverflow CreatePanelOnDelayedOverflow |
| 197 #define MAYBE_CloseOverflowPanels CloseOverflowPanels | 216 #define MAYBE_CloseOverflowPanels CloseOverflowPanels |
| 198 #define MAYBE_CloseNormalPanels CloseNormalPanels | 217 #define MAYBE_CloseDockedPanels CloseDockedPanels |
| 199 #define MAYBE_CloseWithDelayedOverflow CloseWithDelayedOverflow | 218 #define MAYBE_CloseWithDelayedOverflow CloseWithDelayedOverflow |
| 219 #define MAYBE_ClickOverflowPanels ClickOverflowPanels | |
| 200 #define MAYBE_ActivateOverflowPanels ActivateOverflowPanels | 220 #define MAYBE_ActivateOverflowPanels ActivateOverflowPanels |
| 201 #define MAYBE_MoveMinimizedPanelToOverflowAndBringBackByActivate \ | 221 #define MAYBE_MoveMinimizedPanelToOverflowAndBringBackByActivate \ |
| 202 MoveMinimizedPanelToOverflowAndBringBackByActivate | 222 MoveMinimizedPanelToOverflowAndBringBackByActivate |
| 203 #define MAYBE_MoveMinimizedPanelToOverflowAndBringBackByCloseOrResize \ | 223 #define MAYBE_MoveMinimizedPanelToOverflowAndBringBackByCloseOrResize \ |
| 204 MoveMinimizedPanelToOverflowAndBringBackByCloseOrResize | 224 MoveMinimizedPanelToOverflowAndBringBackByCloseOrResize |
| 205 #define MAYBE_HoverOverOverflowAreaWithoutOverflowOfOverflow \ | 225 #define MAYBE_HoverOverOverflowAreaWithoutOverflowOfOverflow \ |
| 206 HoverOverOverflowAreaWithoutOverflowOfOverflow | 226 HoverOverOverflowAreaWithoutOverflowOfOverflow |
| 207 #define MAYBE_HoverOverOverflowAreaWithOverflowOfOverflow \ | 227 #define MAYBE_HoverOverOverflowAreaWithOverflowOfOverflow \ |
| 208 HoverOverOverflowAreaWithOverflowOfOverflow | 228 HoverOverOverflowAreaWithOverflowOfOverflow |
| 209 #define MAYBE_ResizePanel ResizePanel | 229 #define MAYBE_ResizePanel ResizePanel |
| 210 #define MAYBE_OverflowIndicatorCount OverflowIndicatorCount | 230 #define MAYBE_OverflowIndicatorCount OverflowIndicatorCount |
| 211 #define MAYBE_DrawOverflowAttention DrawOverflowAttention | 231 #define MAYBE_DrawOverflowAttention DrawOverflowAttention |
| 212 #else | 232 #else |
| 213 #define MAYBE_CheckPanelProperties DISABLED_CheckPanelProperties | 233 #define MAYBE_CheckPanelProperties DISABLED_CheckPanelProperties |
| 214 #define MAYBE_UpdateDraggableStatus DISABLED_UpdateDraggableStatus | 234 #define MAYBE_UpdateDraggableStatus DISABLED_UpdateDraggableStatus |
| 215 #define MAYBE_CreateOverflowPanels DISABLED_CreateOverflowPanels | 235 #define MAYBE_CreateOverflowPanels DISABLED_CreateOverflowPanels |
| 216 #define MAYBE_CreateMoreOverflowPanels DISABLED_CreateMoreOverflowPanels | 236 #define MAYBE_CreateMoreOverflowPanels DISABLED_CreateMoreOverflowPanels |
| 217 #define MAYBE_CreatePanelOnDelayedOverflow DISABLED_CreatePanelOnDelayedOverflow | 237 #define MAYBE_CreatePanelOnDelayedOverflow DISABLED_CreatePanelOnDelayedOverflow |
| 218 #define MAYBE_CloseOverflowPanels DISABLED_CloseOverflowPanels | 238 #define MAYBE_CloseOverflowPanels DISABLED_CloseOverflowPanels |
| 219 #define MAYBE_CloseNormalPanels DISABLED_CloseNormalPanels | 239 #define MAYBE_CloseDockedPanels DISABLED_CloseDockedPanels |
| 220 #define MAYBE_CloseWithDelayedOverflow DISABLED_CloseWithDelayedOverflow | 240 #define MAYBE_CloseWithDelayedOverflow DISABLED_CloseWithDelayedOverflow |
| 241 #define MAYBE_ClickOverflowPanels DISABLED_ClickOverflowPanels | |
| 221 #define MAYBE_ActivateOverflowPanels DISABLED_ActivateOverflowPanels | 242 #define MAYBE_ActivateOverflowPanels DISABLED_ActivateOverflowPanels |
| 222 #define MAYBE_MoveMinimizedPanelToOverflowAndBringBackByActivate \ | 243 #define MAYBE_MoveMinimizedPanelToOverflowAndBringBackByActivate \ |
| 223 DISABLED_MoveMinimizedPanelToOverflowAndBringBackByActivate | 244 DISABLED_MoveMinimizedPanelToOverflowAndBringBackByActivate |
| 224 #define MAYBE_MoveMinimizedPanelToOverflowAndBringBackByCloseOrResize \ | 245 #define MAYBE_MoveMinimizedPanelToOverflowAndBringBackByCloseOrResize \ |
| 225 DISABLED_MoveMinimizedPanelToOverflowAndBringBackByCloseOrResize | 246 DISABLED_MoveMinimizedPanelToOverflowAndBringBackByCloseOrResize |
| 226 #define MAYBE_HoverOverOverflowAreaWithoutOverflowOfOverflow \ | 247 #define MAYBE_HoverOverOverflowAreaWithoutOverflowOfOverflow \ |
| 227 DISABLED_HoverOverOverflowAreaWithoutOverflowOfOverflow | 248 DISABLED_HoverOverOverflowAreaWithoutOverflowOfOverflow |
| 228 #define MAYBE_HoverOverOverflowAreaWithOverflowOfOverflow \ | 249 #define MAYBE_HoverOverOverflowAreaWithOverflowOfOverflow \ |
| 229 DISABLED_HoverOverOverflowAreaWithOverflowOfOverflow | 250 DISABLED_HoverOverOverflowAreaWithOverflowOfOverflow |
| 230 #define MAYBE_ResizePanel DISABLED_ResizePanel | 251 #define MAYBE_ResizePanel DISABLED_ResizePanel |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 254 EXPECT_FALSE(panel2->has_temporary_layout()); | 275 EXPECT_FALSE(panel2->has_temporary_layout()); |
| 255 EXPECT_FALSE(panel3->has_temporary_layout()); | 276 EXPECT_FALSE(panel3->has_temporary_layout()); |
| 256 EXPECT_TRUE(panel4->has_temporary_layout()); | 277 EXPECT_TRUE(panel4->has_temporary_layout()); |
| 257 | 278 |
| 258 EXPECT_TRUE(panel1->draggable()); | 279 EXPECT_TRUE(panel1->draggable()); |
| 259 EXPECT_TRUE(panel2->draggable()); | 280 EXPECT_TRUE(panel2->draggable()); |
| 260 EXPECT_TRUE(panel3->draggable()); | 281 EXPECT_TRUE(panel3->draggable()); |
| 261 EXPECT_FALSE(panel4->draggable()); | 282 EXPECT_FALSE(panel4->draggable()); |
| 262 | 283 |
| 263 // Make sure last panel really did overflow. | 284 // Make sure last panel really did overflow. |
| 264 WaitForExpansionStateChanged(panel4, Panel::IN_OVERFLOW); | 285 WaitForLayoutStateChanged(panel4, Panel::IN_OVERFLOW); |
| 265 EXPECT_FALSE(panel4->has_temporary_layout()); | 286 EXPECT_FALSE(panel4->has_temporary_layout()); |
| 266 EXPECT_FALSE(panel4->draggable()); | 287 EXPECT_FALSE(panel4->draggable()); |
| 267 | 288 |
| 268 PanelManager::GetInstance()->RemoveAll(); | 289 PanelManager::GetInstance()->RemoveAll(); |
| 269 } | 290 } |
| 270 | 291 |
| 271 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_UpdateDraggableStatus) { | 292 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_UpdateDraggableStatus) { |
| 272 Panel* panel = CreatePanel("panel"); | 293 Panel* panel = CreatePanel("panel"); |
| 273 EXPECT_TRUE(panel->draggable()); | 294 EXPECT_TRUE(panel->draggable()); |
| 274 panel->SetExpansionState(Panel::IN_OVERFLOW); | 295 panel->SetLayoutState(Panel::IN_OVERFLOW); |
| 275 EXPECT_FALSE(panel->draggable()); | 296 EXPECT_FALSE(panel->draggable()); |
| 276 panel->SetExpansionState(Panel::EXPANDED); | 297 panel->SetLayoutState(Panel::DOCKED); |
| 277 EXPECT_TRUE(panel->draggable()); | 298 EXPECT_TRUE(panel->draggable()); |
| 278 panel->Close(); | 299 panel->Close(); |
| 279 } | 300 } |
| 280 | 301 |
| 281 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_CreateOverflowPanels) { | 302 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_CreateOverflowPanels) { |
| 282 PanelManager* panel_manager = PanelManager::GetInstance(); | 303 PanelManager* panel_manager = PanelManager::GetInstance(); |
| 283 PanelStrip* panel_strip = panel_manager->panel_strip(); | 304 PanelStrip* panel_strip = panel_manager->panel_strip(); |
| 284 PanelOverflowStrip* panel_overflow_strip = | 305 PanelOverflowStrip* panel_overflow_strip = |
| 285 panel_manager->panel_overflow_strip(); | 306 panel_manager->panel_overflow_strip(); |
| 286 | 307 |
| 287 EXPECT_EQ(0, panel_manager->num_panels()); | 308 EXPECT_EQ(0, panel_manager->num_panels()); |
| 288 EXPECT_EQ(0, panel_strip->num_panels()); | 309 EXPECT_EQ(0, panel_strip->num_panels()); |
| 289 EXPECT_EQ(0, panel_overflow_strip->num_panels()); | 310 EXPECT_EQ(0, panel_overflow_strip->num_panels()); |
| 290 EXPECT_FALSE(panel_overflow_strip->overflow_indicator()); | 311 EXPECT_FALSE(panel_overflow_strip->overflow_indicator()); |
| 291 | 312 |
| 292 // Create 3 normal panels. | 313 // Create 3 docked panels. |
| 293 Panel* panel0 = CreatePanelWithBounds("Panel0", gfx::Rect(0, 0, 250, 200)); | 314 Panel* panel0 = CreatePanelWithBounds("Panel0", gfx::Rect(0, 0, 250, 200)); |
| 294 Panel* panel1 = CreatePanelWithBounds("Panel1", gfx::Rect(0, 0, 260, 200)); | 315 Panel* panel1 = CreatePanelWithBounds("Panel1", gfx::Rect(0, 0, 260, 200)); |
| 295 Panel* panel2 = CreatePanelWithBounds("Panel2", gfx::Rect(0, 0, 200, 200)); | 316 Panel* panel2 = CreatePanelWithBounds("Panel2", gfx::Rect(0, 0, 200, 200)); |
| 296 | 317 |
| 297 EXPECT_EQ(3, panel_manager->num_panels()); | 318 EXPECT_EQ(3, panel_manager->num_panels()); |
| 298 EXPECT_EQ(3, panel_strip->num_panels()); | 319 EXPECT_EQ(3, panel_strip->num_panels()); |
| 299 EXPECT_EQ(0, panel_overflow_strip->num_panels()); | 320 EXPECT_EQ(0, panel_overflow_strip->num_panels()); |
| 300 EXPECT_FALSE(panel_overflow_strip->overflow_indicator()); | 321 EXPECT_FALSE(panel_overflow_strip->overflow_indicator()); |
| 301 EXPECT_EQ(Panel::EXPANDED, panel0->expansion_state()); | 322 EXPECT_EQ(Panel::EXPANDED, panel0->expansion_state()); |
| 302 EXPECT_EQ(Panel::EXPANDED, panel1->expansion_state()); | 323 EXPECT_EQ(Panel::EXPANDED, panel1->expansion_state()); |
| 303 EXPECT_EQ(Panel::EXPANDED, panel2->expansion_state()); | 324 EXPECT_EQ(Panel::EXPANDED, panel2->expansion_state()); |
| 304 | 325 |
| 305 // Create 1 overflow panel. | 326 // Create 1 overflow panel. |
| 306 CreatePanelParams params( | 327 CreatePanelParams params( |
| 307 "Panel3", gfx::Rect(0, 0, 255, 200), SHOW_AS_INACTIVE); | 328 "Panel3", gfx::Rect(0, 0, 255, 200), SHOW_AS_INACTIVE); |
| 308 Panel* panel3 = CreatePanelWithParams(params); | 329 Panel* panel3 = CreatePanelWithParams(params); |
| 309 WaitForExpansionStateChanged(panel3, Panel::IN_OVERFLOW); | 330 WaitForLayoutStateChanged(panel3, Panel::IN_OVERFLOW); |
| 310 | 331 |
| 311 EXPECT_EQ(4, panel_manager->num_panels()); | 332 EXPECT_EQ(4, panel_manager->num_panels()); |
| 312 EXPECT_EQ(3, panel_strip->num_panels()); | 333 EXPECT_EQ(3, panel_strip->num_panels()); |
| 313 EXPECT_EQ(1, panel_overflow_strip->num_panels()); | 334 EXPECT_EQ(1, panel_overflow_strip->num_panels()); |
| 314 EXPECT_FALSE(panel_overflow_strip->overflow_indicator()); | 335 EXPECT_FALSE(panel_overflow_strip->overflow_indicator()); |
| 315 EXPECT_TRUE(IsPanelVisible(panel3)); | 336 EXPECT_TRUE(IsPanelVisible(panel3)); |
| 316 EXPECT_TRUE(IsPanelInOverflowStrip(panel3)); | 337 EXPECT_TRUE(IsPanelInOverflowStrip(panel3)); |
| 317 EXPECT_EQ(gfx::Size(255, 200), panel3->restored_size()); | 338 EXPECT_EQ(gfx::Size(255, 200), panel3->restored_size()); |
| 318 | 339 |
| 319 // Create 1 more overflow panel. | 340 // Create 1 more overflow panel. |
| 320 params.name = "Panel4"; | 341 params.name = "Panel4"; |
| 321 Panel* panel4 = CreatePanelWithParams(params); | 342 Panel* panel4 = CreatePanelWithParams(params); |
| 322 WaitForExpansionStateChanged(panel4, Panel::IN_OVERFLOW); | 343 WaitForLayoutStateChanged(panel4, Panel::IN_OVERFLOW); |
| 323 | 344 |
| 324 EXPECT_EQ(5, panel_manager->num_panels()); | 345 EXPECT_EQ(5, panel_manager->num_panels()); |
| 325 EXPECT_EQ(3, panel_strip->num_panels()); | 346 EXPECT_EQ(3, panel_strip->num_panels()); |
| 326 EXPECT_EQ(2, panel_overflow_strip->num_panels()); | 347 EXPECT_EQ(2, panel_overflow_strip->num_panels()); |
| 327 EXPECT_FALSE(panel_overflow_strip->overflow_indicator()); | 348 EXPECT_FALSE(panel_overflow_strip->overflow_indicator()); |
| 328 EXPECT_TRUE(IsPanelVisible(panel4)); | 349 EXPECT_TRUE(IsPanelVisible(panel4)); |
| 329 | 350 |
| 330 PanelManager::GetInstance()->RemoveAll(); | 351 PanelManager::GetInstance()->RemoveAll(); |
| 331 } | 352 } |
| 332 | 353 |
| 333 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, | 354 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, |
| 334 MAYBE_CreateMoreOverflowPanels) { | 355 MAYBE_CreateMoreOverflowPanels) { |
| 335 PanelManager* panel_manager = PanelManager::GetInstance(); | 356 PanelManager* panel_manager = PanelManager::GetInstance(); |
| 336 PanelStrip* panel_strip = panel_manager->panel_strip(); | 357 PanelStrip* panel_strip = panel_manager->panel_strip(); |
| 337 PanelOverflowStrip* panel_overflow_strip = | 358 PanelOverflowStrip* panel_overflow_strip = |
| 338 panel_manager->panel_overflow_strip(); | 359 panel_manager->panel_overflow_strip(); |
| 339 | 360 |
| 340 const int panel_widths[] = { | 361 const int panel_widths[] = { |
| 341 250, 260, 200, // normal | 362 250, 260, 200, // docked |
| 342 255, 220, 210, // overflow | 363 255, 220, 210, // overflow |
| 343 220, 230 // overflow-on-overflow | 364 220, 230 // overflow-on-overflow |
| 344 }; | 365 }; |
| 345 CreateOverflowPanels(3, 5, panel_widths); | 366 CreateOverflowPanels(3, 5, panel_widths); |
| 346 | 367 |
| 347 std::vector<Panel*> panels = panel_manager->panels(); | 368 std::vector<Panel*> panels = panel_manager->panels(); |
| 348 ASSERT_EQ(8u, panels.size()); | 369 ASSERT_EQ(8u, panels.size()); |
| 349 EXPECT_EQ(3, panel_strip->num_panels()); | 370 EXPECT_EQ(3, panel_strip->num_panels()); |
| 350 EXPECT_EQ(5, panel_overflow_strip->num_panels()); | 371 EXPECT_EQ(5, panel_overflow_strip->num_panels()); |
| 351 EXPECT_EQ(2, panel_overflow_strip->overflow_indicator()->GetCount()); | 372 EXPECT_EQ(2, panel_overflow_strip->overflow_indicator()->GetCount()); |
| 352 EXPECT_EQ(Panel::IN_OVERFLOW, panels[3]->expansion_state()); | 373 EXPECT_EQ(Panel::IN_OVERFLOW, panels[3]->layout_state()); |
| 353 EXPECT_TRUE(IsPanelVisible(panels[3])); | 374 EXPECT_TRUE(IsPanelVisible(panels[3])); |
| 354 EXPECT_EQ(Panel::IN_OVERFLOW, panels[4]->expansion_state()); | 375 EXPECT_EQ(Panel::IN_OVERFLOW, panels[4]->layout_state()); |
| 355 EXPECT_TRUE(IsPanelVisible(panels[4])); | 376 EXPECT_TRUE(IsPanelVisible(panels[4])); |
| 356 EXPECT_EQ(Panel::IN_OVERFLOW, panels[5]->expansion_state()); | 377 EXPECT_EQ(Panel::IN_OVERFLOW, panels[5]->layout_state()); |
| 357 EXPECT_TRUE(IsPanelVisible(panels[5])); | 378 EXPECT_TRUE(IsPanelVisible(panels[5])); |
| 358 EXPECT_EQ(Panel::IN_OVERFLOW, panels[6]->expansion_state()); | 379 EXPECT_EQ(Panel::IN_OVERFLOW, panels[6]->layout_state()); |
| 359 EXPECT_FALSE(IsPanelVisible(panels[6])); | 380 EXPECT_FALSE(IsPanelVisible(panels[6])); |
| 360 EXPECT_EQ(Panel::IN_OVERFLOW, panels[7]->expansion_state()); | 381 EXPECT_EQ(Panel::IN_OVERFLOW, panels[7]->layout_state()); |
| 361 EXPECT_FALSE(IsPanelVisible(panels[7])); | 382 EXPECT_FALSE(IsPanelVisible(panels[7])); |
| 362 | 383 |
| 363 PanelManager::GetInstance()->RemoveAll(); | 384 PanelManager::GetInstance()->RemoveAll(); |
| 364 } | 385 } |
| 365 | 386 |
| 366 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, | 387 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, |
| 367 MAYBE_CreatePanelOnDelayedOverflow) { | 388 MAYBE_CreatePanelOnDelayedOverflow) { |
| 368 // Create 2 big panels. | 389 // Create 2 big panels. |
| 369 CreatePanelWithBounds("Panel0", gfx::Rect(0, 0, 260, 200)); | 390 CreatePanelWithBounds("Panel0", gfx::Rect(0, 0, 260, 200)); |
| 370 CreatePanelWithBounds("Panel1", gfx::Rect(0, 0, 260, 200)); | 391 CreatePanelWithBounds("Panel1", gfx::Rect(0, 0, 260, 200)); |
| 371 | 392 |
| 372 // Create an overflow panel without waiting for it to be moved to overflow. | 393 // Create an overflow panel without waiting for it to be moved to overflow. |
| 373 CreatePanelParams params( | 394 CreatePanelParams params( |
| 374 "Panel2", gfx::Rect(0, 0, 255, 200), SHOW_AS_INACTIVE); | 395 "Panel2", gfx::Rect(0, 0, 255, 200), SHOW_AS_INACTIVE); |
| 375 params.wait_for_fully_created = false; | 396 params.wait_for_fully_created = false; |
| 376 Panel* overflow_panel = CreatePanelWithParams(params); | 397 Panel* overflow_panel = CreatePanelWithParams(params); |
| 377 EXPECT_EQ(Panel::EXPANDED, overflow_panel->expansion_state()); | 398 EXPECT_EQ(Panel::EXPANDED, overflow_panel->expansion_state()); |
| 378 EXPECT_TRUE(overflow_panel->has_temporary_layout()); | 399 EXPECT_TRUE(overflow_panel->has_temporary_layout()); |
| 379 | 400 |
| 380 // Create a small panel that could fit within the available space in the | 401 // Create a small panel that could fit within the available space in the |
| 381 // panel strip. | 402 // panel strip. |
| 382 CreatePanelParams params2( | 403 CreatePanelParams params2( |
| 383 "Panel3", gfx::Rect(0, 0, 110, 200), SHOW_AS_INACTIVE); | 404 "Panel3", gfx::Rect(0, 0, 110, 200), SHOW_AS_INACTIVE); |
| 384 Panel* panel3 = CreatePanelWithParams(params2); | 405 Panel* panel3 = CreatePanelWithParams(params2); |
| 385 EXPECT_EQ(Panel::EXPANDED, panel3->expansion_state()); | 406 EXPECT_EQ(Panel::EXPANDED, panel3->expansion_state()); |
| 386 EXPECT_FALSE(panel3->has_temporary_layout()); | 407 EXPECT_FALSE(panel3->has_temporary_layout()); |
| 387 | 408 |
| 388 WaitForExpansionStateChanged(overflow_panel, Panel::IN_OVERFLOW); | 409 WaitForLayoutStateChanged(overflow_panel, Panel::IN_OVERFLOW); |
| 389 EXPECT_FALSE(overflow_panel->has_temporary_layout()); | 410 EXPECT_FALSE(overflow_panel->has_temporary_layout()); |
| 390 PanelManager::GetInstance()->RemoveAll(); | 411 PanelManager::GetInstance()->RemoveAll(); |
| 391 } | 412 } |
| 392 | 413 |
| 393 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_CloseOverflowPanels) { | 414 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_CloseOverflowPanels) { |
| 394 PanelManager* panel_manager = PanelManager::GetInstance(); | 415 PanelManager* panel_manager = PanelManager::GetInstance(); |
| 395 PanelStrip* panel_strip = panel_manager->panel_strip(); | 416 PanelStrip* panel_strip = panel_manager->panel_strip(); |
| 396 PanelOverflowStrip* panel_overflow_strip = | 417 PanelOverflowStrip* panel_overflow_strip = |
| 397 panel_manager->panel_overflow_strip(); | 418 panel_manager->panel_overflow_strip(); |
| 398 | 419 |
| 399 // Create normal and overflow panels. | 420 // Create docked and overflow panels. |
| 400 // normal: P0, P1, P2 | 421 // docked: P0, P1, P2 |
| 401 // overflow: P3, P4, P5 | 422 // overflow: P3, P4, P5 |
| 402 // overflow-on-overflow: P6, P7 | 423 // overflow-on-overflow: P6, P7 |
| 403 int num_normal_panels = 3; | 424 int num_docked_panels = 3; |
| 404 int num_overflow_panels = 5; | 425 int num_overflow_panels = 5; |
| 405 const int panel_widths[] = { | 426 const int panel_widths[] = { |
| 406 260, 250, 200, // normal | 427 260, 250, 200, // docked |
| 407 255, 260, 120, // overflow | 428 255, 260, 120, // overflow |
| 408 240, 210 // overflow-on-overflow | 429 240, 210 // overflow-on-overflow |
| 409 }; | 430 }; |
| 410 std::vector<Panel*> panels = CreateOverflowPanels( | 431 std::vector<Panel*> panels = CreateOverflowPanels( |
| 411 num_normal_panels, num_overflow_panels, panel_widths); | 432 num_docked_panels, num_overflow_panels, panel_widths); |
| 412 | 433 |
| 413 PanelDataList expected_normal_list; | 434 DockedPanelDataList expected_docked_list; |
| 414 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 435 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 415 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 436 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 416 expected_normal_list.Add(panels[2], Panel::EXPANDED, true, false); | 437 expected_docked_list.Add(panels[2], Panel::EXPANDED, true, false); |
| 417 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 438 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 418 | 439 |
| 419 PanelDataList expected_overflow_list; | 440 OverflowPanelDataList expected_overflow_list; |
| 420 expected_overflow_list.Add(panels[3], Panel::IN_OVERFLOW, true, false); | 441 expected_overflow_list.Add(panels[3], true, false); |
| 421 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 442 expected_overflow_list.Add(panels[4], true, false); |
| 422 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, true, false); | 443 expected_overflow_list.Add(panels[5], true, false); |
| 423 expected_overflow_list.Add(panels[6], Panel::IN_OVERFLOW, false, false); | 444 expected_overflow_list.Add(panels[6], false, false); |
| 424 expected_overflow_list.Add(panels[7], Panel::IN_OVERFLOW, false, false); | 445 expected_overflow_list.Add(panels[7], false, false); |
| 425 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 446 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 426 | 447 |
| 427 // Close an overflow-on-overflow panel. Expect only that panel is closed. | 448 // Close an overflow-on-overflow panel. Expect only that panel is closed. |
| 428 // normal: P0, P1, P2 | 449 // docked: P0, P1, P2 |
| 429 // overflow: P3, P4, P5, | 450 // overflow: P3, P4, P5, |
| 430 // overflow-on-overflow: P7 | 451 // overflow-on-overflow: P7 |
| 431 CloseWindowAndWait(panels[6]->browser()); | 452 CloseWindowAndWait(panels[6]->browser()); |
| 432 num_overflow_panels--; | 453 num_overflow_panels--; |
| 433 ASSERT_EQ(num_normal_panels + num_overflow_panels, | 454 ASSERT_EQ(num_docked_panels + num_overflow_panels, |
| 434 panel_manager->num_panels()); | 455 panel_manager->num_panels()); |
| 435 EXPECT_EQ(num_normal_panels, panel_strip->num_panels()); | 456 EXPECT_EQ(num_docked_panels, panel_strip->num_panels()); |
| 436 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); | 457 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); |
| 437 | 458 |
| 438 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 459 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 439 | 460 |
| 440 expected_overflow_list.clear(); | 461 expected_overflow_list.clear(); |
| 441 expected_overflow_list.Add(panels[3], Panel::IN_OVERFLOW, true, false); | 462 expected_overflow_list.Add(panels[3], true, false); |
| 442 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 463 expected_overflow_list.Add(panels[4], true, false); |
| 443 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, true, false); | 464 expected_overflow_list.Add(panels[5], true, false); |
| 444 expected_overflow_list.Add(panels[7], Panel::IN_OVERFLOW, false, false); | 465 expected_overflow_list.Add(panels[7], false, false); |
| 445 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 466 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 446 | 467 |
| 447 // Close an overflow panel. Expect an overflow-on-overflow panel to become | 468 // Close an overflow panel. Expect an overflow-on-overflow panel to become |
| 448 // visible in the overflow strip. | 469 // visible in the overflow strip. |
| 449 // normal: P0, P1, P2 | 470 // docked: P0, P1, P2 |
| 450 // overflow: P3, P5, P7 | 471 // overflow: P3, P5, P7 |
| 451 CloseWindowAndWait(panels[4]->browser()); | 472 CloseWindowAndWait(panels[4]->browser()); |
| 452 num_overflow_panels--; | 473 num_overflow_panels--; |
| 453 ASSERT_EQ(num_normal_panels + num_overflow_panels, | 474 ASSERT_EQ(num_docked_panels + num_overflow_panels, |
| 454 panel_manager->num_panels()); | 475 panel_manager->num_panels()); |
| 455 EXPECT_EQ(num_normal_panels, panel_strip->num_panels()); | 476 EXPECT_EQ(num_docked_panels, panel_strip->num_panels()); |
| 456 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); | 477 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); |
| 457 | 478 |
| 458 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 479 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 459 | 480 |
| 460 expected_overflow_list.clear(); | 481 expected_overflow_list.clear(); |
| 461 expected_overflow_list.Add(panels[3], Panel::IN_OVERFLOW, true, false); | 482 expected_overflow_list.Add(panels[3], true, false); |
| 462 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, true, false); | 483 expected_overflow_list.Add(panels[5], true, false); |
| 463 expected_overflow_list.Add(panels[7], Panel::IN_OVERFLOW, true, false); | 484 expected_overflow_list.Add(panels[7], true, false); |
| 464 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 485 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 465 | 486 |
| 466 // Close an overflow panel. Expect only that panel is closed. | 487 // Close an overflow panel. Expect only that panel is closed. |
| 467 // normal: P0, P1, P2 | 488 // docked: P0, P1, P2 |
| 468 // overflow: P5, P7 | 489 // overflow: P5, P7 |
| 469 CloseWindowAndWait(panels[3]->browser()); | 490 CloseWindowAndWait(panels[3]->browser()); |
| 470 num_overflow_panels--; | 491 num_overflow_panels--; |
| 471 ASSERT_EQ(num_normal_panels + num_overflow_panels, | 492 ASSERT_EQ(num_docked_panels + num_overflow_panels, |
| 472 panel_manager->num_panels()); | 493 panel_manager->num_panels()); |
| 473 EXPECT_EQ(num_normal_panels, panel_strip->num_panels()); | 494 EXPECT_EQ(num_docked_panels, panel_strip->num_panels()); |
| 474 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); | 495 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); |
| 475 | 496 |
| 476 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 497 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 477 | 498 |
| 478 expected_overflow_list.clear(); | 499 expected_overflow_list.clear(); |
| 479 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, true, false); | 500 expected_overflow_list.Add(panels[5], true, false); |
| 480 expected_overflow_list.Add(panels[7], Panel::IN_OVERFLOW, true, false); | 501 expected_overflow_list.Add(panels[7], true, false); |
| 481 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 502 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 482 | 503 |
| 483 panel_manager->RemoveAll(); | 504 panel_manager->RemoveAll(); |
| 484 } | 505 } |
| 485 | 506 |
| 486 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_CloseNormalPanels) { | 507 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_CloseDockedPanels) { |
| 487 PanelManager* panel_manager = PanelManager::GetInstance(); | 508 PanelManager* panel_manager = PanelManager::GetInstance(); |
| 488 PanelStrip* panel_strip = panel_manager->panel_strip(); | 509 PanelStrip* panel_strip = panel_manager->panel_strip(); |
| 489 PanelOverflowStrip* panel_overflow_strip = | 510 PanelOverflowStrip* panel_overflow_strip = |
| 490 panel_manager->panel_overflow_strip(); | 511 panel_manager->panel_overflow_strip(); |
| 491 | 512 |
| 492 // Create normal and overflow panels. | 513 // Create docked and overflow panels. |
| 493 // normal: P0, P1, P2 | 514 // docked: P0, P1, P2 |
| 494 // overflow: P3, P4, P5 | 515 // overflow: P3, P4, P5 |
| 495 // overflow-on-overflow: P6, P7, P8 | 516 // overflow-on-overflow: P6, P7, P8 |
| 496 int num_normal_panels = 3; | 517 int num_docked_panels = 3; |
| 497 int num_overflow_panels = 6; | 518 int num_overflow_panels = 6; |
| 498 const int panel_widths[] = { | 519 const int panel_widths[] = { |
| 499 260, 250, 200, // normal | 520 260, 250, 200, // docked |
| 500 255, 260, 120, // overflow | 521 255, 260, 120, // overflow |
| 501 240, 210, 258 // overflow-on-overflow | 522 240, 210, 258 // overflow-on-overflow |
| 502 }; | 523 }; |
| 503 std::vector<Panel*> panels = CreateOverflowPanels( | 524 std::vector<Panel*> panels = CreateOverflowPanels( |
| 504 num_normal_panels, num_overflow_panels, panel_widths); | 525 num_docked_panels, num_overflow_panels, panel_widths); |
| 505 | 526 |
| 506 PanelDataList expected_normal_list; | 527 DockedPanelDataList expected_docked_list; |
| 507 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 528 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 508 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 529 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 509 expected_normal_list.Add(panels[2], Panel::EXPANDED, true, false); | 530 expected_docked_list.Add(panels[2], Panel::EXPANDED, true, false); |
| 510 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 531 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 511 | 532 |
| 512 PanelDataList expected_overflow_list; | 533 OverflowPanelDataList expected_overflow_list; |
| 513 expected_overflow_list.Add(panels[3], Panel::IN_OVERFLOW, true, false); | 534 expected_overflow_list.Add(panels[3], true, false); |
| 514 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 535 expected_overflow_list.Add(panels[4], true, false); |
| 515 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, true, false); | 536 expected_overflow_list.Add(panels[5], true, false); |
| 516 expected_overflow_list.Add(panels[6], Panel::IN_OVERFLOW, false, false); | 537 expected_overflow_list.Add(panels[6], false, false); |
| 517 expected_overflow_list.Add(panels[7], Panel::IN_OVERFLOW, false, false); | 538 expected_overflow_list.Add(panels[7], false, false); |
| 518 expected_overflow_list.Add(panels[8], Panel::IN_OVERFLOW, false, false); | 539 expected_overflow_list.Add(panels[8], false, false); |
| 519 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 540 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 520 | 541 |
| 521 // Close a normal panel. Expect an overflow panel to move over and an | 542 // Close a docked panel. Expect an overflow panel to move over and an |
| 522 // overflow-on-overflow panel to become visible. | 543 // overflow-on-overflow panel to become visible. |
| 523 // normal: P0, P2, P3 | 544 // docked: P0, P2, P3 |
| 524 // overflow: P4, P5, P6 | 545 // overflow: P4, P5, P6 |
| 525 // overflow-on-overflow: P7, P8 | 546 // overflow-on-overflow: P7, P8 |
| 526 CloseWindowAndWait(panels[1]->browser()); | 547 CloseWindowAndWait(panels[1]->browser()); |
| 527 num_overflow_panels--; | 548 num_overflow_panels--; |
| 528 ASSERT_EQ(num_normal_panels + num_overflow_panels, | 549 ASSERT_EQ(num_docked_panels + num_overflow_panels, |
| 529 panel_manager->num_panels()); | 550 panel_manager->num_panels()); |
| 530 EXPECT_EQ(num_normal_panels, panel_strip->num_panels()); | 551 EXPECT_EQ(num_docked_panels, panel_strip->num_panels()); |
| 531 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); | 552 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); |
| 532 | 553 |
| 533 expected_normal_list.clear(); | 554 expected_docked_list.clear(); |
| 534 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 555 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 535 expected_normal_list.Add(panels[2], Panel::EXPANDED, true, false); | 556 expected_docked_list.Add(panels[2], Panel::EXPANDED, true, false); |
| 536 expected_normal_list.Add(panels[3], Panel::EXPANDED, true, false); | 557 expected_docked_list.Add(panels[3], Panel::EXPANDED, true, false); |
| 537 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 558 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 538 | 559 |
| 539 expected_overflow_list.clear(); | 560 expected_overflow_list.clear(); |
| 540 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 561 expected_overflow_list.Add(panels[4], true, false); |
| 541 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, true, false); | 562 expected_overflow_list.Add(panels[5], true, false); |
| 542 expected_overflow_list.Add(panels[6], Panel::IN_OVERFLOW, true, false); | 563 expected_overflow_list.Add(panels[6], true, false); |
| 543 expected_overflow_list.Add(panels[7], Panel::IN_OVERFLOW, false, false); | 564 expected_overflow_list.Add(panels[7], false, false); |
| 544 expected_overflow_list.Add(panels[8], Panel::IN_OVERFLOW, false, false); | 565 expected_overflow_list.Add(panels[8], false, false); |
| 545 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 566 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 546 | 567 |
| 547 // Close another normal panel. Remaining overflow panels cannot move over | 568 // Close another docked panel. Remaining overflow panels cannot move over |
| 548 // due to not enough room. | 569 // due to not enough room. |
| 549 // normal: P0, P3 | 570 // docked: P0, P3 |
| 550 // overflow: P4, P5, P6 | 571 // overflow: P4, P5, P6 |
| 551 // overflow-on-overflow: P7, P8 | 572 // overflow-on-overflow: P7, P8 |
| 552 CloseWindowAndWait(panels[2]->browser()); | 573 CloseWindowAndWait(panels[2]->browser()); |
| 553 num_normal_panels--; | 574 num_docked_panels--; |
| 554 ASSERT_EQ(num_normal_panels + num_overflow_panels, | 575 ASSERT_EQ(num_docked_panels + num_overflow_panels, |
| 555 panel_manager->num_panels()); | 576 panel_manager->num_panels()); |
| 556 EXPECT_EQ(num_normal_panels, panel_strip->num_panels()); | 577 EXPECT_EQ(num_docked_panels, panel_strip->num_panels()); |
| 557 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); | 578 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); |
| 558 | 579 |
| 559 expected_normal_list.clear(); | 580 expected_docked_list.clear(); |
| 560 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 581 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 561 expected_normal_list.Add(panels[3], Panel::EXPANDED, true, false); | 582 expected_docked_list.Add(panels[3], Panel::EXPANDED, true, false); |
| 562 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 583 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 563 | 584 |
| 564 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 585 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 565 | 586 |
| 566 // Close one more normal panel. Expect two overflow panels to move over and | 587 // Close one more docked panel. Expect two overflow panels to move over and |
| 567 // two overflow-on-overflow panels to become visible. | 588 // two overflow-on-overflow panels to become visible. |
| 568 // normal: P0, P4, P5 | 589 // docked: P0, P4, P5 |
| 569 // overflow: P6, P7, P8 | 590 // overflow: P6, P7, P8 |
| 570 CloseWindowAndWait(panels[3]->browser()); | 591 CloseWindowAndWait(panels[3]->browser()); |
| 571 num_normal_panels++; | 592 num_docked_panels++; |
| 572 num_overflow_panels -= 2; | 593 num_overflow_panels -= 2; |
| 573 ASSERT_EQ(num_normal_panels + num_overflow_panels, | 594 ASSERT_EQ(num_docked_panels + num_overflow_panels, |
| 574 panel_manager->num_panels()); | 595 panel_manager->num_panels()); |
| 575 EXPECT_EQ(num_normal_panels, panel_strip->num_panels()); | 596 EXPECT_EQ(num_docked_panels, panel_strip->num_panels()); |
| 576 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); | 597 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); |
| 577 | 598 |
| 578 expected_normal_list.clear(); | 599 expected_docked_list.clear(); |
| 579 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 600 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 580 expected_normal_list.Add(panels[4], Panel::EXPANDED, true, false); | 601 expected_docked_list.Add(panels[4], Panel::EXPANDED, true, false); |
| 581 expected_normal_list.Add(panels[5], Panel::EXPANDED, true, false); | 602 expected_docked_list.Add(panels[5], Panel::EXPANDED, true, false); |
| 582 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 603 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 583 | 604 |
| 584 expected_overflow_list.clear(); | 605 expected_overflow_list.clear(); |
| 585 expected_overflow_list.Add(panels[6], Panel::IN_OVERFLOW, true, false); | 606 expected_overflow_list.Add(panels[6], true, false); |
| 586 expected_overflow_list.Add(panels[7], Panel::IN_OVERFLOW, true, false); | 607 expected_overflow_list.Add(panels[7], true, false); |
| 587 expected_overflow_list.Add(panels[8], Panel::IN_OVERFLOW, true, false); | 608 expected_overflow_list.Add(panels[8], true, false); |
| 588 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 609 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 589 | 610 |
| 590 // Close another normal panel. Expect one overflow panel to move over. | 611 // Close another docked panel. Expect one overflow panel to move over. |
| 591 // normal: P4, P5, P6 | 612 // docked: P4, P5, P6 |
| 592 // overflow: P7, P8 | 613 // overflow: P7, P8 |
| 593 CloseWindowAndWait(panels[0]->browser()); | 614 CloseWindowAndWait(panels[0]->browser()); |
| 594 num_overflow_panels--; | 615 num_overflow_panels--; |
| 595 ASSERT_EQ(num_normal_panels + num_overflow_panels, | 616 ASSERT_EQ(num_docked_panels + num_overflow_panels, |
| 596 panel_manager->num_panels()); | 617 panel_manager->num_panels()); |
| 597 EXPECT_EQ(num_normal_panels, panel_strip->num_panels()); | 618 EXPECT_EQ(num_docked_panels, panel_strip->num_panels()); |
| 598 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); | 619 EXPECT_EQ(num_overflow_panels, panel_overflow_strip->num_panels()); |
| 599 | 620 |
| 600 expected_normal_list.clear(); | 621 expected_docked_list.clear(); |
| 601 expected_normal_list.Add(panels[4], Panel::EXPANDED, true, false); | 622 expected_docked_list.Add(panels[4], Panel::EXPANDED, true, false); |
| 602 expected_normal_list.Add(panels[5], Panel::EXPANDED, true, false); | 623 expected_docked_list.Add(panels[5], Panel::EXPANDED, true, false); |
| 603 expected_normal_list.Add(panels[6], Panel::EXPANDED, true, false); | 624 expected_docked_list.Add(panels[6], Panel::EXPANDED, true, false); |
| 604 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 625 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 605 | 626 |
| 606 expected_overflow_list.clear(); | 627 expected_overflow_list.clear(); |
| 607 expected_overflow_list.Add(panels[7], Panel::IN_OVERFLOW, true, false); | 628 expected_overflow_list.Add(panels[7], true, false); |
| 608 expected_overflow_list.Add(panels[8], Panel::IN_OVERFLOW, true, false); | 629 expected_overflow_list.Add(panels[8], true, false); |
| 609 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 630 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 610 | 631 |
| 611 panel_manager->RemoveAll(); | 632 panel_manager->RemoveAll(); |
| 612 } | 633 } |
| 613 | 634 |
| 614 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, | 635 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, |
| 615 MAYBE_CloseWithDelayedOverflow) { | 636 MAYBE_CloseWithDelayedOverflow) { |
| 616 PanelManager* panel_manager = PanelManager::GetInstance(); | 637 PanelManager* panel_manager = PanelManager::GetInstance(); |
| 617 PanelStrip* panel_strip = panel_manager->panel_strip(); | 638 PanelStrip* panel_strip = panel_manager->panel_strip(); |
| 618 | 639 |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 645 // panel will not be affected by the close. | 666 // panel will not be affected by the close. |
| 646 // Hack. Pretend to close panel by removing it directly. Cannot use | 667 // Hack. Pretend to close panel by removing it directly. Cannot use |
| 647 // CloseWindowAndWait() here because it will allow the delayed overflow | 668 // CloseWindowAndWait() here because it will allow the delayed overflow |
| 648 // to complete. | 669 // to complete. |
| 649 panel_strip->Remove(panel1); | 670 panel_strip->Remove(panel1); |
| 650 EXPECT_EQ(1, panel_strip->num_panels()); | 671 EXPECT_EQ(1, panel_strip->num_panels()); |
| 651 EXPECT_EQ(1, panel_strip->num_temporary_layout_panels()); | 672 EXPECT_EQ(1, panel_strip->num_temporary_layout_panels()); |
| 652 EXPECT_TRUE(overflow_panel->has_temporary_layout()); | 673 EXPECT_TRUE(overflow_panel->has_temporary_layout()); |
| 653 | 674 |
| 654 // Make sure the overflow panel actually moves to overflow. | 675 // Make sure the overflow panel actually moves to overflow. |
| 655 WaitForExpansionStateChanged(overflow_panel, Panel::IN_OVERFLOW); | 676 WaitForLayoutStateChanged(overflow_panel, Panel::IN_OVERFLOW); |
| 656 EXPECT_EQ(0, panel_strip->num_temporary_layout_panels()); | 677 EXPECT_EQ(0, panel_strip->num_temporary_layout_panels()); |
| 657 | 678 |
| 658 // Hack. Put the "falsely closed" panel back into the panel strip | 679 // Hack. Put the "falsely closed" panel back into the panel strip |
| 659 // so we can properly close it to wrap up this test. | 680 // so we can properly close it to wrap up this test. |
| 660 panel_strip->AddPanel(panel1); | 681 panel_strip->AddPanel(panel1); |
| 661 | 682 |
| 662 panel0->Close(); | 683 panel0->Close(); |
| 663 panel1->Close(); | 684 panel1->Close(); |
| 664 overflow_panel->Close(); | 685 overflow_panel->Close(); |
| 665 } | 686 } |
| 666 | 687 |
| 688 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_ClickOverflowPanels) { | |
| 689 PanelManager* panel_manager = PanelManager::GetInstance(); | |
| 690 | |
| 691 // Create docked and overflow panels. | |
| 692 // docked: P0, P1, P2 | |
| 693 // overflow: P3, P4 | |
| 694 const int panel_widths[] = { | |
| 695 240, 240, 240, // docked | |
| 696 240, 240 // overflow | |
| 697 }; | |
| 698 std::vector<Panel*> panels = CreateOverflowPanels(3, 2, panel_widths); | |
| 699 | |
| 700 DockedPanelDataList expected_docked_list; | |
| 701 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); | |
| 702 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); | |
| 703 expected_docked_list.Add(panels[2], Panel::EXPANDED, true, false); | |
| 704 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); | |
| 705 | |
| 706 OverflowPanelDataList expected_overflow_list; | |
| 707 expected_overflow_list.Add(panels[3], true, false); | |
| 708 expected_overflow_list.Add(panels[4], true, false); | |
| 709 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | |
| 710 | |
| 711 // Minimize a docked panel. | |
| 712 panels[2]->SetExpansionState(Panel::MINIMIZED); | |
| 713 WaitForExpansionStateChanged(panels[2], Panel::MINIMIZED); | |
| 714 | |
| 715 // Clicking an overflow panel that was previously expanded should bring it | |
| 716 // out of the overflow as expanded. | |
| 717 // docked: P0, P1, P3 | |
| 718 // overflow: P2, P4 | |
| 719 ClickPanelTitlebar(panels[3]); | |
| 720 WaitForExpansionStateChanged(panels[3], Panel::EXPANDED); | |
| 721 | |
| 722 expected_docked_list.clear(); | |
| 723 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); | |
| 724 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); | |
| 725 expected_docked_list.Add(panels[3], Panel::EXPANDED, true, false); | |
| 726 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); | |
| 727 | |
| 728 expected_overflow_list.clear(); | |
| 729 expected_overflow_list.Add(panels[2], true, false); | |
| 730 expected_overflow_list.Add(panels[4], true, false); | |
| 731 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | |
| 732 | |
| 733 // Make a docked panel as title-only. | |
| 734 panels[3]->SetExpansionState(Panel::TITLE_ONLY); | |
| 735 WaitForExpansionStateChanged(panels[3], Panel::TITLE_ONLY); | |
| 736 | |
| 737 // Clicking an overflow panel that was previously minimized should bring it | |
| 738 // out of the overflow as expanded. | |
| 739 // docked: P0, P1, P2 | |
| 740 // overflow: P3, P4 | |
| 741 ClickPanelTitlebar(panels[2]); | |
| 742 WaitForExpansionStateChanged(panels[2], Panel::EXPANDED); | |
| 743 | |
| 744 expected_docked_list.clear(); | |
| 745 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); | |
| 746 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); | |
| 747 expected_docked_list.Add(panels[2], Panel::EXPANDED, true, false); | |
| 748 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); | |
| 749 | |
| 750 expected_overflow_list.clear(); | |
| 751 expected_overflow_list.Add(panels[3], true, false); | |
| 752 expected_overflow_list.Add(panels[4], true, false); | |
| 753 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | |
| 754 | |
| 755 // Clicking an overflow panel that was previously title-only should bring it | |
| 756 // out of the overflow as expanded. | |
| 757 // docked: P0, P1, P3 | |
| 758 // overflow: P2, P4 | |
| 759 ClickPanelTitlebar(panels[3]); | |
| 760 WaitForExpansionStateChanged(panels[3], Panel::EXPANDED); | |
| 761 | |
| 762 expected_docked_list.clear(); | |
| 763 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); | |
| 764 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); | |
| 765 expected_docked_list.Add(panels[3], Panel::EXPANDED, true, false); | |
| 766 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); | |
| 767 | |
| 768 expected_overflow_list.clear(); | |
| 769 expected_overflow_list.Add(panels[2], true, false); | |
| 770 expected_overflow_list.Add(panels[4], true, false); | |
| 771 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | |
| 772 | |
| 773 PanelManager::GetInstance()->RemoveAll(); | |
| 774 } | |
| 775 | |
| 667 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_ActivateOverflowPanels) { | 776 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_ActivateOverflowPanels) { |
| 668 // Create normal and overflow panels. | 777 // Create docked and overflow panels. |
| 669 // normal: P0, P1, P2 | 778 // docked: P0, P1, P2 |
| 670 // overflow: P3, P4, P5 | 779 // overflow: P3, P4, P5 |
| 671 // overflow-on-overflow: P6, P7 | 780 // overflow-on-overflow: P6, P7 |
| 672 const int panel_widths[] = { | 781 const int panel_widths[] = { |
| 673 250, 260, 200, // normal | 782 250, 260, 200, // docked |
| 674 210, 260, 230, // overflow | 783 210, 260, 230, // overflow |
| 675 255, 210 // overflow-on-overflow | 784 255, 210 // overflow-on-overflow |
| 676 }; | 785 }; |
| 677 std::vector<Panel*> panels = CreateOverflowPanels(3, 5, panel_widths); | 786 std::vector<Panel*> panels = CreateOverflowPanels(3, 5, panel_widths); |
| 678 | 787 |
| 679 PanelDataList expected_normal_list; | 788 DockedPanelDataList expected_docked_list; |
| 680 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 789 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 681 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 790 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 682 expected_normal_list.Add(panels[2], Panel::EXPANDED, true, false); | 791 expected_docked_list.Add(panels[2], Panel::EXPANDED, true, false); |
| 683 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 792 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 684 | 793 |
| 685 PanelDataList expected_overflow_list; | 794 OverflowPanelDataList expected_overflow_list; |
| 686 expected_overflow_list.Add(panels[3], Panel::IN_OVERFLOW, true, false); | 795 expected_overflow_list.Add(panels[3], true, false); |
| 687 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 796 expected_overflow_list.Add(panels[4], true, false); |
| 688 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, true, false); | 797 expected_overflow_list.Add(panels[5], true, false); |
| 689 expected_overflow_list.Add(panels[6], Panel::IN_OVERFLOW, false, false); | 798 expected_overflow_list.Add(panels[6], false, false); |
| 690 expected_overflow_list.Add(panels[7], Panel::IN_OVERFLOW, false, false); | 799 expected_overflow_list.Add(panels[7], false, false); |
| 691 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 800 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 692 | 801 |
| 693 // Activate an overflow panel. Expect one normal panel is swapped into the | 802 // Activate an overflow panel. Expect one docked panel is swapped into the |
| 694 // overflow strip. | 803 // overflow strip. |
| 695 // normal: P0, P1, P3 | 804 // docked: P0, P1, P3 |
| 696 // overflow: P2, P4, P5 | 805 // overflow: P2, P4, P5 |
| 697 // overflow-on-overflow: P6, P7 | 806 // overflow-on-overflow: P6, P7 |
| 698 panels[3]->Activate(); | 807 panels[3]->Activate(); |
| 699 WaitForPanelActiveState(panels[3], SHOW_AS_ACTIVE); | 808 WaitForPanelActiveState(panels[3], SHOW_AS_ACTIVE); |
| 700 WaitForExpansionStateChanged(panels[3], Panel::EXPANDED); | 809 WaitForExpansionStateChanged(panels[3], Panel::EXPANDED); |
| 701 | 810 |
| 702 expected_normal_list.clear(); | 811 expected_docked_list.clear(); |
| 703 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 812 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 704 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 813 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 705 expected_normal_list.Add(panels[3], Panel::EXPANDED, true, true); | 814 expected_docked_list.Add(panels[3], Panel::EXPANDED, true, true); |
| 706 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 815 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 707 | 816 |
| 708 expected_overflow_list.clear(); | 817 expected_overflow_list.clear(); |
| 709 expected_overflow_list.Add(panels[2], Panel::IN_OVERFLOW, true, false); | 818 expected_overflow_list.Add(panels[2], true, false); |
| 710 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 819 expected_overflow_list.Add(panels[4], true, false); |
| 711 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, true, false); | 820 expected_overflow_list.Add(panels[5], true, false); |
| 712 expected_overflow_list.Add(panels[6], Panel::IN_OVERFLOW, false, false); | 821 expected_overflow_list.Add(panels[6], false, false); |
| 713 expected_overflow_list.Add(panels[7], Panel::IN_OVERFLOW, false, false); | 822 expected_overflow_list.Add(panels[7], false, false); |
| 714 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 823 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 715 | 824 |
| 716 // Activate an overflow panel. Expect two normal panels are swapped into the | 825 // Activate an overflow panel. Expect two docked panels are swapped into the |
| 717 // overflow strip and one overflow panel to become hidden. | 826 // overflow strip and one overflow panel to become hidden. |
| 718 // normal: P0, P4 | 827 // docked: P0, P4 |
| 719 // overflow: P1, P3, P2 | 828 // overflow: P1, P3, P2 |
| 720 // overflow-on-overflow: P5, P6, P7 | 829 // overflow-on-overflow: P5, P6, P7 |
| 721 panels[4]->Activate(); | 830 panels[4]->Activate(); |
| 722 WaitForPanelActiveState(panels[4], SHOW_AS_ACTIVE); | 831 WaitForPanelActiveState(panels[4], SHOW_AS_ACTIVE); |
| 723 WaitForExpansionStateChanged(panels[4], Panel::EXPANDED); | 832 WaitForExpansionStateChanged(panels[4], Panel::EXPANDED); |
| 724 WaitForPanelActiveState(panels[3], SHOW_AS_INACTIVE); | 833 WaitForPanelActiveState(panels[3], SHOW_AS_INACTIVE); |
| 725 | 834 |
| 726 expected_normal_list.clear(); | 835 expected_docked_list.clear(); |
| 727 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 836 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 728 expected_normal_list.Add(panels[4], Panel::EXPANDED, true, true); | 837 expected_docked_list.Add(panels[4], Panel::EXPANDED, true, true); |
| 729 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 838 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 730 | 839 |
| 731 expected_overflow_list.clear(); | 840 expected_overflow_list.clear(); |
| 732 expected_overflow_list.Add(panels[1], Panel::IN_OVERFLOW, true, false); | 841 expected_overflow_list.Add(panels[1], true, false); |
| 733 expected_overflow_list.Add(panels[3], Panel::IN_OVERFLOW, true, false); | 842 expected_overflow_list.Add(panels[3], true, false); |
| 734 expected_overflow_list.Add(panels[2], Panel::IN_OVERFLOW, true, false); | 843 expected_overflow_list.Add(panels[2], true, false); |
| 735 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, false, false); | 844 expected_overflow_list.Add(panels[5], false, false); |
| 736 expected_overflow_list.Add(panels[6], Panel::IN_OVERFLOW, false, false); | 845 expected_overflow_list.Add(panels[6], false, false); |
| 737 expected_overflow_list.Add(panels[7], Panel::IN_OVERFLOW, false, false); | 846 expected_overflow_list.Add(panels[7], false, false); |
| 738 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 847 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 739 | 848 |
| 740 // Activate an overflow-on-overflow panel. Expect one normal panel is swapped | 849 // Activate an overflow-on-overflow panel. Expect one docked panel is swapped |
| 741 // into the overflow strip. | 850 // into the overflow strip. |
| 742 // normal: P0, P6 | 851 // docked: P0, P6 |
| 743 // overflow: P4, P1, P3, | 852 // overflow: P4, P1, P3, |
| 744 // overflow-on-overflow: P2, P5, P7 | 853 // overflow-on-overflow: P2, P5, P7 |
| 745 panels[6]->Activate(); | 854 panels[6]->Activate(); |
| 746 WaitForPanelActiveState(panels[6], SHOW_AS_ACTIVE); | 855 WaitForPanelActiveState(panels[6], SHOW_AS_ACTIVE); |
| 747 WaitForExpansionStateChanged(panels[6], Panel::EXPANDED); | 856 WaitForExpansionStateChanged(panels[6], Panel::EXPANDED); |
| 748 WaitForPanelActiveState(panels[4], SHOW_AS_INACTIVE); | 857 WaitForPanelActiveState(panels[4], SHOW_AS_INACTIVE); |
| 749 | 858 |
| 750 expected_normal_list.clear(); | 859 expected_docked_list.clear(); |
| 751 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 860 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 752 expected_normal_list.Add(panels[6], Panel::EXPANDED, true, true); | 861 expected_docked_list.Add(panels[6], Panel::EXPANDED, true, true); |
| 753 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 862 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 754 | 863 |
| 755 expected_overflow_list.clear(); | 864 expected_overflow_list.clear(); |
| 756 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 865 expected_overflow_list.Add(panels[4], true, false); |
| 757 expected_overflow_list.Add(panels[1], Panel::IN_OVERFLOW, true, false); | 866 expected_overflow_list.Add(panels[1], true, false); |
| 758 expected_overflow_list.Add(panels[3], Panel::IN_OVERFLOW, true, false); | 867 expected_overflow_list.Add(panels[3], true, false); |
| 759 expected_overflow_list.Add(panels[2], Panel::IN_OVERFLOW, false, false); | 868 expected_overflow_list.Add(panels[2], false, false); |
| 760 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, false, false); | 869 expected_overflow_list.Add(panels[5], false, false); |
| 761 expected_overflow_list.Add(panels[7], Panel::IN_OVERFLOW, false, false); | 870 expected_overflow_list.Add(panels[7], false, false); |
| 762 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 871 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 763 | 872 |
| 764 // Activate an overflow-on-overflow panel. No normal panel is swapped | 873 // Activate an overflow-on-overflow panel. No docked panel is swapped |
| 765 // since there has already been enough space in the panel strip. | 874 // since there has already been enough space in the panel strip. |
| 766 // normal: P0, P6, P7 | 875 // docked: P0, P6, P7 |
| 767 // overflow: P4, P1, P3, | 876 // overflow: P4, P1, P3, |
| 768 // overflow-on-overflow: P2, P5 | 877 // overflow-on-overflow: P2, P5 |
| 769 panels[7]->Activate(); | 878 panels[7]->Activate(); |
| 770 WaitForPanelActiveState(panels[7], SHOW_AS_ACTIVE); | 879 WaitForPanelActiveState(panels[7], SHOW_AS_ACTIVE); |
| 771 WaitForExpansionStateChanged(panels[7], Panel::EXPANDED); | 880 WaitForExpansionStateChanged(panels[7], Panel::EXPANDED); |
| 772 WaitForPanelActiveState(panels[6], SHOW_AS_INACTIVE); | 881 WaitForPanelActiveState(panels[6], SHOW_AS_INACTIVE); |
| 773 | 882 |
| 774 expected_normal_list.clear(); | 883 expected_docked_list.clear(); |
| 775 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 884 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 776 expected_normal_list.Add(panels[6], Panel::EXPANDED, true, false); | 885 expected_docked_list.Add(panels[6], Panel::EXPANDED, true, false); |
| 777 expected_normal_list.Add(panels[7], Panel::EXPANDED, true, true); | 886 expected_docked_list.Add(panels[7], Panel::EXPANDED, true, true); |
| 778 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 887 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 779 | 888 |
| 780 expected_overflow_list.clear(); | 889 expected_overflow_list.clear(); |
| 781 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 890 expected_overflow_list.Add(panels[4], true, false); |
| 782 expected_overflow_list.Add(panels[1], Panel::IN_OVERFLOW, true, false); | 891 expected_overflow_list.Add(panels[1], true, false); |
| 783 expected_overflow_list.Add(panels[3], Panel::IN_OVERFLOW, true, false); | 892 expected_overflow_list.Add(panels[3], true, false); |
| 784 expected_overflow_list.Add(panels[2], Panel::IN_OVERFLOW, false, false); | 893 expected_overflow_list.Add(panels[2], false, false); |
| 785 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, false, false); | 894 expected_overflow_list.Add(panels[5], false, false); |
| 786 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 895 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 787 | 896 |
| 788 PanelManager::GetInstance()->RemoveAll(); | 897 PanelManager::GetInstance()->RemoveAll(); |
| 789 } | 898 } |
| 790 | 899 |
| 791 IN_PROC_BROWSER_TEST_F( | 900 IN_PROC_BROWSER_TEST_F( |
| 792 PanelOverflowBrowserTest, | 901 PanelOverflowBrowserTest, |
| 793 MAYBE_MoveMinimizedPanelToOverflowAndBringBackByActivate) { | 902 MAYBE_MoveMinimizedPanelToOverflowAndBringBackByActivate) { |
| 794 // Create normal and overflow panels. | 903 // Create docked and overflow panels. |
| 795 // normal: P0, P1, P2 | 904 // docked: P0, P1, P2 |
| 796 // overflow: P3, P4 | 905 // overflow: P3, P4 |
| 797 const int panel_widths[] = { | 906 const int panel_widths[] = { |
| 798 250, 260, 200, // normal | 907 250, 260, 200, // docked |
| 799 210, 260 // overflow | 908 210, 260 // overflow |
| 800 }; | 909 }; |
| 801 std::vector<Panel*> panels = CreateOverflowPanels(3, 2, panel_widths); | 910 std::vector<Panel*> panels = CreateOverflowPanels(3, 2, panel_widths); |
| 802 | 911 |
| 803 PanelDataList expected_normal_list; | 912 DockedPanelDataList expected_docked_list; |
| 804 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 913 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 805 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 914 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 806 expected_normal_list.Add(panels[2], Panel::EXPANDED, true, false); | 915 expected_docked_list.Add(panels[2], Panel::EXPANDED, true, false); |
| 807 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 916 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 808 | 917 |
| 809 PanelDataList expected_overflow_list; | 918 OverflowPanelDataList expected_overflow_list; |
| 810 expected_overflow_list.Add(panels[3], Panel::IN_OVERFLOW, true, false); | 919 expected_overflow_list.Add(panels[3], true, false); |
| 811 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 920 expected_overflow_list.Add(panels[4], true, false); |
| 921 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | |
| 812 | 922 |
| 813 // Minimize a normal panel and then bump it to overflow by activating an | 923 // Minimize a docked panel and then bump it to overflow by activating an |
| 814 // overflow panel. | 924 // overflow panel. |
| 815 // normal: P0, P1, P3 | 925 // docked: P0, P1, P3 |
| 816 // overflow: P2, P4 | 926 // overflow: P2, P4 |
| 817 panels[2]->SetExpansionState(Panel::MINIMIZED); | 927 panels[2]->SetExpansionState(Panel::MINIMIZED); |
| 818 panels[3]->Activate(); | 928 panels[3]->Activate(); |
| 819 WaitForPanelActiveState(panels[3], SHOW_AS_ACTIVE); | 929 WaitForPanelActiveState(panels[3], SHOW_AS_ACTIVE); |
| 820 WaitForExpansionStateChanged(panels[3], Panel::EXPANDED); | 930 WaitForExpansionStateChanged(panels[3], Panel::EXPANDED); |
| 821 | 931 |
| 822 expected_normal_list.clear(); | 932 expected_docked_list.clear(); |
| 823 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 933 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 824 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 934 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 825 expected_normal_list.Add(panels[3], Panel::EXPANDED, true, true); | 935 expected_docked_list.Add(panels[3], Panel::EXPANDED, true, true); |
| 826 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 936 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 827 | 937 |
| 828 expected_overflow_list.clear(); | 938 expected_overflow_list.clear(); |
| 829 expected_overflow_list.Add(panels[2], Panel::IN_OVERFLOW, true, false); | 939 expected_overflow_list.Add(panels[2], true, false); |
| 830 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 940 expected_overflow_list.Add(panels[4], true, false); |
| 831 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 941 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 832 | 942 |
| 833 // Reactivate the formerly minimized panel. It will return to the panel | 943 // Reactivate the formerly minimized panel. It will return to the panel |
| 834 // strip in expanded state. | 944 // strip in expanded state. |
| 835 // normal: P0, P1, P2 | 945 // docked: P0, P1, P2 |
| 836 // overflow: P3, P4 | 946 // overflow: P3, P4 |
| 837 panels[2]->Activate(); | 947 panels[2]->Activate(); |
| 838 WaitForPanelActiveState(panels[2], SHOW_AS_ACTIVE); | 948 WaitForPanelActiveState(panels[2], SHOW_AS_ACTIVE); |
| 839 WaitForExpansionStateChanged(panels[2], Panel::EXPANDED); | 949 WaitForExpansionStateChanged(panels[2], Panel::EXPANDED); |
| 840 | 950 |
| 841 expected_normal_list.clear(); | 951 expected_docked_list.clear(); |
| 842 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 952 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 843 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 953 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 844 expected_normal_list.Add(panels[2], Panel::EXPANDED, true, true); | 954 expected_docked_list.Add(panels[2], Panel::EXPANDED, true, true); |
| 845 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 955 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 846 | 956 |
| 847 expected_overflow_list.clear(); | 957 expected_overflow_list.clear(); |
| 848 expected_overflow_list.Add(panels[3], Panel::IN_OVERFLOW, true, false); | 958 expected_overflow_list.Add(panels[3], true, false); |
| 849 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 959 expected_overflow_list.Add(panels[4], true, false); |
| 850 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 960 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 851 | 961 |
| 852 // Minimize a panel to title only mode, then bump it to overflow. | 962 // Minimize a panel to title only mode, then bump it to overflow. |
| 853 // normal: P0, P1, P3 | 963 // docked: P0, P1, P3 |
| 854 // overflow: P2, P4 | 964 // overflow: P2, P4 |
| 855 panels[2]->SetExpansionState(Panel::TITLE_ONLY); | 965 panels[2]->SetExpansionState(Panel::TITLE_ONLY); |
| 856 panels[3]->Activate(); | 966 panels[3]->Activate(); |
| 857 WaitForPanelActiveState(panels[3], SHOW_AS_ACTIVE); | 967 WaitForPanelActiveState(panels[3], SHOW_AS_ACTIVE); |
| 858 WaitForExpansionStateChanged(panels[3], Panel::EXPANDED); | 968 WaitForExpansionStateChanged(panels[3], Panel::EXPANDED); |
| 859 | 969 |
| 860 expected_normal_list.clear(); | 970 expected_docked_list.clear(); |
| 861 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 971 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 862 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 972 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 863 expected_normal_list.Add(panels[3], Panel::EXPANDED, true, true); | 973 expected_docked_list.Add(panels[3], Panel::EXPANDED, true, true); |
| 864 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 974 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 865 | 975 |
| 866 expected_overflow_list.clear(); | 976 expected_overflow_list.clear(); |
| 867 expected_overflow_list.Add(panels[2], Panel::IN_OVERFLOW, true, false); | 977 expected_overflow_list.Add(panels[2], true, false); |
| 868 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 978 expected_overflow_list.Add(panels[4], true, false); |
| 869 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 979 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 870 | 980 |
| 871 // Reactivate the formerly minimized panel. It will return to the panel | 981 // Reactivate the formerly minimized panel. It will return to the panel |
| 872 // strip in expanded state. | 982 // strip in expanded state. |
| 873 // normal: P0, P1, P2 | 983 // docked: P0, P1, P2 |
| 874 // overflow: P3, P4 | 984 // overflow: P3, P4 |
| 875 panels[2]->Activate(); | 985 panels[2]->Activate(); |
| 876 WaitForPanelActiveState(panels[2], SHOW_AS_ACTIVE); | 986 WaitForPanelActiveState(panels[2], SHOW_AS_ACTIVE); |
| 877 WaitForExpansionStateChanged(panels[2], Panel::EXPANDED); | 987 WaitForExpansionStateChanged(panels[2], Panel::EXPANDED); |
| 878 | 988 |
| 879 expected_normal_list.clear(); | 989 expected_docked_list.clear(); |
| 880 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 990 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 881 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 991 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 882 expected_normal_list.Add(panels[2], Panel::EXPANDED, true, true); | 992 expected_docked_list.Add(panels[2], Panel::EXPANDED, true, true); |
| 883 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 993 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 884 | 994 |
| 885 expected_overflow_list.clear(); | 995 expected_overflow_list.clear(); |
| 886 expected_overflow_list.Add(panels[3], Panel::IN_OVERFLOW, true, false); | 996 expected_overflow_list.Add(panels[3], true, false); |
| 887 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 997 expected_overflow_list.Add(panels[4], true, false); |
| 888 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 998 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 889 | 999 |
| 890 PanelManager::GetInstance()->RemoveAll(); | 1000 PanelManager::GetInstance()->RemoveAll(); |
| 891 } | 1001 } |
| 892 | 1002 |
| 893 IN_PROC_BROWSER_TEST_F( | 1003 IN_PROC_BROWSER_TEST_F( |
| 894 PanelOverflowBrowserTest, | 1004 PanelOverflowBrowserTest, |
| 895 MAYBE_MoveMinimizedPanelToOverflowAndBringBackByCloseOrResize) { | 1005 MAYBE_MoveMinimizedPanelToOverflowAndBringBackByCloseOrResize) { |
| 896 PanelManager* panel_manager = PanelManager::GetInstance(); | 1006 PanelManager* panel_manager = PanelManager::GetInstance(); |
| 897 | 1007 |
| 898 // Create normal and overflow panels. | 1008 // Create docked and overflow panels. |
| 899 // normal: P0, P1, P2 | 1009 // docked: P0, P1, P2 |
| 900 // overflow: P3, P4, P5 | 1010 // overflow: P3, P4, P5 |
| 901 const int panel_widths[] = { | 1011 const int panel_widths[] = { |
| 902 240, 240, 120, // normal | 1012 240, 240, 120, // docked |
| 903 240, 240, 240 // overflow | 1013 240, 240, 240 // overflow |
| 904 }; | 1014 }; |
| 905 std::vector<Panel*> panels = CreateOverflowPanels(3, 3, panel_widths); | 1015 std::vector<Panel*> panels = CreateOverflowPanels(3, 3, panel_widths); |
| 906 | 1016 |
| 907 PanelDataList expected_normal_list; | 1017 DockedPanelDataList expected_docked_list; |
| 908 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 1018 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 909 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 1019 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 910 expected_normal_list.Add(panels[2], Panel::EXPANDED, true, false); | 1020 expected_docked_list.Add(panels[2], Panel::EXPANDED, true, false); |
| 911 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 1021 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 912 | 1022 |
| 913 PanelDataList expected_overflow_list; | 1023 OverflowPanelDataList expected_overflow_list; |
| 914 expected_overflow_list.Add(panels[3], Panel::IN_OVERFLOW, true, false); | 1024 expected_overflow_list.Add(panels[3], true, false); |
| 915 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 1025 expected_overflow_list.Add(panels[4], true, false); |
| 916 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, true, false); | 1026 expected_overflow_list.Add(panels[5], true, false); |
| 917 | 1027 |
| 918 // Test case 1: restoring minimized to minimized. | 1028 // Test case 1: restoring minimized to minimized. |
| 919 { | 1029 { |
| 920 // Minimize a normal panel and then bump it to overflow by activating an | 1030 // Minimize a docked panel and then bump it to overflow by activating an |
| 921 // overflow panel. | 1031 // overflow panel. |
| 922 // normal: P0, P1, P3 | 1032 // docked: P0, P1, P3 |
| 923 // overflow: P2, P4, P5 | 1033 // overflow: P2, P4, P5 |
| 924 panels[2]->SetExpansionState(Panel::MINIMIZED); | 1034 panels[2]->SetExpansionState(Panel::MINIMIZED); |
| 925 panels[3]->Activate(); | 1035 panels[3]->Activate(); |
| 926 WaitForPanelActiveState(panels[3], SHOW_AS_ACTIVE); | 1036 WaitForPanelActiveState(panels[3], SHOW_AS_ACTIVE); |
| 927 WaitForExpansionStateChanged(panels[3], Panel::EXPANDED); | 1037 WaitForExpansionStateChanged(panels[3], Panel::EXPANDED); |
| 928 | 1038 |
| 929 expected_normal_list.clear(); | 1039 expected_docked_list.clear(); |
| 930 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 1040 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 931 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 1041 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 932 expected_normal_list.Add(panels[3], Panel::EXPANDED, true, true); | 1042 expected_docked_list.Add(panels[3], Panel::EXPANDED, true, true); |
| 933 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 1043 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 934 | 1044 |
| 935 expected_overflow_list.clear(); | 1045 expected_overflow_list.clear(); |
| 936 expected_overflow_list.Add(panels[2], Panel::IN_OVERFLOW, true, false); | 1046 expected_overflow_list.Add(panels[2], true, false); |
| 937 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 1047 expected_overflow_list.Add(panels[4], true, false); |
| 938 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, true, false); | 1048 expected_overflow_list.Add(panels[5], true, false); |
| 939 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 1049 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 940 | 1050 |
| 941 // Bring back the formerly minimized panel by closing a panel. It will | 1051 // Bring back the formerly minimized panel by closing a panel. It will |
| 942 // return to the panel strip in the minimized state. | 1052 // return to the panel strip in the minimized state. |
| 943 // normal: P0, P1, P2 | 1053 // docked: P0, P1, P2 |
| 944 // overflow: P4, P5 | 1054 // overflow: P4, P5 |
| 945 CloseWindowAndWait(panels[3]->browser()); | 1055 CloseWindowAndWait(panels[3]->browser()); |
| 946 WaitForExpansionStateChanged(panels[2], Panel::MINIMIZED); | 1056 WaitForExpansionStateChanged(panels[2], Panel::MINIMIZED); |
| 947 | 1057 |
| 948 expected_normal_list.clear(); | 1058 expected_docked_list.clear(); |
| 949 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 1059 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 950 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 1060 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 951 expected_normal_list.Add(panels[2], Panel::MINIMIZED, true, false); | 1061 expected_docked_list.Add(panels[2], Panel::MINIMIZED, true, false); |
| 952 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 1062 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 953 | 1063 |
| 954 expected_overflow_list.clear(); | 1064 expected_overflow_list.clear(); |
| 955 expected_overflow_list.Add(panels[4], Panel::IN_OVERFLOW, true, false); | 1065 expected_overflow_list.Add(panels[4], true, false); |
| 956 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, true, false); | 1066 expected_overflow_list.Add(panels[5], true, false); |
| 957 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 1067 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 958 } | 1068 } |
| 959 | 1069 |
| 960 // Test case 2: restoring minimized to title-only. | 1070 // Test case 2: restoring minimized to title-only. |
| 961 { | 1071 { |
| 962 // Bump the minimized panel to overflow by activating an overflow panel. | 1072 // Bump the minimized panel to overflow by activating an overflow panel. |
| 963 // normal: P0, P1, P4 | 1073 // docked: P0, P1, P4 |
| 964 // overflow: P2, P5 | 1074 // overflow: P2, P5 |
| 965 panels[4]->Activate(); | 1075 panels[4]->Activate(); |
| 966 WaitForPanelActiveState(panels[4], SHOW_AS_ACTIVE); | 1076 WaitForPanelActiveState(panels[4], SHOW_AS_ACTIVE); |
| 967 WaitForExpansionStateChanged(panels[4], Panel::EXPANDED); | 1077 WaitForExpansionStateChanged(panels[4], Panel::EXPANDED); |
| 968 | 1078 |
| 969 expected_normal_list.clear(); | 1079 expected_docked_list.clear(); |
| 970 expected_normal_list.Add(panels[0], Panel::EXPANDED, true, false); | 1080 expected_docked_list.Add(panels[0], Panel::EXPANDED, true, false); |
| 971 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 1081 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 972 expected_normal_list.Add(panels[4], Panel::EXPANDED, true, true); | 1082 expected_docked_list.Add(panels[4], Panel::EXPANDED, true, true); |
| 973 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 1083 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 974 | 1084 |
| 975 expected_overflow_list.clear(); | 1085 expected_overflow_list.clear(); |
| 976 expected_overflow_list.Add(panels[2], Panel::IN_OVERFLOW, true, false); | 1086 expected_overflow_list.Add(panels[2], true, false); |
| 977 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, true, false); | 1087 expected_overflow_list.Add(panels[5], true, false); |
| 978 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 1088 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 979 | 1089 |
| 980 // Minimize another panel and hover the mouse over it. This should bring up | 1090 // Minimize another panel and hover the mouse over it. This should bring up |
| 981 // all currently minimized panels. When a formerly minimized or title-only | 1091 // all currently minimized panels. When a formerly minimized or title-only |
| 982 // panel is restored from the overflow area, it should also be title-only. | 1092 // panel is restored from the overflow area, it should also be title-only. |
| 983 panels[0]->SetExpansionState(Panel::MINIMIZED); | 1093 panels[0]->SetExpansionState(Panel::MINIMIZED); |
| 984 MoveMouse(gfx::Point(panels[0]->GetBounds().x(), | 1094 MoveMouse(gfx::Point(panels[0]->GetBounds().x(), |
| 985 panels[0]->GetBounds().y())); | 1095 panels[0]->GetBounds().y())); |
| 986 WaitForExpansionStateChanged(panels[0], Panel::TITLE_ONLY); | 1096 WaitForExpansionStateChanged(panels[0], Panel::TITLE_ONLY); |
| 987 | 1097 |
| 988 // Bring back the formerly minimized panel by closing a panel. It will | 1098 // Bring back the formerly minimized panel by closing a panel. It will |
| 989 // return to the panel strip in the title-only state. | 1099 // return to the panel strip in the title-only state. |
| 990 // normal: P0, P1, P2 | 1100 // docked: P0, P1, P2 |
| 991 // overflow: P5 | 1101 // overflow: P5 |
| 992 CloseWindowAndWait(panels[4]->browser()); | 1102 CloseWindowAndWait(panels[4]->browser()); |
| 993 WaitForExpansionStateChanged(panels[2], Panel::TITLE_ONLY); | 1103 WaitForExpansionStateChanged(panels[2], Panel::TITLE_ONLY); |
| 994 | 1104 |
| 995 expected_normal_list.clear(); | 1105 expected_docked_list.clear(); |
| 996 expected_normal_list.Add(panels[0], Panel::TITLE_ONLY, true, false); | 1106 expected_docked_list.Add(panels[0], Panel::TITLE_ONLY, true, false); |
| 997 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 1107 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 998 expected_normal_list.Add(panels[2], Panel::TITLE_ONLY, true, false); | 1108 expected_docked_list.Add(panels[2], Panel::TITLE_ONLY, true, false); |
| 999 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 1109 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 1000 | 1110 |
| 1001 expected_overflow_list.clear(); | 1111 expected_overflow_list.clear(); |
| 1002 expected_overflow_list.Add(panels[5], Panel::IN_OVERFLOW, true, false); | 1112 expected_overflow_list.Add(panels[5], true, false); |
| 1003 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 1113 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 1004 } | 1114 } |
| 1005 | 1115 |
| 1006 // Test case 3: restoring title-only to title-only. | 1116 // Test case 3: restoring title-only to title-only. |
| 1007 { | 1117 { |
| 1008 // Bump the title-only panel to overflow by activating an overflow panel. | 1118 // Bump the title-only panel to overflow by activating an overflow panel. |
| 1009 // normal: P0, P1, P5 | 1119 // docked: P0, P1, P5 |
| 1010 // overflow: P2 | 1120 // overflow: P2 |
| 1011 panels[5]->Activate(); | 1121 panels[5]->Activate(); |
| 1012 WaitForPanelActiveState(panels[5], SHOW_AS_ACTIVE); | 1122 WaitForPanelActiveState(panels[5], SHOW_AS_ACTIVE); |
| 1013 WaitForExpansionStateChanged(panels[5], Panel::EXPANDED); | 1123 WaitForExpansionStateChanged(panels[5], Panel::EXPANDED); |
| 1014 | 1124 |
| 1015 expected_normal_list.clear(); | 1125 expected_docked_list.clear(); |
| 1016 expected_normal_list.Add(panels[0], Panel::TITLE_ONLY, true, false); | 1126 expected_docked_list.Add(panels[0], Panel::TITLE_ONLY, true, false); |
| 1017 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 1127 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 1018 expected_normal_list.Add(panels[5], Panel::EXPANDED, true, true); | 1128 expected_docked_list.Add(panels[5], Panel::EXPANDED, true, true); |
| 1019 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 1129 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 1020 | 1130 |
| 1021 expected_overflow_list.clear(); | 1131 expected_overflow_list.clear(); |
| 1022 expected_overflow_list.Add(panels[2], Panel::IN_OVERFLOW, true, false); | 1132 expected_overflow_list.Add(panels[2], true, false); |
| 1023 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 1133 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 1024 | 1134 |
| 1025 // Bring back the formerly title-only panel by shrinking a panel. It will | 1135 // Bring back the formerly title-only panel by shrinking a panel. It will |
| 1026 // return to the panel strip in the title-only state. | 1136 // return to the panel strip in the title-only state. |
| 1027 // normal: P0, P1, P5, P2 | 1137 // docked: P0, P1, P5, P2 |
| 1028 panel_manager->ResizePanel(panels[5], gfx::Size( | 1138 panel_manager->ResizePanel(panels[5], gfx::Size( |
| 1029 panels[5]->GetBounds().width() / 2, | 1139 panels[5]->GetBounds().width() / 2, |
| 1030 panels[5]->GetBounds().height() / 2)); | 1140 panels[5]->GetBounds().height() / 2)); |
| 1031 | 1141 |
| 1032 expected_normal_list.clear(); | 1142 expected_docked_list.clear(); |
| 1033 expected_normal_list.Add(panels[0], Panel::TITLE_ONLY, true, false); | 1143 expected_docked_list.Add(panels[0], Panel::TITLE_ONLY, true, false); |
| 1034 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 1144 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 1035 expected_normal_list.Add(panels[5], Panel::EXPANDED, true, true); | 1145 expected_docked_list.Add(panels[5], Panel::EXPANDED, true, true); |
| 1036 expected_normal_list.Add(panels[2], Panel::TITLE_ONLY, true, false); | 1146 expected_docked_list.Add(panels[2], Panel::TITLE_ONLY, true, false); |
| 1037 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 1147 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 1038 | 1148 |
| 1039 expected_overflow_list.clear(); | 1149 expected_overflow_list.clear(); |
| 1040 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 1150 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 1041 } | 1151 } |
| 1042 | 1152 |
| 1043 // Test case 4: restoring title-only to minimized. | 1153 // Test case 4: restoring title-only to minimized. |
| 1044 { | 1154 { |
| 1045 // Bump the minimized panel to overflow by enlarging a panel. | 1155 // Bump the minimized panel to overflow by enlarging a panel. |
| 1046 // normal: P0, P1, P5 | 1156 // docked: P0, P1, P5 |
| 1047 // overflow: P2 | 1157 // overflow: P2 |
| 1048 panel_manager->ResizePanel(panels[5], gfx::Size( | 1158 panel_manager->ResizePanel(panels[5], gfx::Size( |
| 1049 panels[5]->GetBounds().width() * 2, | 1159 panels[5]->GetBounds().width() * 2, |
| 1050 panels[5]->GetBounds().height() * 2)); | 1160 panels[5]->GetBounds().height() * 2)); |
| 1051 | 1161 |
| 1052 expected_normal_list.clear(); | 1162 expected_docked_list.clear(); |
| 1053 expected_normal_list.Add(panels[0], Panel::TITLE_ONLY, true, false); | 1163 expected_docked_list.Add(panels[0], Panel::TITLE_ONLY, true, false); |
| 1054 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 1164 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 1055 expected_normal_list.Add(panels[5], Panel::EXPANDED, true, true); | 1165 expected_docked_list.Add(panels[5], Panel::EXPANDED, true, true); |
| 1056 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 1166 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 1057 | 1167 |
| 1058 expected_overflow_list.clear(); | 1168 expected_overflow_list.clear(); |
| 1059 expected_overflow_list.Add(panels[2], Panel::IN_OVERFLOW, true, false); | 1169 expected_overflow_list.Add(panels[2], true, false); |
| 1060 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 1170 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 1061 | 1171 |
| 1062 // Move the mouse away. This should bring down all currently title-only | 1172 // Move the mouse away. This should bring down all currently title-only |
| 1063 // panels. When a formerly minimized or title-only panel is restored from | 1173 // panels. When a formerly minimized or title-only panel is restored from |
| 1064 // the overflow area, it should be minimized. | 1174 // the overflow area, it should be minimized. |
| 1065 MoveMouse(gfx::Point(0, 0)); | 1175 MoveMouse(gfx::Point(0, 0)); |
| 1066 WaitForExpansionStateChanged(panels[0], Panel::MINIMIZED); | 1176 WaitForExpansionStateChanged(panels[0], Panel::MINIMIZED); |
| 1067 | 1177 |
| 1068 // Bring back the formerly title-only panel by shrinking a panel. It will | 1178 // Bring back the formerly title-only panel by shrinking a panel. It will |
| 1069 // return to the panel strip in the minimized state. | 1179 // return to the panel strip in the minimized state. |
| 1070 // normal: P0, P1, P5, P2 | 1180 // docked: P0, P1, P5, P2 |
| 1071 panel_manager->ResizePanel(panels[5], gfx::Size( | 1181 panel_manager->ResizePanel(panels[5], gfx::Size( |
| 1072 panels[5]->GetBounds().width() / 2, | 1182 panels[5]->GetBounds().width() / 2, |
| 1073 panels[5]->GetBounds().height() / 2)); | 1183 panels[5]->GetBounds().height() / 2)); |
| 1074 | 1184 |
| 1075 expected_normal_list.clear(); | 1185 expected_docked_list.clear(); |
| 1076 expected_normal_list.Add(panels[0], Panel::MINIMIZED, true, false); | 1186 expected_docked_list.Add(panels[0], Panel::MINIMIZED, true, false); |
| 1077 expected_normal_list.Add(panels[1], Panel::EXPANDED, true, false); | 1187 expected_docked_list.Add(panels[1], Panel::EXPANDED, true, false); |
| 1078 expected_normal_list.Add(panels[5], Panel::EXPANDED, true, true); | 1188 expected_docked_list.Add(panels[5], Panel::EXPANDED, true, true); |
| 1079 expected_normal_list.Add(panels[2], Panel::MINIMIZED, true, false); | 1189 expected_docked_list.Add(panels[2], Panel::MINIMIZED, true, false); |
| 1080 EXPECT_EQ(expected_normal_list, GetAllNormalPanelData()); | 1190 EXPECT_EQ(expected_docked_list, GetAllDockedPanelData()); |
| 1081 | 1191 |
| 1082 expected_overflow_list.clear(); | 1192 expected_overflow_list.clear(); |
| 1083 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); | 1193 EXPECT_EQ(expected_overflow_list, GetAllOverflowPanelData()); |
| 1084 } | 1194 } |
| 1085 | 1195 |
| 1086 PanelManager::GetInstance()->RemoveAll(); | 1196 PanelManager::GetInstance()->RemoveAll(); |
| 1087 } | 1197 } |
| 1088 | 1198 |
| 1089 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, | 1199 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, |
| 1090 MAYBE_HoverOverOverflowAreaWithoutOverflowOfOverflow) { | 1200 MAYBE_HoverOverOverflowAreaWithoutOverflowOfOverflow) { |
| 1091 PanelManager* panel_manager = PanelManager::GetInstance(); | 1201 PanelManager* panel_manager = PanelManager::GetInstance(); |
| 1092 PanelOverflowStrip* panel_overflow_strip = | 1202 PanelOverflowStrip* panel_overflow_strip = |
| 1093 panel_manager->panel_overflow_strip(); | 1203 panel_manager->panel_overflow_strip(); |
| 1094 int iconified_width = panel_overflow_strip->current_display_width(); | 1204 int iconified_width = panel_overflow_strip->current_display_width(); |
| 1095 | 1205 |
| 1096 // Create normal and overflow panels. | 1206 // Create docked and overflow panels. |
| 1097 // normal: P0, P1, P2 | 1207 // docked: P0, P1, P2 |
| 1098 // overflow: P3, P4 | 1208 // overflow: P3, P4 |
| 1099 const int panel_widths[] = { | 1209 const int panel_widths[] = { |
| 1100 250, 260, 200, // normal | 1210 250, 260, 200, // docked |
| 1101 255, 220 // overflow | 1211 255, 220 // overflow |
| 1102 }; | 1212 }; |
| 1103 std::vector<Panel*> panels = CreateOverflowPanels(3, 2, panel_widths); | 1213 std::vector<Panel*> panels = CreateOverflowPanels(3, 2, panel_widths); |
| 1104 | 1214 |
| 1105 // Move mouse beyond the right edge of the top overflow panel. | 1215 // Move mouse beyond the right edge of the top overflow panel. |
| 1106 // Expect the overflow area remains shrunk. | 1216 // Expect the overflow area remains shrunk. |
| 1107 MoveMouse(gfx::Point(panels[4]->GetBounds().right() + 1, | 1217 MoveMouse(gfx::Point(panels[4]->GetBounds().right() + 1, |
| 1108 panels[4]->GetBounds().y())); | 1218 panels[4]->GetBounds().y())); |
| 1109 EXPECT_EQ(iconified_width, panel_overflow_strip->current_display_width()); | 1219 EXPECT_EQ(iconified_width, panel_overflow_strip->current_display_width()); |
| 1110 | 1220 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1157 panel_manager->RemoveAll(); | 1267 panel_manager->RemoveAll(); |
| 1158 } | 1268 } |
| 1159 | 1269 |
| 1160 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, | 1270 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, |
| 1161 MAYBE_HoverOverOverflowAreaWithOverflowOfOverflow) { | 1271 MAYBE_HoverOverOverflowAreaWithOverflowOfOverflow) { |
| 1162 PanelManager* panel_manager = PanelManager::GetInstance(); | 1272 PanelManager* panel_manager = PanelManager::GetInstance(); |
| 1163 PanelOverflowStrip* panel_overflow_strip = | 1273 PanelOverflowStrip* panel_overflow_strip = |
| 1164 panel_manager->panel_overflow_strip(); | 1274 panel_manager->panel_overflow_strip(); |
| 1165 int iconified_width = panel_overflow_strip->current_display_width(); | 1275 int iconified_width = panel_overflow_strip->current_display_width(); |
| 1166 | 1276 |
| 1167 // Create normal and overflow panels. | 1277 // Create docked and overflow panels. |
| 1168 // normal: P0, P1, P2 | 1278 // docked: P0, P1, P2 |
| 1169 // overflow: P3, P4, P5 | 1279 // overflow: P3, P4, P5 |
| 1170 // overflow-on-overflow: P6, P7 | 1280 // overflow-on-overflow: P6, P7 |
| 1171 const int panel_widths[] = { | 1281 const int panel_widths[] = { |
| 1172 250, 260, 200, // normal | 1282 250, 260, 200, // docked |
| 1173 255, 220, 260, // overflow | 1283 255, 220, 260, // overflow |
| 1174 140, 210 // overflow-on-overflow | 1284 140, 210 // overflow-on-overflow |
| 1175 }; | 1285 }; |
| 1176 std::vector<Panel*> panels = CreateOverflowPanels(3, 5, panel_widths); | 1286 std::vector<Panel*> panels = CreateOverflowPanels(3, 5, panel_widths); |
| 1177 | 1287 |
| 1178 // Move mouse beyond the right edge of the top overflow panel. | 1288 // Move mouse beyond the right edge of the top overflow panel. |
| 1179 // Expect the overflow area remains shrunk. | 1289 // Expect the overflow area remains shrunk. |
| 1180 MoveMouse(gfx::Point(panels[5]->GetBounds().right() + 1, | 1290 MoveMouse(gfx::Point(panels[5]->GetBounds().right() + 1, |
| 1181 panels[5]->GetBounds().y())); | 1291 panels[5]->GetBounds().y())); |
| 1182 EXPECT_EQ(iconified_width, panel_overflow_strip->current_display_width()); | 1292 EXPECT_EQ(iconified_width, panel_overflow_strip->current_display_width()); |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1263 panel_manager->RemoveAll(); | 1373 panel_manager->RemoveAll(); |
| 1264 } | 1374 } |
| 1265 | 1375 |
| 1266 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_ResizePanel) { | 1376 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_ResizePanel) { |
| 1267 PanelManager* panel_manager = PanelManager::GetInstance(); | 1377 PanelManager* panel_manager = PanelManager::GetInstance(); |
| 1268 panel_manager->enable_auto_sizing(true); | 1378 panel_manager->enable_auto_sizing(true); |
| 1269 PanelStrip* panel_strip = panel_manager->panel_strip(); | 1379 PanelStrip* panel_strip = panel_manager->panel_strip(); |
| 1270 PanelOverflowStrip* overflow_strip = panel_manager->panel_overflow_strip(); | 1380 PanelOverflowStrip* overflow_strip = panel_manager->panel_overflow_strip(); |
| 1271 | 1381 |
| 1272 // Create 4 panels that fit. | 1382 // Create 4 panels that fit. |
| 1273 // normal: P1 (250), P2 (200), P3 (100), P4 (100) | 1383 // docked: P1 (250), P2 (200), P3 (100), P4 (100) |
| 1274 // overflow: empty | 1384 // overflow: empty |
| 1275 Panel* panel1 = CreatePanelWithBounds("1", gfx::Rect(0, 0, 250, 200)); | 1385 Panel* panel1 = CreatePanelWithBounds("1", gfx::Rect(0, 0, 250, 200)); |
| 1276 Panel* panel2 = CreatePanelWithBounds("2", gfx::Rect(0, 0, 200, 200)); | 1386 Panel* panel2 = CreatePanelWithBounds("2", gfx::Rect(0, 0, 200, 200)); |
| 1277 Panel* panel3 = CreatePanelWithBounds("3", gfx::Rect(0, 0, 100, 200)); | 1387 Panel* panel3 = CreatePanelWithBounds("3", gfx::Rect(0, 0, 100, 200)); |
| 1278 Panel* panel4 = CreatePanelWithBounds("4", gfx::Rect(0, 0, 100, 200)); | 1388 Panel* panel4 = CreatePanelWithBounds("4", gfx::Rect(0, 0, 100, 200)); |
| 1279 EXPECT_EQ(4, panel_strip->num_panels()); | 1389 EXPECT_EQ(4, panel_strip->num_panels()); |
| 1280 EXPECT_EQ(0, overflow_strip->num_panels()); | 1390 EXPECT_EQ(0, overflow_strip->num_panels()); |
| 1281 | 1391 |
| 1282 // Resize last panel so that it is too big to fit and overflows. | 1392 // Resize last panel so that it is too big to fit and overflows. |
| 1283 // normal: P1 (250), P2 (200), P3 (100) | 1393 // docked: P1 (250), P2 (200), P3 (100) |
| 1284 // overflow: P4 (250)* | 1394 // overflow: P4 (250)* |
| 1285 gfx::Size new_size(250, 200); | 1395 gfx::Size new_size(250, 200); |
| 1286 panel_manager->OnPreferredWindowSizeChanged(panel4, new_size); | 1396 panel_manager->OnPreferredWindowSizeChanged(panel4, new_size); |
| 1287 EXPECT_EQ(3, panel_strip->num_panels()); | 1397 EXPECT_EQ(3, panel_strip->num_panels()); |
| 1288 EXPECT_EQ(1, overflow_strip->num_panels()); | 1398 EXPECT_EQ(1, overflow_strip->num_panels()); |
| 1289 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->expansion_state()); | 1399 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->layout_state()); |
| 1290 EXPECT_TRUE(IsPanelInOverflowStrip(panel4)); | 1400 EXPECT_TRUE(IsPanelInOverflowStrip(panel4)); |
| 1291 EXPECT_EQ(new_size, panel4->restored_size()); | 1401 EXPECT_EQ(new_size, panel4->restored_size()); |
| 1292 | 1402 |
| 1293 // Open another panel that will fit. | 1403 // Open another panel that will fit. |
| 1294 // normal: P1 (250), P2 (200), P3 (100), P5 (100)* | 1404 // docked: P1 (250), P2 (200), P3 (100), P5 (100)* |
| 1295 // overflow: P4 (250) | 1405 // overflow: P4 (250) |
| 1296 Panel* panel5 = CreatePanelWithBounds("5", gfx::Rect(0, 0, 100, 200)); | 1406 Panel* panel5 = CreatePanelWithBounds("5", gfx::Rect(0, 0, 100, 200)); |
| 1297 EXPECT_EQ(4, panel_strip->num_panels()); | 1407 EXPECT_EQ(4, panel_strip->num_panels()); |
| 1298 EXPECT_EQ(1, overflow_strip->num_panels()); | 1408 EXPECT_EQ(1, overflow_strip->num_panels()); |
| 1299 EXPECT_EQ(Panel::EXPANDED, panel5->expansion_state()); | 1409 EXPECT_EQ(Panel::EXPANDED, panel5->expansion_state()); |
| 1300 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->expansion_state()); // no change | 1410 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->layout_state()); // no change |
| 1301 | 1411 |
| 1302 // Resize a panel from the middle of the strip so that it causes a | 1412 // Resize a panel from the middle of the strip so that it causes a |
| 1303 // panel to overflow. | 1413 // panel to overflow. |
| 1304 // normal: P1 (250), P2 (200), P3 (250)* | 1414 // docked: P1 (250), P2 (200), P3 (250)* |
| 1305 // overflow: P5 (100), P4 (250) | 1415 // overflow: P5 (100), P4 (250) |
| 1306 panel_manager->OnPreferredWindowSizeChanged(panel3, gfx::Size(250, 200)); | 1416 panel_manager->OnPreferredWindowSizeChanged(panel3, gfx::Size(250, 200)); |
| 1307 EXPECT_EQ(3, panel_strip->num_panels()); | 1417 EXPECT_EQ(3, panel_strip->num_panels()); |
| 1308 EXPECT_EQ(2, overflow_strip->num_panels()); | 1418 EXPECT_EQ(2, overflow_strip->num_panels()); |
| 1309 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->expansion_state()); | 1419 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->layout_state()); |
| 1310 EXPECT_EQ(Panel::IN_OVERFLOW, panel5->expansion_state()); | 1420 EXPECT_EQ(Panel::IN_OVERFLOW, panel5->layout_state()); |
| 1311 const PanelOverflowStrip::Panels& overflow = overflow_strip->panels(); | 1421 const PanelOverflowStrip::Panels& overflow = overflow_strip->panels(); |
| 1312 EXPECT_EQ(panel5, overflow[0]); // new overflow panel is first | 1422 EXPECT_EQ(panel5, overflow[0]); // new overflow panel is first |
| 1313 EXPECT_EQ(panel4, overflow[1]); | 1423 EXPECT_EQ(panel4, overflow[1]); |
| 1314 | 1424 |
| 1315 // Resize panel smaller so that panel from overflow can fit. | 1425 // Resize panel smaller so that panel from overflow can fit. |
| 1316 // normal: P1 (250), P2 (200), P3 (100)*, P5 (100) | 1426 // docked: P1 (250), P2 (200), P3 (100)*, P5 (100) |
| 1317 // overflow: P4 (250) | 1427 // overflow: P4 (250) |
| 1318 panel_manager->OnPreferredWindowSizeChanged(panel3, gfx::Size(100, 200)); | 1428 panel_manager->OnPreferredWindowSizeChanged(panel3, gfx::Size(100, 200)); |
| 1319 EXPECT_EQ(4, panel_strip->num_panels()); | 1429 EXPECT_EQ(4, panel_strip->num_panels()); |
| 1320 EXPECT_EQ(1, overflow_strip->num_panels()); | 1430 EXPECT_EQ(1, overflow_strip->num_panels()); |
| 1321 EXPECT_EQ(Panel::EXPANDED, panel5->expansion_state()); | 1431 EXPECT_EQ(Panel::EXPANDED, panel5->expansion_state()); |
| 1322 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->expansion_state()); | 1432 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->layout_state()); |
| 1323 | 1433 |
| 1324 // Resize smaller again but not small enough to fit overflow panel. | 1434 // Resize smaller again but not small enough to fit overflow panel. |
| 1325 // normal: P1 (250), P2 (100)*, P3 (100), P5 (100) | 1435 // docked: P1 (250), P2 (100)*, P3 (100), P5 (100) |
| 1326 // overflow: P4 (250) | 1436 // overflow: P4 (250) |
| 1327 panel_manager->OnPreferredWindowSizeChanged(panel2, gfx::Size(100, 200)); | 1437 panel_manager->OnPreferredWindowSizeChanged(panel2, gfx::Size(100, 200)); |
| 1328 EXPECT_EQ(4, panel_strip->num_panels()); | 1438 EXPECT_EQ(4, panel_strip->num_panels()); |
| 1329 EXPECT_EQ(1, overflow_strip->num_panels()); | 1439 EXPECT_EQ(1, overflow_strip->num_panels()); |
| 1330 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->expansion_state()); // no change | 1440 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->layout_state()); // no change |
| 1331 | 1441 |
| 1332 // Resize overflow panel bigger. It should stay in overflow and bounds | 1442 // Resize overflow panel bigger. It should stay in overflow and bounds |
| 1333 // should not change. | 1443 // should not change. |
| 1334 // normal: P1 (250), P2 (100), P3 (100), P5 (100) | 1444 // docked: P1 (250), P2 (100), P3 (100), P5 (100) |
| 1335 // overflow: P4 (251)* | 1445 // overflow: P4 (251)* |
| 1336 gfx::Rect bounds_before_resize = panel4->GetBounds(); | 1446 gfx::Rect bounds_before_resize = panel4->GetBounds(); |
| 1337 new_size.SetSize(251, 200); | 1447 new_size.SetSize(251, 200); |
| 1338 panel_manager->OnPreferredWindowSizeChanged(panel4, new_size); | 1448 panel_manager->OnPreferredWindowSizeChanged(panel4, new_size); |
| 1339 EXPECT_EQ(4, panel_strip->num_panels()); | 1449 EXPECT_EQ(4, panel_strip->num_panels()); |
| 1340 EXPECT_EQ(1, overflow_strip->num_panels()); | 1450 EXPECT_EQ(1, overflow_strip->num_panels()); |
| 1341 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->expansion_state()); | 1451 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->layout_state()); |
| 1342 EXPECT_EQ(bounds_before_resize, panel4->GetBounds()); | 1452 EXPECT_EQ(bounds_before_resize, panel4->GetBounds()); |
| 1343 EXPECT_EQ(new_size, panel4->restored_size()); | 1453 EXPECT_EQ(new_size, panel4->restored_size()); |
| 1344 | 1454 |
| 1345 // Resize overflow panel to make it fit. | 1455 // Resize overflow panel to make it fit. |
| 1346 // normal: P1 (250), P2 (100), P3 (100), P5 (100), P4 (100)* | 1456 // docked: P1 (250), P2 (100), P3 (100), P5 (100), P4 (100)* |
| 1347 // overflow: empty | 1457 // overflow: empty |
| 1348 panel_manager->OnPreferredWindowSizeChanged(panel4, gfx::Size(100, 200)); | 1458 panel_manager->OnPreferredWindowSizeChanged(panel4, gfx::Size(100, 200)); |
| 1349 EXPECT_EQ(5, panel_strip->num_panels()); | 1459 EXPECT_EQ(5, panel_strip->num_panels()); |
| 1350 EXPECT_EQ(0, overflow_strip->num_panels()); | 1460 EXPECT_EQ(0, overflow_strip->num_panels()); |
| 1351 EXPECT_EQ(Panel::EXPANDED, panel4->expansion_state()); | 1461 EXPECT_EQ(Panel::EXPANDED, panel4->expansion_state()); |
| 1352 | 1462 |
| 1353 // Resize a panel bigger, but not enough to cause overflow. | 1463 // Resize a panel bigger, but not enough to cause overflow. |
| 1354 // normal: P1 (250), P2 (100), P3 (150)*, P5 (100), P4 (100) | 1464 // docked: P1 (250), P2 (100), P3 (150)*, P5 (100), P4 (100) |
| 1355 // overflow: empty | 1465 // overflow: empty |
| 1356 panel_manager->OnPreferredWindowSizeChanged(panel3, gfx::Size(150, 200)); | 1466 panel_manager->OnPreferredWindowSizeChanged(panel3, gfx::Size(150, 200)); |
| 1357 EXPECT_EQ(5, panel_strip->num_panels()); | 1467 EXPECT_EQ(5, panel_strip->num_panels()); |
| 1358 EXPECT_EQ(0, overflow_strip->num_panels()); | 1468 EXPECT_EQ(0, overflow_strip->num_panels()); |
| 1359 | 1469 |
| 1360 // Resize a panel to bump more than one panel to overflow. | 1470 // Resize a panel to bump more than one panel to overflow. |
| 1361 // normal: P1 (250), P2 (250)*, P3 (150) | 1471 // docked: P1 (250), P2 (250)*, P3 (150) |
| 1362 // overflow: P5 (100), P4 (100) | 1472 // overflow: P5 (100), P4 (100) |
| 1363 panel_manager->OnPreferredWindowSizeChanged(panel2, gfx::Size(250, 200)); | 1473 panel_manager->OnPreferredWindowSizeChanged(panel2, gfx::Size(250, 200)); |
| 1364 EXPECT_EQ(3, panel_strip->num_panels()); | 1474 EXPECT_EQ(3, panel_strip->num_panels()); |
| 1365 EXPECT_EQ(2, overflow_strip->num_panels()); | 1475 EXPECT_EQ(2, overflow_strip->num_panels()); |
| 1366 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->expansion_state()); | 1476 EXPECT_EQ(Panel::IN_OVERFLOW, panel4->layout_state()); |
| 1367 EXPECT_EQ(Panel::IN_OVERFLOW, panel5->expansion_state()); | 1477 EXPECT_EQ(Panel::IN_OVERFLOW, panel5->layout_state()); |
| 1368 const PanelOverflowStrip::Panels& overflow2 = overflow_strip->panels(); | 1478 const PanelOverflowStrip::Panels& overflow2 = overflow_strip->panels(); |
| 1369 EXPECT_EQ(panel5, overflow2[0]); // strip order is preserved | 1479 EXPECT_EQ(panel5, overflow2[0]); // strip order is preserved |
| 1370 EXPECT_EQ(panel4, overflow2[1]); | 1480 EXPECT_EQ(panel4, overflow2[1]); |
| 1371 | 1481 |
| 1372 panel1->Close(); | 1482 panel1->Close(); |
| 1373 panel2->Close(); | 1483 panel2->Close(); |
| 1374 panel3->Close(); | 1484 panel3->Close(); |
| 1375 panel4->Close(); | 1485 panel4->Close(); |
| 1376 panel5->Close(); | 1486 panel5->Close(); |
| 1377 } | 1487 } |
| 1378 | 1488 |
| 1379 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_OverflowIndicatorCount) { | 1489 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_OverflowIndicatorCount) { |
| 1380 PanelManager* panel_manager = PanelManager::GetInstance(); | 1490 PanelManager* panel_manager = PanelManager::GetInstance(); |
| 1381 PanelOverflowStrip* overflow_strip = panel_manager->panel_overflow_strip(); | 1491 PanelOverflowStrip* overflow_strip = panel_manager->panel_overflow_strip(); |
| 1382 | 1492 |
| 1383 // Create normal and overflow panels. | 1493 // Create docked and overflow panels. |
| 1384 // normal: P0, P1, P2 | 1494 // docked: P0, P1, P2 |
| 1385 // overflow: P3, P4, P5 | 1495 // overflow: P3, P4, P5 |
| 1386 const int panel_widths[] = { | 1496 const int panel_widths[] = { |
| 1387 250, 250, 210, // normal | 1497 250, 250, 210, // docked |
| 1388 250, 250, 260 // overflow | 1498 250, 250, 260 // overflow |
| 1389 }; | 1499 }; |
| 1390 std::vector<Panel*> panels = CreateOverflowPanels(3, 3, panel_widths); | 1500 std::vector<Panel*> panels = CreateOverflowPanels(3, 3, panel_widths); |
| 1391 EXPECT_EQ(3, overflow_strip->num_panels()); | 1501 EXPECT_EQ(3, overflow_strip->num_panels()); |
| 1392 EXPECT_FALSE(overflow_strip->overflow_indicator()); | 1502 EXPECT_FALSE(overflow_strip->overflow_indicator()); |
| 1393 | 1503 |
| 1394 // Create 5 overflow-on-overflow panels. | 1504 // Create 5 overflow-on-overflow panels. |
| 1395 // normal: P0, P1, P2 | 1505 // docked: P0, P1, P2 |
| 1396 // overflow: P3, P4, P5, (P6, P7, P8, P9, P10) | 1506 // overflow: P3, P4, P5, (P6, P7, P8, P9, P10) |
| 1397 // The panels enclosed in parentheses are hidden. | 1507 // The panels enclosed in parentheses are hidden. |
| 1398 int num_existing_panels = panel_manager->num_panels(); | 1508 int num_existing_panels = panel_manager->num_panels(); |
| 1399 for (int i = 0; i < 5; ++i) { | 1509 for (int i = 0; i < 5; ++i) { |
| 1400 CreatePanelParams params( | 1510 CreatePanelParams params( |
| 1401 MakePanelName(num_existing_panels + i), | 1511 MakePanelName(num_existing_panels + i), |
| 1402 gfx::Rect(0, 0, 250, 200), | 1512 gfx::Rect(0, 0, 250, 200), |
| 1403 SHOW_AS_INACTIVE); | 1513 SHOW_AS_INACTIVE); |
| 1404 Panel* panel = CreatePanelWithParams(params); | 1514 Panel* panel = CreatePanelWithParams(params); |
| 1405 WaitForExpansionStateChanged(panel, Panel::IN_OVERFLOW); | 1515 WaitForLayoutStateChanged(panel, Panel::IN_OVERFLOW); |
| 1406 EXPECT_EQ(i + 1, overflow_strip->overflow_indicator()->GetCount()); | 1516 EXPECT_EQ(i + 1, overflow_strip->overflow_indicator()->GetCount()); |
| 1407 panels.push_back(panel); | 1517 panels.push_back(panel); |
| 1408 } | 1518 } |
| 1409 | 1519 |
| 1410 // Expand the overflow area by moving mouse over it. | 1520 // Expand the overflow area by moving mouse over it. |
| 1411 // Expect the overflow indicator count gets updated. | 1521 // Expect the overflow indicator count gets updated. |
| 1412 // normal: P0, P1, P2 | 1522 // docked: P0, P1, P2 |
| 1413 // overflow: P3, P4, P5, P6, P7, P8, (P9, P10) | 1523 // overflow: P3, P4, P5, P6, P7, P8, (P9, P10) |
| 1414 MoveMouseAndWaitForOverflowAnimationEnded(panels[3]->GetBounds().origin()); | 1524 MoveMouseAndWaitForOverflowAnimationEnded(panels[3]->GetBounds().origin()); |
| 1415 EXPECT_TRUE(IsPanelVisible(panels[6])); | 1525 EXPECT_TRUE(IsPanelVisible(panels[6])); |
| 1416 EXPECT_TRUE(IsPanelVisible(panels[7])); | 1526 EXPECT_TRUE(IsPanelVisible(panels[7])); |
| 1417 EXPECT_TRUE(IsPanelVisible(panels[8])); | 1527 EXPECT_TRUE(IsPanelVisible(panels[8])); |
| 1418 EXPECT_FALSE(IsPanelVisible(panels[9])); | 1528 EXPECT_FALSE(IsPanelVisible(panels[9])); |
| 1419 EXPECT_FALSE(IsPanelVisible(panels[10])); | 1529 EXPECT_FALSE(IsPanelVisible(panels[10])); |
| 1420 EXPECT_EQ(2, overflow_strip->overflow_indicator()->GetCount()); | 1530 EXPECT_EQ(2, overflow_strip->overflow_indicator()->GetCount()); |
| 1421 | 1531 |
| 1422 // Close an overflow panel that makes one overflow-on-overflow panel become | 1532 // Close an overflow panel that makes one overflow-on-overflow panel become |
| 1423 // visible. Expect the overflow indicator count gets decreased by 1. | 1533 // visible. Expect the overflow indicator count gets decreased by 1. |
| 1424 // normal: P0, P1, P2 | 1534 // docked: P0, P1, P2 |
| 1425 // overflow: P4, P5, P6, P7, P8, P9, (P10) | 1535 // overflow: P4, P5, P6, P7, P8, P9, (P10) |
| 1426 CloseWindowAndWait(panels[3]->browser()); | 1536 CloseWindowAndWait(panels[3]->browser()); |
| 1427 EXPECT_TRUE(IsPanelVisible(panels[6])); | 1537 EXPECT_TRUE(IsPanelVisible(panels[6])); |
| 1428 EXPECT_TRUE(IsPanelVisible(panels[7])); | 1538 EXPECT_TRUE(IsPanelVisible(panels[7])); |
| 1429 EXPECT_TRUE(IsPanelVisible(panels[8])); | 1539 EXPECT_TRUE(IsPanelVisible(panels[8])); |
| 1430 EXPECT_TRUE(IsPanelVisible(panels[9])); | 1540 EXPECT_TRUE(IsPanelVisible(panels[9])); |
| 1431 EXPECT_FALSE(IsPanelVisible(panels[10])); | 1541 EXPECT_FALSE(IsPanelVisible(panels[10])); |
| 1432 EXPECT_EQ(1, overflow_strip->overflow_indicator()->GetCount()); | 1542 EXPECT_EQ(1, overflow_strip->overflow_indicator()->GetCount()); |
| 1433 | 1543 |
| 1434 // Shrink the overflow area by stopping hovering the mouse over the overflow | 1544 // Shrink the overflow area by stopping hovering the mouse over the overflow |
| 1435 // area. Expect the overflow indicator count gets updated. | 1545 // area. Expect the overflow indicator count gets updated. |
| 1436 // normal: P0, P1, P2 | 1546 // docked: P0, P1, P2 |
| 1437 // overflow: P4, P5, P6, (P7, P8, P9, P10) | 1547 // overflow: P4, P5, P6, (P7, P8, P9, P10) |
| 1438 MoveMouseAndWaitForOverflowAnimationEnded(gfx::Point( | 1548 MoveMouseAndWaitForOverflowAnimationEnded(gfx::Point( |
| 1439 panels[4]->GetBounds().right() + 5, panels[4]->GetBounds().y())); | 1549 panels[4]->GetBounds().right() + 5, panels[4]->GetBounds().y())); |
| 1440 EXPECT_TRUE(IsPanelVisible(panels[6])); | 1550 EXPECT_TRUE(IsPanelVisible(panels[6])); |
| 1441 EXPECT_FALSE(IsPanelVisible(panels[7])); | 1551 EXPECT_FALSE(IsPanelVisible(panels[7])); |
| 1442 EXPECT_FALSE(IsPanelVisible(panels[8])); | 1552 EXPECT_FALSE(IsPanelVisible(panels[8])); |
| 1443 EXPECT_FALSE(IsPanelVisible(panels[9])); | 1553 EXPECT_FALSE(IsPanelVisible(panels[9])); |
| 1444 EXPECT_FALSE(IsPanelVisible(panels[10])); | 1554 EXPECT_FALSE(IsPanelVisible(panels[10])); |
| 1445 EXPECT_EQ(4, overflow_strip->overflow_indicator()->GetCount()); | 1555 EXPECT_EQ(4, overflow_strip->overflow_indicator()->GetCount()); |
| 1446 | 1556 |
| 1447 // Close an overflow panel. | 1557 // Close an overflow panel. |
| 1448 // Expect the overflow indicator count gets decreased by 1. | 1558 // Expect the overflow indicator count gets decreased by 1. |
| 1449 // normal: P0, P1, P2 | 1559 // docked: P0, P1, P2 |
| 1450 // overflow: P5, P6, P7, (P8, P9, P10) | 1560 // overflow: P5, P6, P7, (P8, P9, P10) |
| 1451 CloseWindowAndWait(panels[4]->browser()); | 1561 CloseWindowAndWait(panels[4]->browser()); |
| 1452 EXPECT_TRUE(IsPanelVisible(panels[6])); | 1562 EXPECT_TRUE(IsPanelVisible(panels[6])); |
| 1453 EXPECT_TRUE(IsPanelVisible(panels[7])); | 1563 EXPECT_TRUE(IsPanelVisible(panels[7])); |
| 1454 EXPECT_FALSE(IsPanelVisible(panels[8])); | 1564 EXPECT_FALSE(IsPanelVisible(panels[8])); |
| 1455 EXPECT_FALSE(IsPanelVisible(panels[9])); | 1565 EXPECT_FALSE(IsPanelVisible(panels[9])); |
| 1456 EXPECT_FALSE(IsPanelVisible(panels[10])); | 1566 EXPECT_FALSE(IsPanelVisible(panels[10])); |
| 1457 EXPECT_EQ(3, overflow_strip->overflow_indicator()->GetCount()); | 1567 EXPECT_EQ(3, overflow_strip->overflow_indicator()->GetCount()); |
| 1458 | 1568 |
| 1459 // Activating a big overflow panel will cause 2 normal panels to move to the | 1569 // Activating a big overflow panel will cause 2 docked panels to move to the |
| 1460 // oevrflow area and also get the top visible overflow panel bumped to the | 1570 // oevrflow area and also get the top visible overflow panel bumped to the |
| 1461 // overflow-on-overflow. | 1571 // overflow-on-overflow. |
| 1462 // Expect the overflow indicator count gets increased by 1. | 1572 // Expect the overflow indicator count gets increased by 1. |
| 1463 // normal: P0, P5 | 1573 // docked: P0, P5 |
| 1464 // overflow: P1, P2, P6, (P7, P8, P9, P10) | 1574 // overflow: P1, P2, P6, (P7, P8, P9, P10) |
| 1465 panels[5]->Activate(); | 1575 panels[5]->Activate(); |
| 1466 WaitForPanelActiveState(panels[5], SHOW_AS_ACTIVE); | 1576 WaitForPanelActiveState(panels[5], SHOW_AS_ACTIVE); |
| 1467 WaitForExpansionStateChanged(panels[5], Panel::EXPANDED); | 1577 WaitForExpansionStateChanged(panels[5], Panel::EXPANDED); |
| 1468 EXPECT_TRUE(IsPanelVisible(panels[6])); | 1578 EXPECT_TRUE(IsPanelVisible(panels[6])); |
| 1469 EXPECT_FALSE(IsPanelVisible(panels[7])); | 1579 EXPECT_FALSE(IsPanelVisible(panels[7])); |
| 1470 EXPECT_FALSE(IsPanelVisible(panels[8])); | 1580 EXPECT_FALSE(IsPanelVisible(panels[8])); |
| 1471 EXPECT_FALSE(IsPanelVisible(panels[9])); | 1581 EXPECT_FALSE(IsPanelVisible(panels[9])); |
| 1472 EXPECT_FALSE(IsPanelVisible(panels[10])); | 1582 EXPECT_FALSE(IsPanelVisible(panels[10])); |
| 1473 EXPECT_EQ(4, overflow_strip->overflow_indicator()->GetCount()); | 1583 EXPECT_EQ(4, overflow_strip->overflow_indicator()->GetCount()); |
| 1474 | 1584 |
| 1475 panel_manager->RemoveAll(); | 1585 panel_manager->RemoveAll(); |
| 1476 } | 1586 } |
| 1477 | 1587 |
| 1478 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_DrawOverflowAttention) { | 1588 IN_PROC_BROWSER_TEST_F(PanelOverflowBrowserTest, MAYBE_DrawOverflowAttention) { |
| 1479 PanelManager* panel_manager = PanelManager::GetInstance(); | 1589 PanelManager* panel_manager = PanelManager::GetInstance(); |
| 1480 PanelStrip* panel_strip = panel_manager->panel_strip(); | 1590 PanelStrip* panel_strip = panel_manager->panel_strip(); |
| 1481 PanelOverflowStrip* overflow_strip = panel_manager->panel_overflow_strip(); | 1591 PanelOverflowStrip* overflow_strip = panel_manager->panel_overflow_strip(); |
| 1482 | 1592 |
| 1483 // Create normal and overflow panels. | 1593 // Create docked and overflow panels. |
| 1484 // normal: P0, P1, P2, P3 | 1594 // docked: P0, P1, P2, P3 |
| 1485 // overflow: P4, P5, P6, (P7, P8, P9, P10, P11) | 1595 // overflow: P4, P5, P6, (P7, P8, P9, P10, P11) |
| 1486 // The panels enclosed in parentheses are hidden. | 1596 // The panels enclosed in parentheses are hidden. |
| 1487 const int panel_widths[] = { | 1597 const int panel_widths[] = { |
| 1488 100, 210, 210, 210, // normal | 1598 100, 210, 210, 210, // docked |
| 1489 210, 260, 210, // overflow | 1599 210, 260, 210, // overflow |
| 1490 210, 210, 210, // overflow-on-overflow on shrunk | 1600 210, 210, 210, // overflow-on-overflow on shrunk |
| 1491 210, 210 // overflow-on-overflow on expanded | 1601 210, 210 // overflow-on-overflow on expanded |
| 1492 }; | 1602 }; |
| 1493 std::vector<Panel*> panels = CreateOverflowPanels(4, 8, panel_widths); | 1603 std::vector<Panel*> panels = CreateOverflowPanels(4, 8, panel_widths); |
| 1494 EXPECT_EQ(4, panel_strip->num_panels()); | 1604 EXPECT_EQ(4, panel_strip->num_panels()); |
| 1495 EXPECT_EQ(8, overflow_strip->num_panels()); | 1605 EXPECT_EQ(8, overflow_strip->num_panels()); |
| 1496 PanelOverflowIndicator* overflow_indicator = | 1606 PanelOverflowIndicator* overflow_indicator = |
| 1497 overflow_strip->overflow_indicator(); | 1607 overflow_strip->overflow_indicator(); |
| 1498 | 1608 |
| 1499 // Draw attention for a visible overflow panel. | 1609 // Draw attention for a visible overflow panel. |
| 1500 // Expect no impact to the overflow indicator. | 1610 // Expect no impact to the overflow indicator. |
| 1501 // normal: P0, P1, P2, P3 | 1611 // docked: P0, P1, P2, P3 |
| 1502 // overflow: P4, *P5, P6, (P7, P8, P9, P10, P11) | 1612 // overflow: P4, *P5, P6, (P7, P8, P9, P10, P11) |
| 1503 EXPECT_FALSE(panels[5]->IsDrawingAttention()); | 1613 EXPECT_FALSE(panels[5]->IsDrawingAttention()); |
| 1504 panels[5]->FlashFrame(true); | 1614 panels[5]->FlashFrame(true); |
| 1505 EXPECT_TRUE(panels[5]->IsDrawingAttention()); | 1615 EXPECT_TRUE(panels[5]->IsDrawingAttention()); |
| 1506 EXPECT_FALSE(overflow_indicator->IsDrawingAttention()); | 1616 EXPECT_FALSE(overflow_indicator->IsDrawingAttention()); |
| 1507 | 1617 |
| 1508 // Activating this overflow panel will clear its attention. | 1618 // Activating this overflow panel will clear its attention. |
| 1509 // Expect no impact to the overflow indicator. | 1619 // Expect no impact to the overflow indicator. |
| 1510 // normal: P0, P1, P2, P5 | 1620 // docked: P0, P1, P2, P5 |
| 1511 // overflow: P3, P4, P6, (P7, P8, P9, P10, P11) | 1621 // overflow: P3, P4, P6, (P7, P8, P9, P10, P11) |
| 1512 panels[5]->Activate(); | 1622 panels[5]->Activate(); |
| 1513 WaitForPanelActiveState(panels[5], SHOW_AS_ACTIVE); | 1623 WaitForPanelActiveState(panels[5], SHOW_AS_ACTIVE); |
| 1514 EXPECT_FALSE(panels[5]->IsDrawingAttention()); | 1624 EXPECT_FALSE(panels[5]->IsDrawingAttention()); |
| 1515 EXPECT_FALSE(overflow_indicator->IsDrawingAttention()); | 1625 EXPECT_FALSE(overflow_indicator->IsDrawingAttention()); |
| 1516 | 1626 |
| 1517 // Draw attention for an overflow-on-overflow panel. | 1627 // Draw attention for an overflow-on-overflow panel. |
| 1518 // Expect the overflow indicator is showing attention. | 1628 // Expect the overflow indicator is showing attention. |
| 1519 // normal: P0, P1, P2, P5 | 1629 // docked: P0, P1, P2, P5 |
| 1520 // overflow: P3, P4, P6, (P7, *P8, P9, P10, P11) | 1630 // overflow: P3, P4, P6, (P7, *P8, P9, P10, P11) |
| 1521 EXPECT_FALSE(panels[8]->IsDrawingAttention()); | 1631 EXPECT_FALSE(panels[8]->IsDrawingAttention()); |
| 1522 panels[8]->FlashFrame(true); | 1632 panels[8]->FlashFrame(true); |
| 1523 EXPECT_TRUE(panels[8]->IsDrawingAttention()); | 1633 EXPECT_TRUE(panels[8]->IsDrawingAttention()); |
| 1524 EXPECT_TRUE(overflow_indicator->IsDrawingAttention()); | 1634 EXPECT_TRUE(overflow_indicator->IsDrawingAttention()); |
| 1525 | 1635 |
| 1526 // Draw attention for another overflow-on-overflow panel. | 1636 // Draw attention for another overflow-on-overflow panel. |
| 1527 // Expect the overflow indicator is still showing attention. | 1637 // Expect the overflow indicator is still showing attention. |
| 1528 // normal: P0, P1, P2, P5 | 1638 // docked: P0, P1, P2, P5 |
| 1529 // overflow: P3, P4, P6, (P7, *P8, P9, *P10, P11) | 1639 // overflow: P3, P4, P6, (P7, *P8, P9, *P10, P11) |
| 1530 EXPECT_FALSE(panels[10]->IsDrawingAttention()); | 1640 EXPECT_FALSE(panels[10]->IsDrawingAttention()); |
| 1531 panels[10]->FlashFrame(true); | 1641 panels[10]->FlashFrame(true); |
| 1532 EXPECT_TRUE(panels[10]->IsDrawingAttention()); | 1642 EXPECT_TRUE(panels[10]->IsDrawingAttention()); |
| 1533 EXPECT_TRUE(overflow_indicator->IsDrawingAttention()); | 1643 EXPECT_TRUE(overflow_indicator->IsDrawingAttention()); |
| 1534 | 1644 |
| 1535 // Stop drawing attention for an overflow-on-overflow panel by activating it. | 1645 // Stop drawing attention for an overflow-on-overflow panel by activating it. |
| 1536 // Expect the overflow indicator is still showing attention. | 1646 // Expect the overflow indicator is still showing attention. |
| 1537 // normal: P0, P1, P2, P8 | 1647 // docked: P0, P1, P2, P8 |
| 1538 // overflow: P5, P3, P4, (P6, P7, P9, *P10, P11) | 1648 // overflow: P5, P3, P4, (P6, P7, P9, *P10, P11) |
| 1539 panels[8]->Activate(); | 1649 panels[8]->Activate(); |
| 1540 WaitForPanelActiveState(panels[8], SHOW_AS_ACTIVE); | 1650 WaitForPanelActiveState(panels[8], SHOW_AS_ACTIVE); |
| 1541 EXPECT_FALSE(panels[8]->IsDrawingAttention()); | 1651 EXPECT_FALSE(panels[8]->IsDrawingAttention()); |
| 1542 EXPECT_TRUE(overflow_indicator->IsDrawingAttention()); | 1652 EXPECT_TRUE(overflow_indicator->IsDrawingAttention()); |
| 1543 | 1653 |
| 1544 // Stop drawing attention for another overflow-on-overflow panel by activating | 1654 // Stop drawing attention for another overflow-on-overflow panel by activating |
| 1545 // it. Expect the overflow indicator is not showing attention. | 1655 // it. Expect the overflow indicator is not showing attention. |
| 1546 // normal: P0, P1, P2, P10 | 1656 // docked: P0, P1, P2, P10 |
| 1547 // overflow: P8, P5, P3, (P4, P6, P7, P9, P11) | 1657 // overflow: P8, P5, P3, (P4, P6, P7, P9, P11) |
| 1548 panels[10]->Activate(); | 1658 panels[10]->Activate(); |
| 1549 WaitForPanelActiveState(panels[10], SHOW_AS_ACTIVE); | 1659 WaitForPanelActiveState(panels[10], SHOW_AS_ACTIVE); |
| 1550 EXPECT_FALSE(panels[10]->IsDrawingAttention()); | 1660 EXPECT_FALSE(panels[10]->IsDrawingAttention()); |
| 1551 EXPECT_FALSE(overflow_indicator->IsDrawingAttention()); | 1661 EXPECT_FALSE(overflow_indicator->IsDrawingAttention()); |
| 1552 | 1662 |
| 1553 // Draw attention for the top overflow panel. | 1663 // Draw attention for the top overflow panel. |
| 1554 // Expect no impact to the overflow indicator. | 1664 // Expect no impact to the overflow indicator. |
| 1555 // normal: P0, P1, P2, P10 | 1665 // docked: P0, P1, P2, P10 |
| 1556 // overflow: P8, P5, *P3, (P4, P6, P7, P9, P11) | 1666 // overflow: P8, P5, *P3, (P4, P6, P7, P9, P11) |
| 1557 EXPECT_TRUE(IsPanelVisible(panels[3])); | 1667 EXPECT_TRUE(IsPanelVisible(panels[3])); |
| 1558 EXPECT_FALSE(panels[3]->IsDrawingAttention()); | 1668 EXPECT_FALSE(panels[3]->IsDrawingAttention()); |
| 1559 panels[3]->FlashFrame(true); | 1669 panels[3]->FlashFrame(true); |
| 1560 EXPECT_TRUE(panels[3]->IsDrawingAttention()); | 1670 EXPECT_TRUE(panels[3]->IsDrawingAttention()); |
| 1561 EXPECT_FALSE(overflow_indicator->IsDrawingAttention()); | 1671 EXPECT_FALSE(overflow_indicator->IsDrawingAttention()); |
| 1562 | 1672 |
| 1563 // Activating a big overflow panel will cause 2 normal panels to move to the | 1673 // Activating a big overflow panel will cause 2 docked panels to move to the |
| 1564 // overflow area and also get the top visible overflow panel bumped to the | 1674 // overflow area and also get the top visible overflow panel bumped to the |
| 1565 // overflow-on-overflow. | 1675 // overflow-on-overflow. |
| 1566 // Expect the overflow indicator is showing attention. | 1676 // Expect the overflow indicator is showing attention. |
| 1567 // normal: P0, P1, P5 | 1677 // docked: P0, P1, P5 |
| 1568 // overflow: P2, P10, P8, (*P3, P4, P6, P7, P9, P11) | 1678 // overflow: P2, P10, P8, (*P3, P4, P6, P7, P9, P11) |
| 1569 panels[5]->Activate(); | 1679 panels[5]->Activate(); |
| 1570 WaitForPanelActiveState(panels[5], SHOW_AS_ACTIVE); | 1680 WaitForPanelActiveState(panels[5], SHOW_AS_ACTIVE); |
| 1571 WaitForExpansionStateChanged(panels[5], Panel::EXPANDED); | 1681 WaitForExpansionStateChanged(panels[5], Panel::EXPANDED); |
| 1572 EXPECT_EQ(3, panel_strip->num_panels()); | 1682 EXPECT_EQ(3, panel_strip->num_panels()); |
| 1573 EXPECT_EQ(9, overflow_strip->num_panels()); | 1683 EXPECT_EQ(9, overflow_strip->num_panels()); |
| 1574 EXPECT_FALSE(IsPanelVisible(panels[3])); | 1684 EXPECT_FALSE(IsPanelVisible(panels[3])); |
| 1575 EXPECT_TRUE(panels[3]->IsDrawingAttention()); | 1685 EXPECT_TRUE(panels[3]->IsDrawingAttention()); |
| 1576 EXPECT_TRUE(overflow_indicator->IsDrawingAttention()); | 1686 EXPECT_TRUE(overflow_indicator->IsDrawingAttention()); |
| 1577 | 1687 |
| 1578 // Close an overflow panel that would move the first oveflow-on-overflow panel | 1688 // Close an overflow panel that would move the first oveflow-on-overflow panel |
| 1579 // to become visible. Expect the overflow indicator is not showing attention. | 1689 // to become visible. Expect the overflow indicator is not showing attention. |
| 1580 // normal: P0, P1, P5 | 1690 // docked: P0, P1, P5 |
| 1581 // overflow: P2, P10, P3, (P4, P6, P7, P9, P11) | 1691 // overflow: P2, P10, P3, (P4, P6, P7, P9, P11) |
| 1582 CloseWindowAndWait(panels[8]->browser()); | 1692 CloseWindowAndWait(panels[8]->browser()); |
| 1583 EXPECT_EQ(3, panel_strip->num_panels()); | 1693 EXPECT_EQ(3, panel_strip->num_panels()); |
| 1584 EXPECT_EQ(8, overflow_strip->num_panels()); | 1694 EXPECT_EQ(8, overflow_strip->num_panels()); |
| 1585 EXPECT_TRUE(panels[3]->IsDrawingAttention()); | 1695 EXPECT_TRUE(panels[3]->IsDrawingAttention()); |
| 1586 EXPECT_FALSE(overflow_indicator->IsDrawingAttention()); | 1696 EXPECT_FALSE(overflow_indicator->IsDrawingAttention()); |
| 1587 | 1697 |
| 1588 panel_manager->RemoveAll(); | 1698 panel_manager->RemoveAll(); |
| 1589 } | 1699 } |
| OLD | NEW |