| Index: chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
|
| diff --git a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
|
| index f69b34ce59f61be754a45380facf242d84e7c99a..2790730d2868e73884c11c35c42367615388b730 100644
|
| --- a/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
|
| +++ b/chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.cc
|
| @@ -795,6 +795,74 @@ IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
|
| #if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
| // TODO(sky,sad): Disabled as it fails due to resize locks with a real
|
| // compositor. crbug.com/331924
|
| +#define MAYBE_DetachFromFullsizeWindow DISABLED_DetachFromFullsizeWindow
|
| +#else
|
| +#define MAYBE_DetachFromFullsizeWindow DetachFromFullsizeWindow
|
| +#endif
|
| +// Tests that a tab can be dragged from a browser window that is resized to full
|
| +// screen.
|
| +IN_PROC_BROWSER_TEST_P(DetachToBrowserTabDragControllerTest,
|
| + MAYBE_DetachFromFullsizeWindow) {
|
| + // Resize the browser window so that it is as big as the work area.
|
| + gfx::Rect work_area =
|
| + gfx::Screen::GetNativeScreen()
|
| + ->GetDisplayNearestWindow(browser()->window()->GetNativeWindow())
|
| + .work_area();
|
| + browser()->window()->SetBounds(work_area);
|
| + const gfx::Rect initial_bounds(browser()->window()->GetBounds());
|
| + // Add another tab.
|
| + AddTabAndResetBrowser(browser());
|
| + TabStrip* tab_strip = GetTabStripForBrowser(browser());
|
| +
|
| + // Move to the first tab and drag it enough so that it detaches.
|
| + gfx::Point tab_0_center(GetCenterInScreenCoordinates(tab_strip->tab_at(0)));
|
| + ASSERT_TRUE(PressInput(tab_0_center));
|
| + ASSERT_TRUE(DragInputToNotifyWhenDone(
|
| + tab_0_center.x(), tab_0_center.y() + GetDetachY(tab_strip),
|
| + base::Bind(&DetachToOwnWindowStep2, this)));
|
| + if (input_source() == INPUT_SOURCE_MOUSE) {
|
| + ASSERT_TRUE(ReleaseMouseAsync());
|
| + QuitWhenNotDragging();
|
| + }
|
| +
|
| + // Should no longer be dragging.
|
| + ASSERT_FALSE(tab_strip->IsDragSessionActive());
|
| + ASSERT_FALSE(TabDragController::IsActive());
|
| +
|
| + // There should now be another browser.
|
| + ASSERT_EQ(2u, native_browser_list->size());
|
| + Browser* new_browser = native_browser_list->get(1);
|
| + ASSERT_TRUE(new_browser->window()->IsActive());
|
| + TabStrip* tab_strip2 = GetTabStripForBrowser(new_browser);
|
| + ASSERT_FALSE(tab_strip2->IsDragSessionActive());
|
| +
|
| + EXPECT_EQ("0", IDString(new_browser->tab_strip_model()));
|
| + EXPECT_EQ("1", IDString(browser()->tab_strip_model()));
|
| +
|
| + // The bounds of the initial window should not have changed.
|
| + EXPECT_EQ(initial_bounds.ToString(),
|
| + browser()->window()->GetBounds().ToString());
|
| +
|
| + EXPECT_FALSE(GetIsDragged(browser()));
|
| + EXPECT_FALSE(GetIsDragged(new_browser));
|
| + // After this both windows should still be manageable.
|
| + EXPECT_TRUE(IsWindowPositionManaged(browser()->window()->GetNativeWindow()));
|
| + EXPECT_TRUE(
|
| + IsWindowPositionManaged(new_browser->window()->GetNativeWindow()));
|
| +
|
| + // Only second window should be maximized.
|
| + EXPECT_FALSE(browser()->window()->IsMaximized());
|
| + EXPECT_TRUE(new_browser->window()->IsMaximized());
|
| +
|
| + // The tab strip should no longer have capture because the drag was ended and
|
| + // mouse/touch was released.
|
| + EXPECT_FALSE(tab_strip->GetWidget()->HasCapture());
|
| + EXPECT_FALSE(tab_strip2->GetWidget()->HasCapture());
|
| +}
|
| +
|
| +#if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
| +// TODO(sky,sad): Disabled as it fails due to resize locks with a real
|
| +// compositor. crbug.com/331924
|
| #define MAYBE_DetachToOwnWindowFromMaximizedWindow \
|
| DISABLED_DetachToOwnWindowFromMaximizedWindow
|
| #else
|
|
|