15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/tabs/tab_drag_controller_interactive_uitest.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "base/win/windows_version.h" 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/chrome_notification_types.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_list.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_window.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/frame/browser_view.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/tabs/tab.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/tabs/tab_drag_controller.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/tabs/tab_strip.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/chrome_switches.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h" 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/test/base/interactive_test_utils.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_details.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_observer.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_service.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_source.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 30868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "ui/base/test/ui_controls.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/screen.h" 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/views/controls/textfield/textfield.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/view.h" 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h" 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using content::WebContents; 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using test::GetCenterInScreenCoordinates; 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using test::GetTabStripForBrowser; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using test::IDString; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using test::ResetIDs; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using test::SetID; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The tests in this file exercise detaching the dragged tab into a standalone 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// window (not a Browser). They are not applicable to aura as aura forces real 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// window dragging. 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Creates a browser with two tabs, drags the second to the first. 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TabDragControllerTest, DragInSameWindow) { 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddTabAndResetBrowser(browser()); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tab_strip = GetTabStripForBrowser(browser()); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStripModel* model = browser()->tab_strip_model(); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point tab_1_center(GetCenterInScreenCoordinates(tab_strip->tab_at(1))); 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(tab_1_center)); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::DOWN)); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point tab_0_center(GetCenterInScreenCoordinates(tab_strip->tab_at(0))); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(tab_0_center)); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::UP)); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("1 0", IDString(model)); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(TabDragController::IsActive()); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(tab_strip->IsDragSessionActive()); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Creates two browsers, drags from first into second. 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This test often crashes on Vista <http://crbug.com/156787> 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_DragToSeparateWindow DISABLED_DragToSeparateWindow 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_DragToSeparateWindow DragToSeparateWindow 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TabDragControllerTest, MAYBE_DragToSeparateWindow) { 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tab_strip = GetTabStripForBrowser(browser()); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add another tab to browser(). 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddTabAndResetBrowser(browser()); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create another browser. 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* browser2 = CreateAnotherWindowBrowserAndRelayout(); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tab_strip2 = GetTabStripForBrowser(browser2); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Move to the first tab and drag it enough so that it detaches, but not 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // enough that it attaches to browser2. 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point tab_0_center(GetCenterInScreenCoordinates(tab_strip->tab_at(0))); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(tab_0_center)); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::DOWN)); 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync( 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point(tab_0_center.x(), 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tab_0_center.y() + tab_strip->height() + 20))); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(TabDragController::IsActive()); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Drag into the second browser. 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point target_point(tab_strip2->width() -1, tab_strip2->height() / 2); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::View::ConvertPointToScreen(tab_strip2, &target_point); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_controls::SendMouseMove(target_point.x(), target_point.y())); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(TabDragController::IsActive()); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Release the mouse, ending the drag session. 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::UP)); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(tab_strip2->IsDragSessionActive()); 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(tab_strip->IsDragSessionActive()); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(TabDragController::IsActive()); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("100 0", IDString(browser2->tab_strip_model())); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("1", IDString(browser()->tab_strip_model())); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Drags from browser to separate window and releases mouse. 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TabDragControllerTest, DetachToOwnWindow) { 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add another tab. 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddTabAndResetBrowser(browser()); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tab_strip = GetTabStripForBrowser(browser()); 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Move to the first tab and drag it enough so that it detaches. 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point tab_0_center( 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCenterInScreenCoordinates(tab_strip->tab_at(0))); 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(tab_0_center)); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::DOWN)); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_controls::SendMouseMove( 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tab_0_center.x(), tab_0_center.y() + tab_strip->height() + 20)); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::UP)); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Should no longer be dragging. 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(tab_strip->IsDragSessionActive()); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(TabDragController::IsActive()); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // There should now be another browser. 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(2u, native_browser_list->size()); 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Browser* new_browser = native_browser_list->get(1); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(new_browser->window()->IsActive()); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tab_strip2 = GetTabStripForBrowser(new_browser); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(tab_strip2->IsDragSessionActive()); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("0", IDString(new_browser->tab_strip_model())); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("1", IDString(browser()->tab_strip_model())); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Deletes a tab being dragged before the user moved enough to start a drag. 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TabDragControllerTest, DeleteBeforeStartedDragging) { 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add another tab. 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddTabAndResetBrowser(browser()); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tab_strip = GetTabStripForBrowser(browser()); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Click on the first tab, but don't move it. 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point tab_0_center(GetCenterInScreenCoordinates(tab_strip->tab_at(0))); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(tab_0_center)); 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::DOWN)); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Should be dragging. 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tab_strip->IsDragSessionActive()); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(TabDragController::IsActive()); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Delete the tab being dragged. 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delete browser()->tab_strip_model()->GetWebContentsAt(0); 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Should have canceled dragging. 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(tab_strip->IsDragSessionActive()); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(TabDragController::IsActive()); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("1", IDString(browser()->tab_strip_model())); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Deletes a tab being dragged while still attached. 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TabDragControllerTest, DeleteTabWhileAttached) { 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add another tab. 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddTabAndResetBrowser(browser()); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tab_strip = GetTabStripForBrowser(browser()); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Click on the first tab and move it enough so that it starts dragging but is 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // still attached. 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point tab_0_center(GetCenterInScreenCoordinates(tab_strip->tab_at(0))); 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(tab_0_center)); 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::DOWN)); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync( 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point(tab_0_center.x() + 20, tab_0_center.y()))); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Should be dragging. 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tab_strip->IsDragSessionActive()); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(TabDragController::IsActive()); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Delete the tab being dragged. 1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delete browser()->tab_strip_model()->GetWebContentsAt(0); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Should have canceled dragging. 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(tab_strip->IsDragSessionActive()); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(TabDragController::IsActive()); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("1", IDString(browser()->tab_strip_model())); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Deletes a tab being dragged after dragging a tab so that a new window is 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// created. 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TabDragControllerTest, DeleteTabWhileDetached) { 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add another tab. 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddTabAndResetBrowser(browser()); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tab_strip = GetTabStripForBrowser(browser()); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Move to the first tab and drag it enough so that it detaches. 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point tab_0_center(GetCenterInScreenCoordinates(tab_strip->tab_at(0))); 2082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebContents* to_delete = browser()->tab_strip_model()->GetWebContentsAt(0); 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(tab_0_center)); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::DOWN)); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync( 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point(tab_0_center.x(), 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tab_0_center.y() + tab_strip->height() + 20))); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delete to_delete; 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Should not be dragging. 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(tab_strip->IsDragSessionActive()); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(TabDragController::IsActive()); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("1", IDString(browser()->tab_strip_model())); 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Detaches a tab and while detached deletes a tab from the source and releases 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the mouse. 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TabDragControllerTest, DeleteSourceDetached) { 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add another tab. 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddTabAndResetBrowser(browser()); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tab_strip = GetTabStripForBrowser(browser()); 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Move to the first tab and drag it enough so that it detaches. 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point tab_0_center(GetCenterInScreenCoordinates(tab_strip->tab_at(0))); 2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebContents* to_delete = browser()->tab_strip_model()->GetWebContentsAt(1); 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(tab_0_center)); 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::DOWN)); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync( 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point(tab_0_center.x(), 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tab_0_center.y() + tab_strip->height() + 20))); 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delete to_delete; 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Should still be dragging. 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tab_strip->IsDragSessionActive()); 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(TabDragController::IsActive()); 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Release the mouse. 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::UP)); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Releasing the mouse should destroy the existing browser and create a new 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // one. 2522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(1u, native_browser_list->size()); 2532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Browser* new_browser = native_browser_list->get(0); 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_NE(new_browser, browser()); 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(GetTabStripForBrowser(new_browser)->IsDragSessionActive()); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(TabDragController::IsActive()); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("0", IDString(new_browser->tab_strip_model())); 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Creates two browsers, selects all tabs in first and drags into second. 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TabDragControllerTest, DragAllToSeparateWindow) { 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tab_strip = GetTabStripForBrowser(browser()); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add another tab to browser(). 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddTabAndResetBrowser(browser()); 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create another browser. 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* browser2 = CreateAnotherWindowBrowserAndRelayout(); 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tab_strip2 = GetTabStripForBrowser(browser2); 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->tab_strip_model()->AddTabAtToSelection(0); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->tab_strip_model()->AddTabAtToSelection(1); 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Move to the first tab and drag it enough so that it detaches, but not 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // enough that it attaches to browser2. 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point tab_0_center( 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCenterInScreenCoordinates(tab_strip->tab_at(0))); 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(tab_0_center)); 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::DOWN)); 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync( 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point(tab_0_center.x(), 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tab_0_center.y() + tab_strip->height() + 20))); 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tab_strip->IsDragSessionActive()); 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(tab_strip2->IsDragSessionActive()); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(TabDragController::IsActive()); 2902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(2u, native_browser_list->size()); 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Drag to tab_strip2. 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point target_point(tab_strip2->width() - 1, 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tab_strip2->height() / 2); 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::View::ConvertPointToScreen(tab_strip2, &target_point); 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_controls::SendMouseMove(target_point.x(), target_point.y())); 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Should now be attached to tab_strip2. 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tab_strip->IsDragSessionActive()); 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(TabDragController::IsActive()); 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Release the mouse, stopping the drag session. 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::UP)); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(TabDragController::IsActive()); 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ("100 0 1", IDString(browser2->tab_strip_model())); 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Creates two browsers, selects all tabs in first, drags into second, then hits 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// escape. 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(TabDragControllerTest, 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DragAllToSeparateWindowAndCancel) { 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tab_strip = GetTabStripForBrowser(browser()); 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add another tab to browser(). 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddTabAndResetBrowser(browser()); 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Create another browser. 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Browser* browser2 = CreateAnotherWindowBrowserAndRelayout(); 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TabStrip* tab_strip2 = GetTabStripForBrowser(browser2); 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->tab_strip_model()->AddTabAtToSelection(0); 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) browser()->tab_strip_model()->AddTabAtToSelection(1); 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Move to the first tab and drag it enough so that it detaches, but not 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // enough that it attaches to browser2. 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point tab_0_center( 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetCenterInScreenCoordinates(tab_strip->tab_at(0))); 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync(tab_0_center)); 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseEventsSync( 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_controls::LEFT, ui_controls::DOWN)); 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendMouseMoveSync( 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point(tab_0_center.x(), 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tab_0_center.y() + tab_strip->height() + 20))); 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tab_strip->IsDragSessionActive()); 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_FALSE(tab_strip2->IsDragSessionActive()); 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(TabDragController::IsActive()); 3382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(2u, native_browser_list->size()); 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Drag to tab_strip2. 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) gfx::Point target_point(tab_strip2->width() - 1, 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tab_strip2->height() / 2); 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::View::ConvertPointToScreen(tab_strip2, &target_point); 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ui_controls::SendMouseMove(target_point.x(), target_point.y())); 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(tab_strip->IsDragSessionActive()); 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(TabDragController::IsActive()); 3482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ASSERT_EQ(2u, native_browser_list->size()); 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Cancel the drag. 351c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // TODO(msw): Fix this on "XP Tests (1)"; see http://crbug.com/227444 352f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (base::win::GetVersion() == base::win::VERSION_XP) { 353c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Try SendKeyPressToWindowSync [esc]; maybe this works???"; 354c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressToWindowSync( 355c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) browser2->window()->GetNativeWindow(), ui::VKEY_ESCAPE, 356c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) false, false, false, false)); 357c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Tab strip 1 drag active (expect 0): " 358c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << tab_strip->IsDragSessionActive(); 359c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Tab strip 2 drag active (expect 0): " 360c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << tab_strip2->IsDragSessionActive(); 361c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Tab drag controller active (expect 0): " 362c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << TabDragController::IsActive(); 363c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Native browser list size (expect 2): " 364c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << native_browser_list->size(); 365c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Tab strip 1 model string (expect '0 1'): " 366c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << IDString(browser()->tab_strip_model()); 367c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Tab strip 2 model string (expect '100'): " 368c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << IDString(browser2->tab_strip_model()); 369c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 370c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Try SendKeyPressSync [esc]; is this needed???"; 371c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 372c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) browser2, ui::VKEY_ESCAPE, false, false, false, false)); 373c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Tab strip 1 drag active (expect 0): " 374c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << tab_strip->IsDragSessionActive(); 375c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Tab strip 2 drag active (expect 0): " 376c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << tab_strip2->IsDragSessionActive(); 377c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Tab drag controller active (expect 0): " 378c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << TabDragController::IsActive(); 379c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Native browser list size (expect 2): " 380c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << native_browser_list->size(); 381c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Tab strip 1 model string (expect '0 1'): " 382c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << IDString(browser()->tab_strip_model()); 383c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) LOG(INFO) << "Tab strip 2 model string (expect '100'): " 384c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << IDString(browser2->tab_strip_model()); 385c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } else { 386c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_TRUE(ui_test_utils::SendKeyPressSync( 387c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) browser2, ui::VKEY_ESCAPE, false, false, false, false)); 388c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_FALSE(tab_strip->IsDragSessionActive()); 389c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_FALSE(tab_strip2->IsDragSessionActive()); 390c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_FALSE(TabDragController::IsActive()); 391c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ASSERT_EQ(2u, native_browser_list->size()); 392c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0 1", IDString(browser()->tab_strip_model())); 393c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("100", IDString(browser2->tab_strip_model())); 394c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 396