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

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: Do not show avatar_bubble if we can't show avatar_menu 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..366d9b48c2c35b91b76e141fd3f002e339915287 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,28 @@ 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();
+ //PathService::Get(chrome::DIR_USER_DATA, &path);
+ //path = path.AppendASCII("testing");
+
+ 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 +207,19 @@ class ProfileChooserViewExtensionsTest : public ExtensionBrowserTest {
DISALLOW_COPY_AND_ASSIGN(ProfileChooserViewExtensionsTest);
};
+IN_PROC_BROWSER_TEST_F(ProfileChooserViewExtensionsTest,
+ NoProfileChooserOnOutsideUserDataDirProfiles) {
+ // Test that the profile chooser view should be deleted when the browser is
+ // deleted. Even if the profile is not in user_data_dir.
+ Profile* new_profile = CreateProfileOutsideUserDataDir();
+ Browser* browser = CreateBrowser(new_profile);
+ browser->window()->ShowAvatarBubbleFromAvatarButton(
+ BrowserWindow::AVATAR_BUBBLE_MODE_CONFIRM_SIGNIN,
+ signin::ManageAccountsParams());
+ ASSERT_FALSE(ProfileChooserView::IsShowing());
+ CloseBrowser(browser);
+}
+
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