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 1ac9be8740bc117d3198666d32ed13864f4e6e66..03e5a9fb039784383ea25241c9d4aec20383c540 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 |
@@ -5,8 +5,10 @@ |
#include "chrome/browser/ui/app_list/app_list_service.h" |
#include "base/command_line.h" |
+#include "base/json/json_file_value_serializer.h" |
#include "base/memory/scoped_ptr.h" |
#include "base/message_loop/message_loop.h" |
+#include "base/path_service.h" |
#include "base/strings/utf_string_conversions.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -15,7 +17,10 @@ |
#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/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/ui_test_utils.h" |
#include "ui/app_list/app_list_model.h" |
@@ -55,18 +60,21 @@ class AppListServiceInteractiveTest : public InProcessBrowserTest { |
DISALLOW_COPY_AND_ASSIGN(AppListServiceInteractiveTest); |
}; |
-// ChromeOS does not support ShowForProfile(), or profile switching, because |
-// the browser instance is only ever associated with a single profile. |
+// ChromeOS does not support ShowForProfile(), or profile switching within the |
+// app list. Profile switching on CrOS goes through a different code path. |
#if defined(OS_CHROMEOS) |
#define MAYBE_ShowAndDismiss DISABLED_ShowAndDismiss |
#define MAYBE_SwitchAppListProfiles DISABLED_SwitchAppListProfiles |
#define MAYBE_SwitchAppListProfilesDuringSearch \ |
DISABLED_SwitchAppListProfilesDuringSearch |
+#define MAYBE_ShowAppListNonDefaultProfile \ |
+ DISABLED_ShowAppListNonDefaultProfile |
#else |
#define MAYBE_ShowAndDismiss ShowAndDismiss |
#define MAYBE_SwitchAppListProfiles SwitchAppListProfiles |
#define MAYBE_SwitchAppListProfilesDuringSearch \ |
SwitchAppListProfilesDuringSearch |
+#define MAYBE_ShowAppListNonDefaultProfile ShowAppListNonDefaultProfile |
#endif |
// Show the app list, then dismiss it. |
@@ -176,3 +184,60 @@ IN_PROC_BROWSER_TEST_F(ShowAppListInteractiveTest, ShowAppListFlag) { |
CreateBrowser(service->GetCurrentAppListProfile()); |
service->DismissAppList(); |
} |
+ |
+// Interactive UI test that creates a non-default profile and configures it for |
+// the --show-app-list flag. |
+class ShowAppListNonDefaultInteractiveTest : public ShowAppListInteractiveTest { |
+ public: |
+ ShowAppListNonDefaultInteractiveTest() |
+ : second_profile_name_(FILE_PATH_LITERAL("Profile 1")) { |
+ } |
+ |
+ virtual bool SetUpUserDataDirectory() OVERRIDE { |
+ // Create a temp dir for "Profile 1" and seed the user data dir with a Local |
+ // State file configuring the app list to use it. |
+ base::FilePath user_data_dir; |
+ CHECK(PathService::Get(chrome::DIR_USER_DATA, &user_data_dir)); |
+ base::FilePath profile_path = user_data_dir.Append(second_profile_name_); |
+ CHECK(second_profile_temp_dir_.Set(profile_path)); |
+ |
+ base::FilePath local_pref_path = |
+ user_data_dir.Append(chrome::kLocalStateFilename); |
+ base::DictionaryValue dict; |
+ dict.SetString(prefs::kAppListProfile, |
+ second_profile_name_.MaybeAsASCII()); |
+ CHECK(JSONFileValueSerializer(local_pref_path).Serialize(dict)); |
+ |
+ return InProcessBrowserTest::SetUpUserDataDirectory(); |
+ } |
+ |
+ protected: |
+ const base::FilePath second_profile_name_; |
+ base::ScopedTempDir second_profile_temp_dir_; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(ShowAppListNonDefaultInteractiveTest); |
+}; |
+ |
+// Test showing the app list for a profile that doesn't match the browser |
+// profile. |
+IN_PROC_BROWSER_TEST_F(ShowAppListNonDefaultInteractiveTest, |
+ MAYBE_ShowAppListNonDefaultProfile) { |
+ AppListService* service = test::GetAppListService(); |
+ EXPECT_TRUE(service->IsAppListVisible()); |
+ EXPECT_EQ(second_profile_name_.value(), |
+ service->GetCurrentAppListProfile()->GetPath().BaseName().value()); |
+ |
+ // Check that the default profile hasn't been loaded. |
+ ProfileManager* profile_manager = g_browser_process->profile_manager(); |
+ EXPECT_EQ(1u, profile_manager->GetNumberOfProfiles()); |
+ |
+ // Create a browser for the Default profile. This stops MaybeTeminate being |
+ // called when the app list window is dismissed. Use the last used browser |
+ // profile to verify that it is different and causes ProfileManager to load a |
+ // new profile. |
+ CreateBrowser(profile_manager->GetLastUsedProfile()); |
+ EXPECT_EQ(2u, profile_manager->GetNumberOfProfiles()); |
+ |
+ service->DismissAppList(); |
+} |