Skip to content

Commit

Permalink
chrome: Fix assertion when clicking the incognito profile button (see…
Browse files Browse the repository at this point in the history
… issue chromiumembedded#2969)

Profile::IsIncognitoProfile() currently returns false for CEF incognito profiles
because they are not the primary OTR profile. At the same time, we don't
necessarily want IsIncognitoProfile() to return true for CEF profiles because,
among other things, that causes the BrowserView to apply the dark toolbar theme.
Instead, this change updates ProfileMenu expectations to support the CEF
incognito profiles without otherwise modifying the incognito behavior.

Note that the IsIncognitoProfile() implementation has recently changed in
https://crrev.com/7bf6eb2497 and the conclusions in this commit will likely need
to be revisited in an upcoming Chromium update.
  • Loading branch information
magreenblatt committed Apr 12, 2021
1 parent 10b7a44 commit d98971f
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 0 deletions.
5 changes: 5 additions & 0 deletions patch/patch.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -243,6 +243,11 @@ patches = [
# https://bitbucket.org/chromiumembedded/cef/issues/2969
'name': 'chrome_browser_profiles',
},
{
# chrome: Fix assertion when clicking the incognito profile button.
# https://bitbucket.org/chromiumembedded/cef/issues/2969
'name': 'chrome_browser_profile_menu',
},
{
# Show the CEF Save As dialog.
# https://bitbucket.org/chromiumembedded/cef/issues/2613
Expand Down
45 changes: 45 additions & 0 deletions patch/patches/chrome_browser_profile_menu.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
diff --git chrome/browser/profiles/profile_window.cc chrome/browser/profiles/profile_window.cc
index 691ac8eea4fd..eda2d1c1f224 100644
--- chrome/browser/profiles/profile_window.cc
+++ chrome/browser/profiles/profile_window.cc
@@ -335,7 +335,9 @@ void BubbleViewModeFromAvatarBubbleMode(BrowserWindow::AvatarBubbleMode mode,
*bubble_view_mode = BUBBLE_VIEW_MODE_PROFILE_CHOOSER;
return;
case BrowserWindow::AVATAR_BUBBLE_MODE_DEFAULT:
- *bubble_view_mode = profile->IsIncognitoProfile()
+ *bubble_view_mode = profile->IsIncognitoProfile() ||
+ (profile->IsOffTheRecord() &&
+ profile->GetOTRProfileID().IsUniqueForCEF())
? profiles::BUBBLE_VIEW_MODE_INCOGNITO
: profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER;
}
diff --git chrome/browser/ui/views/profiles/incognito_menu_view.cc chrome/browser/ui/views/profiles/incognito_menu_view.cc
index f8285d1b6ec1..1f526a44a0b6 100644
--- chrome/browser/ui/views/profiles/incognito_menu_view.cc
+++ chrome/browser/ui/views/profiles/incognito_menu_view.cc
@@ -37,7 +37,9 @@
IncognitoMenuView::IncognitoMenuView(views::Button* anchor_button,
Browser* browser)
: ProfileMenuViewBase(anchor_button, browser) {
- DCHECK(browser->profile()->IsIncognitoProfile());
+ DCHECK(browser->profile()->IsIncognitoProfile() ||
+ (browser->profile()->IsOffTheRecord() &&
+ browser->profile()->GetOTRProfileID().IsUniqueForCEF()));
GetViewAccessibility().OverrideName(GetAccessibleWindowTitle());

chrome::RecordDialogCreation(
diff --git chrome/browser/ui/views/profiles/profile_menu_view_base.cc chrome/browser/ui/views/profiles/profile_menu_view_base.cc
index c35334dea810..e1e9b453462f 100644
--- chrome/browser/ui/views/profiles/profile_menu_view_base.cc
+++ chrome/browser/ui/views/profiles/profile_menu_view_base.cc
@@ -494,7 +494,9 @@ void ProfileMenuViewBase::ShowBubble(
ProfileMenuViewBase* bubble;

if (view_mode == profiles::BUBBLE_VIEW_MODE_INCOGNITO) {
- DCHECK(browser->profile()->IsIncognitoProfile());
+ DCHECK(browser->profile()->IsIncognitoProfile() ||
+ (browser->profile()->IsOffTheRecord() &&
+ browser->profile()->GetOTRProfileID().IsUniqueForCEF()));
bubble = new IncognitoMenuView(anchor_button, browser);
} else {
DCHECK_EQ(profiles::BUBBLE_VIEW_MODE_PROFILE_CHOOSER, view_mode);

0 comments on commit d98971f

Please sign in to comment.