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

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

Issue 1019023002: MacViews: Implement non-client frame view (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@wrench-menu
Patch Set: Use Yosemite colors Created 5 years, 9 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 91d1c2f8285dbb682b4a63662117fe4436c669ec..0e7cbcc0f413d2e04bcc121da5e0c4618bcb23fc 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
@@ -11,17 +11,21 @@
#include "chrome/browser/profiles/profile_info_cache.h"
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/browser/profiles/profiles_state.h"
+#include "chrome/browser/themes/theme_properties.h"
#include "chrome/browser/ui/view_ids.h"
#include "chrome/browser/ui/views/frame/browser_view.h"
#include "chrome/browser/ui/views/frame/taskbar_decorator.h"
#include "chrome/browser/ui/views/profiles/avatar_menu_button.h"
#include "chrome/browser/ui/views/profiles/new_avatar_button.h"
+#include "chrome/browser/ui/views/tabs/tab_strip.h"
+#include "chrome/browser/ui/views/theme_image_mapper.h"
#include "components/signin/core/common/profile_management_switches.h"
#include "grit/theme_resources.h"
#include "third_party/skia/include/core/SkColor.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/theme_provider.h"
#include "ui/gfx/image/image.h"
+#include "ui/resources/grit/ui_resources.h"
#include "ui/views/background.h"
#if defined(ENABLE_SUPERVISED_USERS)
@@ -96,6 +100,79 @@ void BrowserNonClientFrameView::OnThemeChanged() {
}
#endif
+bool BrowserNonClientFrameView::ShouldPaintAsThemed() const {
+ return browser_view_->IsBrowserTypeNormal();
+}
+
+SkColor BrowserNonClientFrameView::GetFrameColor() const {
+ const bool incognito = browser_view_->IsOffTheRecord();
+ ThemeProperties::OverwritableByUserThemeProperty color_id;
+ if (ShouldPaintAsActive()) {
+ color_id = incognito ? ThemeProperties::COLOR_FRAME_INCOGNITO
+ : ThemeProperties::COLOR_FRAME;
+ } else {
+ color_id = incognito ? ThemeProperties::COLOR_FRAME_INCOGNITO_INACTIVE
+ : ThemeProperties::COLOR_FRAME_INACTIVE;
+ }
+ return ShouldPaintAsThemed() ? GetThemeProvider()->GetColor(color_id)
+ : ThemeProperties::GetDefaultColor(color_id);
+}
+
+gfx::ImageSkia* BrowserNonClientFrameView::GetFrameImage() const {
+ const bool incognito = browser_view_->IsOffTheRecord();
+ int resource_id;
+ if (browser_view_->IsBrowserTypeNormal()) {
+ if (ShouldPaintAsActive()) {
+ resource_id = incognito ? IDR_THEME_FRAME_INCOGNITO : IDR_THEME_FRAME;
+ } else {
+ resource_id = incognito ? IDR_THEME_FRAME_INCOGNITO_INACTIVE
+ : IDR_THEME_FRAME_INACTIVE;
+ }
+ return GetThemeProvider()->GetImageSkiaNamed(resource_id);
+ }
+
+ if (ShouldPaintAsActive()) {
+ resource_id = incognito ? IDR_THEME_FRAME_INCOGNITO : IDR_FRAME;
+ } else {
+ resource_id = incognito ? IDR_THEME_FRAME_INCOGNITO_INACTIVE
+ : IDR_THEME_FRAME_INACTIVE;
+ }
+
+ if (ShouldPaintAsThemed()) {
+ // On Linux, we want to use theme images provided by the system theme when
+ // enabled, even if we are an app or popup window.
+ return GetThemeProvider()->GetImageSkiaNamed(resource_id);
+ }
+
+ // Otherwise, never theme app and popup windows.
+ ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
+ return rb.GetImageSkiaNamed(
+ chrome::MapThemeImage(chrome::GetHostDesktopTypeForNativeWindow(
+ browser_view_->GetNativeWindow()),
+ resource_id));
+}
+
+gfx::ImageSkia* BrowserNonClientFrameView::GetFrameOverlayImage() const {
+ ui::ThemeProvider* tp = GetThemeProvider();
+ if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) &&
+ browser_view_->IsBrowserTypeNormal() &&
+ !browser_view_->IsOffTheRecord()) {
+ return tp->GetImageSkiaNamed(ShouldPaintAsActive() ?
+ IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE);
+ }
+ return nullptr;
+}
+
+int BrowserNonClientFrameView::GetTopAreaHeight() const {
+ gfx::ImageSkia* frame_image = GetFrameImage();
+ int top_area_height = frame_image->height();
+ if (browser_view_->IsTabStripVisible()) {
+ top_area_height = std::max(top_area_height,
+ GetBoundsForTabStrip(browser_view_->tabstrip()).bottom());
+ }
+ return top_area_height;
+}
+
void BrowserNonClientFrameView::UpdateAvatar() {
if (browser_view()->IsRegularOrGuestSession() && switches::IsNewAvatarMenu())
UpdateNewStyleAvatar();

Powered by Google App Engine
This is Rietveld 408576698