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

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

Issue 11236052: Indicate tab recording state in tab strip (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Always add capture devices Created 8 years, 2 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/tabs/base_tab.cc
diff --git a/chrome/browser/ui/views/tabs/base_tab.cc b/chrome/browser/ui/views/tabs/base_tab.cc
index 845d95d7a70b02108fce4ef4747ae9ef772055d1..d9c7eae120c04a4d959c44ac6f343f0dac010175 100644
--- a/chrome/browser/ui/views/tabs/base_tab.cc
+++ b/chrome/browser/ui/views/tabs/base_tab.cc
@@ -41,6 +41,9 @@ static const int kPulseDurationMs = 200;
// How long the hover state takes.
static const int kHoverDurationMs = 400;
+// How long the recording button takes to fade in/out.
+static const int kRecordingDurationMs = 1000;
+
////////////////////////////////////////////////////////////////////////////////
// TabCloseButton
//
@@ -114,7 +117,8 @@ void DrawIconCenter(gfx::Canvas* canvas,
int icon_width,
int icon_height,
const gfx::Rect& bounds,
- bool filter) {
+ bool filter,
+ const SkPaint& paint) {
// Center the image within bounds.
int dst_x = bounds.x() - (icon_width - bounds.width()) / 2;
int dst_y = bounds.y() - (icon_height - bounds.height()) / 2;
@@ -124,7 +128,7 @@ void DrawIconCenter(gfx::Canvas* canvas,
canvas->DrawImageInt(image,
image_offset, 0, icon_width, icon_height,
dst_x, dst_y, icon_width, icon_height,
- filter);
+ filter, paint);
canvas->Restore();
}
@@ -525,7 +529,7 @@ void BaseTab::PaintIcon(gfx::Canvas* canvas) {
int icon_size = frames.height();
int image_offset = loading_animation_frame_ * icon_size;
DrawIconCenter(canvas, frames, image_offset,
- icon_size, icon_size, bounds, false);
+ icon_size, icon_size, bounds, false, SkPaint());
} else {
canvas->Save();
canvas->ClipRect(GetLocalBounds());
@@ -535,7 +539,7 @@ void BaseTab::PaintIcon(gfx::Canvas* canvas) {
bounds.set_y(bounds.y() + favicon_hiding_offset_);
DrawIconCenter(canvas, crashed_favicon, 0,
crashed_favicon.width(),
- crashed_favicon.height(), bounds, true);
+ crashed_favicon.height(), bounds, true, SkPaint());
} else {
if (!data().favicon.isNull()) {
// TODO(pkasting): Use code in tab_icon_view.cc:PaintIcon() (or switch
@@ -543,10 +547,31 @@ void BaseTab::PaintIcon(gfx::Canvas* canvas) {
DrawIconCenter(canvas, data().favicon, 0,
data().favicon.width(),
data().favicon.height(),
- bounds, true);
+ bounds, true, SkPaint());
}
}
canvas->Restore();
+
+ // If recording, fade the recording icon on top of the favicon.
+ if (data().recording) {
+ if (!recording_animation_.get()) {
+ recording_animation_.reset(new ui::ThrobAnimation(this));
+ recording_animation_->SetTweenType(ui::Tween::EASE_IN_OUT);
+ recording_animation_->SetThrobDuration(kRecordingDurationMs);
+ recording_animation_->StartThrobbing(-1);
+ }
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ U8CPU alpha = recording_animation_->GetCurrentValue() * 0xff;
+ paint.setAlpha(alpha);
+ ui::ThemeProvider* tp = GetThemeProvider();
+ gfx::ImageSkia recording_dot(*tp->GetImageSkiaNamed(IDR_TAB_RECORDING));
+ DrawIconCenter(canvas, recording_dot, 0,
+ recording_dot.width(), recording_dot.height(),
+ bounds, false, paint);
+ } else {
+ recording_animation_.reset();
+ }
}
}
« no previous file with comments | « chrome/browser/ui/views/tabs/base_tab.h ('k') | chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698