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

Unified Diff: chrome/browser/ui/views/profiles/profile_chooser_view_browsertest.cc

Issue 1304943006: ProfileChooserVIew heap-use-after-free fix (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: small fix Created 5 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/views/profiles/profile_chooser_view_browsertest.cc
diff --git a/chrome/browser/ui/views/profiles/profile_chooser_view_browsertest.cc b/chrome/browser/ui/views/profiles/profile_chooser_view_browsertest.cc
index 00c34db86403cf1327df2c1fd5389adb8018eb15..ae9703848ae9fb6fc53f738142d294824cdf153a 100644
--- a/chrome/browser/ui/views/profiles/profile_chooser_view_browsertest.cc
+++ b/chrome/browser/ui/views/profiles/profile_chooser_view_browsertest.cc
@@ -15,6 +15,7 @@
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/profiles/profile_metrics.h"
#include "chrome/browser/profiles/profiles_state.h"
+#include "chrome/browser/ui/browser_commands.h"
#include "chrome/browser/ui/browser_list.h"
#include "chrome/browser/ui/user_manager.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
@@ -50,6 +51,26 @@ Profile* CreateTestingProfile(const std::string& profile_name) {
return profile;
}
+Profile* CreateProfileOutsideUserDataDir() {
+ base::FilePath path;
+ if (!base::CreateNewTempDirectory(base::FilePath::StringType(), &path))
+ NOTREACHED() << "Could not create directory at " << path.MaybeAsASCII();
+
+ ProfileManager* profile_manager = g_browser_process->profile_manager();
+ Profile* profile =
+ Profile::CreateProfile(path, NULL, Profile::CREATE_MODE_SYNCHRONOUS);
+ profile_manager->RegisterTestingProfile(profile, true, false);
+ return profile;
+}
+
+void CloseBrowser(Browser* browser) {
+ content::WindowedNotificationObserver close_observer(
+ chrome::NOTIFICATION_BROWSER_CLOSED,
+ content::Source<Browser>(browser));
+ chrome::CloseWindow(browser);
+ close_observer.Wait();
+}
+
// Set up the profiles to enable Lock. Takes as parameter a profile that will be
// signed in, and also creates a supervised user (necessary for lock).
void SetupProfilesForLock(Profile* signed_in) {
@@ -184,6 +205,20 @@ class ProfileChooserViewExtensionsTest : public ExtensionBrowserTest {
DISALLOW_COPY_AND_ASSIGN(ProfileChooserViewExtensionsTest);
};
+IN_PROC_BROWSER_TEST_F(ProfileChooserViewExtensionsTest,
+ ProfileChooserOnMultipleBrowsers) {
+ // Test that the profile chooser view should be deleted when the browser is
+ // deleted. Even if the profile is not in user_data_dir.
msw 2015/09/10 23:42:00 Why does the profile's location matter for this te
+ Profile* new_profile = CreateProfileOutsideUserDataDir();
+ Browser* browser = CreateBrowser(new_profile);
+ browser->window()->ShowAvatarBubbleFromAvatarButton(
+ BrowserWindow::AVATAR_BUBBLE_MODE_CONFIRM_SIGNIN,
+ signin::ManageAccountsParams());
+ EXPECT_TRUE(ProfileChooserView::IsShowing());
+ CloseBrowser(browser);
+ ASSERT_FALSE(ProfileChooserView::IsShowing()) << "Bubble was not deleted";
+}
+
IN_PROC_BROWSER_TEST_F(ProfileChooserViewExtensionsTest, SigninButtonHasFocus) {
ASSERT_TRUE(profiles::IsMultipleProfilesEnabled());
ASSERT_NO_FATAL_FAILURE(OpenProfileChooserView(browser()));

Powered by Google App Engine
This is Rietveld 408576698