Chromium Code Reviews| Index: chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc |
| diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc |
| index 6f75116b5eff8d6f3a1977dd4c5091f7fbd7bd12..8ca9008feb7f870d6ecb79a713e551fc55330dca 100644 |
| --- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc |
| +++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.cc |
| @@ -243,20 +243,19 @@ void BrowserNonClientFrameViewAsh::OnPaint(gfx::Canvas* canvas) { |
| return; |
| } |
| + caption_button_container_->SetPaintAsActive(ShouldPaintAsActive()); |
| + |
| // The primary header image changes based on window activation state and |
| // theme, so we look it up for each paint. |
| - int theme_frame_image_id = GetThemeFrameImageId(); |
| - int theme_frame_overlay_image_id = GetThemeFrameOverlayImageId(); |
| + int theme_frame_image_id = 0; |
| + int theme_frame_overlay_image_id = 0; |
| + GetFrameImageIds(&theme_frame_image_id, &theme_frame_overlay_image_id); |
| - ui::ThemeProvider* theme_provider = GetThemeProvider(); |
| - if (!theme_provider->HasCustomImage(theme_frame_image_id) && |
| - (theme_frame_overlay_image_id == 0 || |
| - !theme_provider->HasCustomImage(theme_frame_overlay_image_id))) { |
| - if (frame()->IsMaximized() || frame()->IsFullscreen()) |
| - theme_frame_image_id = IDR_AURA_WINDOW_HEADER_BASE_MINIMAL; |
| - } |
| + ash::HeaderPainter::Mode header_mode = ShouldPaintAsActive() ? |
| + ash::HeaderPainter::MODE_ACTIVE : ash::HeaderPainter::MODE_INACTIVE; |
| header_painter_->PaintHeader( |
| canvas, |
| + header_mode, |
| theme_frame_image_id, |
| theme_frame_overlay_image_id); |
| if (browser_view()->ShouldShowWindowTitle()) |
| @@ -436,7 +435,7 @@ void BrowserNonClientFrameViewAsh::PaintImmersiveLightbarStyleHeader( |
| gfx::Canvas* canvas) { |
| // The light bar header is not themed because theming it does not look good. |
| gfx::ImageSkia* frame_image = GetThemeProvider()->GetImageSkiaNamed( |
| - IDR_AURA_WINDOW_HEADER_BASE_MINIMAL); |
| + IDR_AURA_BROWSER_WINDOW_HEADER_BASE_MAXIMIZED); |
| canvas->TileImageInt(*frame_image, 0, 0, width(), frame_image->height()); |
| } |
| @@ -516,7 +515,9 @@ void BrowserNonClientFrameViewAsh::PaintToolbarBackground(gfx::Canvas* canvas) { |
| void BrowserNonClientFrameViewAsh::PaintContentEdge(gfx::Canvas* canvas) { |
| if (UsePackagedAppHeaderStyle()) { |
| - header_painter_->PaintHeaderContentSeparator(canvas); |
| + ash::HeaderPainter::Mode header_mode = ShouldPaintAsActive() ? |
| + ash::HeaderPainter::MODE_ACTIVE : ash::HeaderPainter::MODE_INACTIVE; |
| + header_painter_->PaintHeaderContentSeparator(canvas, header_mode); |
| } else { |
| canvas->FillRect(gfx::Rect(0, caption_button_container_->bounds().bottom(), |
| width(), kClientEdgeThickness), |
| @@ -525,35 +526,52 @@ void BrowserNonClientFrameViewAsh::PaintContentEdge(gfx::Canvas* canvas) { |
| } |
| } |
| -int BrowserNonClientFrameViewAsh::GetThemeFrameImageId() const { |
| +void BrowserNonClientFrameViewAsh::GetFrameImageIds( |
|
James Cook
2014/02/03 18:46:35
This function is long and complex. I suggest break
|
| + int* frame_image_id, |
| + int* frame_overlay_image_id) const { |
| + *frame_overlay_image_id = 0; |
| + |
| bool is_incognito = !browser_view()->IsRegularOrGuestSession(); |
| if (browser_view()->IsBrowserTypeNormal()) { |
| - // Use the standard resource ids to allow users to theme the frames. |
| + // Tabbed browser windows. |
| + ui::ThemeProvider* tp = GetThemeProvider(); |
| + if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) && |
| + !is_incognito) { |
| + *frame_overlay_image_id = ShouldPaintAsActive() ? |
| + IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE; |
| + } |
| + |
| if (ShouldPaintAsActive()) { |
| - return is_incognito ? |
| + *frame_image_id = is_incognito ? |
| IDR_THEME_FRAME_INCOGNITO : IDR_THEME_FRAME; |
| + } else { |
| + *frame_image_id = is_incognito ? |
| + IDR_THEME_FRAME_INCOGNITO_INACTIVE : IDR_THEME_FRAME_INACTIVE; |
| } |
| - return is_incognito ? |
| - IDR_THEME_FRAME_INCOGNITO_INACTIVE : IDR_THEME_FRAME_INACTIVE; |
| - } |
| - // Never theme app and popup windows. |
| - if (ShouldPaintAsActive()) { |
| - return is_incognito ? |
| - IDR_AURA_WINDOW_HEADER_BASE_INCOGNITO_ACTIVE : |
| - IDR_AURA_WINDOW_HEADER_BASE_ACTIVE; |
| - } |
| - return is_incognito ? |
| - IDR_AURA_WINDOW_HEADER_BASE_INCOGNITO_INACTIVE : |
| - IDR_AURA_WINDOW_HEADER_BASE_INACTIVE; |
| -} |
| -int BrowserNonClientFrameViewAsh::GetThemeFrameOverlayImageId() const { |
| - ui::ThemeProvider* tp = GetThemeProvider(); |
| - if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) && |
| - browser_view()->IsBrowserTypeNormal() && |
| - !browser_view()->IsOffTheRecord()) { |
| - return ShouldPaintAsActive() ? |
| - IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE; |
| + if ((frame()->IsMaximized() || frame()->IsFullscreen()) && |
| + !tp->HasCustomImage(IDR_THEME_FRAME) && |
| + !tp->HasCustomImage(*frame_image_id) && |
| + *frame_overlay_image_id == 0) { |
| + *frame_image_id = IDR_AURA_BROWSER_WINDOW_HEADER_BASE_MAXIMIZED; |
| + } |
| + } else if (UsePackagedAppHeaderStyle()) { |
| + // Apps are not themeable. |
| + *frame_image_id = ShouldPaintAsActive() ? |
| + IDR_AURA_WINDOW_HEADER_BASE_ACTIVE : |
| + IDR_AURA_WINDOW_HEADER_BASE_INACTIVE; |
| + } else { |
| + // Browser popups are not themeable. |
| + if (frame()->IsMaximized() || frame()->IsFullscreen()) { |
| + *frame_image_id = IDR_AURA_BROWSER_WINDOW_HEADER_BASE_MAXIMIZED; |
| + } else if (ShouldPaintAsActive()) { |
| + *frame_image_id = is_incognito ? |
| + IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INCOGNITO_ACTIVE : |
| + IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_ACTIVE; |
| + } else { |
| + *frame_image_id = is_incognito ? |
| + IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INCOGNITO_INACTIVE : |
| + IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INACTIVE; |
| + } |
| } |
| - return 0; |
| } |