Index: chrome/browser/ui/app_list/app_list_service_interactive_uitest.cc |
diff --git a/chrome/browser/ui/app_list/app_list_service_interactive_uitest.cc b/chrome/browser/ui/app_list/app_list_service_interactive_uitest.cc |
index f8690d71d2cfab2defa6a590b125ddb1b68890ef..5751771c739d9d46cd554e86860770b6f3a7c1c1 100644 |
--- a/chrome/browser/ui/app_list/app_list_service_interactive_uitest.cc |
+++ b/chrome/browser/ui/app_list/app_list_service_interactive_uitest.cc |
@@ -12,17 +12,21 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/profiles/profile.h" |
+#include "chrome/browser/profiles/profile_info_cache.h" |
#include "chrome/browser/profiles/profile_manager.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/browser/ui/host_desktop.h" |
#include "chrome/browser/ui/startup/startup_browser_creator.h" |
+#include "chrome/browser/ui/user_manager.h" |
#include "chrome/common/chrome_constants.h" |
#include "chrome/common/chrome_paths.h" |
#include "chrome/common/chrome_switches.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/test/base/in_process_browser_test.h" |
+#include "chrome/test/base/testing_browser_process.h" |
+#include "chrome/test/base/testing_profile_manager.h" |
#include "content/public/test/test_utils.h" |
#include "ui/app_list/app_list_model.h" |
#include "ui/app_list/search_box_model.h" |
@@ -39,6 +43,9 @@ class AppListServiceInteractiveTest : public InProcessBrowserTest { |
protected: |
Profile* profile2_; |
+ ProfileInfoCache* profile_info_cache() { |
+ return &(g_browser_process->profile_manager()->GetProfileInfoCache()); |
+ } |
private: |
DISALLOW_COPY_AND_ASSIGN(AppListServiceInteractiveTest); |
@@ -49,6 +56,7 @@ class AppListServiceInteractiveTest : public InProcessBrowserTest { |
#if defined(OS_CHROMEOS) |
#define MAYBE_ShowAndDismiss DISABLED_ShowAndDismiss |
#define MAYBE_SwitchAppListProfiles DISABLED_SwitchAppListProfiles |
+#define MAYBE_SwitchAppListLockedProfile DISABLED_SwitchAppListLockedProfile |
#define MAYBE_SwitchAppListProfilesDuringSearch \ |
DISABLED_SwitchAppListProfilesDuringSearch |
#define MAYBE_ShowAppListNonDefaultProfile \ |
@@ -57,6 +65,7 @@ class AppListServiceInteractiveTest : public InProcessBrowserTest { |
#else |
#define MAYBE_ShowAndDismiss ShowAndDismiss |
#define MAYBE_SwitchAppListProfiles SwitchAppListProfiles |
+#define MAYBE_SwitchAppListLockedProfile SwitchAppListLockedProfile |
#define MAYBE_SwitchAppListProfilesDuringSearch \ |
SwitchAppListProfilesDuringSearch |
#define MAYBE_ShowAppListNonDefaultProfile ShowAppListNonDefaultProfile |
@@ -107,6 +116,48 @@ IN_PROC_BROWSER_TEST_F(AppListServiceInteractiveTest, |
controller->DismissView(); |
} |
+// Switch profiles on the app list while it is showing. |
+IN_PROC_BROWSER_TEST_F(AppListServiceInteractiveTest, |
+ MAYBE_SwitchAppListLockedProfile) { |
+ InitSecondProfile(); |
+ |
+ AppListService* service = test::GetAppListService(); |
+ ASSERT_TRUE(service); |
+ |
+ AppListControllerDelegate* controller(service->GetControllerDelegate()); |
+ ASSERT_TRUE(controller); |
+ |
+ // Open the app list with the browser's profile. |
+ ASSERT_FALSE(service->IsAppListVisible()); |
tapted
2015/01/21 22:47:20
nit: ASSERT -> EXPECT (here and all following)
I
Mike Lerman
2015/01/23 16:58:33
Done - all the NULL tests are ASSERTs and all the
|
+ controller->ShowForProfileByPath(browser()->profile()->GetPath()); |
+ app_list::AppListModel* model = test::GetAppListModel(service); |
+ ASSERT_TRUE(model); |
+ |
+ base::RunLoop().RunUntilIdle(); |
+ |
+ ASSERT_TRUE(service->IsAppListVisible()); |
+ ASSERT_EQ(browser()->profile(), service->GetCurrentAppListProfile()); |
+ |
+ // Lock the second profile. |
+ profile_info_cache()->SetProfileSigninRequiredAtIndex( |
+ profile_info_cache()->GetIndexOfProfileWithPath(profile2_->GetPath()), |
+ true); |
+ |
+ // Attempt to open the app list with the second profile. |
+ controller->ShowForProfileByPath(profile2_->GetPath()); |
+ model = test::GetAppListModel(service); |
+ ASSERT_TRUE(model); |
tapted
2015/01/21 22:47:20
note I think this would mean that the app launcher
Mike Lerman
2015/01/23 16:58:33
Ah, too much blind copy-pasting. Thanks!
tapted
2015/01/27 02:52:54
Sorry, I meant that if that expectation is true it
Mike Lerman
2015/01/27 14:59:49
You mention that the fact that it's not-NULL is "i
tapted
2015/01/27 22:55:01
`AppListServiceImpl::OnProfileWillBeRemoved()` has
|
+ base::RunLoop().RunUntilIdle(); |
+ |
+ // App list stays hidden; the UserManager shows instead. |
+ ASSERT_FALSE(service->IsAppListVisible()); |
+ ASSERT_TRUE(UserManager::IsShowing()); |
+ |
+ controller->DismissView(); |
+ // We need to hide the User Manager or else the process can't die. |
+ UserManager::Hide(); |
+} |
+ |
// Test switching app list profiles while search results are visibile. |
IN_PROC_BROWSER_TEST_F(AppListServiceInteractiveTest, |
MAYBE_SwitchAppListProfilesDuringSearch) { |