diff options
author | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-24 17:12:49 +0000 |
---|---|---|
committer | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-05-24 17:12:49 +0000 |
commit | 345e8842c0a5c22d5d8d7e4e9f298aa47a8a24e4 (patch) | |
tree | a9ddc682f232b484ccf515c03fc73f15492f51c5 /chrome/browser/download | |
parent | ce6e78347b5b6fe0623fa9030cca8612edc4227a (diff) | |
download | chromium_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.cc | 21 |
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 |