summaryrefslogtreecommitdiffstats
path: root/chrome/browser/download
diff options
context:
space:
mode:
authorbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-24 17:12:49 +0000
committerbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-24 17:12:49 +0000
commit345e8842c0a5c22d5d8d7e4e9f298aa47a8a24e4 (patch)
treea9ddc682f232b484ccf515c03fc73f15492f51c5 /chrome/browser/download
parentce6e78347b5b6fe0623fa9030cca8612edc4227a (diff)
downloadchromium_src-345e8842c0a5c22d5d8d7e4e9f298aa47a8a24e4.zip
chromium_src-345e8842c0a5c22d5d8d7e4e9f298aa47a8a24e4.tar.gz
chromium_src-345e8842c0a5c22d5d8d7e4e9f298aa47a8a24e4.tar.bz2
Call Browser::InProgressDownloadResponse asynchronously on Mac.
TabStripModel::InternalCloseTabs calls Browser::CanCloseContentsAt, which could end up closing a tab before trying to close it again, which causes a crash. The fix is to call Browser::InProgressDownloadResponse asynchronously from BrowserWindowCocoa::ConfirmBrowserCloseWithPendingDownloads. TEST=DownloadTest.NewWindow; See bug description for manual test. BUG=44454 Review URL: http://codereview.chromium.org/2095012 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@48049 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/download')
-rw-r--r--chrome/browser/download/download_uitest.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/chrome/browser/download/download_uitest.cc b/chrome/browser/download/download_uitest.cc
index b8171fa..b369f73 100644
--- a/chrome/browser/download/download_uitest.cc
+++ b/chrome/browser/download/download_uitest.cc
@@ -492,4 +492,25 @@ TEST_F(DownloadTest, FLAKY_CloseNewTab3) {
CheckDownload(file);
}
+// Regression test for http://crbug.com/44454
+TEST_F(DownloadTest, NewWindow) {
+ scoped_refptr<BrowserProxy> browser(automation()->GetBrowserWindow(0));
+ ASSERT_TRUE(browser.get());
+ int window_count = 0;
+ ASSERT_TRUE(automation()->GetBrowserWindowCount(&window_count));
+ ASSERT_EQ(1, window_count);
+ EXPECT_EQ(1, GetTabCount());
+
+ scoped_refptr<TabProxy> tab_proxy(GetActiveTab());
+ ASSERT_TRUE(tab_proxy.get());
+
+ FilePath file(FILE_PATH_LITERAL("download-test1.lib"));
+ ASSERT_TRUE(tab_proxy->NavigateToURLAsyncWithDisposition(
+ URLRequestMockHTTPJob::GetMockUrl(file), NEW_WINDOW));
+
+ ASSERT_TRUE(automation()->WaitForWindowCountToBecome(1));
+
+ CheckDownload(file);
+}
+
} // namespace