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

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

Issue 2439533002: Download Feedback Service should upload all eligible downloads (Closed)
Patch Set: fix comments and nits Created 4 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/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 f22135871709b79f713d6468c86e07f52fbd6b5f..8b9ff51d8dd1b76baa364096ffbd414b70720c39 100644
--- a/chrome/browser/ui/views/download/download_item_view.cc
+++ b/chrome/browser/ui/views/download/download_item_view.cc
@@ -257,6 +257,29 @@ void DownloadItemView::OnExtractIconComplete(gfx::Image* icon_bitmap) {
shelf_->SchedulePaint();
}
+void DownloadItemView::MaybeSubmitDownloadToFeedbackService(
+ DownloadCommands::Command download_command) {
+ PrefService* prefs = shelf_->browser()->profile()->GetPrefs();
+ if (model_.MightBeMalicious() && model_.ShouldAllowDownloadFeedback() &&
+ !shelf_->browser()->profile()->IsOffTheRecord()) {
+ if (safe_browsing::ExtendedReportingPrefExists(*prefs)) {
+ SubmitDownloadWhenFeedbackServiceEnabled(
+ download_command, safe_browsing::IsExtendedReportingEnabled(*prefs));
+ } else {
+ // Show dialog, because the dialog hasn't been shown before.
+ DownloadFeedbackDialogView::Show(
+ shelf_->get_parent()->GetNativeWindow(), shelf_->browser()->profile(),
+ shelf_->GetNavigator(),
+ base::Bind(
+ &DownloadItemView::SubmitDownloadWhenFeedbackServiceEnabled,
+ weak_ptr_factory_.GetWeakPtr(), download_command));
+ }
+ } else {
+ DownloadCommands command(download());
+ command.ExecuteCommand(download_command);
+ }
+}
+
// DownloadObserver interface.
// Update the progress graphic on the icon and our text status label
@@ -572,23 +595,7 @@ void DownloadItemView::ButtonPressed(views::Button* sender,
// WARNING: all end states after this point delete |this|.
Peter Kasting 2016/11/01 23:48:32 I think this lies; when MaybeSubmit...() calls Dow
Jialiu Lin 2016/11/03 20:16:50 Done.
DCHECK_EQ(discard_button_, sender);
UMA_HISTOGRAM_LONG_TIMES("clickjacking.discard_download", warning_duration);
- Profile* profile = shelf_->browser()->profile();
- if (!model_.IsMalicious() && model_.ShouldAllowDownloadFeedback() &&
- !profile->IsOffTheRecord()) {
- if (!safe_browsing::ExtendedReportingPrefExists(*profile->GetPrefs())) {
- // Show dialog, because the dialog hasn't been shown before.
- DownloadFeedbackDialogView::Show(
- shelf_->get_parent()->GetNativeWindow(), profile,
- shelf_->GetNavigator(),
- base::Bind(&DownloadItemView::PossiblySubmitDownloadToFeedbackService,
- weak_ptr_factory_.GetWeakPtr()));
- } else {
- PossiblySubmitDownloadToFeedbackService(
- safe_browsing::IsExtendedReportingEnabled(*profile->GetPrefs()));
- }
- return;
- }
- download()->Remove();
+ MaybeSubmitDownloadToFeedbackService(DownloadCommands::DISCARD);
}
SkColor DownloadItemView::GetVectorIconBaseColor() const {
@@ -753,7 +760,8 @@ void DownloadItemView::OpenDownload() {
download()->OpenDownload();
}
-bool DownloadItemView::SubmitDownloadToFeedbackService() {
+bool DownloadItemView::SubmitDownloadToFeedbackService(
+ DownloadCommands::Command download_command) {
#if defined(FULL_SAFE_BROWSING)
safe_browsing::SafeBrowsingService* sb_service =
g_browser_process->safe_browsing_service();
@@ -764,7 +772,7 @@ bool DownloadItemView::SubmitDownloadToFeedbackService() {
if (!download_protection_service)
return false;
download_protection_service->feedback_service()->BeginFeedbackForDownload(
- download());
+ download(), download_command);
// WARNING: we are deleted at this point. Don't access 'this'.
return true;
#else
@@ -773,9 +781,14 @@ bool DownloadItemView::SubmitDownloadToFeedbackService() {
#endif
}
-void DownloadItemView::PossiblySubmitDownloadToFeedbackService(bool enabled) {
- if (!enabled || !SubmitDownloadToFeedbackService())
- download()->Remove();
+void DownloadItemView::SubmitDownloadWhenFeedbackServiceEnabled(
+ DownloadCommands::Command download_command,
+ bool feedback_enabled) {
+ if (feedback_enabled && SubmitDownloadToFeedbackService(download_command))
+ return;
+
+ DownloadCommands command(download());
+ command.ExecuteCommand(download_command);
// WARNING: 'this' is deleted at this point. Don't access 'this'.
}
@@ -825,7 +838,7 @@ void DownloadItemView::ShowContextMenuImpl(const gfx::Rect& rect,
->SetMouseHandler(nullptr);
if (!context_menu_.get())
- context_menu_.reset(new DownloadShelfContextMenuView(download()));
+ context_menu_.reset(new DownloadShelfContextMenuView(this));
context_menu_->Run(GetWidget()->GetTopLevelWidget(), rect, source_type,
base::Bind(&DownloadItemView::ReleaseDropdown,
weak_ptr_factory_.GetWeakPtr()));

Powered by Google App Engine
This is Rietveld 408576698