Index: chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc |
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc |
index d1f4e03c844527081319b8a9aa892fc24f3d50dd..8838e34dfcfc2a1062362a321a6cb735cef700e0 100644 |
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc |
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_impl_browsertest.cc |
@@ -1532,6 +1532,117 @@ IN_PROC_BROWSER_TEST_F(LauncherPlatformAppBrowserTest, WindowAttentionStatus) { |
EXPECT_EQ(ash::STATUS_ACTIVE, item.status); |
} |
+IN_PROC_BROWSER_TEST_F(LauncherPlatformAppBrowserTest, |
+ ShowInShelfWindowsWithWindowKeySet) { |
+ ash::ShelfModel* shelf_model = ash::Shell::GetInstance()->shelf_model(); |
+ |
+ // Add a window with shelf True, close it |
+ int item_count = shelf_model->item_count(); |
+ const Extension* extension = LoadAndLaunchPlatformApp("launch", "Launched"); |
+ AppWindow::CreateParams params; |
+ |
+ params.show_in_shelf = true; |
+ params.window_key = "window1"; |
+ AppWindow* window1 = |
+ CreateAppWindowFromParams(browser()->profile(), extension, params); |
+ // There should be only 1 item added to the shelf. |
+ EXPECT_EQ(item_count + 1, shelf_model->item_count()); |
+ CloseAppWindow(window1); |
+ EXPECT_EQ(item_count, shelf_model->item_count()); |
+ |
+ // Add a window with false, following one with true |
+ item_count = shelf_model->item_count(); |
+ extension = LoadAndLaunchPlatformApp("launch", "Launched"); |
+ |
+ params.show_in_shelf = false; |
+ params.window_key = "window1"; |
+ window1 = CreateAppWindowFromParams(browser()->profile(), extension, params); |
+ EXPECT_EQ(item_count + 1, shelf_model->item_count()); |
+ params.show_in_shelf = true; |
+ params.window_key = "window2"; |
+ AppWindow* window2 = |
+ CreateAppWindowFromParams(browser()->profile(), extension, params); |
+ // There should be 2 items added to the shelf: although window1 has |
+ // show_in_shelf set to false, it's the first window created so its icon must |
+ // show up in shelf. |
+ EXPECT_EQ(item_count + 2, shelf_model->item_count()); |
+ CloseAppWindow(window1); |
+ EXPECT_EQ(item_count + 1, shelf_model->item_count()); |
+ CloseAppWindow(window2); |
+ EXPECT_EQ(item_count, shelf_model->item_count()); |
+ |
+ // Open just one window with false |
+ item_count = shelf_model->item_count(); |
+ extension = LoadAndLaunchPlatformApp("launch", "Launched"); |
+ |
+ params.show_in_shelf = false; |
+ params.window_key = "window1"; |
+ window1 = CreateAppWindowFromParams(browser()->profile(), extension, params); |
+ // There should be 1 item added to the shelf: although show_in_shelf is false, |
+ // this is the first window created. |
+ EXPECT_EQ(item_count + 1, shelf_model->item_count()); |
+ CloseAppWindow(window1); |
+ EXPECT_EQ(item_count, shelf_model->item_count()); |
+ |
+ // Add a window with true, following one with false |
+ item_count = shelf_model->item_count(); |
+ extension = LoadAndLaunchPlatformApp("launch", "Launched"); |
+ |
+ params.show_in_shelf = true; |
+ params.window_key = "window1"; |
+ window1 = CreateAppWindowFromParams(browser()->profile(), extension, params); |
+ EXPECT_EQ(item_count + 1, shelf_model->item_count()); // main window |
+ params.show_in_shelf = false; |
+ params.window_key = "window2"; |
+ window2 = CreateAppWindowFromParams(browser()->profile(), extension, params); |
+ EXPECT_EQ(item_count + 2, shelf_model->item_count()); |
+ CloseAppWindow(window1); |
+ // There should be 1 item added to the shelf as the second window |
+ // is set to show_in_shelf false |
+ EXPECT_EQ(item_count + 1, shelf_model->item_count()); |
+ CloseAppWindow(window2); |
+ EXPECT_EQ(item_count, shelf_model->item_count()); |
+ |
+ // Test closing windows in different order |
+ item_count = shelf_model->item_count(); |
+ extension = LoadAndLaunchPlatformApp("launch", "Launched"); |
+ |
+ params.show_in_shelf = false; |
+ params.window_key = "window1"; |
+ window1 = CreateAppWindowFromParams(browser()->profile(), extension, params); |
+ EXPECT_EQ(item_count + 1, shelf_model->item_count()); |
+ params.show_in_shelf = false; |
+ params.window_key = "window2"; |
+ window2 = CreateAppWindowFromParams(browser()->profile(), extension, params); |
+ EXPECT_EQ(item_count + 1, shelf_model->item_count()); |
+ params.show_in_shelf = true; |
+ params.window_key = "window3"; |
+ AppWindow* window3 = |
+ CreateAppWindowFromParams(browser()->profile(), extension, params); |
+ EXPECT_EQ(item_count + 2, shelf_model->item_count()); |
+ params.show_in_shelf = true; |
+ params.window_key = "window4"; |
+ AppWindow* window4 = |
+ CreateAppWindowFromParams(browser()->profile(), extension, params); |
+ // There should be 3 items added to the shelf. |
+ EXPECT_EQ(item_count + 3, shelf_model->item_count()); |
+ // Any window close order should be valid |
+ CloseAppWindow(window4); |
+ // Closed window4 that was shown in shelf. item_count would decrease |
+ EXPECT_EQ(item_count + 2, shelf_model->item_count()); |
+ CloseAppWindow(window1); |
+ // Closed window1 which was grouped together with window2 so item_count |
+ // would not decrease |
+ EXPECT_EQ(item_count + 2, shelf_model->item_count()); |
+ CloseAppWindow(window3); |
+ // Closed window3 that was shown in shelf. item_count would decrease |
+ EXPECT_EQ(item_count + 1, shelf_model->item_count()); |
+ CloseAppWindow(window2); |
+ // Closed window2 - there is no other window in that group and item_count |
+ // would decrease |
+ EXPECT_EQ(item_count, shelf_model->item_count()); |
+} |
+ |
// Checks that the browser Alt "tabbing" is properly done. |
IN_PROC_BROWSER_TEST_F(ShelfAppBrowserTestNoDefaultBrowser, |
AltNumberBrowserTabbing) { |