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

Unified Diff: chrome/browser/download/download_danger_prompt.cc

Issue 1972843002: MacViews GN: Get chrome compiling with mac_views_browser = true (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase (patch failure due to r393625) Created 4 years, 7 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 | « no previous file | chrome/browser/ui/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/download/download_danger_prompt.cc
diff --git a/chrome/browser/download/download_danger_prompt.cc b/chrome/browser/download/download_danger_prompt.cc
index f5b2e8f4b4293a1e97bcbbe635e208337165ac37..15deee40f679817c3481afd9af2dc3e54a0b8ff3 100644
--- a/chrome/browser/download/download_danger_prompt.cc
+++ b/chrome/browser/download/download_danger_prompt.cc
@@ -4,30 +4,16 @@
#include "chrome/browser/download/download_danger_prompt.h"
-#include "base/bind.h"
#include "base/macros.h"
#include "base/metrics/sparse_histogram.h"
#include "base/strings/stringprintf.h"
-#include "base/strings/utf_string_conversions.h"
#include "chrome/browser/browser_process.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/download/chrome_download_manager_delegate.h"
-#include "chrome/browser/download/download_stats.h"
-#include "chrome/browser/extensions/api/experience_sampling_private/experience_sampling.h"
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
-#include "chrome/browser/ui/tab_modal_confirm_dialog.h"
-#include "chrome/browser/ui/tab_modal_confirm_dialog_delegate.h"
#include "chrome/common/safe_browsing/csd.pb.h"
#include "chrome/common/safe_browsing/download_protection_util.h"
-#include "chrome/grit/chromium_strings.h"
-#include "chrome/grit/generated_resources.h"
-#include "content/public/browser/browser_context.h"
#include "content/public/browser/download_danger_type.h"
#include "content/public/browser/download_item.h"
-#include "grit/components_strings.h"
-#include "ui/base/l10n/l10n_util.h"
-using extensions::ExperienceSamplingEvent;
using safe_browsing::ClientDownloadResponse;
using safe_browsing::ClientSafeBrowsingReportRequest;
using safe_browsing::download_protection_util::
@@ -37,239 +23,6 @@ namespace {
const char kDownloadDangerPromptPrefix[] = "Download.DownloadDangerPrompt";
-// TODO(wittman): Create a native web contents modal dialog implementation of
-// this dialog for non-Views platforms, to support bold formatting of the
-// message lead.
-
-// Implements DownloadDangerPrompt using a TabModalConfirmDialog.
-class DownloadDangerPromptImpl : public DownloadDangerPrompt,
- public content::DownloadItem::Observer,
- public TabModalConfirmDialogDelegate {
- public:
- DownloadDangerPromptImpl(content::DownloadItem* item,
- content::WebContents* web_contents,
- bool show_context,
- const OnDone& done);
- ~DownloadDangerPromptImpl() override;
-
- // DownloadDangerPrompt:
- void InvokeActionForTesting(Action action) override;
-
- private:
- // content::DownloadItem::Observer:
- void OnDownloadUpdated(content::DownloadItem* download) override;
-
- // TabModalConfirmDialogDelegate:
- base::string16 GetTitle() override;
- base::string16 GetDialogMessage() override;
- base::string16 GetAcceptButtonTitle() override;
- base::string16 GetCancelButtonTitle() override;
- void OnAccepted() override;
- void OnCanceled() override;
- void OnClosed() override;
-
- void RunDone(Action action);
-
- content::DownloadItem* download_;
- bool show_context_;
- OnDone done_;
-
- std::unique_ptr<ExperienceSamplingEvent> sampling_event_;
-
- DISALLOW_COPY_AND_ASSIGN(DownloadDangerPromptImpl);
-};
-
-DownloadDangerPromptImpl::DownloadDangerPromptImpl(
- content::DownloadItem* download,
- content::WebContents* web_contents,
- bool show_context,
- const OnDone& done)
- : TabModalConfirmDialogDelegate(web_contents),
- download_(download),
- show_context_(show_context),
- done_(done) {
- DCHECK(!done_.is_null());
- download_->AddObserver(this);
- RecordOpenedDangerousConfirmDialog(download_->GetDangerType());
-
- // ExperienceSampling: A malicious download warning is being shown to the
- // user, so we start a new SamplingEvent and track it.
- sampling_event_.reset(new ExperienceSamplingEvent(
- ExperienceSamplingEvent::kDownloadDangerPrompt, download->GetURL(),
- download->GetReferrerUrl(), download->GetBrowserContext()));
-}
-
-DownloadDangerPromptImpl::~DownloadDangerPromptImpl() {
- // |this| might be deleted without invoking any callbacks. E.g. pressing Esc
- // on GTK or if the user navigates away from the page showing the prompt.
- RunDone(DISMISS);
-}
-
-void DownloadDangerPromptImpl::InvokeActionForTesting(Action action) {
- switch (action) {
- case ACCEPT:
- Accept();
- break;
- case CANCEL:
- Cancel();
- break;
- case DISMISS:
- RunDone(DISMISS);
- Cancel();
- break;
- }
-}
-
-void DownloadDangerPromptImpl::OnDownloadUpdated(
- content::DownloadItem* download) {
- // If the download is nolonger dangerous (accepted externally) or the download
- // is in a terminal state, then the download danger prompt is no longer
- // necessary.
- if (!download->IsDangerous() || download->IsDone()) {
- RunDone(DISMISS);
- Cancel();
- }
-}
-
-base::string16 DownloadDangerPromptImpl::GetTitle() {
- if (show_context_)
- return l10n_util::GetStringUTF16(IDS_CONFIRM_KEEP_DANGEROUS_DOWNLOAD_TITLE);
- switch (download_->GetDangerType()) {
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL:
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT:
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_HOST:
- case content::DOWNLOAD_DANGER_TYPE_POTENTIALLY_UNWANTED: {
- return l10n_util::GetStringUTF16(
- IDS_RESTORE_KEEP_DANGEROUS_DOWNLOAD_TITLE);
- }
- default: {
- return l10n_util::GetStringUTF16(
- IDS_CONFIRM_KEEP_DANGEROUS_DOWNLOAD_TITLE);
- }
- }
-}
-
-base::string16 DownloadDangerPromptImpl::GetDialogMessage() {
- if (show_context_) {
- switch (download_->GetDangerType()) {
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_FILE: {
- return l10n_util::GetStringFUTF16(
- IDS_PROMPT_DANGEROUS_DOWNLOAD,
- download_->GetFileNameToReportUser().LossyDisplayName());
- }
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL: // Fall through
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT:
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_HOST: {
- return l10n_util::GetStringFUTF16(
- IDS_PROMPT_MALICIOUS_DOWNLOAD_CONTENT,
- download_->GetFileNameToReportUser().LossyDisplayName());
- }
- case content::DOWNLOAD_DANGER_TYPE_UNCOMMON_CONTENT: {
- return l10n_util::GetStringFUTF16(
- IDS_PROMPT_UNCOMMON_DOWNLOAD_CONTENT,
- download_->GetFileNameToReportUser().LossyDisplayName());
- }
- case content::DOWNLOAD_DANGER_TYPE_POTENTIALLY_UNWANTED: {
- return l10n_util::GetStringFUTF16(
- IDS_PROMPT_DOWNLOAD_CHANGES_SETTINGS,
- download_->GetFileNameToReportUser().LossyDisplayName());
- }
- case content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS:
- case content::DOWNLOAD_DANGER_TYPE_MAYBE_DANGEROUS_CONTENT:
- case content::DOWNLOAD_DANGER_TYPE_USER_VALIDATED:
- case content::DOWNLOAD_DANGER_TYPE_MAX: {
- break;
- }
- }
- } else {
- switch (download_->GetDangerType()) {
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL:
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT:
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_HOST: {
- return l10n_util::GetStringUTF16(
- IDS_PROMPT_CONFIRM_KEEP_MALICIOUS_DOWNLOAD_LEAD) +
- base::ASCIIToUTF16("\n\n") +
- l10n_util::GetStringUTF16(
- IDS_PROMPT_CONFIRM_KEEP_MALICIOUS_DOWNLOAD_BODY);
- }
- default: {
- return l10n_util::GetStringUTF16(
- IDS_PROMPT_CONFIRM_KEEP_DANGEROUS_DOWNLOAD);
- }
- }
- }
- NOTREACHED();
- return base::string16();
-}
-
-base::string16 DownloadDangerPromptImpl::GetAcceptButtonTitle() {
- if (show_context_)
- return l10n_util::GetStringUTF16(IDS_CONFIRM_DOWNLOAD);
- switch (download_->GetDangerType()) {
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL:
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT:
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_HOST:
- case content::DOWNLOAD_DANGER_TYPE_POTENTIALLY_UNWANTED: {
- return l10n_util::GetStringUTF16(IDS_CONFIRM_DOWNLOAD_AGAIN_MALICIOUS);
- }
- default:
- return l10n_util::GetStringUTF16(IDS_CONFIRM_DOWNLOAD_AGAIN);
- }
-}
-
-base::string16 DownloadDangerPromptImpl::GetCancelButtonTitle() {
- if (show_context_)
- return l10n_util::GetStringUTF16(IDS_CANCEL);
- switch (download_->GetDangerType()) {
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_URL:
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_CONTENT:
- case content::DOWNLOAD_DANGER_TYPE_DANGEROUS_HOST:
- case content::DOWNLOAD_DANGER_TYPE_POTENTIALLY_UNWANTED: {
- return l10n_util::GetStringUTF16(IDS_CONFIRM_CANCEL_AGAIN_MALICIOUS);
- }
- default:
- return l10n_util::GetStringUTF16(IDS_CANCEL);
- }
-}
-
-void DownloadDangerPromptImpl::OnAccepted() {
- // ExperienceSampling: User proceeded through the warning.
- sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kProceed);
- RunDone(ACCEPT);
-}
-
-void DownloadDangerPromptImpl::OnCanceled() {
- // ExperienceSampling: User canceled the warning.
- sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kDeny);
- RunDone(CANCEL);
-}
-
-void DownloadDangerPromptImpl::OnClosed() {
- // ExperienceSampling: User canceled the warning.
- sampling_event_->CreateUserDecisionEvent(ExperienceSamplingEvent::kDeny);
- RunDone(DISMISS);
-}
-
-void DownloadDangerPromptImpl::RunDone(Action action) {
- // Invoking the callback can cause the download item state to change or cause
- // the constrained window to close, and |callback| refers to a member
- // variable.
- OnDone done = done_;
- done_.Reset();
- if (download_ != NULL) {
- const bool accept = action == DownloadDangerPrompt::ACCEPT;
- RecordDownloadDangerPrompt(accept, *download_);
- if (!download_->GetURL().is_empty() &&
- !download_->GetBrowserContext()->IsOffTheRecord()) {
- SendSafeBrowsingDownloadRecoveryReport(accept, *download_);
- }
- download_->RemoveObserver(this);
- download_ = NULL;
- }
- if (!done.is_null())
- done.Run(action);
-}
-
// Converts DownloadDangerType into their corresponding string.
const char* GetDangerTypeString(
const content::DownloadDangerType& danger_type) {
@@ -298,21 +51,6 @@ const char* GetDangerTypeString(
} // namespace
-#if !defined(USE_AURA)
-// static
-DownloadDangerPrompt* DownloadDangerPrompt::Create(
- content::DownloadItem* item,
- content::WebContents* web_contents,
- bool show_context,
- const OnDone& done) {
- DownloadDangerPromptImpl* prompt =
- new DownloadDangerPromptImpl(item, web_contents, show_context, done);
- // |prompt| will be deleted when the dialog is done.
- TabModalConfirmDialog::Create(prompt, web_contents);
- return prompt;
-}
-#endif
-
void DownloadDangerPrompt::SendSafeBrowsingDownloadRecoveryReport(
bool did_proceed,
const content::DownloadItem& download) {
« no previous file with comments | « no previous file | chrome/browser/ui/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698