| 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 278f56bba94ec7992c5a66b3ba8d40f3641eb8d2..d1fcf41b3f89176ff2e544766f78f6d24c8db797 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,26 @@ 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();
|
| -
|
| - 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_BROWSER_WINDOW_HEADER_BASE_MAXIMIZED;
|
| + int theme_frame_image_id = 0;
|
| + int theme_frame_overlay_image_id = 0;
|
| + if (browser_view()->IsTabStripVisible()) {
|
| + GetFrameImageIdsForTabbedBrowser(&theme_frame_image_id,
|
| + &theme_frame_overlay_image_id);
|
| + } else if (browser_view()->browser()->is_app()) {
|
| + theme_frame_image_id = GetFrameImageIdForHostedApp();
|
| + } else {
|
| + theme_frame_image_id = GetFrameImageIdForBrowserPopup();
|
| }
|
| +
|
| + 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())
|
| @@ -516,7 +522,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,18 +533,41 @@ void BrowserNonClientFrameViewAsh::PaintContentEdge(gfx::Canvas* canvas) {
|
| }
|
| }
|
|
|
| -int BrowserNonClientFrameViewAsh::GetThemeFrameImageId() const {
|
| +void BrowserNonClientFrameViewAsh::GetFrameImageIdsForTabbedBrowser(
|
| + 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.
|
| - if (ShouldPaintAsActive()) {
|
| - return is_incognito ?
|
| - IDR_THEME_FRAME_INCOGNITO : IDR_THEME_FRAME;
|
| - }
|
| - return is_incognito ?
|
| + 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()) {
|
| + *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;
|
| }
|
| - // Never theme app and popup windows.
|
| +
|
| + 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;
|
| + }
|
| +}
|
| +
|
| +int BrowserNonClientFrameViewAsh::GetFrameImageIdForBrowserPopup() const {
|
| + // Browser popups are not themeable.
|
| + if (frame()->IsMaximized() || frame()->IsFullscreen())
|
| + return IDR_AURA_BROWSER_WINDOW_HEADER_BASE_MAXIMIZED;
|
| +
|
| + bool is_incognito = !browser_view()->IsRegularOrGuestSession();
|
| if (ShouldPaintAsActive()) {
|
| return is_incognito ?
|
| IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INCOGNITO_ACTIVE :
|
| @@ -547,13 +578,11 @@ int BrowserNonClientFrameViewAsh::GetThemeFrameImageId() const {
|
| IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INACTIVE;
|
| }
|
|
|
| -int BrowserNonClientFrameViewAsh::GetThemeFrameOverlayImageId() const {
|
| - ui::ThemeProvider* tp = GetThemeProvider();
|
| - if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) &&
|
| - browser_view()->IsBrowserTypeNormal() &&
|
| - !browser_view()->IsOffTheRecord()) {
|
| +int BrowserNonClientFrameViewAsh::GetFrameImageIdForHostedApp() const {
|
| + if (UsePackagedAppHeaderStyle()) {
|
| return ShouldPaintAsActive() ?
|
| - IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE;
|
| + IDR_AURA_WINDOW_HEADER_BASE_ACTIVE :
|
| + IDR_AURA_WINDOW_HEADER_BASE_INACTIVE;
|
| }
|
| - return 0;
|
| + return GetFrameImageIdForBrowserPopup();
|
| }
|
|
|