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

Unified Diff: chrome/browser/profiles/profile_window_browsertest.cc

Issue 1828143002: Profile path is sent instead of an index to focus a user pod (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix typo and nits Created 4 years, 9 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/profiles/profile_window.cc ('k') | chrome/test/data/webui/profile_window_browsertest.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/profiles/profile_window_browsertest.cc
diff --git a/chrome/browser/profiles/profile_window_browsertest.cc b/chrome/browser/profiles/profile_window_browsertest.cc
index f6b826de6013cb7fb8f6ee79fbd0ec8d30913eeb..7165717e842f3a053a1c8fa8ed29607ff96d7f92 100644
--- a/chrome/browser/profiles/profile_window_browsertest.cc
+++ b/chrome/browser/profiles/profile_window_browsertest.cc
@@ -9,12 +9,15 @@
#include "base/command_line.h"
#include "base/macros.h"
+#include "base/run_loop.h"
#include "base/strings/utf_string_conversions.h"
+#include "base/values.h"
#include "build/build_config.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chrome_notification_types.h"
#include "chrome/browser/history/history_service_factory.h"
+#include "chrome/browser/profiles/profile_attributes_storage.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/search_engines/template_url_service_factory.h"
#include "chrome/browser/signin/signin_manager_factory.h"
@@ -25,6 +28,7 @@
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/search_test_utils.h"
#include "chrome/test/base/ui_test_utils.h"
+#include "chrome/test/base/web_ui_browser_test.h"
#include "components/history/core/browser/history_db_task.h"
#include "components/history/core/browser/history_service.h"
#include "components/search_engines/template_url_service.h"
@@ -33,6 +37,7 @@
#include "content/public/test/browser_test_utils.h"
#include "content/public/test/test_utils.h"
#include "net/test/embedded_test_server/embedded_test_server.h"
+#include "url/gurl.h"
// This test verifies the Desktop implementation of Guest only.
#if !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
@@ -87,6 +92,21 @@ class EmptyAcceleratorHandler : public ui::AcceleratorProvider {
}
};
+base::FilePath CreateTestingProfile(const std::string& name,
+ const std::string& relative_path) {
+ ProfileManager* manager = g_browser_process->profile_manager();
+ ProfileAttributesStorage& storage = manager->GetProfileAttributesStorage();
+ size_t starting_number_of_profiles = storage.GetNumberOfProfiles();
+
+ base::FilePath profile_path =
+ manager->user_data_dir().AppendASCII(relative_path);
+ storage.AddProfile(profile_path, base::ASCIIToUTF16(name), std::string(),
+ base::string16(), 0u, std::string());
+
+ EXPECT_EQ(starting_number_of_profiles + 1u, storage.GetNumberOfProfiles());
+ return profile_path;
+}
+
} // namespace
class ProfileWindowBrowserTest : public InProcessBrowserTest {
@@ -212,4 +232,64 @@ IN_PROC_BROWSER_TEST_F(ProfileWindowBrowserTest, GuestAppMenuLacksBookmarks) {
EXPECT_EQ(-1, model_guest_profile.GetIndexOfCommandId(IDC_BOOKMARKS_MENU));
}
+class ProfileWindowWebUIBrowserTest : public WebUIBrowserTest {
+ public:
+ void OnSystemProfileCreated(std::string* url_to_test,
+ const base::Closure& quit_loop,
+ Profile* profile,
+ const std::string& url) {
+ *url_to_test = url;
+ quit_loop.Run();
+ }
+
+ private:
+ void SetUpOnMainThread() override {
+ WebUIBrowserTest::SetUpOnMainThread();
+ AddLibrary(base::FilePath(
+ FILE_PATH_LITERAL("profile_window_browsertest.js")));
+ }
+};
+
+IN_PROC_BROWSER_TEST_F(ProfileWindowWebUIBrowserTest,
+ UserManagerFocusSingleProfile) {
+ std::string url_to_test;
+ base::RunLoop run_loop;
+ profiles::CreateSystemProfileForUserManager(
+ browser()->profile()->GetPath(),
+ profiles::USER_MANAGER_NO_TUTORIAL,
+ profiles::USER_MANAGER_SELECT_PROFILE_NO_ACTION,
+ base::Bind(&ProfileWindowWebUIBrowserTest::OnSystemProfileCreated,
+ base::Unretained(this),
+ &url_to_test,
+ run_loop.QuitClosure()));
+ run_loop.Run();
+
+ ui_test_utils::NavigateToURL(browser(), GURL(url_to_test));
+ EXPECT_TRUE(RunJavascriptTest("testNoPodFocused"));
+}
+
+IN_PROC_BROWSER_TEST_F(ProfileWindowWebUIBrowserTest,
+ UserManagerFocusMultipleProfiles) {
+ // The profile names are meant to sort differently by ICU collation and by
+ // naive sorting. See crbug/596280.
+ base::FilePath expected_path = CreateTestingProfile("#abc", "Profile 1");
+ CreateTestingProfile("?abc", "Profile 2");
+
+ std::string url_to_test;
+ base::RunLoop run_loop;
+ profiles::CreateSystemProfileForUserManager(
+ expected_path,
+ profiles::USER_MANAGER_NO_TUTORIAL,
+ profiles::USER_MANAGER_SELECT_PROFILE_NO_ACTION,
+ base::Bind(&ProfileWindowWebUIBrowserTest::OnSystemProfileCreated,
+ base::Unretained(this),
+ &url_to_test,
+ run_loop.QuitClosure()));
+ run_loop.Run();
+
+ ui_test_utils::NavigateToURL(browser(), GURL(url_to_test));
+ EXPECT_TRUE(RunJavascriptTest(
+ "testPodFocused", new base::StringValue(expected_path.AsUTF8Unsafe())));
+}
+
#endif // !defined(OS_CHROMEOS) && !defined(OS_ANDROID)
« no previous file with comments | « chrome/browser/profiles/profile_window.cc ('k') | chrome/test/data/webui/profile_window_browsertest.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698