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

Unified Diff: chrome/browser/ui/panels/detached_panel_browsertest.cc

Issue 9403035: Refactor intra-strip panel drags by introducing PanelDragController. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix per feedback Created 8 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/panels/detached_panel_browsertest.cc
diff --git a/chrome/browser/ui/panels/detached_panel_browsertest.cc b/chrome/browser/ui/panels/detached_panel_browsertest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6e6ad759452b6a581afb7443f35a49a30bbe4319
--- /dev/null
+++ b/chrome/browser/ui/panels/detached_panel_browsertest.cc
@@ -0,0 +1,109 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/panels/base_panel_browser_test.h"
+#include "chrome/browser/ui/panels/detached_panel_strip.h"
+#include "chrome/browser/ui/panels/native_panel.h"
+#include "chrome/browser/ui/panels/panel.h"
+#include "chrome/browser/ui/panels/panel_manager.h"
+
+class DetachedPanelBrowserTest : public BasePanelBrowserTest {
+};
+
+IN_PROC_BROWSER_TEST_F(DetachedPanelBrowserTest, CheckDetachedPanelProperties) {
+ PanelManager* panel_manager = PanelManager::GetInstance();
+ DetachedPanelStrip* detached_strip = panel_manager->detached_strip();
+
+ // Create 2 panels.
+ Panel* panel1 = CreatePanelWithBounds("Panel1", gfx::Rect(0, 0, 250, 200));
+ Panel* panel2 = CreatePanelWithBounds("Panel2", gfx::Rect(0, 0, 300, 200));
+
+ EXPECT_TRUE(panel_manager->CanDrag(panel1));
+ EXPECT_TRUE(panel_manager->CanDrag(panel2));
+
+ // Move panels to detached strip.
+ EXPECT_EQ(2, panel_manager->num_panels());
+ EXPECT_EQ(0, detached_strip->num_panels());
+ panel1->MoveToStrip(detached_strip);
+ panel2->MoveToStrip(detached_strip);
+ EXPECT_EQ(2, panel_manager->num_panels());
+ EXPECT_EQ(2, detached_strip->num_panels());
jennb 2012/02/17 21:28:45 Also check panel_manager->panels() includes the de
jianli 2012/02/17 23:52:56 Done.
+
+ EXPECT_TRUE(panel_manager->CanDrag(panel1));
+ EXPECT_TRUE(panel_manager->CanDrag(panel2));
+
+ panel_manager->CloseAll();
+}
+
+IN_PROC_BROWSER_TEST_F(DetachedPanelBrowserTest, DragDetachedPanel) {
+ PanelManager* panel_manager = PanelManager::GetInstance();
+ DetachedPanelStrip* detached_strip = panel_manager->detached_strip();
+
+ // Create one detached panel.
+ Panel* panel = CreatePanelWithBounds("Panel1", gfx::Rect(0, 0, 250, 200));
+ panel->MoveToStrip(detached_strip);
+
+ // Test that the detached panel can be dragged anywhere.
+ scoped_ptr<NativePanelTesting> panel_testing(
+ NativePanelTesting::Create(panel->native_panel()));
+ gfx::Point origin = panel->GetBounds().origin();
+
+ panel_testing->PressLeftMouseButtonTitlebar(origin);
+ EXPECT_EQ(origin, panel->GetBounds().origin());
+
+ panel_testing->DragTitlebar(-51, 102);
+ origin.Offset(-51, 102);
+ EXPECT_EQ(origin, panel->GetBounds().origin());
+
+ panel_testing->DragTitlebar(37, -42);
+ origin.Offset(37, -42);
+ EXPECT_EQ(origin, panel->GetBounds().origin());
+
+ panel_testing->FinishDragTitlebar();
+ EXPECT_EQ(origin, panel->GetBounds().origin());
+
+ // Test that cancelling the drag will return the panel the the original
+ // position.
+ gfx::Point original_position = panel->GetBounds().origin();
+ origin = original_position;
+
+ panel_testing->PressLeftMouseButtonTitlebar(origin);
+ EXPECT_EQ(origin, panel->GetBounds().origin());
+
+ panel_testing->DragTitlebar(-51, 102);
+ origin.Offset(-51, 102);
+ EXPECT_EQ(origin, panel->GetBounds().origin());
+
+ panel_testing->DragTitlebar(37, -42);
+ origin.Offset(37, -42);
+ EXPECT_EQ(origin, panel->GetBounds().origin());
+
+ panel_testing->CancelDragTitlebar();
+ EXPECT_EQ(original_position, panel->GetBounds().origin());
+
+ panel_manager->CloseAll();
+}
+
+IN_PROC_BROWSER_TEST_F(DetachedPanelBrowserTest, CloseDraggingDetachedPanel) {
+ PanelManager* panel_manager = PanelManager::GetInstance();
+ DetachedPanelStrip* detached_strip = panel_manager->detached_strip();
+
+ // Create one detached panel.
+ Panel* panel = CreatePanelWithBounds("Panel1", gfx::Rect(0, 0, 250, 200));
+ panel->MoveToStrip(detached_strip);
+
+ // Start dragging the panel.
+ scoped_ptr<NativePanelTesting> panel_testing(
+ NativePanelTesting::Create(panel->native_panel()));
+ panel_testing->PressLeftMouseButtonTitlebar(panel->GetBounds().origin());
+ panel_testing->DragTitlebar(-51, 102);
+
+ // Closing the panel while drag in progress will keep the panel intact.
+ panel->Close();
jennb 2012/02/17 21:28:45 Close() is async and will not have immediate effec
jianli 2012/02/17 23:52:56 Removed. Will include in future patch.
+ EXPECT_EQ(1, detached_strip->num_panels());
+
+ // It should be closed right after the drag ends.
+ panel_testing->FinishDragTitlebar();
+ EXPECT_EQ(0, detached_strip->num_panels());
+}
« no previous file with comments | « no previous file | chrome/browser/ui/panels/detached_panel_strip.h » ('j') | chrome/browser/ui/panels/detached_panel_strip.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698