Index: chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc |
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc |
index 1ef7aafa9ee4a8269f1b928bb2096d51aeff3d21..d7fa4c49bbe79d90bb78323b83b72e82ced94ad5 100644 |
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc |
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_browsertest.cc |
@@ -1026,6 +1026,49 @@ IN_PROC_BROWSER_TEST_F(LauncherAppBrowserTest, Navigation) { |
EXPECT_EQ(ash::STATUS_ACTIVE, (*model_->ItemByID(shortcut_id)).status); |
} |
+// Confirm that a tab can be moved between browsers while maintaining the |
+// correct running state. |
+IN_PROC_BROWSER_TEST_F(LauncherAppBrowserTest, TabDragAndDrop) { |
+ TabStripModel* tab_strip_model1 = browser()->tab_strip_model(); |
+ EXPECT_EQ(1, tab_strip_model1->count()); |
+ int browser_index = ash::GetBrowserItemIndex(*model_); |
+ EXPECT_TRUE(browser_index >= 0); |
+ EXPECT_EQ(1u, chrome::GetTotalBrowserCount()); |
+ |
+ // Create a shortcut for app1. |
+ ash::LauncherID shortcut_id = CreateShortcut("app1"); |
+ EXPECT_EQ(ash::STATUS_ACTIVE, model_->items()[browser_index].status); |
+ EXPECT_EQ(ash::STATUS_CLOSED, (*model_->ItemByID(shortcut_id)).status); |
+ |
+ // Activate app1 and check its item status. |
+ ActivateLauncherItem(model_->ItemIndexByID(shortcut_id)); |
+ EXPECT_EQ(2, tab_strip_model1->count()); |
+ EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[browser_index].status); |
+ EXPECT_EQ(ash::STATUS_ACTIVE, (*model_->ItemByID(shortcut_id)).status); |
+ |
+ // Create a new browser with blank tab. |
+ Browser* browser2 = CreateBrowser(profile()); |
+ EXPECT_EQ(2u, chrome::GetTotalBrowserCount()); |
+ TabStripModel* tab_strip_model2 = browser2->tab_strip_model(); |
+ EXPECT_EQ(1, tab_strip_model2->count()); |
+ EXPECT_EQ(ash::STATUS_ACTIVE, model_->items()[browser_index].status); |
+ EXPECT_EQ(ash::STATUS_RUNNING, (*model_->ItemByID(shortcut_id)).status); |
+ |
+ // Detach a tab at index 1 (app1) from |tab_strip_model1| and insert it as an |
+ // active tab at index 1 to |tab_strip_model2|. |
+ content::WebContents* detached_tab = tab_strip_model1->DetachWebContentsAt(1); |
+ tab_strip_model2->InsertWebContentsAt(1, |
+ detached_tab, |
+ TabStripModel::ADD_ACTIVE); |
+ EXPECT_EQ(1, tab_strip_model1->count()); |
+ EXPECT_EQ(2, tab_strip_model2->count()); |
+ EXPECT_EQ(ash::STATUS_RUNNING, model_->items()[browser_index].status); |
+ EXPECT_EQ(ash::STATUS_ACTIVE, (*model_->ItemByID(shortcut_id)).status); |
+ |
+ tab_strip_model1->CloseAllTabs(); |
+ tab_strip_model2->CloseAllTabs(); |
+} |
+ |
IN_PROC_BROWSER_TEST_F(LauncherAppBrowserTest, MultipleOwnedTabs) { |
TabStripModel* tab_strip = browser()->tab_strip_model(); |
int tab_count = tab_strip->count(); |