From 7a25f0410a65523c94212651d88cfb8dba52c445 Mon Sep 17 00:00:00 2001 From: mkarolin Date: Fri, 11 Oct 2019 20:31:04 -0400 Subject: [PATCH] Fixes Tor avatar menu after c78 bump. Also, removed no longer used override in chromium_src's profiles_state.cc. Fixes brave/brave-browser#6451 --- .../profiles/brave_avatar_toolbar_button.cc | 6 ++++ .../profiles/brave_avatar_toolbar_button.h | 3 ++ .../profiles/brave_incognito_menu_view.cc | 36 +++++++++++++++++++ .../profiles/brave_incognito_menu_view.h | 11 +++--- .../chrome/browser/profiles/profiles_state.cc | 17 --------- ...ws-profiles-avatar_toolbar_button.cc.patch | 12 +++---- 6 files changed, 58 insertions(+), 27 deletions(-) diff --git a/browser/ui/views/profiles/brave_avatar_toolbar_button.cc b/browser/ui/views/profiles/brave_avatar_toolbar_button.cc index 7cbaf424647c..5e758f8f99ab 100644 --- a/browser/ui/views/profiles/brave_avatar_toolbar_button.cc +++ b/browser/ui/views/profiles/brave_avatar_toolbar_button.cc @@ -14,6 +14,12 @@ #include "ui/gfx/image/image.h" #include "ui/gfx/paint_vector_icon.h" +void BraveAvatarToolbarButton::SetText(const base::string16& text) { + // We only want the icon for Tor profile. + AvatarToolbarButton::SetText(brave::IsTorProfile(profile_) ? base::string16() + : text); +} + gfx::ImageSkia BraveAvatarToolbarButton::GetAvatarIcon( const gfx::Image& gaia_image) const { if (brave::IsTorProfile(profile_)) { diff --git a/browser/ui/views/profiles/brave_avatar_toolbar_button.h b/browser/ui/views/profiles/brave_avatar_toolbar_button.h index e0ec10795275..161017963a24 100644 --- a/browser/ui/views/profiles/brave_avatar_toolbar_button.h +++ b/browser/ui/views/profiles/brave_avatar_toolbar_button.h @@ -12,6 +12,9 @@ class BraveAvatarToolbarButton : public AvatarToolbarButton { public: using AvatarToolbarButton::AvatarToolbarButton; + // views::LabelButton: + void SetText(const base::string16& text) override; + private: gfx::ImageSkia GetAvatarIcon(const gfx::Image& gaia_image) const override; DISALLOW_COPY_AND_ASSIGN(BraveAvatarToolbarButton); diff --git a/browser/ui/views/profiles/brave_incognito_menu_view.cc b/browser/ui/views/profiles/brave_incognito_menu_view.cc index bf79e9c640a1..c5d969c38d79 100644 --- a/browser/ui/views/profiles/brave_incognito_menu_view.cc +++ b/browser/ui/views/profiles/brave_incognito_menu_view.cc @@ -8,14 +8,50 @@ #include #include +#include "brave/browser/profiles/profile_util.h" #include "brave/browser/ui/views/profiles/brave_profile_menu_view_helper.h" +#include "brave/grit/brave_generated_resources.h" +#include "chrome/app/vector_icons/vector_icons.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile_manager.h" #include "chrome/browser/profiles/profile_window.h" #include "chrome/browser/ui/browser.h" +#include "chrome/browser/ui/views/chrome_layout_provider.h" #include "chrome/browser/ui/views/hover_button.h" +#include "ui/base/l10n/l10n_util.h" #include "ui/views/controls/button/button.h" +void BraveIncognitoMenuView::BuildMenu() { + if (!brave::IsTorProfile(browser()->profile())) { + IncognitoMenuView::BuildMenu(); + return; + } + + ChromeLayoutProvider* provider = ChromeLayoutProvider::Get(); + const SkColor icon_color = provider->GetTypographyProvider().GetColor( + *this, views::style::CONTEXT_LABEL, views::style::STYLE_PRIMARY); + auto incognito_icon = std::make_unique(); + incognito_icon->SetImage( + gfx::CreateVectorIcon(kIncognitoProfileIcon, icon_color)); + + AddMenuGroup(false /* add_separator */); + CreateAndAddTitleCard(std::move(incognito_icon), + l10n_util::GetStringUTF16(IDS_TOR_PROFILE_NAME), + base::string16(), base::RepeatingClosure()); + + AddMenuGroup(); + exit_button_ = CreateAndAddButton( + gfx::CreateVectorIcon(kCloseAllIcon, 16, gfx::kChromeIconGrey), + l10n_util::GetStringUTF16(IDS_PROFILES_EXIT_TOR), + base::BindRepeating(&IncognitoMenuView::OnExitButtonClicked, + base::Unretained(this))); + return; + + SetIdentityInfo( + gfx::Image(gfx::CreateVectorIcon(kIncognitoProfileIcon, icon_color)), + l10n_util::GetStringUTF16(IDS_TOR_PROFILE_NAME), base::string16()); +} + void BraveIncognitoMenuView::AddTorButton() { if (brave::ShouldShowTorProfileButton(browser()->profile())) { tor_profile_button_ = CreateAndAddButton( diff --git a/browser/ui/views/profiles/brave_incognito_menu_view.h b/browser/ui/views/profiles/brave_incognito_menu_view.h index ec147d25ff0e..f0aeead3f859 100644 --- a/browser/ui/views/profiles/brave_incognito_menu_view.h +++ b/browser/ui/views/profiles/brave_incognito_menu_view.h @@ -9,14 +9,17 @@ #include "chrome/browser/ui/views/profiles/incognito_menu_view.h" class BraveIncognitoMenuView : public IncognitoMenuView { - private: - friend class IncognitoMenuView; - + public: using IncognitoMenuView::IncognitoMenuView; ~BraveIncognitoMenuView() override = default; - void AddTorButton(); + // ProfileMenuViewBase: + void BuildMenu() override; + private: + friend class IncognitoMenuView; + + void AddTorButton(); void OnTorProfileButtonClicked(); views::Button* tor_profile_button_ = nullptr; diff --git a/chromium_src/chrome/browser/profiles/profiles_state.cc b/chromium_src/chrome/browser/profiles/profiles_state.cc index 6d1c5766794a..015347abfb0e 100644 --- a/chromium_src/chrome/browser/profiles/profiles_state.cc +++ b/chromium_src/chrome/browser/profiles/profiles_state.cc @@ -6,11 +6,9 @@ #include "brave/browser/profiles/brave_profile_manager.h" #include "brave/browser/profiles/profile_util.h" #include "ui/gfx/text_elider.h" -#define GetAvatarButtonTextForProfile GetAvatarButtonTextForProfile_ChromiumImpl #define GetAvatarNameForProfile GetAvatarNameForProfile_ChromiumImpl #include "../../../../../../chrome/browser/profiles/profiles_state.cc" #undef GetAvatarNameForProfile -#undef GetAvatarButtonTextForProfile namespace profiles { @@ -20,21 +18,6 @@ base::string16 GetAvatarNameForProfile(const base::FilePath& profile_path) { return l10n_util::GetStringUTF16(IDS_TOR_PROFILE_NAME); return GetAvatarNameForProfile_ChromiumImpl(profile_path); } - -#if !defined(OS_CHROMEOS) -base::string16 GetAvatarButtonTextForProfile(Profile* profile) { - const int kMaxCharactersToDisplay = 15; - base::string16 name = GetAvatarNameForProfile(profile->GetPath()); - name = gfx::TruncateString(name, - kMaxCharactersToDisplay, - gfx::CHARACTER_BREAK); - if (profile->IsLegacySupervised()) { - name = l10n_util::GetStringFUTF16( - IDS_LEGACY_SUPERVISED_USER_NEW_AVATAR_LABEL, name); - } - return name; -} -#endif // !defined(OS_CHROMEOS) #endif // !defined(OS_ANDROID) } // namespace profiles diff --git a/patches/chrome-browser-ui-views-profiles-avatar_toolbar_button.cc.patch b/patches/chrome-browser-ui-views-profiles-avatar_toolbar_button.cc.patch index f9cdacc1848b..9e5f29ebc7e0 100644 --- a/patches/chrome-browser-ui-views-profiles-avatar_toolbar_button.cc.patch +++ b/patches/chrome-browser-ui-views-profiles-avatar_toolbar_button.cc.patch @@ -1,12 +1,12 @@ diff --git a/chrome/browser/ui/views/profiles/avatar_toolbar_button.cc b/chrome/browser/ui/views/profiles/avatar_toolbar_button.cc -index 982a8b33c30266413e2cd0ea0944d7c835b81ceb..950e5b0ffcef94d52934579a9b2ea331159be55e 100644 +index 982a8b33c30266413e2cd0ea0944d7c835b81ceb..bf5cdc8224ffa6ce4496a4246fdce1f1834fb66a 100644 --- a/chrome/browser/ui/views/profiles/avatar_toolbar_button.cc +++ b/chrome/browser/ui/views/profiles/avatar_toolbar_button.cc -@@ -343,6 +343,7 @@ base::string16 AvatarToolbarButton::GetAvatarTooltipText() const { - if (IsIncognito()) - return l10n_util::GetStringUTF16(IDS_AVATAR_BUTTON_INCOGNITO_TOOLTIP); +@@ -340,6 +340,7 @@ bool AvatarToolbarButton::ShouldShowGenericIcon() const { + } + base::string16 AvatarToolbarButton::GetAvatarTooltipText() const { + GET_AVATAR_TOOLTIP_TEXT_ - if (profile_->IsGuestSession()) - return l10n_util::GetStringUTF16(IDS_GUEST_PROFILE_NAME); + if (IsIncognito()) + return l10n_util::GetStringUTF16(IDS_AVATAR_BUTTON_INCOGNITO_TOOLTIP);