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

Unified Diff: chrome/browser/ui/views/tabs/tab.cc

Issue 10662032: alternate ntp (cros/partial-win): add tab-related stuff and toolbar/tab background change (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed scott's comments Created 8 years, 6 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
« no previous file with comments | « chrome/browser/ui/views/tabs/tab.h ('k') | chrome/browser/ui/views/tabs/tab_controller.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/views/tabs/tab.cc
diff --git a/chrome/browser/ui/views/tabs/tab.cc b/chrome/browser/ui/views/tabs/tab.cc
index 9efec73a1ccddd97907794e46d7aaf1c535f8756..726dc777d9aacc0f9f3bf8a4a9143a1d7e0000e8 100644
--- a/chrome/browser/ui/views/tabs/tab.cc
+++ b/chrome/browser/ui/views/tabs/tab.cc
@@ -493,9 +493,56 @@ void Tab::OnMouseMoved(const views::MouseEvent& event) {
////////////////////////////////////////////////////////////////////////////////
// Tab, private
+gfx::ImageSkia* Tab::GetTabBackgroundImage(
+ chrome::search::Mode::Type mode) const {
+ ui::ThemeProvider* tp = GetThemeProvider();
+ if (!tp) {
+ DCHECK(tp) << "Unable to get theme provider";
+ return NULL;
+ }
+
+ if (!controller() || !controller()->IsInstantExtendedAPIEnabled())
+ return tp->GetImageSkiaNamed(IDR_THEME_TOOLBAR);
+
+ switch (mode) {
+ case chrome::search::Mode::MODE_NTP:
+ return tp->GetImageSkiaNamed(IDR_THEME_NTP_BACKGROUND);
+
+ case chrome::search::Mode::MODE_SEARCH:
+ case chrome::search::Mode::MODE_DEFAULT:
+ default:
+ return tp->GetImageSkiaNamed(IDR_THEME_TOOLBAR_SEARCH);
+ }
+}
+
void Tab::PaintTabBackground(gfx::Canvas* canvas) {
if (IsActive()) {
- PaintActiveTabBackground(canvas);
+ bool fading_in = false;
+ // If mode is SEARCH, we might be waiting to fade in or fading in new
+ // background, in which case, the previous background needs to be painted.
+ if (data().mode == chrome::search::Mode::MODE_SEARCH &&
+ data().background_state &
+ chrome::search::ToolbarSearchAnimator::BACKGROUND_STATE_NTP) {
+ // Paint background for NTP mode.
+ PaintActiveTabBackground(canvas,
+ GetTabBackgroundImage(chrome::search::Mode::MODE_NTP));
+ // We're done if we're not showing background for |MODE_SEARCH|.
+ if (!(data().background_state & chrome::search::ToolbarSearchAnimator::
+ BACKGROUND_STATE_SEARCH)) {
+ return;
+ }
+ // Otherwise, we're fading in the background for |MODE_SEARCH| at
+ // |data().search_background_opacity|.
+ fading_in = true;
+ canvas->SaveLayerAlpha(
+ static_cast<uint8>(data().search_background_opacity * 0xFF),
+ gfx::Rect(width(), height()));
+ }
+ // Paint the background for the current mode.
+ PaintActiveTabBackground(canvas, GetTabBackgroundImage(data().mode));
+ // If we're fading in and have saved canvas, restore it now.
+ if (fading_in)
+ canvas->Restore();
} else {
if (mini_title_animation_.get() && mini_title_animation_->is_animating())
PaintInactiveTabBackgroundWithTitleChange(canvas);
@@ -507,7 +554,7 @@ void Tab::PaintTabBackground(gfx::Canvas* canvas) {
canvas->SaveLayerAlpha(static_cast<int>(throb_value * 0xff),
gfx::Rect(width(), height()));
canvas->sk_canvas()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode);
- PaintActiveTabBackground(canvas);
+ PaintActiveTabBackground(canvas, GetTabBackgroundImage(data().mode));
canvas->Restore();
}
}
@@ -645,26 +692,24 @@ void Tab::PaintInactiveTabBackground(gfx::Canvas* canvas) {
width() - tab_inactive_image->r_width, 0);
}
-void Tab::PaintActiveTabBackground(gfx::Canvas* canvas) {
- int offset = GetMirroredX() + background_offset_.x();
- ui::ThemeProvider* tp = GetThemeProvider();
- DCHECK(tp) << "Unable to get theme provider";
+void Tab::PaintActiveTabBackground(gfx::Canvas* canvas,
+ gfx::ImageSkia* tab_background) {
+ DCHECK(tab_background);
- gfx::ImageSkia* tab_bg =
- GetThemeProvider()->GetImageSkiaNamed(IDR_THEME_TOOLBAR);
+ int offset = GetMirroredX() + background_offset_.x();
TabImage* tab_image = &tab_active_;
TabImage* alpha = &tab_alpha_;
// Draw left edge.
gfx::ImageSkia tab_l = SkBitmapOperations::CreateTiledBitmap(
- *tab_bg, offset, 0, tab_image->l_width, height());
+ *tab_background, offset, 0, tab_image->l_width, height());
gfx::ImageSkia theme_l =
SkBitmapOperations::CreateMaskedBitmap(tab_l, *alpha->image_l);
canvas->DrawImageInt(theme_l, 0, 0);
// Draw right edge.
- gfx::ImageSkia tab_r = SkBitmapOperations::CreateTiledBitmap(*tab_bg,
+ gfx::ImageSkia tab_r = SkBitmapOperations::CreateTiledBitmap(*tab_background,
offset + width() - tab_image->r_width, 0, tab_image->r_width, height());
gfx::ImageSkia theme_r =
SkBitmapOperations::CreateMaskedBitmap(tab_r, *alpha->image_r);
@@ -672,7 +717,7 @@ void Tab::PaintActiveTabBackground(gfx::Canvas* canvas) {
// Draw center. Instead of masking out the top portion we simply skip over it
// by incrementing by GetDropShadowHeight(), since it's a simple rectangle.
- canvas->TileImageInt(*tab_bg,
+ canvas->TileImageInt(*tab_background,
offset + tab_image->l_width,
drop_shadow_height() + tab_image->y_offset,
tab_image->l_width,
« no previous file with comments | « chrome/browser/ui/views/tabs/tab.h ('k') | chrome/browser/ui/views/tabs/tab_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698