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

Unified Diff: chrome/browser/ui/views/download/download_item_view.cc

Issue 11673004: No need to pass DownloadItemModel ownership. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: DownloadShelfContextMenu class cleanup and require GetMenuModel() to return non-NULL Created 7 years, 11 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/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 98d73a89fd4913f0696fb958d7665eb1e1460738..743ddc99b09b436f39efffe32c12e3f2cd2c64c2 100644
--- a/chrome/browser/ui/views/download/download_item_view.cc
+++ b/chrome/browser/ui/views/download/download_item_view.cc
@@ -82,11 +82,9 @@ static const double kDownloadItemLuminanceMod = 0.8;
using content::DownloadItem;
-DownloadItemView::DownloadItemView(DownloadItem* download,
- DownloadShelfView* parent,
- DownloadItemModel* model)
+DownloadItemView::DownloadItemView(DownloadItem* download_item,
+ DownloadShelfView* parent)
: warning_icon_(NULL),
- download_(download),
shelf_(parent),
status_text_(l10n_util::GetStringUTF16(IDS_DOWNLOAD_STATUS_STARTING)),
body_state_(NORMAL),
@@ -96,7 +94,7 @@ DownloadItemView::DownloadItemView(DownloadItem* download,
drop_down_pressed_(false),
dragging_(false),
starting_drag_(false),
- model_(model),
+ model_(download_item),
save_button_(NULL),
discard_button_(NULL),
dangerous_download_label_(NULL),
@@ -104,8 +102,8 @@ DownloadItemView::DownloadItemView(DownloadItem* download,
disabled_while_opening_(false),
creation_time_(base::Time::Now()),
ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {
- DCHECK(download_);
- download_->AddObserver(this);
+ DCHECK(download());
+ download()->AddObserver(this);
set_context_menu_controller(this);
ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
@@ -204,13 +202,13 @@ DownloadItemView::DownloadItemView(DownloadItem* download,
set_accessibility_focusable(true);
- OnDownloadUpdated(download_);
+ OnDownloadUpdated(download());
UpdateDropDownButtonPosition();
}
DownloadItemView::~DownloadItemView() {
StopDownloadProgress();
- download_->RemoveObserver(this);
+ download()->RemoveObserver(this);
}
// Progress animation handlers.
@@ -243,22 +241,22 @@ void DownloadItemView::OnExtractIconComplete(gfx::Image* icon_bitmap) {
// Update the progress graphic on the icon and our text status label
// to reflect our current bytes downloaded, time remaining.
-void DownloadItemView::OnDownloadUpdated(DownloadItem* download) {
- DCHECK_EQ(download_, download);
+void DownloadItemView::OnDownloadUpdated(DownloadItem* download_item) {
+ DCHECK_EQ(download(), download_item);
- if (IsShowingWarningDialog() && !model_->IsDangerous()) {
+ if (IsShowingWarningDialog() && !model_.IsDangerous()) {
// We have been approved.
ClearWarningDialog();
- } else if (!IsShowingWarningDialog() && model_->IsDangerous()) {
+ } else if (!IsShowingWarningDialog() && model_.IsDangerous()) {
ShowWarningDialog();
// Force the shelf to layout again as our size has changed.
shelf_->Layout();
SchedulePaint();
} else {
- string16 status_text = model_->GetStatusText();
- switch (download_->GetState()) {
+ string16 status_text = model_.GetStatusText();
+ switch (download()->GetState()) {
case DownloadItem::IN_PROGRESS:
- download_->IsPaused() ?
+ download()->IsPaused() ?
StopDownloadProgress() : StartDownloadProgress();
LoadIconIfItemPathChanged();
break;
@@ -272,7 +270,7 @@ void DownloadItemView::OnDownloadUpdated(DownloadItem* download) {
LoadIcon();
break;
case DownloadItem::COMPLETE:
- if (download_->GetAutoOpened()) {
+ if (download()->GetAutoOpened()) {
shelf_->RemoveDownloadView(this); // This will delete us!
return;
}
@@ -294,7 +292,7 @@ void DownloadItemView::OnDownloadUpdated(DownloadItem* download) {
status_text_ = status_text;
}
- string16 new_tip = model_->GetTooltipText(font_, kTooltipMaxWidth);
+ string16 new_tip = model_.GetTooltipText(font_, kTooltipMaxWidth);
if (new_tip != tooltip_text_) {
tooltip_text_ = new_tip;
TooltipTextChanged();
@@ -406,13 +404,13 @@ bool DownloadItemView::OnMouseDragged(const ui::MouseEvent& event) {
drag_start_point_ = event.location();
}
if (dragging_) {
- if (download_->IsComplete()) {
+ if (download()->IsComplete()) {
IconManager* im = g_browser_process->icon_manager();
- gfx::Image* icon = im->LookupIcon(download_->GetUserVerifiedFilePath(),
+ gfx::Image* icon = im->LookupIcon(download()->GetUserVerifiedFilePath(),
IconLoader::SMALL);
if (icon) {
views::Widget* widget = GetWidget();
- download_util::DragDownload(download_, icon,
+ download_util::DragDownload(download(), icon,
widget ? widget->GetNativeView() : NULL);
}
}
@@ -484,7 +482,7 @@ bool DownloadItemView::GetTooltipText(const gfx::Point& p,
void DownloadItemView::GetAccessibleState(ui::AccessibleViewState* state) {
state->name = accessible_name_;
state->role = ui::AccessibilityTypes::ROLE_PUSHBUTTON;
- if (model_->IsDangerous()) {
+ if (model_.IsDangerous()) {
state->state = ui::AccessibilityTypes::STATE_UNAVAILABLE;
} else {
state->state = ui::AccessibilityTypes::STATE_HASPOPUP;
@@ -525,9 +523,9 @@ void DownloadItemView::ButtonPressed(
if (sender == discard_button_) {
UMA_HISTOGRAM_LONG_TIMES("clickjacking.discard_download",
base::Time::Now() - creation_time_);
- if (download_->IsPartialDownload())
- download_->Cancel(true);
- download_->Delete(DownloadItem::DELETE_DUE_TO_USER_DISCARD);
+ if (download()->IsPartialDownload())
+ download()->Cancel(true);
+ download()->Delete(DownloadItem::DELETE_DUE_TO_USER_DISCARD);
// WARNING: we are deleted at this point. Don't access 'this'.
} else if (save_button_ && sender == save_button_) {
// The user has confirmed a dangerous download. We'd record how quickly the
@@ -535,7 +533,7 @@ void DownloadItemView::ButtonPressed(
UMA_HISTOGRAM_LONG_TIMES("clickjacking.save_download",
base::Time::Now() - creation_time_);
// This will change the state and notify us.
- download_->DangerousDownloadValidated();
+ download()->DangerousDownloadValidated();
}
}
@@ -742,7 +740,7 @@ void DownloadItemView::OnPaint(gfx::Canvas* canvas) {
if (!IsShowingWarningDialog()) {
string16 filename;
if (!disabled_while_opening_) {
- filename = ui::ElideFilename(download_->GetFileNameToReportUser(),
+ filename = ui::ElideFilename(download()->GetFileNameToReportUser(),
font_, kTextWidth);
} else {
// First, Calculate the download status opening string width.
@@ -751,7 +749,7 @@ void DownloadItemView::OnPaint(gfx::Canvas* canvas) {
int status_string_width = font_.GetStringWidth(status_string);
// Then, elide the file name.
string16 filename_string =
- ui::ElideFilename(download_->GetFileNameToReportUser(), font_,
+ ui::ElideFilename(download()->GetFileNameToReportUser(), font_,
kTextWidth - status_string_width);
// Last, concat the whole string.
filename = l10n_util::GetStringFUTF16(IDS_DOWNLOAD_STATUS_OPENING,
@@ -775,7 +773,7 @@ void DownloadItemView::OnPaint(gfx::Canvas* canvas) {
// Load the icon.
IconManager* im = g_browser_process->icon_manager();
- gfx::Image* image = im->LookupIcon(download_->GetUserVerifiedFilePath(),
+ gfx::Image* image = im->LookupIcon(download()->GetUserVerifiedFilePath(),
IconLoader::SMALL);
const gfx::ImageSkia* icon = NULL;
if (IsShowingWarningDialog())
@@ -790,15 +788,15 @@ void DownloadItemView::OnPaint(gfx::Canvas* canvas) {
// triggered only when we think the status might change.
if (icon) {
if (!IsShowingWarningDialog()) {
- if (download_->IsInProgress()) {
+ if (download()->IsInProgress()) {
download_util::PaintDownloadProgress(canvas, this, 0, 0,
progress_angle_,
- model_->PercentComplete(),
+ model_.PercentComplete(),
download_util::SMALL);
- } else if (download_->IsComplete() &&
+ } else if (download()->IsComplete() &&
complete_animation_.get() &&
complete_animation_->is_animating()) {
- if (download_->IsInterrupted()) {
+ if (download()->IsInterrupted()) {
download_util::PaintDownloadInterrupted(canvas, this, 0, 0,
complete_animation_->GetCurrentValue(),
download_util::SMALL);
@@ -838,13 +836,13 @@ void DownloadItemView::OpenDownload() {
// open downloads super quickly, we should be concerned about clickjacking.
UMA_HISTOGRAM_LONG_TIMES("clickjacking.open_download",
base::Time::Now() - creation_time_);
- download_->OpenDownload();
+ download()->OpenDownload();
UpdateAccessibleName();
}
void DownloadItemView::LoadIcon() {
IconManager* im = g_browser_process->icon_manager();
- last_download_item_path_ = download_->GetUserVerifiedFilePath();
+ last_download_item_path_ = download()->GetUserVerifiedFilePath();
im->LoadIcon(last_download_item_path_,
IconLoader::SMALL,
base::Bind(&DownloadItemView::OnExtractIconComplete,
@@ -853,7 +851,7 @@ void DownloadItemView::LoadIcon() {
}
void DownloadItemView::LoadIconIfItemPathChanged() {
- FilePath current_download_path = download_->GetUserVerifiedFilePath();
+ FilePath current_download_path = download()->GetUserVerifiedFilePath();
if (last_download_item_path_ == current_download_path)
return;
@@ -902,8 +900,7 @@ void DownloadItemView::ShowContextMenuImpl(const gfx::Point& p,
if (!context_menu_.get()) {
context_menu_.reset(
- new DownloadShelfContextMenuView(model_.get(),
- shelf_->GetNavigator()));
+ new DownloadShelfContextMenuView(download(), shelf_->GetNavigator()));
}
context_menu_->Run(GetWidget()->GetTopLevelWidget(),
gfx::Rect(point, size));
@@ -1000,8 +997,8 @@ void DownloadItemView::SetState(State new_body_state, State new_drop_state) {
}
void DownloadItemView::ClearWarningDialog() {
- DCHECK(download_->GetSafetyState() == DownloadItem::DANGEROUS_BUT_VALIDATED &&
- (mode_ == DANGEROUS_MODE || mode_ == MALICIOUS_MODE));
+ DCHECK(download()->GetSafetyState() == DownloadItem::DANGEROUS_BUT_VALIDATED);
+ DCHECK(mode_ == DANGEROUS_MODE || mode_ == MALICIOUS_MODE);
mode_ = NORMAL_MODE;
body_state_ = NORMAL;
@@ -1027,7 +1024,7 @@ void DownloadItemView::ClearWarningDialog() {
UpdateAccessibleName();
UpdateDropDownButtonPosition();
- // We need to load the icon now that the download_ has the real path.
+ // We need to load the icon now that the download has the real path.
LoadIcon();
// Force the shelf to layout again as our size has changed.
@@ -1039,13 +1036,13 @@ void DownloadItemView::ClearWarningDialog() {
void DownloadItemView::ShowWarningDialog() {
DCHECK(mode_ != DANGEROUS_MODE && mode_ != MALICIOUS_MODE);
- mode_ = ((model_->IsMalicious()) ? MALICIOUS_MODE : DANGEROUS_MODE);
+ mode_ = ((model_.IsMalicious()) ? MALICIOUS_MODE : DANGEROUS_MODE);
body_state_ = NORMAL;
drop_down_state_ = NORMAL;
if (mode_ == DANGEROUS_MODE) {
save_button_ = new views::NativeTextButton(
- this, model_->GetWarningConfirmButtonText());
+ this, model_.GetWarningConfirmButtonText());
save_button_->set_ignore_minimum_size(true);
AddChildView(save_button_);
}
@@ -1063,7 +1060,7 @@ void DownloadItemView::ShowWarningDialog() {
// The download file has dangerous file type (e.g.: an executable).
warning_icon_ = rb.GetImageSkiaNamed(IDR_WARNING);
}
- string16 dangerous_label = model_->GetWarningText(font_, kTextWidth);
+ string16 dangerous_label = model_.GetWarningText(font_, kTextWidth);
dangerous_download_label_ = new views::Label(dangerous_label);
dangerous_download_label_->SetMultiLine(true);
dangerous_download_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
@@ -1185,7 +1182,7 @@ void DownloadItemView::UpdateAccessibleName() {
new_name = dangerous_download_label_->text();
} else {
new_name = status_text_ + char16(' ') +
- download_->GetFileNameToReportUser().LossyDisplayName();
+ download()->GetFileNameToReportUser().LossyDisplayName();
}
// If the name has changed, notify assistive technology that the name

Powered by Google App Engine
This is Rietveld 408576698