| Index: chrome/browser/ui/app_list/app_list_controller_browsertest.cc
|
| diff --git a/chrome/browser/ui/app_list/app_list_controller_browsertest.cc b/chrome/browser/ui/app_list/app_list_controller_browsertest.cc
|
| index ce2d5b14daa48bb9ae8b0966a98e9ab313ad4cb9..ef0e746c6dff0f28ac1a3e1f0d24527b3c6647ce 100644
|
| --- a/chrome/browser/ui/app_list/app_list_controller_browsertest.cc
|
| +++ b/chrome/browser/ui/app_list/app_list_controller_browsertest.cc
|
| @@ -3,7 +3,7 @@
|
| // found in the LICENSE file.
|
|
|
| #include "base/command_line.h"
|
| -#include "base/files/scoped_temp_dir.h"
|
| +#include "base/file_util.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/path_service.h"
|
| @@ -39,6 +39,18 @@ class AppListControllerBrowserTest : public InProcessBrowserTest {
|
| AppListControllerBrowserTest()
|
| : profile2_(NULL) {}
|
|
|
| + void InitSecondProfile() {
|
| + ProfileManager* profile_manager = g_browser_process->profile_manager();
|
| + base::FilePath temp_profile_dir =
|
| + profile_manager->user_data_dir().AppendASCII("Profile 1");
|
| + profile_manager->CreateProfileAsync(
|
| + temp_profile_dir,
|
| + base::Bind(&AppListControllerBrowserTest::OnProfileCreated,
|
| + this),
|
| + string16(), string16(), std::string());
|
| + content::RunMessageLoop(); // Will stop in OnProfileCreated().
|
| + }
|
| +
|
| void OnProfileCreated(Profile* profile, Profile::CreateStatus status) {
|
| if (status == Profile::CREATE_STATUS_INITIALIZED) {
|
| profile2_ = profile;
|
| @@ -47,7 +59,6 @@ class AppListControllerBrowserTest : public InProcessBrowserTest {
|
| }
|
|
|
| protected:
|
| - base::ScopedTempDir temp_profile_dir_;
|
| Profile* profile2_;
|
|
|
| private:
|
| @@ -86,24 +97,76 @@ IN_PROC_BROWSER_TEST_F(AppListControllerBrowserTest, ShowAndDismiss) {
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(AppListControllerBrowserTest, SwitchAppListProfiles) {
|
| - ProfileManager* profile_manager = g_browser_process->profile_manager();
|
| - ASSERT_TRUE(temp_profile_dir_.CreateUniqueTempDir());
|
| - profile_manager->CreateProfileAsync(
|
| - temp_profile_dir_.path(),
|
| - base::Bind(&AppListControllerBrowserTest::OnProfileCreated,
|
| - this),
|
| - string16(), string16(), std::string());
|
| - content::RunMessageLoop(); // Will stop in OnProfileCreated().
|
| + InitSecondProfile();
|
|
|
| AppListService* service = AppListService::Get();
|
| + scoped_ptr<test::AppListServiceTestApi> test_api(
|
| + test::AppListServiceTestApi::Create(chrome::HOST_DESKTOP_TYPE_NATIVE));
|
| + ASSERT_TRUE(service);
|
| + ASSERT_TRUE(test_api);
|
| +
|
| + scoped_ptr<AppListControllerDelegate> controller(
|
| + service->CreateControllerDelegate());
|
| + ASSERT_TRUE(controller);
|
| +
|
| + // Open the app list with the browser's profile.
|
| ASSERT_FALSE(service->IsAppListVisible());
|
| - service->ShowForProfile(browser()->profile());
|
| + controller->ShowForProfileByPath(browser()->profile()->GetPath());
|
| + app_list::AppListModel* model = test_api->GetAppListModel();
|
| + ASSERT_TRUE(model);
|
| + model->SetSignedIn(true);
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| ASSERT_TRUE(service->IsAppListVisible());
|
| ASSERT_EQ(browser()->profile(), service->GetCurrentAppListProfile());
|
| - service->ShowForProfile(profile2_);
|
| +
|
| + // Open the app list with the second profile.
|
| + controller->ShowForProfileByPath(profile2_->GetPath());
|
| + model = test_api->GetAppListModel();
|
| + ASSERT_TRUE(model);
|
| + model->SetSignedIn(true);
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| ASSERT_TRUE(service->IsAppListVisible());
|
| ASSERT_EQ(profile2_, service->GetCurrentAppListProfile());
|
| - service->DismissAppList();
|
| +
|
| + controller->DismissView();
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(AppListControllerBrowserTest,
|
| + SwitchAppListProfilesDuringSearch) {
|
| + InitSecondProfile();
|
| +
|
| + AppListService* service = AppListService::Get();
|
| + scoped_ptr<test::AppListServiceTestApi> test_api(
|
| + test::AppListServiceTestApi::Create(chrome::HOST_DESKTOP_TYPE_NATIVE));
|
| + ASSERT_TRUE(service);
|
| + ASSERT_TRUE(test_api);
|
| +
|
| + scoped_ptr<AppListControllerDelegate> controller(
|
| + service->CreateControllerDelegate());
|
| + ASSERT_TRUE(controller);
|
| +
|
| + // Set a search with original profile.
|
| + controller->ShowForProfileByPath(browser()->profile()->GetPath());
|
| + app_list::AppListModel* model = test_api->GetAppListModel();
|
| + ASSERT_TRUE(model);
|
| + model->SetSignedIn(true);
|
| + model->search_box()->SetText(ASCIIToUTF16("minimal"));
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + // Switch to the second profile.
|
| + controller->ShowForProfileByPath(profile2_->GetPath());
|
| + model = test_api->GetAppListModel();
|
| + ASSERT_TRUE(model);
|
| + model->SetSignedIn(true);
|
| + base::RunLoop().RunUntilIdle();
|
| +
|
| + // Ensure the search box is empty.
|
| + ASSERT_TRUE(model->search_box()->text().empty());
|
| + ASSERT_EQ(profile2_, service->GetCurrentAppListProfile());
|
| +
|
| + controller->DismissView();
|
| ASSERT_FALSE(service->IsAppListVisible());
|
| }
|
|
|
|
|