Index: chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app_browsertest.cc |
diff --git a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app_browsertest.cc b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app_browsertest.cc |
index 23b41f79528fb7b282e57da85bd96b896abaa2a5..72975e298a2eac0acb884912f4fedbbc1531169c 100644 |
--- a/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app_browsertest.cc |
+++ b/chrome/browser/ui/ash/launcher/chrome_launcher_controller_per_app_browsertest.cc |
@@ -17,6 +17,7 @@ |
#include "ash/test/launcher_view_test_api.h" |
#include "ash/test/shell_test_api.h" |
#include "ash/wm/window_util.h" |
+#include "base/strings/stringprintf.h" |
#include "base/strings/utf_string_conversions.h" |
#include "chrome/browser/apps/app_browsertest_util.h" |
#include "chrome/browser/automation/automation_util.h" |
@@ -251,6 +252,13 @@ class LauncherPerAppAppBrowserTest : public ExtensionBrowserTest { |
launcher_->ActivateLauncherItem(id); |
} |
+ ash::LauncherID PinFakeApp(const std::string& name) { |
+ ChromeLauncherController* controller = |
+ static_cast<ChromeLauncherController*>(launcher_->delegate()); |
+ return controller->CreateAppShortcutLauncherItem( |
+ name, model_->item_count()); |
+ } |
+ |
ash::Launcher* launcher_; |
ash::LauncherModel* model_; |
@@ -1290,6 +1298,26 @@ IN_PROC_BROWSER_TEST_F(LauncherPlatformPerAppAppBrowserTest, |
EXPECT_TRUE(window1a->IsActive()); |
} |
+// Test that we can launch a platform app panel and get a running item. |
+IN_PROC_BROWSER_TEST_F(LauncherPlatformPerAppAppBrowserTest, |
+ LaunchPanelWindow) { |
+ int item_count = launcher_model()->item_count(); |
+ const Extension* extension = LoadAndLaunchPlatformApp("launch"); |
+ ShellWindow::CreateParams params; |
+ params.window_type = ShellWindow::WINDOW_TYPE_PANEL; |
+ params.focused = false; |
+ ShellWindow* window = CreateShellWindowFromParams(extension, params); |
+ ++item_count; |
+ ASSERT_EQ(item_count, launcher_model()->item_count()); |
+ const ash::LauncherItem& item = GetLastLauncherPanelItem(); |
+ EXPECT_EQ(ash::TYPE_APP_PANEL, item.type); |
+ // Opening a panel does not activate it. |
+ EXPECT_EQ(ash::STATUS_RUNNING, item.status); |
+ CloseShellWindow(window); |
+ --item_count; |
+ EXPECT_EQ(item_count, launcher_model()->item_count()); |
+} |
+ |
// Checks that the browser Alt "tabbing" is properly done. |
IN_PROC_BROWSER_TEST_F(LauncherPerAppAppBrowserTestNoDefaultBrowser, |
AltNumberBrowserTabbing) { |
@@ -1614,3 +1642,35 @@ IN_PROC_BROWSER_TEST_F(LauncherPerAppAppBrowserTest, |
EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); |
EXPECT_EQ(browser_id, controller->GetIDByWindow(window)); |
} |
+ |
+IN_PROC_BROWSER_TEST_F(LauncherPerAppAppBrowserTest, OverflowBubble) { |
Mr4D (OOO till 08-26)
2013/08/16 22:43:22
How did this get into this CL?
simonhong_
2013/08/19 05:26:11
This test is moved from (previous)chrome_launcher_
|
+ // Make sure to have a browser window |
+ chrome::NewTab(browser()); |
+ |
+ // No overflow yet. |
+ EXPECT_FALSE(launcher_->IsShowingOverflowBubble()); |
+ |
+ ash::test::LauncherViewTestAPI test(launcher_->GetLauncherViewForTest()); |
+ |
+ int items_added = 0; |
+ while (!test.IsOverflowButtonVisible()) { |
+ std::string fake_app_id = base::StringPrintf("fake_app_%d", items_added); |
+ PinFakeApp(fake_app_id); |
+ |
+ ++items_added; |
+ ASSERT_LT(items_added, 10000); |
+ } |
+ |
+ // Now show overflow bubble. |
+ test.ShowOverflowBubble(); |
+ EXPECT_TRUE(launcher_->IsShowingOverflowBubble()); |
+ |
+ // Unpin first pinned app and there should be no crash. |
+ ChromeLauncherController* controller = |
+ static_cast<ChromeLauncherController*>(launcher_->delegate()); |
+ controller->UnpinAppsWithID(std::string("fake_app_0")); |
+ |
+ test.RunMessageLoopUntilAnimationsDone(); |
+ EXPECT_FALSE(launcher_->IsShowingOverflowBubble()); |
+} |
+ |