| Index: chrome/browser/download/save_page_browsertest.cc
|
| diff --git a/chrome/browser/download/save_page_browsertest.cc b/chrome/browser/download/save_page_browsertest.cc
|
| index 37eab12071580e2d57907af1f281d373cb91162a..932b614154344d8e7fd508a62ef4eaf9ddc01b11 100644
|
| --- a/chrome/browser/download/save_page_browsertest.cc
|
| +++ b/chrome/browser/download/save_page_browsertest.cc
|
| @@ -17,6 +17,7 @@
|
| #include "chrome/browser/download/download_prefs.h"
|
| #include "chrome/browser/download/download_service.h"
|
| #include "chrome/browser/download/download_service_factory.h"
|
| +#include "chrome/browser/history/download_persistent_store_info.h"
|
| #include "chrome/browser/net/url_request_mock_util.h"
|
| #include "chrome/browser/prefs/pref_service.h"
|
| #include "chrome/browser/profiles/profile.h"
|
| @@ -32,7 +33,6 @@
|
| #include "chrome/test/base/ui_test_utils.h"
|
| #include "content/public/browser/download_item.h"
|
| #include "content/public/browser/download_manager.h"
|
| -#include "content/public/browser/download_persistent_store_info.h"
|
| #include "content/public/browser/notification_service.h"
|
| #include "content/public/browser/notification_types.h"
|
| #include "content/public/browser/web_contents.h"
|
| @@ -50,13 +50,130 @@ using content::BrowserContext;
|
| using content::BrowserThread;
|
| using content::DownloadItem;
|
| using content::DownloadManager;
|
| -using content::DownloadPersistentStoreInfo;
|
| using content::URLRequestMockHTTPJob;
|
| using content::WebContents;
|
|
|
| +// Waits for an item record in the downloads database to match |filter|. See
|
| +// DownloadStoredProperly() below for an example filter.
|
| +class DownloadPersistedObserver : public DownloadHistory::Observer {
|
| + public:
|
| + typedef base::Callback<bool(
|
| + DownloadItem* item,
|
| + const DownloadPersistentStoreInfo&)> PersistedFilter;
|
| +
|
| + DownloadPersistedObserver(Profile* profile, const PersistedFilter& filter)
|
| + : profile_(profile),
|
| + filter_(filter) {
|
| + DownloadServiceFactory::GetForProfile(profile_)->
|
| + GetDownloadHistory()->AddObserver(this);
|
| + }
|
| +
|
| + virtual ~DownloadPersistedObserver() {
|
| + DownloadService* service = DownloadServiceFactory::GetForProfile(profile_);
|
| + if (service && service->GetDownloadHistory())
|
| + service->GetDownloadHistory()->RemoveObserver(this);
|
| + }
|
| +
|
| + bool WaitForPersisted() {
|
| + if (persisted_)
|
| + return true;
|
| + waiting_ = true;
|
| + content::RunMessageLoop();
|
| + waiting_ = false;
|
| + return persisted_;
|
| + }
|
| +
|
| + virtual void OnDownloadStored(DownloadItem* item,
|
| + const DownloadPersistentStoreInfo& info) {
|
| + persisted_ = filter_.Run(item, info);
|
| + if (persisted_ && waiting_)
|
| + MessageLoopForUI::current()->Quit();
|
| + }
|
| +
|
| + private:
|
| + Profile* profile_;
|
| + DownloadItem* item_;
|
| + PersistedFilter filter_;
|
| + bool waiting_;
|
| + bool persisted_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DownloadPersistedObserver);
|
| +};
|
| +
|
| +// Waits for an item record to be removed from the downloads database.
|
| +class DownloadRemovedObserver : public DownloadPersistedObserver {
|
| + public:
|
| + DownloadRemovedObserver(Profile* profile, int32 download_id)
|
| + : DownloadPersistedObserver(profile, PersistedFilter()),
|
| + removed_(false),
|
| + waiting_(false),
|
| + download_id_(download_id) {
|
| + }
|
| + virtual ~DownloadRemovedObserver() {}
|
| +
|
| + bool WaitForRemoved() {
|
| + if (removed_)
|
| + return true;
|
| + waiting_ = true;
|
| + content::RunMessageLoop();
|
| + waiting_ = false;
|
| + return removed_;
|
| + }
|
| +
|
| + virtual void OnDownloadStored(DownloadItem* item,
|
| + const DownloadPersistentStoreInfo& info) {
|
| + }
|
| +
|
| + virtual void OnDownloadsRemoved(const DownloadHistory::IdSet& ids) {
|
| + removed_ = ids.find(download_id_) != ids.end();
|
| + if (removed_ && waiting_)
|
| + MessageLoopForUI::current()->Quit();
|
| + }
|
| +
|
| + private:
|
| + bool removed_;
|
| + bool waiting_;
|
| + int32 download_id_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(DownloadRemovedObserver);
|
| +};
|
| +
|
| +bool DownloadStoredProperly(
|
| + const GURL& expected_url,
|
| + const FilePath& expected_path,
|
| + int64 num_files,
|
| + DownloadItem::DownloadState expected_state,
|
| + DownloadItem* item,
|
| + const DownloadPersistentStoreInfo& info) {
|
| + // This function may be called multiple times for a given test. Returning
|
| + // false doesn't necessarily mean that the test has failed or will fail, it
|
| + // might just mean that the test hasn't passed yet.
|
| + if (info.path != expected_path) {
|
| + VLOG(20) << __FUNCTION__ << " " << info.path.value()
|
| + << " != " << expected_path.value();
|
| + return false;
|
| + }
|
| + if (info.url != expected_url) {
|
| + VLOG(20) << __FUNCTION__ << " " << info.url.spec()
|
| + << " != " << expected_url.spec();
|
| + return false;
|
| + }
|
| + if ((num_files >= 0) && (info.received_bytes != num_files)) {
|
| + VLOG(20) << __FUNCTION__ << " " << num_files
|
| + << " != " << info.received_bytes;
|
| + return false;
|
| + }
|
| + if (info.state != expected_state) {
|
| + VLOG(20) << __FUNCTION__ << " " << info.state
|
| + << " != " << expected_state;
|
| + return false;
|
| + }
|
| + return true;
|
| +}
|
| +
|
| const FilePath::CharType kTestDir[] = FILE_PATH_LITERAL("save_page");
|
|
|
| -const char kAppendedExtension[] =
|
| +static const char kAppendedExtension[] =
|
| #if defined(OS_WIN)
|
| ".htm";
|
| #else
|
| @@ -99,7 +216,6 @@ class DownloadItemCreatedObserver : public DownloadManager::Observer {
|
| }
|
|
|
| private:
|
| -
|
| // DownloadManager::Observer
|
| virtual void OnDownloadCreated(
|
| DownloadManager* manager, DownloadItem* item) OVERRIDE {
|
| @@ -124,60 +240,6 @@ class DownloadItemCreatedObserver : public DownloadManager::Observer {
|
| DISALLOW_COPY_AND_ASSIGN(DownloadItemCreatedObserver);
|
| };
|
|
|
| -class DownloadPersistedObserver : public DownloadItem::Observer {
|
| - public:
|
| - explicit DownloadPersistedObserver(DownloadItem* item)
|
| - : waiting_(false), item_(item) {
|
| - item->AddObserver(this);
|
| - }
|
| -
|
| - ~DownloadPersistedObserver() {
|
| - if (item_)
|
| - item_->RemoveObserver(this);
|
| - }
|
| -
|
| - // Wait for download item to get the persisted bit set.
|
| - // Note that this class provides no protection against the download
|
| - // being destroyed between creation and return of WaitForPersisted();
|
| - // the caller must guarantee that in some other fashion.
|
| - void WaitForPersisted() {
|
| - // In combination with OnDownloadDestroyed() below, verify the
|
| - // above interface contract.
|
| - DCHECK(item_);
|
| -
|
| - if (item_->IsPersisted())
|
| - return;
|
| -
|
| - waiting_ = true;
|
| - content::RunMessageLoop();
|
| - waiting_ = false;
|
| -
|
| - return;
|
| - }
|
| -
|
| - private:
|
| - // DownloadItem::Observer
|
| - virtual void OnDownloadUpdated(DownloadItem* item) OVERRIDE {
|
| - DCHECK_EQ(item, item_);
|
| -
|
| - if (waiting_ && item->IsPersisted())
|
| - MessageLoopForUI::current()->Quit();
|
| - }
|
| -
|
| - virtual void OnDownloadDestroyed(DownloadItem* item) OVERRIDE {
|
| - if (item != item_)
|
| - return;
|
| -
|
| - item_->RemoveObserver(this);
|
| - item_ = NULL;
|
| - }
|
| -
|
| - bool waiting_;
|
| - DownloadItem* item_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(DownloadPersistedObserver);
|
| -};
|
| -
|
| class SavePageBrowserTest : public InProcessBrowserTest {
|
| public:
|
| SavePageBrowserTest() {}
|
| @@ -219,7 +281,11 @@ class SavePageBrowserTest : public InProcessBrowserTest {
|
| return current_tab;
|
| }
|
|
|
| - bool WaitForSavePackageToFinish(Browser* browser, GURL* url_at_finish) const {
|
| + // Returns true if and when there was a single download created, and its url
|
| + // is |expected_url|.
|
| + bool WaitForSavePackageToFinish(
|
| + Browser* browser,
|
| + const GURL& expected_url) const {
|
| content::WindowedNotificationObserver observer(
|
| content::NOTIFICATION_SAVE_PACKAGE_SUCCESSFULLY_FINISHED,
|
| content::NotificationService::AllSources());
|
| @@ -241,24 +307,23 @@ class SavePageBrowserTest : public InProcessBrowserTest {
|
| return false;
|
| DownloadItem* download_item(items[0]);
|
|
|
| - // Note on synchronization:
|
| - //
|
| - // For each Save Page As operation, we create a corresponding shell
|
| - // DownloadItem to display progress to the user. That DownloadItem
|
| - // goes through its own state transitions, including being persisted
|
| - // out to the history database, and the download shelf is not shown
|
| - // until after the persistence occurs. Save Package completion (and
|
| - // marking the DownloadItem as completed) occurs asynchronously from
|
| - // persistence. Thus if we want to examine either UI state or DB
|
| - // state, we need to wait until both the save package operation is
|
| - // complete and the relevant download item has been persisted.
|
| - DownloadPersistedObserver(download_item).WaitForPersisted();
|
| -
|
| - *url_at_finish = content::Details<DownloadItem>(observer.details()).ptr()->
|
| - GetOriginalUrl();
|
| - return true;
|
| + return ((expected_url == download_item->GetOriginalUrl()) &&
|
| + (expected_url == content::Details<DownloadItem>(
|
| + observer.details()).ptr()->GetOriginalUrl()));
|
| }
|
|
|
| + // Note on synchronization:
|
| + //
|
| + // For each Save Page As operation, we create a corresponding shell
|
| + // DownloadItem to display progress to the user. That DownloadItem goes
|
| + // through its own state transitions, including being persisted out to the
|
| + // history database, and the download shelf is not shown until after the
|
| + // persistence occurs. Save Package completion (and marking the DownloadItem
|
| + // as completed) occurs asynchronously from persistence. Thus if we want to
|
| + // examine either UI state or DB state, we need to wait until both the save
|
| + // package operation is complete and the relevant download item has been
|
| + // persisted.
|
| +
|
| DownloadManager* GetDownloadManager() const {
|
| DownloadManager* download_manager =
|
| BrowserContext::GetDownloadManager(browser()->profile());
|
| @@ -266,92 +331,6 @@ class SavePageBrowserTest : public InProcessBrowserTest {
|
| return download_manager;
|
| }
|
|
|
| - void QueryDownloadHistory() {
|
| - // Query the history system.
|
| - ChromeDownloadManagerDelegate* delegate =
|
| - static_cast<ChromeDownloadManagerDelegate*>(
|
| - GetDownloadManager()->GetDelegate());
|
| - delegate->download_history()->Load(
|
| - base::Bind(&SavePageBrowserTest::OnQueryDownloadEntriesComplete,
|
| - base::Unretained(this)));
|
| -
|
| - // Run message loop until a quit message is sent from
|
| - // OnQueryDownloadEntriesComplete().
|
| - content::RunMessageLoop();
|
| - }
|
| -
|
| - void OnQueryDownloadEntriesComplete(
|
| - std::vector<DownloadPersistentStoreInfo>* entries) {
|
| - history_entries_ = *entries;
|
| -
|
| - // Indicate thet we have received the history and can continue.
|
| - MessageLoopForUI::current()->Quit();
|
| - }
|
| -
|
| - struct DownloadPersistentStoreInfoMatch
|
| - : public std::unary_function<DownloadPersistentStoreInfo, bool> {
|
| -
|
| - DownloadPersistentStoreInfoMatch(const GURL& url,
|
| - const FilePath& path,
|
| - int64 num_files,
|
| - DownloadItem::DownloadState state)
|
| - : url_(url),
|
| - path_(path),
|
| - num_files_(num_files),
|
| - state_(state) {}
|
| -
|
| - bool operator() (const DownloadPersistentStoreInfo& info) const {
|
| - return info.url == url_ &&
|
| - info.path == path_ &&
|
| - // For non-MHTML save packages, received_bytes is actually the
|
| - // number of files.
|
| - ((num_files_ < 0) ||
|
| - (info.received_bytes == num_files_)) &&
|
| - info.total_bytes == 0 &&
|
| - info.state == state_;
|
| - }
|
| -
|
| - GURL url_;
|
| - FilePath path_;
|
| - int64 num_files_;
|
| - DownloadItem::DownloadState state_;
|
| - };
|
| -
|
| - void CheckDownloadHistory(const GURL& url,
|
| - const FilePath& path,
|
| - int64 num_files,
|
| - DownloadItem::DownloadState state) {
|
| - // Make sure the relevant download item made it into the history.
|
| - std::vector<DownloadItem*> downloads;
|
| - GetDownloadManager()->GetAllDownloads(&downloads);
|
| - ASSERT_EQ(1u, downloads.size());
|
| -
|
| - QueryDownloadHistory();
|
| -
|
| - std::vector<DownloadPersistentStoreInfo>::iterator found =
|
| - std::find_if(history_entries_.begin(), history_entries_.end(),
|
| - DownloadPersistentStoreInfoMatch(url, path, num_files,
|
| - state));
|
| -
|
| - if (found == history_entries_.end()) {
|
| - LOG(ERROR) << "Missing url=" << url.spec()
|
| - << " path=" << path.value()
|
| - << " received=" << num_files
|
| - << " state=" << state;
|
| - for (size_t index = 0; index < history_entries_.size(); ++index) {
|
| - LOG(ERROR) << "History@" << index << ": url="
|
| - << history_entries_[index].url.spec()
|
| - << " path=" << history_entries_[index].path.value()
|
| - << " received=" << history_entries_[index].received_bytes
|
| - << " total=" << history_entries_[index].total_bytes
|
| - << " state=" << history_entries_[index].state;
|
| - }
|
| - EXPECT_TRUE(false);
|
| - }
|
| - }
|
| -
|
| - std::vector<DownloadPersistentStoreInfo> history_entries_;
|
| -
|
| // Path to directory containing test data.
|
| FilePath test_dir_;
|
|
|
| @@ -370,17 +349,14 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, SaveHTMLOnly) {
|
|
|
| FilePath full_file_name, dir;
|
| GetDestinationPaths("a", &full_file_name, &dir);
|
| + DownloadPersistedObserver persisted(browser()->profile(), base::Bind(
|
| + &DownloadStoredProperly, url, full_file_name, 1,
|
| + DownloadItem::COMPLETE));
|
| ASSERT_TRUE(GetCurrentTab(browser())->SavePage(full_file_name, dir,
|
| content::SAVE_PAGE_TYPE_AS_ONLY_HTML));
|
| -
|
| - GURL output_url;
|
| - ASSERT_TRUE(WaitForSavePackageToFinish(browser(), &output_url));
|
| - EXPECT_EQ(url, output_url);
|
| -
|
| + ASSERT_TRUE(WaitForSavePackageToFinish(browser(), url));
|
| + persisted.WaitForPersisted();
|
| EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
|
| - // a.htm is 1 file.
|
| - CheckDownloadHistory(url, full_file_name, 1, DownloadItem::COMPLETE);
|
| -
|
| EXPECT_TRUE(file_util::PathExists(full_file_name));
|
| EXPECT_FALSE(file_util::PathExists(dir));
|
| EXPECT_TRUE(file_util::ContentsEqual(
|
| @@ -398,6 +374,9 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, SaveHTMLOnlyCancel) {
|
| FilePath full_file_name, dir;
|
| GetDestinationPaths("a", &full_file_name, &dir);
|
| DownloadItemCreatedObserver creation_observer(manager);
|
| + DownloadPersistedObserver persisted(browser()->profile(), base::Bind(
|
| + &DownloadStoredProperly, url, full_file_name, -1,
|
| + DownloadItem::CANCELLED));
|
| ASSERT_TRUE(GetCurrentTab(browser())->SavePage(full_file_name, dir,
|
| content::SAVE_PAGE_TYPE_AS_ONLY_HTML));
|
| std::vector<DownloadItem*> items;
|
| @@ -407,14 +386,11 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, SaveHTMLOnlyCancel) {
|
|
|
| // TODO(rdsmith): Fix DII::Cancel() to actually cancel the save package.
|
| // Currently it's ignored.
|
| - GURL output_url;
|
| - ASSERT_TRUE(WaitForSavePackageToFinish(browser(), &output_url));
|
| - EXPECT_EQ(url, output_url);
|
| -
|
| + ASSERT_TRUE(WaitForSavePackageToFinish(browser(), url));
|
| + persisted.WaitForPersisted();
|
| // -1 to disable number of files check; we don't update after cancel, and
|
| // we don't know when the single file completed in relationship to
|
| // the cancel.
|
| - CheckDownloadHistory(url, full_file_name, -1, DownloadItem::CANCELLED);
|
|
|
| EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
|
|
|
| @@ -459,17 +435,15 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, SaveViewSourceHTMLOnly) {
|
|
|
| FilePath full_file_name, dir;
|
| GetDestinationPaths("a", &full_file_name, &dir);
|
| + DownloadPersistedObserver persisted(browser()->profile(), base::Bind(
|
| + &DownloadStoredProperly, actual_page_url, full_file_name, 1,
|
| + DownloadItem::COMPLETE));
|
| ASSERT_TRUE(GetCurrentTab(browser())->SavePage(full_file_name, dir,
|
| content::SAVE_PAGE_TYPE_AS_ONLY_HTML));
|
| -
|
| - GURL output_url;
|
| - ASSERT_TRUE(WaitForSavePackageToFinish(browser(), &output_url));
|
| - EXPECT_EQ(actual_page_url, output_url);
|
| + ASSERT_TRUE(WaitForSavePackageToFinish(browser(), actual_page_url));
|
| + persisted.WaitForPersisted();
|
|
|
| EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
|
| - // a.htm is 1 file.
|
| - CheckDownloadHistory(actual_page_url, full_file_name, 1,
|
| - DownloadItem::COMPLETE);
|
|
|
| EXPECT_TRUE(file_util::PathExists(full_file_name));
|
| EXPECT_FALSE(file_util::PathExists(dir));
|
| @@ -483,16 +457,15 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, SaveCompleteHTML) {
|
|
|
| FilePath full_file_name, dir;
|
| GetDestinationPaths("b", &full_file_name, &dir);
|
| + DownloadPersistedObserver persisted(browser()->profile(), base::Bind(
|
| + &DownloadStoredProperly, url, full_file_name, 3,
|
| + DownloadItem::COMPLETE));
|
| ASSERT_TRUE(GetCurrentTab(browser())->SavePage(
|
| full_file_name, dir, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML));
|
| -
|
| - GURL output_url;
|
| - ASSERT_TRUE(WaitForSavePackageToFinish(browser(), &output_url));
|
| - EXPECT_EQ(url, output_url);
|
| + ASSERT_TRUE(WaitForSavePackageToFinish(browser(), url));
|
| + persisted.WaitForPersisted();
|
|
|
| EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
|
| - // b.htm is 3 files.
|
| - CheckDownloadHistory(url, full_file_name, 3, DownloadItem::COMPLETE);
|
|
|
| EXPECT_TRUE(file_util::PathExists(full_file_name));
|
| EXPECT_TRUE(file_util::PathExists(dir));
|
| @@ -531,9 +504,7 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest,
|
| ASSERT_TRUE(GetCurrentTab(incognito)->SavePage(
|
| full_file_name, dir, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML));
|
|
|
| - GURL output_url;
|
| - WaitForSavePackageToFinish(incognito, &output_url);
|
| - EXPECT_EQ(url, output_url);
|
| + ASSERT_TRUE(WaitForSavePackageToFinish(incognito, url));
|
|
|
| // Confirm download shelf is visible.
|
| EXPECT_TRUE(incognito->window()->IsDownloadShelfVisible());
|
| @@ -557,16 +528,16 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, FileNameFromPageTitle) {
|
| std::string("Test page for saving page feature") + kAppendedExtension);
|
| FilePath dir = save_dir_.path().AppendASCII(
|
| "Test page for saving page feature_files");
|
| + DownloadPersistedObserver persisted(browser()->profile(), base::Bind(
|
| + &DownloadStoredProperly, url, full_file_name, 3,
|
| + DownloadItem::COMPLETE));
|
| ASSERT_TRUE(GetCurrentTab(browser())->SavePage(
|
| full_file_name, dir, content::SAVE_PAGE_TYPE_AS_COMPLETE_HTML));
|
|
|
| - GURL output_url;
|
| - ASSERT_TRUE(WaitForSavePackageToFinish(browser(), &output_url));
|
| - EXPECT_EQ(url, output_url);
|
| + ASSERT_TRUE(WaitForSavePackageToFinish(browser(), url));
|
| + persisted.WaitForPersisted();
|
|
|
| EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
|
| - // b.htm is 3 files.
|
| - CheckDownloadHistory(url, full_file_name, 3, DownloadItem::COMPLETE);
|
|
|
| EXPECT_TRUE(file_util::PathExists(full_file_name));
|
| EXPECT_TRUE(file_util::PathExists(dir));
|
| @@ -586,25 +557,26 @@ IN_PROC_BROWSER_TEST_F(SavePageBrowserTest, RemoveFromList) {
|
|
|
| FilePath full_file_name, dir;
|
| GetDestinationPaths("a", &full_file_name, &dir);
|
| + DownloadPersistedObserver persisted(browser()->profile(), base::Bind(
|
| + &DownloadStoredProperly, url, full_file_name, 1,
|
| + DownloadItem::COMPLETE));
|
| ASSERT_TRUE(GetCurrentTab(browser())->SavePage(full_file_name, dir,
|
| content::SAVE_PAGE_TYPE_AS_ONLY_HTML));
|
|
|
| - GURL output_url;
|
| - ASSERT_TRUE(WaitForSavePackageToFinish(browser(), &output_url));
|
| - EXPECT_EQ(url, output_url);
|
| + ASSERT_TRUE(WaitForSavePackageToFinish(browser(), url));
|
| + persisted.WaitForPersisted();
|
|
|
| EXPECT_TRUE(browser()->window()->IsDownloadShelfVisible());
|
| - // a.htm is 1 file.
|
| - CheckDownloadHistory(url, full_file_name, 1, DownloadItem::COMPLETE);
|
|
|
| - EXPECT_EQ(GetDownloadManager()->RemoveAllDownloads(), 1);
|
| + DownloadManager* manager(GetDownloadManager());
|
| + std::vector<DownloadItem*> downloads;
|
| + manager->GetAllDownloads(&downloads);
|
| + ASSERT_EQ(1UL, downloads.size());
|
| + DownloadRemovedObserver removed(browser()->profile(), downloads[0]->GetId());
|
| +
|
| + EXPECT_EQ(manager->RemoveAllDownloads(), 1);
|
|
|
| - // Should not be in history.
|
| - QueryDownloadHistory();
|
| - EXPECT_EQ(std::find_if(history_entries_.begin(), history_entries_.end(),
|
| - DownloadPersistentStoreInfoMatch(
|
| - url, full_file_name, 1, DownloadItem::COMPLETE)),
|
| - history_entries_.end());
|
| + removed.WaitForRemoved();
|
|
|
| EXPECT_TRUE(file_util::PathExists(full_file_name));
|
| EXPECT_FALSE(file_util::PathExists(dir));
|
| @@ -672,11 +644,12 @@ IN_PROC_BROWSER_TEST_F(SavePageAsMHTMLBrowserTest, SavePageAsMHTML) {
|
| #else
|
| SavePackageFilePicker::SetShouldPromptUser(false);
|
| #endif
|
| + DownloadPersistedObserver persisted(browser()->profile(), base::Bind(
|
| + &DownloadStoredProperly, url, full_file_name, -1,
|
| + DownloadItem::COMPLETE));
|
| chrome::SavePage(browser());
|
| - GURL output_url;
|
| - ASSERT_TRUE(WaitForSavePackageToFinish(browser(), &output_url));
|
| - EXPECT_EQ(url, output_url);
|
| - CheckDownloadHistory(url, full_file_name, -1, DownloadItem::COMPLETE);
|
| + ASSERT_TRUE(WaitForSavePackageToFinish(browser(), url));
|
| + persisted.WaitForPersisted();
|
|
|
| EXPECT_TRUE(file_util::PathExists(full_file_name));
|
| int64 actual_file_size = -1;
|
|
|