Index: chrome/browser/download/download_browsertest.cc |
diff --git a/chrome/browser/download/download_browsertest.cc b/chrome/browser/download/download_browsertest.cc |
index 51e541c328a9765c0c1941cee9b2853cfbd7376f..a289c71d5cde52e2292a5bce015908e43ddcc593 100644 |
--- a/chrome/browser/download/download_browsertest.cc |
+++ b/chrome/browser/download/download_browsertest.cc |
@@ -647,6 +647,8 @@ class DownloadTest : public InProcessBrowserTest { |
GetDownloads(browser(), &download_items); |
ASSERT_TRUE(download_items.empty()); |
+ NullSelectFile(browser()); |
+ |
std::string server_path = "files/downloads/"; |
server_path += download_info.url_name; |
GURL url = test_server()->GetURL(server_path); |
@@ -657,7 +659,7 @@ class DownloadTest : public InProcessBrowserTest { |
new DownloadTestObserverTerminal( |
download_manager, |
1, |
- true, // Bail on select file |
+ false, // Don't bail on select file. |
DownloadTestObserver::ON_DANGEROUS_DOWNLOAD_FAIL)); |
if (download_info.download_method == DOWNLOAD_DIRECT) { |
@@ -667,8 +669,27 @@ class DownloadTest : public InProcessBrowserTest { |
DownloadSaveInfo save_info; |
save_info.prompt_for_save_location = false; |
+ scoped_refptr<DownloadTestItemCreationObserver> creation_observer( |
+ new DownloadTestItemCreationObserver); |
+ |
DownloadManagerForBrowser(browser())->DownloadUrl( |
- url, GURL(""), "", false, -1, save_info, web_contents); |
+ url, GURL(""), "", false, -1, save_info, web_contents, |
+ creation_observer->callback()); |
+ |
+ // Wait until the item is created, or we have determined that it |
+ // won't be. |
+ creation_observer->WaitForDownloadItemCreation(); |
+ |
+ int32 invalid_id = content::DownloadId::Invalid().local(); |
+ EXPECT_EQ(download_info.show_download_item, |
+ creation_observer->succeeded()); |
+ if (download_info.show_download_item) { |
+ EXPECT_EQ(net::OK, creation_observer->error()); |
+ EXPECT_NE(invalid_id, creation_observer->download_id().local()); |
+ } else { |
+ EXPECT_NE(net::OK, creation_observer->error()); |
+ EXPECT_EQ(invalid_id, creation_observer->download_id().local()); |
+ } |
} else { |
// Navigate to URL normally, wait until done. |
ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), |
@@ -1800,7 +1821,8 @@ IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrl) { |
DownloadSaveInfo save_info; |
save_info.prompt_for_save_location = true; |
DownloadManagerForBrowser(browser())->DownloadUrl( |
- url, GURL(""), "", false, -1, save_info, web_contents); |
+ url, GURL(""), "", false, -1, save_info, web_contents, |
+ DownloadManager::OnStartedCallback()); |
observer->WaitForFinished(); |
EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); |
CheckDownloadStates(1, DownloadItem::COMPLETE); |
@@ -1829,7 +1851,8 @@ IN_PROC_BROWSER_TEST_F(DownloadTest, DownloadUrlToPath) { |
DownloadTestObserver* observer(CreateWaiter(browser(), 1)); |
DownloadManagerForBrowser(browser())->DownloadUrl( |
- url, GURL(""), "", false, -1, save_info, web_contents); |
+ url, GURL(""), "", false, -1, save_info, web_contents, |
+ DownloadManager::OnStartedCallback()); |
observer->WaitForFinished(); |
EXPECT_EQ(1u, observer->NumDownloadsSeenInState(DownloadItem::COMPLETE)); |