| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h" | 5 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view.h" |
| 6 | 6 |
| 7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
| 8 #include "chrome/browser/browser_process.h" | 8 #include "chrome/browser/browser_process.h" |
| 9 #include "chrome/browser/profiles/avatar_menu.h" | 9 #include "chrome/browser/profiles/avatar_menu.h" |
| 10 #include "chrome/browser/profiles/profile.h" | 10 #include "chrome/browser/profiles/profile.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #include "components/signin/core/common/profile_management_switches.h" | 23 #include "components/signin/core/common/profile_management_switches.h" |
| 24 #include "grit/theme_resources.h" | 24 #include "grit/theme_resources.h" |
| 25 #include "third_party/skia/include/core/SkColor.h" | 25 #include "third_party/skia/include/core/SkColor.h" |
| 26 #include "ui/base/resource/resource_bundle.h" | 26 #include "ui/base/resource/resource_bundle.h" |
| 27 #include "ui/base/theme_provider.h" | 27 #include "ui/base/theme_provider.h" |
| 28 #include "ui/gfx/image/image.h" | 28 #include "ui/gfx/image/image.h" |
| 29 #include "ui/resources/grit/ui_resources.h" | 29 #include "ui/resources/grit/ui_resources.h" |
| 30 #include "ui/views/background.h" | 30 #include "ui/views/background.h" |
| 31 #include "ui/views/resources/grit/views_resources.h" | 31 #include "ui/views/resources/grit/views_resources.h" |
| 32 | 32 |
| 33 #if defined(ENABLE_SUPERVISED_USERS) | |
| 34 #include "chrome/browser/ui/views/profiles/supervised_user_avatar_label.h" | |
| 35 #endif | |
| 36 | |
| 37 BrowserNonClientFrameView::BrowserNonClientFrameView(BrowserFrame* frame, | 33 BrowserNonClientFrameView::BrowserNonClientFrameView(BrowserFrame* frame, |
| 38 BrowserView* browser_view) | 34 BrowserView* browser_view) |
| 39 : frame_(frame), | 35 : frame_(frame), |
| 40 browser_view_(browser_view), | 36 browser_view_(browser_view), |
| 41 #if defined(ENABLE_SUPERVISED_USERS) | |
| 42 supervised_user_avatar_label_(nullptr), | |
| 43 #endif | |
| 44 #if defined(FRAME_AVATAR_BUTTON) | 37 #if defined(FRAME_AVATAR_BUTTON) |
| 45 new_avatar_button_(nullptr), | 38 new_avatar_button_(nullptr), |
| 46 #endif | 39 #endif |
| 47 avatar_button_(nullptr) { | 40 avatar_button_(nullptr) { |
| 48 // The profile manager may by null in tests. | 41 // The profile manager may by null in tests. |
| 49 if (g_browser_process->profile_manager()) { | 42 if (g_browser_process->profile_manager()) { |
| 50 ProfileInfoCache& cache = | 43 ProfileInfoCache& cache = |
| 51 g_browser_process->profile_manager()->GetProfileInfoCache(); | 44 g_browser_process->profile_manager()->GetProfileInfoCache(); |
| 52 cache.AddObserver(this); | 45 cache.AddObserver(this); |
| 53 } | 46 } |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 #if defined(FRAME_AVATAR_BUTTON) | 95 #if defined(FRAME_AVATAR_BUTTON) |
| 103 // Only perform a re-layout if the avatar button has changed, since that | 96 // Only perform a re-layout if the avatar button has changed, since that |
| 104 // can affect the size of the tabs. | 97 // can affect the size of the tabs. |
| 105 if (child == new_avatar_button_) { | 98 if (child == new_avatar_button_) { |
| 106 InvalidateLayout(); | 99 InvalidateLayout(); |
| 107 frame_->GetRootView()->Layout(); | 100 frame_->GetRootView()->Layout(); |
| 108 } | 101 } |
| 109 #endif | 102 #endif |
| 110 } | 103 } |
| 111 | 104 |
| 112 #if defined(ENABLE_SUPERVISED_USERS) | |
| 113 void BrowserNonClientFrameView::OnThemeChanged() { | |
| 114 if (supervised_user_avatar_label_) | |
| 115 supervised_user_avatar_label_->UpdateLabelStyle(); | |
| 116 } | |
| 117 #endif | |
| 118 | |
| 119 bool BrowserNonClientFrameView::ShouldPaintAsThemed() const { | 105 bool BrowserNonClientFrameView::ShouldPaintAsThemed() const { |
| 120 return browser_view_->IsBrowserTypeNormal(); | 106 return browser_view_->IsBrowserTypeNormal(); |
| 121 } | 107 } |
| 122 | 108 |
| 123 SkColor BrowserNonClientFrameView::GetFrameColor() const { | 109 SkColor BrowserNonClientFrameView::GetFrameColor() const { |
| 124 ThemeProperties::OverwritableByUserThemeProperty color_id = | 110 ThemeProperties::OverwritableByUserThemeProperty color_id = |
| 125 ShouldPaintAsActive() ? ThemeProperties::COLOR_FRAME | 111 ShouldPaintAsActive() ? ThemeProperties::COLOR_FRAME |
| 126 : ThemeProperties::COLOR_FRAME_INACTIVE; | 112 : ThemeProperties::COLOR_FRAME_INACTIVE; |
| 127 return ShouldPaintAsThemed() ? GetThemeProvider()->GetColor(color_id) | 113 return ShouldPaintAsThemed() ? GetThemeProvider()->GetColor(color_id) |
| 128 : ThemeProperties::GetDefaultColor( | 114 : ThemeProperties::GetDefaultColor( |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 if (browser_view()->IsRegularOrGuestSession()) | 175 if (browser_view()->IsRegularOrGuestSession()) |
| 190 UpdateNewAvatarButtonImpl(); | 176 UpdateNewAvatarButtonImpl(); |
| 191 else | 177 else |
| 192 #endif | 178 #endif |
| 193 UpdateOldAvatarButton(); | 179 UpdateOldAvatarButton(); |
| 194 } | 180 } |
| 195 | 181 |
| 196 void BrowserNonClientFrameView::UpdateOldAvatarButton() { | 182 void BrowserNonClientFrameView::UpdateOldAvatarButton() { |
| 197 if (browser_view_->ShouldShowAvatar()) { | 183 if (browser_view_->ShouldShowAvatar()) { |
| 198 if (!avatar_button_) { | 184 if (!avatar_button_) { |
| 199 #if defined(ENABLE_SUPERVISED_USERS) | |
| 200 Profile* profile = browser_view_->browser()->profile(); | |
| 201 if (profile->IsSupervised() && !supervised_user_avatar_label_) { | |
| 202 supervised_user_avatar_label_ = | |
| 203 new SupervisedUserAvatarLabel(browser_view_); | |
| 204 supervised_user_avatar_label_->set_id( | |
| 205 VIEW_ID_SUPERVISED_USER_AVATAR_LABEL); | |
| 206 AddChildView(supervised_user_avatar_label_); | |
| 207 } | |
| 208 #endif | |
| 209 avatar_button_ = new AvatarMenuButton(browser_view_); | 185 avatar_button_ = new AvatarMenuButton(browser_view_); |
| 210 avatar_button_->set_id(VIEW_ID_AVATAR_BUTTON); | 186 avatar_button_->set_id(VIEW_ID_AVATAR_BUTTON); |
| 211 AddChildView(avatar_button_); | 187 AddChildView(avatar_button_); |
| 212 // Invalidate here because adding a child does not invalidate the layout. | 188 // Invalidate here because adding a child does not invalidate the layout. |
| 213 InvalidateLayout(); | 189 InvalidateLayout(); |
| 214 frame_->GetRootView()->Layout(); | 190 frame_->GetRootView()->Layout(); |
| 215 } | 191 } |
| 216 } else if (avatar_button_) { | 192 } else if (avatar_button_) { |
| 217 #if defined(ENABLE_SUPERVISED_USERS) | |
| 218 // The avatar label can just be there if there is also an avatar button. | |
| 219 if (supervised_user_avatar_label_) { | |
| 220 RemoveChildView(supervised_user_avatar_label_); | |
| 221 delete supervised_user_avatar_label_; | |
| 222 supervised_user_avatar_label_ = nullptr; | |
| 223 } | |
| 224 #endif | |
| 225 RemoveChildView(avatar_button_); | 193 RemoveChildView(avatar_button_); |
| 226 delete avatar_button_; | 194 delete avatar_button_; |
| 227 avatar_button_ = nullptr; | 195 avatar_button_ = nullptr; |
| 228 frame_->GetRootView()->Layout(); | 196 frame_->GetRootView()->Layout(); |
| 229 } | 197 } |
| 230 | 198 |
| 231 gfx::Image avatar; | 199 gfx::Image avatar; |
| 232 gfx::Image taskbar_badge_avatar; | 200 gfx::Image taskbar_badge_avatar; |
| 233 bool is_rectangle = false; | 201 bool is_rectangle = false; |
| 234 | 202 |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 const ProfileInfoCache& cache = | 291 const ProfileInfoCache& cache = |
| 324 g_browser_process->profile_manager()->GetProfileInfoCache(); | 292 g_browser_process->profile_manager()->GetProfileInfoCache(); |
| 325 show_decoration = show_decoration && cache.GetNumberOfProfiles() > 1; | 293 show_decoration = show_decoration && cache.GetNumberOfProfiles() > 1; |
| 326 } | 294 } |
| 327 chrome::DrawTaskbarDecoration(frame_->GetNativeWindow(), | 295 chrome::DrawTaskbarDecoration(frame_->GetNativeWindow(), |
| 328 show_decoration | 296 show_decoration |
| 329 ? (taskbar_badge_avatar.IsEmpty() ? &avatar : &taskbar_badge_avatar) | 297 ? (taskbar_badge_avatar.IsEmpty() ? &avatar : &taskbar_badge_avatar) |
| 330 : nullptr); | 298 : nullptr); |
| 331 } | 299 } |
| 332 } | 300 } |
| OLD | NEW |