| Index: chrome/browser/download/chrome_download_manager_delegate_unittest.cc
|
| diff --git a/chrome/browser/download/chrome_download_manager_delegate_unittest.cc b/chrome/browser/download/chrome_download_manager_delegate_unittest.cc
|
| index 64707589176af5a52d644fe212841f1c1badadc1..3ea6afab4ace1a643a67f54108fd650c60645afd 100644
|
| --- a/chrome/browser/download/chrome_download_manager_delegate_unittest.cc
|
| +++ b/chrome/browser/download/chrome_download_manager_delegate_unittest.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/run_loop.h"
|
| #include "chrome/browser/download/chrome_download_manager_delegate.h"
|
| #include "chrome/browser/download/download_prefs.h"
|
| +#include "chrome/browser/download/download_target_info.h"
|
| #include "chrome/common/pref_names.h"
|
| #include "chrome/test/base/chrome_render_view_host_test_harness.h"
|
| #include "chrome/test/base/testing_pref_service_syncable.h"
|
| @@ -65,13 +66,6 @@ ACTION_P2(ScheduleCallback2, result0, result1) {
|
| FROM_HERE, base::Bind(arg0, result0, result1));
|
| }
|
|
|
| -struct DownloadTarget {
|
| - base::FilePath target_path;
|
| - base::FilePath intermediate_path;
|
| - DownloadItem::TargetDisposition target_disposition;
|
| - content::DownloadDangerType danger_type;
|
| -};
|
| -
|
| // Subclass of the ChromeDownloadManagerDelegate that uses a mock
|
| // DownloadProtectionService.
|
| class TestChromeDownloadManagerDelegate : public ChromeDownloadManagerDelegate {
|
| @@ -152,7 +146,7 @@ class ChromeDownloadManagerDelegateTest :
|
| void SetDefaultDownloadPath(const base::FilePath& path);
|
|
|
| void DetermineDownloadTarget(DownloadItem* download,
|
| - DownloadTarget* result);
|
| + DownloadTargetInfo* result);
|
|
|
| const base::FilePath& default_download_path() const;
|
| TestChromeDownloadManagerDelegate* delegate();
|
| @@ -160,12 +154,6 @@ class ChromeDownloadManagerDelegateTest :
|
| DownloadPrefs* download_prefs();
|
|
|
| private:
|
| - void OnDownloadTargetDone(DownloadTarget* result,
|
| - const base::FilePath& target_path,
|
| - DownloadItem::TargetDisposition disposition,
|
| - content::DownloadDangerType danger_type,
|
| - const base::FilePath& intermediate_path);
|
| -
|
| TestingPrefServiceSyncable* pref_service_;
|
| base::ScopedTempDir test_download_dir_;
|
| scoped_ptr<content::MockDownloadManager> download_manager_;
|
| @@ -252,28 +240,27 @@ void ChromeDownloadManagerDelegateTest::SetDefaultDownloadPath(
|
| pref_service_->SetFilePath(prefs::kSaveFileDefaultDirectory, path);
|
| }
|
|
|
| +void StoreDownloadTargetInfo(const base::Closure& closure,
|
| + DownloadTargetInfo* target_info,
|
| + const base::FilePath& target_path,
|
| + DownloadItem::TargetDisposition target_disposition,
|
| + content::DownloadDangerType danger_type,
|
| + const base::FilePath& intermediate_path) {
|
| + target_info->target_path = target_path;
|
| + target_info->target_disposition = target_disposition;
|
| + target_info->danger_type = danger_type;
|
| + target_info->intermediate_path = intermediate_path;
|
| + closure.Run();
|
| +}
|
| +
|
| void ChromeDownloadManagerDelegateTest::DetermineDownloadTarget(
|
| DownloadItem* download_item,
|
| - DownloadTarget* result) {
|
| - base::WeakPtrFactory<ChromeDownloadManagerDelegateTest> factory(this);
|
| + DownloadTargetInfo* result) {
|
| + base::RunLoop loop_runner;
|
| delegate()->DetermineDownloadTarget(
|
| download_item,
|
| - base::Bind(&ChromeDownloadManagerDelegateTest::OnDownloadTargetDone,
|
| - factory.GetWeakPtr(), base::Unretained(result)));
|
| - base::RunLoop loop_runner;
|
| - loop_runner.RunUntilIdle();
|
| -}
|
| -
|
| -void ChromeDownloadManagerDelegateTest::OnDownloadTargetDone(
|
| - DownloadTarget* result,
|
| - const base::FilePath& target_path,
|
| - DownloadItem::TargetDisposition target_disposition,
|
| - content::DownloadDangerType danger_type,
|
| - const base::FilePath& intermediate_path) {
|
| - result->target_path = target_path;
|
| - result->intermediate_path = intermediate_path;
|
| - result->target_disposition = target_disposition;
|
| - result->danger_type = danger_type;
|
| + base::Bind(&StoreDownloadTargetInfo, loop_runner.QuitClosure(), result));
|
| + loop_runner.Run();
|
| }
|
|
|
| const base::FilePath& ChromeDownloadManagerDelegateTest::default_download_path()
|
| @@ -321,7 +308,7 @@ TEST_F(ChromeDownloadManagerDelegateTest, StartDownload_LastSavePath) {
|
| {
|
| // When the prompt is displayed for the first download, the user selects a
|
| // path in a different directory.
|
| - DownloadTarget result;
|
| + DownloadTargetInfo result;
|
| base::FilePath expected_prompt_path(GetPathInDownloadDir("foo.txt"));
|
| base::FilePath user_selected_path(GetPathInDownloadDir("bar/baz.txt"));
|
| EXPECT_CALL(*delegate(),
|
| @@ -336,7 +323,7 @@ TEST_F(ChromeDownloadManagerDelegateTest, StartDownload_LastSavePath) {
|
| {
|
| // The prompt path for the second download is the user selected directroy
|
| // from the previous download.
|
| - DownloadTarget result;
|
| + DownloadTargetInfo result;
|
| base::FilePath expected_prompt_path(GetPathInDownloadDir("bar/foo.txt"));
|
| EXPECT_CALL(*delegate(),
|
| MockPromptUserForDownloadPath(save_as_download.get(),
|
| @@ -349,7 +336,7 @@ TEST_F(ChromeDownloadManagerDelegateTest, StartDownload_LastSavePath) {
|
| {
|
| // Start an automatic download. This one should get the default download
|
| // path since the last download path only affects Save As downloads.
|
| - DownloadTarget result;
|
| + DownloadTargetInfo result;
|
| base::FilePath expected_path(GetPathInDownloadDir("foo.txt"));
|
| DetermineDownloadTarget(automatic_download.get(), &result);
|
| EXPECT_EQ(expected_path, result.target_path);
|
| @@ -359,7 +346,7 @@ TEST_F(ChromeDownloadManagerDelegateTest, StartDownload_LastSavePath) {
|
| {
|
| // The prompt path for the next download should be the default.
|
| download_prefs()->SetSaveFilePath(download_prefs()->DownloadPath());
|
| - DownloadTarget result;
|
| + DownloadTargetInfo result;
|
| base::FilePath expected_prompt_path(GetPathInDownloadDir("foo.txt"));
|
| EXPECT_CALL(*delegate(),
|
| MockPromptUserForDownloadPath(save_as_download.get(),
|
|
|