Index: chrome/browser/download/download_test_file_activity_observer.cc |
diff --git a/chrome/browser/download/download_test_file_activity_observer.cc b/chrome/browser/download/download_test_file_activity_observer.cc |
index db68b6fd60906615ff11c3777cc62fdcc3eb4f0a..3b51dadbbe5c08eb9ad88a814e26a5e46e70046c 100644 |
--- a/chrome/browser/download/download_test_file_activity_observer.cc |
+++ b/chrome/browser/download/download_test_file_activity_observer.cc |
@@ -25,6 +25,8 @@ class DownloadTestFileActivityObserver::MockDownloadManagerDelegate |
: ChromeDownloadManagerDelegate(profile), |
file_chooser_enabled_(false), |
file_chooser_displayed_(false), |
+ mark_downloads_dangerous_(false), |
+ global_danger_type_(content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS), |
weak_ptr_factory_(this) { |
if (!profile->IsOffTheRecord()) |
GetDownloadIdReceiverCallback().Run( |
@@ -47,6 +49,40 @@ class DownloadTestFileActivityObserver::MockDownloadManagerDelegate |
return weak_ptr_factory_.GetWeakPtr(); |
} |
+ void SetDangerTypeForNewDownloads(bool mark_downloads_dangerous, |
+ content::DownloadDangerType danger_type) { |
+ mark_downloads_dangerous_ = mark_downloads_dangerous; |
+ global_danger_type_ = danger_type; |
+ } |
+ |
+ virtual bool DetermineDownloadTarget( |
+ content::DownloadItem* item, |
+ const content::DownloadTargetCallback& callback) OVERRIDE { |
+ if (mark_downloads_dangerous_ && |
+ item->GetDangerType() != content::DOWNLOAD_DANGER_TYPE_NOT_DANGEROUS) { |
asanka
2014/06/05 19:20:12
Nit: Might be simpler to just route the callback t
|
+ content::DownloadTargetCallback dangerous_callback = |
+ base::Bind(&MockDownloadManagerDelegate::SetDangerous, |
+ callback); |
+ return ChromeDownloadManagerDelegate::DetermineDownloadTarget( |
+ item, dangerous_callback); |
+ } else { |
+ return ChromeDownloadManagerDelegate::DetermineDownloadTarget( |
+ item, callback); |
+ } |
+ } |
+ |
+ static void SetDangerous( |
+ const content::DownloadTargetCallback& callback, |
+ const base::FilePath& target_path, |
+ content::DownloadItem::TargetDisposition disp, |
+ content::DownloadDangerType danger_type, |
+ const base::FilePath& intermediate_path) { |
+ callback.Run(target_path, |
+ disp, |
+ content::DOWNLOAD_DANGER_TYPE_UNCOMMON_CONTENT, |
+ intermediate_path); |
+ } |
+ |
protected: |
virtual void PromptUserForDownloadPath(content::DownloadItem* item, |
@@ -64,6 +100,8 @@ class DownloadTestFileActivityObserver::MockDownloadManagerDelegate |
private: |
bool file_chooser_enabled_; |
bool file_chooser_displayed_; |
+ bool mark_downloads_dangerous_; // Whether the danger type should be changed. |
+ content::DownloadDangerType global_danger_type_; |
asanka
2014/06/05 19:20:12
Nit: maybe call it "forced_danger_type_" ? Just a
|
base::WeakPtrFactory<MockDownloadManagerDelegate> weak_ptr_factory_; |
}; |
@@ -89,3 +127,10 @@ bool DownloadTestFileActivityObserver::TestAndResetDidShowFileChooser() { |
return test_delegate_.get() && |
test_delegate_->TestAndResetDidShowFileChooser(); |
} |
+ |
+void DownloadTestFileActivityObserver::SetDangerTypeForNewDownloads( |
+ bool mark_dangerous, |
+ content::DownloadDangerType danger_type) { |
+ if (test_delegate_.get()) |
+ test_delegate_->SetDangerTypeForNewDownloads(mark_dangerous, danger_type); |
+} |