Chromium Code Reviews| 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); |
| +} |