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

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

Issue 508813002: Move ownership of the AppListViewDelegate into the AppListService (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix comments Created 6 years, 3 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
Index: chrome/browser/ui/app_list/app_list_service_impl_browsertest.cc
diff --git a/chrome/browser/ui/app_list/app_list_service_impl_browsertest.cc b/chrome/browser/ui/app_list/app_list_service_impl_browsertest.cc
index a54b8ced6734fffd33ad6d5b853424675e1bcf07..10b4810a203be6445c934e9345d301cdcee09b28 100644
--- a/chrome/browser/ui/app_list/app_list_service_impl_browsertest.cc
+++ b/chrome/browser/ui/app_list/app_list_service_impl_browsertest.cc
@@ -7,6 +7,7 @@
#include "base/prefs/pref_service.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/profile_manager.h"
+#include "chrome/browser/ui/app_list/app_list_view_delegate.h"
#include "chrome/browser/ui/app_list/test/chrome_app_list_test_support.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/common/pref_names.h"
@@ -20,6 +21,7 @@ class AppListServiceImplTestApi {
explicit AppListServiceImplTestApi(AppListServiceImpl* impl) : impl_(impl) {}
ProfileLoader* profile_loader() { return impl_->profile_loader_.get(); }
+ AppListViewDelegate* view_delegate() { return impl_->view_delegate_.get(); }
private:
AppListServiceImpl* impl_;
@@ -102,3 +104,47 @@ IN_PROC_BROWSER_TEST_F(AppListServiceImplBrowserTest, ShowLoadedProfiles) {
EXPECT_EQ(profile2, service_->GetCurrentAppListProfile());
#endif
}
+
+// Tests that the AppListViewDelegate is created lazily.
+IN_PROC_BROWSER_TEST_F(AppListServiceImplBrowserTest, CreatedLazily) {
+ EXPECT_FALSE(test_api_->view_delegate());
+ service_->ShowForProfile(browser()->profile());
+ EXPECT_TRUE(test_api_->view_delegate());
+}
+
+// Tests that deleting a profile properly clears the app list view delegate, but
+// doesn't destroy it. Disabled on ChromeOS, since profiles can't be deleted
+// this way (the second profile isn't signed in, so the test fails when creating
+// UserCloudPolicyManagerChromeOS).
+#if defined(OS_CHROMEOS)
+#define MAYBE_DeletingProfileUpdatesViewDelegate \
+ DISABLED_DeletingProfileUpdatesViewDelegate
+#else
+#define MAYBE_DeletingProfileUpdatesViewDelegate \
+ DeletingProfileUpdatesViewDelegate
+#endif
+IN_PROC_BROWSER_TEST_F(AppListServiceImplBrowserTest,
+ MAYBE_DeletingProfileUpdatesViewDelegate) {
+ Profile* second_profile = test::CreateSecondProfileAsync();
+ service_->ShowForProfile(second_profile);
+ AppListViewDelegate* view_delegate = test_api_->view_delegate();
+
+ EXPECT_TRUE(view_delegate);
+ EXPECT_EQ(view_delegate->profile(), second_profile);
+
+ ProfileManager* profile_manager = g_browser_process->profile_manager();
+
+ // Delete the profile being used by the app list.
+ profile_manager->ScheduleProfileForDeletion(second_profile->GetPath(),
+ ProfileManager::CreateCallback());
+
+ // View delegate doesn't change when changing profiles.
+ EXPECT_EQ(view_delegate, test_api_->view_delegate());
+
+ // But the profile gets cleared until shown again.
+ EXPECT_FALSE(view_delegate->profile());
+ service_->ShowForProfile(browser()->profile());
+
+ EXPECT_EQ(view_delegate, test_api_->view_delegate());
+ EXPECT_EQ(view_delegate->profile(), browser()->profile());
+}
« no previous file with comments | « chrome/browser/ui/app_list/app_list_service_impl.cc ('k') | chrome/browser/ui/app_list/app_list_service_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698