Index: chrome/browser/ui/panels/panel_drag_browsertest.cc |
diff --git a/chrome/browser/ui/panels/panel_drag_browsertest.cc b/chrome/browser/ui/panels/panel_drag_browsertest.cc |
index 1f255151e6f8bc5df9a2d886d226322f055b1a7f..b8239ae57261c74479eaf1b5d5714b5199576ad1 100644 |
--- a/chrome/browser/ui/panels/panel_drag_browsertest.cc |
+++ b/chrome/browser/ui/panels/panel_drag_browsertest.cc |
@@ -10,6 +10,7 @@ |
#include "chrome/browser/ui/panels/panel.h" |
#include "chrome/browser/ui/panels/panel_drag_controller.h" |
#include "chrome/browser/ui/panels/panel_manager.h" |
+#include "chrome/browser/ui/panels/test_panel_mouse_watcher.h" |
class PanelDragBrowserTest : public BasePanelBrowserTest { |
public: |
@@ -400,6 +401,96 @@ IN_PROC_BROWSER_TEST_F(PanelDragBrowserTest, DragThreeDockedPanels) { |
PanelManager::GetInstance()->CloseAll(); |
} |
+IN_PROC_BROWSER_TEST_F(PanelDragBrowserTest, DragMinimizedPanel) { |
+ // We'll simulate mouse movements for test. |
+ PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher(); |
+ PanelManager::GetInstance()->SetMouseWatcherForTesting(mouse_watcher); |
+ |
+ Panel* panel = CreatePanel("panel1"); |
+ scoped_ptr<NativePanelTesting> panel_testing( |
+ NativePanelTesting::Create(panel->native_panel())); |
+ |
+ panel->Minimize(); |
+ EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state()); |
+ |
+ // Hover over minimized panel to bring up titlebar. |
+ gfx::Point hover_point(panel->GetBounds().origin()); |
+ MoveMouseAndWaitForExpansionStateChange(panel, hover_point); |
+ EXPECT_EQ(Panel::TITLE_ONLY, panel->expansion_state()); |
+ |
+ // Verify we can drag a minimized panel. |
+ gfx::Rect panel_old_bounds = panel->GetBounds(); |
+ gfx::Point mouse_location = panel_old_bounds.origin(); |
+ panel_testing->PressLeftMouseButtonTitlebar(mouse_location); |
+ EXPECT_EQ(panel_old_bounds, panel->GetBounds()); |
+ EXPECT_EQ(Panel::TITLE_ONLY, panel->expansion_state()); |
+ |
+ mouse_location.Offset(-70, 0); |
+ panel_testing->DragTitlebar(mouse_location); |
+ gfx::Rect panel_new_bounds = panel_old_bounds; |
+ panel_new_bounds.Offset(-70, 0); |
+ EXPECT_EQ(panel_new_bounds, panel->GetBounds()); |
+ EXPECT_EQ(Panel::TITLE_ONLY, panel->expansion_state()); |
+ |
+ // Verify panel returns to fully minimized state after dragging ends once |
+ // mouse moves away from panel. |
+ panel_testing->FinishDragTitlebar(); |
+ EXPECT_EQ(Panel::TITLE_ONLY, panel->expansion_state()); |
+ |
+ MoveMouseAndWaitForExpansionStateChange(panel, mouse_location); |
+ EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state()); |
+ |
+ panel->Close(); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(PanelDragBrowserTest, |
+ DragMinimizedPanelWhileDrawingAttention) { |
+ // We'll simulate mouse movements for test. |
+ PanelMouseWatcher* mouse_watcher = new TestPanelMouseWatcher(); |
+ PanelManager::GetInstance()->SetMouseWatcherForTesting(mouse_watcher); |
+ |
+ Panel* panel = CreatePanel("panel1"); |
+ scoped_ptr<NativePanelTesting> panel_testing( |
+ NativePanelTesting::Create(panel->native_panel())); |
+ CreatePanel("panel2"); |
+ |
+ panel->Minimize(); |
+ EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state()); |
+ |
+ panel->FlashFrame(true); |
+ EXPECT_TRUE(panel->IsDrawingAttention()); |
+ EXPECT_EQ(Panel::TITLE_ONLY, panel->expansion_state()); |
+ |
+ // Drag the panel. Verify panel stays in title-only state after attention is |
+ // cleared because it is being dragged. |
+ gfx::Rect panel_old_bounds = panel->GetBounds(); |
+ gfx::Point mouse_location = panel_old_bounds.origin(); |
+ panel_testing->PressLeftMouseButtonTitlebar(mouse_location); |
+ EXPECT_EQ(panel_old_bounds, panel->GetBounds()); |
+ EXPECT_EQ(Panel::TITLE_ONLY, panel->expansion_state()); |
+ |
+ mouse_location.Offset(-70, 0); |
+ panel_testing->DragTitlebar(mouse_location); |
+ gfx::Rect panel_new_bounds = panel_old_bounds; |
+ panel_new_bounds.Offset(-70, 0); |
+ EXPECT_EQ(panel_new_bounds, panel->GetBounds()); |
+ |
+ panel->FlashFrame(false); |
+ EXPECT_FALSE(panel->IsDrawingAttention()); |
+ EXPECT_EQ(Panel::TITLE_ONLY, panel->expansion_state()); |
+ |
+ // Verify panel returns to fully minimized state after dragging ends once |
+ // mouse moves away from the panel. |
+ panel_testing->FinishDragTitlebar(); |
+ EXPECT_EQ(Panel::TITLE_ONLY, panel->expansion_state()); |
+ |
+ mouse_location.Offset(0, -50); |
+ MoveMouseAndWaitForExpansionStateChange(panel, mouse_location); |
+ EXPECT_EQ(Panel::MINIMIZED, panel->expansion_state()); |
+ |
+ PanelManager::GetInstance()->CloseAll(); |
+} |
+ |
IN_PROC_BROWSER_TEST_F(PanelDragBrowserTest, CloseDockedPanelOnDrag) { |
PanelManager* panel_manager = PanelManager::GetInstance(); |
PanelDragController* drag_controller = panel_manager->drag_controller(); |