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

Unified Diff: chrome/browser/ui/views/frame/browser_non_client_frame_view.cc

Issue 895803003: [Profiles] Remove the NotificationService from the ProfileInfoCache (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clean up views code Created 5 years, 10 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/frame/browser_non_client_frame_view.cc
diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc
index ea9ec944199062a6ec5e803a5d07f1957e65cebd..8bbb55c6e0e34a834a49d5908b042671f9f492f9 100644
--- a/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc
+++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view.cc
@@ -87,6 +87,13 @@ void BrowserNonClientFrameView::OnThemeChanged() {
}
#endif
+void BrowserNonClientFrameView::UpdateAvatar() {
+ if (browser_view()->IsRegularOrGuestSession() && switches::IsNewAvatarMenu())
+ UpdateNewStyleAvatar();
+ else
+ UpdateAvatarInfo();
+}
+
void BrowserNonClientFrameView::UpdateAvatarInfo() {
if (browser_view_->ShouldShowAvatar()) {
if (!avatar_button_) {
@@ -166,45 +173,34 @@ void BrowserNonClientFrameView::UpdateNewStyleAvatarInfo(
}
}
-void BrowserNonClientFrameView::DrawTaskbarDecoration(
- const gfx::Image& avatar,
- const gfx::Image& taskbar_badge_avatar) {
- // For popups and panels which don't have the avatar button, we still
- // need to draw the taskbar decoration. Even though we have an icon on the
- // window's relaunch details, we draw over it because the user may have pinned
- // the badge-less Chrome shortcut which will cause windows to ignore the
- // relaunch details.
- // TODO(calamity): ideally this should not be necessary but due to issues with
- // the default shortcut being pinned, we add the runtime badge for safety.
- // See crbug.com/313800.
- bool show_decoration = AvatarMenu::ShouldShowAvatarMenu() &&
- !browser_view_->browser()->profile()->IsGuestSession();
- // In tests, make sure that the browser process and profile manager are valid
- // before using.
- if (g_browser_process && g_browser_process->profile_manager()) {
- const ProfileInfoCache& cache =
- g_browser_process->profile_manager()->GetProfileInfoCache();
- show_decoration = show_decoration && cache.GetNumberOfProfiles() > 1;
- }
- chrome::DrawTaskbarDecoration(frame_->GetNativeWindow(),
- show_decoration
- ? (taskbar_badge_avatar.IsEmpty() ? &avatar : &taskbar_badge_avatar)
- : nullptr);
-}
-
void BrowserNonClientFrameView::OnProfileAdded(
const base::FilePath& profile_path) {
- OnProfileAvatarChanged(profile_path);
+ UpdateTaskbarDecoration();
+ UpdateAvatar();
}
void BrowserNonClientFrameView::OnProfileWasRemoved(
const base::FilePath& profile_path,
const base::string16& profile_name) {
- OnProfileAvatarChanged(profile_path);
+ UpdateTaskbarDecoration();
+ UpdateAvatar();
}
void BrowserNonClientFrameView::OnProfileAvatarChanged(
const base::FilePath& profile_path) {
+ UpdateTaskbarDecoration();
+ // Profile avatars are only displayed in the old UI or incognito.
+ if (browser_view()->IsOffTheRecord() || !switches::IsNewAvatarMenu())
+ UpdateAvatarInfo();
+}
+
+void BrowserNonClientFrameView::OnProfileNameChanged(
+ const base::FilePath& profile_path,
+ const base::string16& old_profile_name) {
+ UpdateAvatar();
+}
+
+void BrowserNonClientFrameView::UpdateTaskbarDecoration() {
gfx::Image avatar;
gfx::Image taskbar_badge_avatar;
bool is_rectangle;
@@ -216,6 +212,26 @@ void BrowserNonClientFrameView::OnProfileAvatarChanged(
AvatarMenu::ShouldShowAvatarMenu(),
&avatar, &taskbar_badge_avatar,
&is_rectangle)) {
- DrawTaskbarDecoration(avatar, taskbar_badge_avatar);
+ // For popups and panels which don't have the avatar button, we still
+ // need to draw the taskbar decoration. Even though we have an icon on the
+ // window's relaunch details, we draw over it because the user may have
+ // pinned the badge-less Chrome shortcut which will cause windows to ignore
+ // the relaunch details.
+ // TODO(calamity): ideally this should not be necessary but due to issues
+ // with the default shortcut being pinned, we add the runtime badge for
+ // safety. See crbug.com/313800.
+ bool show_decoration = AvatarMenu::ShouldShowAvatarMenu() &&
+ !browser_view_->browser()->profile()->IsGuestSession();
+ // In tests, make sure that the browser process and profile manager are
+ // valid before using.
+ if (g_browser_process && g_browser_process->profile_manager()) {
+ const ProfileInfoCache& cache =
+ g_browser_process->profile_manager()->GetProfileInfoCache();
+ show_decoration = show_decoration && cache.GetNumberOfProfiles() > 1;
+ }
+ chrome::DrawTaskbarDecoration(frame_->GetNativeWindow(),
+ show_decoration
+ ? (taskbar_badge_avatar.IsEmpty() ? &avatar : &taskbar_badge_avatar)
+ : nullptr);
}
}

Powered by Google App Engine
This is Rietveld 408576698