Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1860)

Unified Diff: chrome/browser/extensions/api/downloads/downloads_api_unittest.cc

Issue 10915180: Make DownloadHistory observe manager, items (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: @r168573 Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/downloads/downloads_api_unittest.cc
diff --git a/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc b/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc
index 7c0117fe7d451def12d0ea81afed1d39066c46a0..e2df57d9caccf7c99fab692ab50a19f74abef653 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.

Powered by Google App Engine
This is Rietveld 408576698