diff options
Diffstat (limited to 'chrome/browser/extensions/api/downloads/downloads_api_unittest.cc')
-rw-r--r-- | chrome/browser/extensions/api/downloads/downloads_api_unittest.cc | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc b/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc index 7c0117f..e2df57d 100644 --- a/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc +++ b/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc @@ -19,6 +19,7 @@ #include "chrome/browser/extensions/event_names.h" #include "chrome/browser/extensions/extension_apitest.h" #include "chrome/browser/extensions/extension_function_test_utils.h" +#include "chrome/browser/history/download_row.h" #include "chrome/browser/net/url_request_mock_util.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/profiles/profile.h" @@ -33,7 +34,6 @@ #include "content/public/browser/browser_thread.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/storage_partition.h" #include "content/public/browser/web_contents.h" @@ -58,7 +58,6 @@ using content::BrowserContext; using content::BrowserThread; using content::DownloadItem; using content::DownloadManager; -using content::DownloadPersistentStoreInfo; using content::URLRequestSlowDownloadJob; namespace events = extensions::event_names; @@ -357,24 +356,19 @@ class DownloadExtensionTest : public ExtensionApiTest { DownloadManager::DownloadVector* items) { DownloadIdComparator download_id_comparator; base::Time current = base::Time::Now(); - std::vector<DownloadPersistentStoreInfo> entries; - entries.reserve(count); + items->clear(); + GetOnRecordManager()->GetAllDownloads(items); + CHECK_EQ(0, static_cast<int>(items->size())); for (size_t i = 0; i < count; ++i) { - DownloadPersistentStoreInfo entry( + DownloadItem* item = GetOnRecordManager()->CreateDownloadItem( downloads_directory().Append(history_info[i].filename), GURL(), GURL(), // URL, referrer current, current, // start_time, end_time 1, 1, // received_bytes, total_bytes history_info[i].state, // state - i + 1, // db_handle false); // opened - entries.push_back(entry); + items->push_back(item); } - GetOnRecordManager()->OnPersistentStoreQueryComplete(&entries); - GetOnRecordManager()->GetAllDownloads(items); - EXPECT_EQ(count, items->size()); - if (count != items->size()) - return false; // Order by ID so that they are in the order that we created them. std::sort(items->begin(), items->end(), download_id_comparator); @@ -583,6 +577,10 @@ class MockIconExtractorImpl : public DownloadFileIconExtractor { IconURLCallback callback_; }; +bool ItemNotInProgress(DownloadItem* item) { + return !item->IsInProgress(); +} + // Cancels the underlying DownloadItem when the ScopedCancellingItem goes out of // scope. Like a scoped_ptr, but for DownloadItems. class ScopedCancellingItem { @@ -590,6 +588,9 @@ class ScopedCancellingItem { explicit ScopedCancellingItem(DownloadItem* item) : item_(item) {} ~ScopedCancellingItem() { item_->Cancel(true); + content::DownloadUpdatedObserver observer( + item_, base::Bind(&ItemNotInProgress)); + observer.WaitForEvent(); } DownloadItem* operator*() { return item_; } DownloadItem* operator->() { return item_; } @@ -612,6 +613,9 @@ class ScopedItemVectorCanceller { item != items_->end(); ++item) { if ((*item)->IsInProgress()) (*item)->Cancel(true); + content::DownloadUpdatedObserver observer( + (*item), base::Bind(&ItemNotInProgress)); + observer.WaitForEvent(); } } @@ -897,16 +901,13 @@ UIThreadExtensionFunction* MockedGetFileIconFunction( return function.release(); } -bool WaitForPersisted(DownloadItem* item) { - return item->IsPersisted(); -} - // Test downloads.getFileIcon() on in-progress, finished, cancelled and deleted // download items. IN_PROC_BROWSER_TEST_F(DownloadExtensionTest, DownloadExtensionTest_FileIcon_Active) { DownloadItem* download_item = CreateSlowTestDownload(); ASSERT_TRUE(download_item); + ASSERT_FALSE(download_item->GetTargetFilePath().empty()); std::string args32(base::StringPrintf("[%d, {\"size\": 32}]", download_item->GetId())); std::string result_string; @@ -943,17 +944,14 @@ IN_PROC_BROWSER_TEST_F(DownloadExtensionTest, // Now create another download. download_item = CreateSlowTestDownload(); - args32 = base::StringPrintf("[%d, {\"size\": 32}]", download_item->GetId()); ASSERT_TRUE(download_item); - - // http://crbug.com/154995 - content::DownloadUpdatedObserver persisted( - download_item, base::Bind(&WaitForPersisted)); - persisted.WaitForEvent(); + ASSERT_FALSE(download_item->GetTargetFilePath().empty()); + args32 = base::StringPrintf("[%d, {\"size\": 32}]", download_item->GetId()); // Cancel the download. As long as the download has a target path, we should // be able to query the file icon. download_item->Cancel(true); + ASSERT_FALSE(download_item->GetTargetFilePath().empty()); // Let cleanup complete on the FILE thread. content::RunAllPendingInMessageLoop(BrowserThread::FILE); // Check the path passed to the icon extractor post-cancellation. |