Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2892)

Unified Diff: chrome/browser/ui/app_list/app_list_service_views_browsertest.cc

Issue 276833002: Make the App Info Dialog appear modal (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added new browser test Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/app_list/app_list_service_views_browsertest.cc
diff --git a/chrome/browser/ui/app_list/app_list_service_views_browsertest.cc b/chrome/browser/ui/app_list/app_list_service_views_browsertest.cc
index 7bee1a8988873b191c3bf76423b50814fa465f7d..99c45792f26d1e92bcd96271ec6898b414a6b390 100644
--- a/chrome/browser/ui/app_list/app_list_service_views_browsertest.cc
+++ b/chrome/browser/ui/app_list/app_list_service_views_browsertest.cc
@@ -4,10 +4,15 @@
#include "chrome/browser/ui/app_list/app_list_service_views.h"
+#include "base/path_service.h"
#include "base/run_loop.h"
+#include "chrome/browser/extensions/extension_browsertest.h"
+#include "chrome/browser/ui/app_list/app_list_controller_delegate.h"
#include "chrome/browser/ui/app_list/test/chrome_app_list_test_support.h"
#include "chrome/browser/ui/browser.h"
+#include "chrome/common/chrome_paths.h"
#include "chrome/test/base/in_process_browser_test.h"
+#include "ui/app_list/app_list_switches.h"
#include "ui/views/widget/widget.h"
// Browser Test for AppListService on Views platforms.
@@ -42,3 +47,60 @@ IN_PROC_BROWSER_TEST_F(AppListServiceViewsBrowserTest, NativeClose) {
// Note: no need to sink message queue.
EXPECT_FALSE(service->GetAppListWindow());
}
+
+// Browser Test for AppListController that ensures the App Info dialog opens
+// correctly.
+typedef ExtensionBrowserTest AppListControllerAppInfoDialogBrowserTest;
+
+// Test the DoShowAppInfoFlow function of the controller delegate.
+IN_PROC_BROWSER_TEST_F(AppListControllerAppInfoDialogBrowserTest,
+ DoShowAppInfoFlow) {
+ // Install an extension to open the dialog for.
+ test::SigninProfile(browser()->profile());
+ base::FilePath test_extension_path;
+ ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &test_extension_path));
+ test_extension_path = test_extension_path.AppendASCII("extensions")
+ .AppendASCII("platform_apps")
+ .AppendASCII("minimal");
+ const extensions::Extension* extension = InstallExtension(
+ test_extension_path, 1 /* expected_change: new install */);
+ ASSERT_TRUE(extension);
+
+ // Open the app list window.
+ AppListService* service = test::GetAppListService();
+ EXPECT_FALSE(service->GetAppListWindow());
+
+ service->ShowForProfile(browser()->profile());
+ gfx::NativeWindow window = service->GetAppListWindow();
+ EXPECT_TRUE(window);
+
+ views::Widget* widget = views::Widget::GetWidgetForNativeWindow(window);
+ ASSERT_TRUE(widget);
+
+ // Enable the 'App Info dialog' command switch so that the dialog is enabled.
+ CommandLine::ForCurrentProcess()->AppendSwitch(
tapted 2014/05/23 02:09:21 kindaofanit: for browser tests, this should be don
sashab 2014/05/23 06:10:21 Done.
+ app_list::switches::kEnableAppInfo);
+
+ // Open the app info dialog.
+ views::Widget::Widgets owned_widgets;
+ widget->GetAllOwnedWidgets(window, &owned_widgets);
+ EXPECT_EQ(0U, owned_widgets.size());
+
+ AppListControllerDelegate* controller(service->GetControllerDelegate());
tapted 2014/05/23 02:09:21 nit (for consistency): controller = service->GetCo
sashab 2014/05/23 06:10:21 Done.
+ ASSERT_TRUE(controller);
+ controller->DoShowAppInfoFlow(browser()->profile(), extension->id());
tapted 2014/05/23 02:09:21 I think this test can be made a lot more compellin
sashab 2014/05/23 06:10:21 Done.
+ base::RunLoop().RunUntilIdle();
+
+ owned_widgets.clear();
+ widget->GetAllOwnedWidgets(window, &owned_widgets);
+ EXPECT_EQ(1U, owned_widgets.size());
+
+ // Close the app info dialog.
+ views::Widget* app_info_dialog = *owned_widgets.begin();
+ app_info_dialog->Close();
+ base::RunLoop().RunUntilIdle();
+
+ owned_widgets.clear();
+ widget->GetAllOwnedWidgets(window, &owned_widgets);
+ EXPECT_EQ(0U, owned_widgets.size());
+}

Powered by Google App Engine
This is Rietveld 408576698