Chromium Code Reviews| Index: chrome/browser/download/save_page_browsertest.cc |
| =================================================================== |
| --- chrome/browser/download/save_page_browsertest.cc (revision 91473) |
| +++ chrome/browser/download/save_page_browsertest.cc (working copy) |
| @@ -7,7 +7,11 @@ |
| #include "base/path_service.h" |
| #include "base/scoped_temp_dir.h" |
| #include "chrome/app/chrome_command_ids.h" |
| +#include "chrome/browser/download/download_history.h" |
| #include "chrome/browser/download/download_item.h" |
| +#include "chrome/browser/download/download_manager.h" |
| +#include "chrome/browser/history/download_history_info.h" |
| +#include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/browser/ui/browser_window.h" |
| #include "chrome/browser/ui/download/download_tab_helper.h" |
| @@ -73,6 +77,65 @@ |
| #endif |
| } |
| + void QueryDownloadHistory() { |
| + DownloadManager* download_manager = |
| + browser()->profile()->GetDownloadManager(); |
| + ASSERT_TRUE(download_manager); |
| + |
| + // Query the history system. |
| + download_manager->download_history()->Load( |
| + NewCallback(this, |
| + &SavePageBrowserTest::OnQueryDownloadEntriesComplete)); |
| + |
| + // Run message loop until a quit message is sent from |
| + // OnQueryDownloadEntriesComplete(). |
| + ui_test_utils::RunMessageLoop(); |
| + } |
| + |
| + void OnQueryDownloadEntriesComplete( |
| + std::vector<DownloadHistoryInfo>* entries) { |
| + history_entries_ = *entries; |
| + |
| + // Indicate thet we have received the history and can continue. |
| + MessageLoopForUI::current()->Quit(); |
| + } |
| + |
| + struct DownloadHistoryInfoMatch |
| + : public std::unary_function<DownloadHistoryInfo, bool> { |
| + |
| + DownloadHistoryInfoMatch(const GURL& url, |
| + const FilePath& path, |
| + int64 num_files) |
| + : url_(url), |
| + path_(path), |
| + num_files_(num_files) { |
| + } |
| + |
| + bool operator() (const DownloadHistoryInfo& info) { |
| + return info.url == url_ && |
| + info.path == path_ && |
| + info.received_bytes == num_files_ && |
|
hendrickson_a
2011/07/08 18:47:37
I think this deserves a comment . . .
achuithb
2011/07/08 21:23:54
Done.
|
| + info.total_bytes == 0 && |
| + info.state == DownloadItem::COMPLETE; |
| + } |
| + |
| + GURL url_; |
| + FilePath path_; |
| + int64 num_files_; |
| + }; |
| + |
| + void CheckDownloadHistory(const GURL& url, |
| + const FilePath& path, |
| + int64 num_files_) { |
| + QueryDownloadHistory(); |
| + |
| + EXPECT_NE(std::find_if(history_entries_.begin(), history_entries_.end(), |
| + DownloadHistoryInfoMatch(url, path, num_files_)), |
| + history_entries_.end()); |
| + } |
| + |
| + std::vector<DownloadHistoryInfo> history_entries_; |
| + |
| // Path to directory containing test data. |
| FilePath test_dir_; |
| @@ -97,6 +160,7 @@ |
| EXPECT_EQ(url, WaitForSavePackageToFinish()); |
| CheckDownloadUI(full_file_name); |
| + CheckDownloadHistory(url, full_file_name, 1); // a.htm is 1 file. |
| EXPECT_TRUE(file_util::PathExists(full_file_name)); |
| EXPECT_FALSE(file_util::PathExists(dir)); |
| @@ -125,6 +189,7 @@ |
| EXPECT_EQ(actual_page_url, WaitForSavePackageToFinish()); |
| CheckDownloadUI(full_file_name); |
| + CheckDownloadHistory(actual_page_url, full_file_name, 1); // a.htm is 1 file. |
| EXPECT_TRUE(file_util::PathExists(full_file_name)); |
| EXPECT_FALSE(file_util::PathExists(dir)); |
| @@ -150,6 +215,7 @@ |
| EXPECT_EQ(url, WaitForSavePackageToFinish()); |
| CheckDownloadUI(full_file_name); |
| + CheckDownloadHistory(url, full_file_name, 3); // b.htm is 3 files. |
| EXPECT_TRUE(file_util::PathExists(full_file_name)); |
| EXPECT_TRUE(file_util::PathExists(dir)); |
| @@ -191,6 +257,7 @@ |
| EXPECT_EQ(url, WaitForSavePackageToFinish()); |
| CheckDownloadUI(full_file_name); |
| + CheckDownloadHistory(url, full_file_name, 3); // b.htm is 3 files. |
| EXPECT_TRUE(file_util::PathExists(full_file_name)); |
| EXPECT_TRUE(file_util::PathExists(dir)); |