| Index: chrome/browser/ui/views/download/download_item_view.cc | 
| diff --git a/chrome/browser/ui/views/download/download_item_view.cc b/chrome/browser/ui/views/download/download_item_view.cc | 
| index 77e704c7d965ead84a6b1a5c51abba7445384272..37d83ae1d56361855925d16ca3769985803b03c2 100644 | 
| --- a/chrome/browser/ui/views/download/download_item_view.cc | 
| +++ b/chrome/browser/ui/views/download/download_item_view.cc | 
| @@ -96,16 +96,6 @@ static const int kDisabledOnOpenDuration = 3000; | 
| // light-on-dark themes. | 
| static const double kDownloadItemLuminanceMod = 0.8; | 
|  | 
| -namespace { | 
| - | 
| -// Callback for DownloadShelf paint functions to mirror the progress animation | 
| -// in RTL locales. | 
| -void RTLMirrorXForView(views::View* containing_view, gfx::Rect* bounds) { | 
| -  bounds->set_x(containing_view->GetMirroredXForRect(*bounds)); | 
| -} | 
| - | 
| -}  // namespace | 
| - | 
| DownloadItemView::DownloadItemView(DownloadItem* download_item, | 
| DownloadShelfView* parent) | 
| : warning_icon_(NULL), | 
| @@ -114,7 +104,6 @@ DownloadItemView::DownloadItemView(DownloadItem* download_item, | 
| body_state_(NORMAL), | 
| drop_down_state_(NORMAL), | 
| mode_(NORMAL_MODE), | 
| -    progress_angle_(DownloadShelf::kStartAngleDegrees), | 
| drop_down_pressed_(false), | 
| dragging_(false), | 
| starting_drag_(false), | 
| @@ -244,19 +233,13 @@ DownloadItemView::~DownloadItemView() { | 
|  | 
| // Progress animation handlers. | 
|  | 
| -void DownloadItemView::UpdateDownloadProgress() { | 
| -  progress_angle_ = | 
| -      (progress_angle_ + DownloadShelf::kUnknownIncrementDegrees) % | 
| -      DownloadShelf::kMaxDegrees; | 
| -  SchedulePaint(); | 
| -} | 
| - | 
| void DownloadItemView::StartDownloadProgress() { | 
| if (progress_timer_.IsRunning()) | 
| return; | 
| -  progress_timer_.Start(FROM_HERE, | 
| -      base::TimeDelta::FromMilliseconds(DownloadShelf::kProgressRateMs), this, | 
| -      &DownloadItemView::UpdateDownloadProgress); | 
| +  progress_start_time_ = base::TimeTicks::Now(); | 
| +  progress_timer_.Start(FROM_HERE, base::TimeDelta::FromMilliseconds( | 
| +                                       DownloadShelf::kProgressRateMs), | 
| +                        this, &DownloadItemView::SchedulePaint); | 
| } | 
|  | 
| void DownloadItemView::StopDownloadProgress() { | 
| @@ -870,23 +853,29 @@ void DownloadItemView::OnPaintBackground(gfx::Canvas* canvas) { | 
| if (icon) { | 
| if (!IsShowingWarningDialog()) { | 
| DownloadItem::DownloadState state = download()->GetState(); | 
| -      DownloadShelf::BoundsAdjusterCallback rtl_mirror = | 
| -          base::Bind(&RTLMirrorXForView, base::Unretained(this)); | 
| +      canvas->Save(); | 
| +      if (base::i18n::IsRTL()) | 
| +        canvas->Translate( | 
| +            gfx::Vector2d(width() - DownloadShelf::kSmallProgressIconSize, 0)); | 
| + | 
| if (state == DownloadItem::IN_PROGRESS) { | 
| -        DownloadShelf::PaintDownloadProgress(canvas, rtl_mirror, 0, 0, | 
| -                                             progress_angle_, | 
| +        DownloadShelf::PaintDownloadProgress(canvas, *GetThemeProvider(), | 
| +                                             progress_start_time_, | 
| model_.PercentComplete()); | 
| } else if (complete_animation_.get() && | 
| complete_animation_->is_animating()) { | 
| if (state == DownloadItem::INTERRUPTED) { | 
| DownloadShelf::PaintDownloadInterrupted( | 
| -              canvas, rtl_mirror, 0, 0, complete_animation_->GetCurrentValue()); | 
| +              canvas, *GetThemeProvider(), | 
| +              complete_animation_->GetCurrentValue()); | 
| } else { | 
| DCHECK_EQ(DownloadItem::COMPLETE, state); | 
| DownloadShelf::PaintDownloadComplete( | 
| -              canvas, rtl_mirror, 0, 0, complete_animation_->GetCurrentValue()); | 
| +              canvas, *GetThemeProvider(), | 
| +              complete_animation_->GetCurrentValue()); | 
| } | 
| } | 
| +      canvas->Restore(); | 
| } | 
|  | 
| // Draw the icon image. | 
|  |