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

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

Issue 127343004: Avoid loading the last used browser profile in app_controller_mac when it's not needed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix android link error (-> kProfileLastUsed setter is #ifdefed out in profile_manager.cc) Created 6 years, 11 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
« no previous file with comments | « chrome/browser/chrome_browser_main.cc ('k') | chrome/browser/ui/startup/startup_browser_creator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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();
+}
« no previous file with comments | « chrome/browser/chrome_browser_main.cc ('k') | chrome/browser/ui/startup/startup_browser_creator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698