| 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_ash.h" | 5 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h" |
| 6 | 6 |
| 7 #include "ash/ash_switches.h" | 7 #include "ash/ash_switches.h" |
| 8 #include "ash/wm/caption_buttons/frame_caption_button_container_view.h" | 8 #include "ash/wm/caption_buttons/frame_caption_button_container_view.h" |
| 9 #include "ash/wm/frame_border_hit_test_controller.h" | 9 #include "ash/wm/frame_border_hit_test_controller.h" |
| 10 #include "ash/wm/header_painter.h" | 10 #include "ash/wm/header_painter.h" |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 236 | 236 |
| 237 void BrowserNonClientFrameViewAsh::OnPaint(gfx::Canvas* canvas) { | 237 void BrowserNonClientFrameViewAsh::OnPaint(gfx::Canvas* canvas) { |
| 238 if (!ShouldPaint()) | 238 if (!ShouldPaint()) |
| 239 return; | 239 return; |
| 240 | 240 |
| 241 if (UseImmersiveLightbarHeaderStyle()) { | 241 if (UseImmersiveLightbarHeaderStyle()) { |
| 242 PaintImmersiveLightbarStyleHeader(canvas); | 242 PaintImmersiveLightbarStyleHeader(canvas); |
| 243 return; | 243 return; |
| 244 } | 244 } |
| 245 | 245 |
| 246 caption_button_container_->SetPaintAsActive(ShouldPaintAsActive()); |
| 247 |
| 246 // The primary header image changes based on window activation state and | 248 // The primary header image changes based on window activation state and |
| 247 // theme, so we look it up for each paint. | 249 // theme, so we look it up for each paint. |
| 248 int theme_frame_image_id = GetThemeFrameImageId(); | 250 int theme_frame_image_id = 0; |
| 249 int theme_frame_overlay_image_id = GetThemeFrameOverlayImageId(); | 251 int theme_frame_overlay_image_id = 0; |
| 252 if (browser_view()->IsTabStripVisible()) { |
| 253 GetFrameImageIdsForTabbedBrowser(&theme_frame_image_id, |
| 254 &theme_frame_overlay_image_id); |
| 255 } else if (browser_view()->browser()->is_app()) { |
| 256 theme_frame_image_id = GetFrameImageIdForHostedApp(); |
| 257 } else { |
| 258 theme_frame_image_id = GetFrameImageIdForBrowserPopup(); |
| 259 } |
| 250 | 260 |
| 251 ui::ThemeProvider* theme_provider = GetThemeProvider(); | 261 ash::HeaderPainter::Mode header_mode = ShouldPaintAsActive() ? |
| 252 if (!theme_provider->HasCustomImage(theme_frame_image_id) && | 262 ash::HeaderPainter::MODE_ACTIVE : ash::HeaderPainter::MODE_INACTIVE; |
| 253 (theme_frame_overlay_image_id == 0 || | |
| 254 !theme_provider->HasCustomImage(theme_frame_overlay_image_id))) { | |
| 255 if (frame()->IsMaximized() || frame()->IsFullscreen()) | |
| 256 theme_frame_image_id = IDR_AURA_BROWSER_WINDOW_HEADER_BASE_MAXIMIZED; | |
| 257 } | |
| 258 header_painter_->PaintHeader( | 263 header_painter_->PaintHeader( |
| 259 canvas, | 264 canvas, |
| 265 header_mode, |
| 260 theme_frame_image_id, | 266 theme_frame_image_id, |
| 261 theme_frame_overlay_image_id); | 267 theme_frame_overlay_image_id); |
| 262 if (browser_view()->ShouldShowWindowTitle()) | 268 if (browser_view()->ShouldShowWindowTitle()) |
| 263 header_painter_->PaintTitleBar(canvas, BrowserFrame::GetTitleFontList()); | 269 header_painter_->PaintTitleBar(canvas, BrowserFrame::GetTitleFontList()); |
| 264 if (browser_view()->IsToolbarVisible()) | 270 if (browser_view()->IsToolbarVisible()) |
| 265 PaintToolbarBackground(canvas); | 271 PaintToolbarBackground(canvas); |
| 266 else | 272 else |
| 267 PaintContentEdge(canvas); | 273 PaintContentEdge(canvas); |
| 268 } | 274 } |
| 269 | 275 |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 509 gfx::Rect(x + kClientEdgeThickness, | 515 gfx::Rect(x + kClientEdgeThickness, |
| 510 toolbar_bounds.bottom() - kClientEdgeThickness, | 516 toolbar_bounds.bottom() - kClientEdgeThickness, |
| 511 w - (2 * kClientEdgeThickness), | 517 w - (2 * kClientEdgeThickness), |
| 512 kClientEdgeThickness), | 518 kClientEdgeThickness), |
| 513 ThemeProperties::GetDefaultColor( | 519 ThemeProperties::GetDefaultColor( |
| 514 ThemeProperties::COLOR_TOOLBAR_SEPARATOR)); | 520 ThemeProperties::COLOR_TOOLBAR_SEPARATOR)); |
| 515 } | 521 } |
| 516 | 522 |
| 517 void BrowserNonClientFrameViewAsh::PaintContentEdge(gfx::Canvas* canvas) { | 523 void BrowserNonClientFrameViewAsh::PaintContentEdge(gfx::Canvas* canvas) { |
| 518 if (UsePackagedAppHeaderStyle()) { | 524 if (UsePackagedAppHeaderStyle()) { |
| 519 header_painter_->PaintHeaderContentSeparator(canvas); | 525 ash::HeaderPainter::Mode header_mode = ShouldPaintAsActive() ? |
| 526 ash::HeaderPainter::MODE_ACTIVE : ash::HeaderPainter::MODE_INACTIVE; |
| 527 header_painter_->PaintHeaderContentSeparator(canvas, header_mode); |
| 520 } else { | 528 } else { |
| 521 canvas->FillRect(gfx::Rect(0, caption_button_container_->bounds().bottom(), | 529 canvas->FillRect(gfx::Rect(0, caption_button_container_->bounds().bottom(), |
| 522 width(), kClientEdgeThickness), | 530 width(), kClientEdgeThickness), |
| 523 ThemeProperties::GetDefaultColor( | 531 ThemeProperties::GetDefaultColor( |
| 524 ThemeProperties::COLOR_TOOLBAR_SEPARATOR)); | 532 ThemeProperties::COLOR_TOOLBAR_SEPARATOR)); |
| 525 } | 533 } |
| 526 } | 534 } |
| 527 | 535 |
| 528 int BrowserNonClientFrameViewAsh::GetThemeFrameImageId() const { | 536 void BrowserNonClientFrameViewAsh::GetFrameImageIdsForTabbedBrowser( |
| 537 int* frame_image_id, |
| 538 int* frame_overlay_image_id) const { |
| 539 *frame_overlay_image_id = 0; |
| 540 |
| 529 bool is_incognito = !browser_view()->IsRegularOrGuestSession(); | 541 bool is_incognito = !browser_view()->IsRegularOrGuestSession(); |
| 530 if (browser_view()->IsBrowserTypeNormal()) { | 542 ui::ThemeProvider* tp = GetThemeProvider(); |
| 531 // Use the standard resource ids to allow users to theme the frames. | 543 if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) && |
| 532 if (ShouldPaintAsActive()) { | 544 !is_incognito) { |
| 533 return is_incognito ? | 545 *frame_overlay_image_id = ShouldPaintAsActive() ? |
| 534 IDR_THEME_FRAME_INCOGNITO : IDR_THEME_FRAME; | 546 IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE; |
| 535 } | 547 } |
| 536 return is_incognito ? | 548 |
| 549 if (ShouldPaintAsActive()) { |
| 550 *frame_image_id = is_incognito ? |
| 551 IDR_THEME_FRAME_INCOGNITO : IDR_THEME_FRAME; |
| 552 } else { |
| 553 *frame_image_id = is_incognito ? |
| 537 IDR_THEME_FRAME_INCOGNITO_INACTIVE : IDR_THEME_FRAME_INACTIVE; | 554 IDR_THEME_FRAME_INCOGNITO_INACTIVE : IDR_THEME_FRAME_INACTIVE; |
| 538 } | 555 } |
| 539 // Never theme app and popup windows. | 556 |
| 557 if ((frame()->IsMaximized() || frame()->IsFullscreen()) && |
| 558 !tp->HasCustomImage(IDR_THEME_FRAME) && |
| 559 !tp->HasCustomImage(*frame_image_id) && |
| 560 *frame_overlay_image_id == 0) { |
| 561 *frame_image_id = IDR_AURA_BROWSER_WINDOW_HEADER_BASE_MAXIMIZED; |
| 562 } |
| 563 } |
| 564 |
| 565 int BrowserNonClientFrameViewAsh::GetFrameImageIdForBrowserPopup() const { |
| 566 // Browser popups are not themeable. |
| 567 if (frame()->IsMaximized() || frame()->IsFullscreen()) |
| 568 return IDR_AURA_BROWSER_WINDOW_HEADER_BASE_MAXIMIZED; |
| 569 |
| 570 bool is_incognito = !browser_view()->IsRegularOrGuestSession(); |
| 540 if (ShouldPaintAsActive()) { | 571 if (ShouldPaintAsActive()) { |
| 541 return is_incognito ? | 572 return is_incognito ? |
| 542 IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INCOGNITO_ACTIVE : | 573 IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INCOGNITO_ACTIVE : |
| 543 IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_ACTIVE; | 574 IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_ACTIVE; |
| 544 } | 575 } |
| 545 return is_incognito ? | 576 return is_incognito ? |
| 546 IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INCOGNITO_INACTIVE : | 577 IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INCOGNITO_INACTIVE : |
| 547 IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INACTIVE; | 578 IDR_AURA_BROWSER_WINDOW_HEADER_BASE_RESTORED_INACTIVE; |
| 548 } | 579 } |
| 549 | 580 |
| 550 int BrowserNonClientFrameViewAsh::GetThemeFrameOverlayImageId() const { | 581 int BrowserNonClientFrameViewAsh::GetFrameImageIdForHostedApp() const { |
| 551 ui::ThemeProvider* tp = GetThemeProvider(); | 582 if (UsePackagedAppHeaderStyle()) { |
| 552 if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) && | |
| 553 browser_view()->IsBrowserTypeNormal() && | |
| 554 !browser_view()->IsOffTheRecord()) { | |
| 555 return ShouldPaintAsActive() ? | 583 return ShouldPaintAsActive() ? |
| 556 IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE; | 584 IDR_AURA_WINDOW_HEADER_BASE_ACTIVE : |
| 585 IDR_AURA_WINDOW_HEADER_BASE_INACTIVE; |
| 557 } | 586 } |
| 558 return 0; | 587 return GetFrameImageIdForBrowserPopup(); |
| 559 } | 588 } |
| OLD | NEW |