diff options
author | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-21 07:31:11 +0000 |
---|---|---|
committer | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-21 07:31:11 +0000 |
commit | c70f9b84b30986220dc58993a9a41d6fdebefac2 (patch) | |
tree | bfd1dd487c509f9bfb65b065293d300c934b9282 /chrome/browser/download | |
parent | 2f312ab5f419b77456eba5e0362af3adaf94f6ad (diff) | |
download | chromium_src-c70f9b84b30986220dc58993a9a41d6fdebefac2.zip chromium_src-c70f9b84b30986220dc58993a9a41d6fdebefac2.tar.gz chromium_src-c70f9b84b30986220dc58993a9a41d6fdebefac2.tar.bz2 |
Close a newly opened (by cmd-clicking on a link) tab if it resulted in a download.
To test this, the CL adds an automation message AutomationMsg_NavigateAsyncWithDisposition, and a method NavigateToURLAsyncWithDisposition to TabProxy.
The only functional change is in TabContents::OnStartDownload, the rest of the changes is for testing.
BUG=10764
TEST=DownloadTest.CloseNewTab
Manual test: go to http://build.chromium.org/buildbot/continuous/mac/LATEST/, open the link "chrome-mac.zip" in a new tab. The tab should close as soon as the download starts.
Review URL: http://codereview.chromium.org/1151007
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45158 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/download')
-rw-r--r-- | chrome/browser/download/download_uitest.cc | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/chrome/browser/download/download_uitest.cc b/chrome/browser/download/download_uitest.cc index 40a5af27..9a29c57 100644 --- a/chrome/browser/download/download_uitest.cc +++ b/chrome/browser/download/download_uitest.cc @@ -325,6 +325,9 @@ TEST_F(DownloadTest, FLAKY_IncognitoDownload) { ASSERT_EQ(2, window_count); scoped_refptr<BrowserProxy> incognito(automation()->GetBrowserWindow(1)); ASSERT_TRUE(incognito.get()); + // Wait for the new tab UI to load. + int load_time; + ASSERT_TRUE(automation()->WaitForInitialNewTabUILoad(&load_time)); // Download something. FilePath file(FILE_PATH_LITERAL("download-test1.lib")); @@ -347,4 +350,141 @@ TEST_F(DownloadTest, FLAKY_IncognitoDownload) { CheckDownload(file); } +TEST_F(DownloadTest, DontCloseNewTab1) { + 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 file1(FILE_PATH_LITERAL("download-test2.html")); + ASSERT_TRUE(tab_proxy->NavigateToURLAsyncWithDisposition( + URLRequestMockHTTPJob::GetMockUrl(file1), + NEW_BACKGROUND_TAB)); + // We should have two tabs now. + WaitUntilTabCount(2); +} + +TEST_F(DownloadTest, CloseNewTab1) { + 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_BACKGROUND_TAB)); + // When the download starts, we should still have one tab. + ASSERT_TRUE(WaitForDownloadShelfVisible(browser)); + EXPECT_EQ(1, GetTabCount()); + + CheckDownload(file); +} + +TEST_F(DownloadTest, DontCloseNewTab2) { + 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()); + + ASSERT_TRUE(tab_proxy->NavigateToURL(URLRequestMockHTTPJob::GetMockUrl( + FilePath(FILE_PATH_LITERAL("download_page1.html"))))); + + FilePath file(FILE_PATH_LITERAL("download-test1.lib")); + ASSERT_TRUE(tab_proxy->NavigateToURLAsync(GURL("javascript:openNew()"))); + + ASSERT_TRUE(WaitForDownloadShelfVisible(browser)); + EXPECT_EQ(2, GetTabCount()); + + CheckDownload(file); +} + +TEST_F(DownloadTest, DontCloseNewTab3) { + 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()); + + ASSERT_TRUE(tab_proxy->NavigateToURL(URLRequestMockHTTPJob::GetMockUrl( + FilePath(FILE_PATH_LITERAL("download_page2.html"))))); + + ASSERT_TRUE(tab_proxy->NavigateToURLAsync(GURL("javascript:openNew()"))); + + FilePath file(FILE_PATH_LITERAL("download-test1.lib")); + ASSERT_TRUE(tab_proxy->NavigateToURLAsync( + URLRequestMockHTTPJob::GetMockUrl(file))); + + ASSERT_TRUE(WaitForDownloadShelfVisible(browser)); + EXPECT_EQ(2, GetTabCount()); + + CheckDownload(file); +} + +TEST_F(DownloadTest, CloseNewTab2) { + 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()); + + ASSERT_TRUE(tab_proxy->NavigateToURL(URLRequestMockHTTPJob::GetMockUrl( + FilePath(FILE_PATH_LITERAL("download_page3.html"))))); + + FilePath file(FILE_PATH_LITERAL("download-test1.lib")); + ASSERT_TRUE(tab_proxy->NavigateToURLAsync(GURL("javascript:openNew()"))); + + ASSERT_TRUE(WaitForDownloadShelfVisible(browser)); + EXPECT_EQ(1, GetTabCount()); + + CheckDownload(file); +} + +TEST_F(DownloadTest, CloseNewTab3) { + 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()); + + ASSERT_TRUE(tab_proxy->NavigateToURL(URLRequestMockHTTPJob::GetMockUrl( + FilePath(FILE_PATH_LITERAL("download_page4.html"))))); + + FilePath file(FILE_PATH_LITERAL("download-test1.lib")); + ASSERT_TRUE(tab_proxy->NavigateToURLAsync( + GURL("javascript:document.getElementById('form').submit()"))); + + ASSERT_TRUE(WaitForDownloadShelfVisible(browser)); + EXPECT_EQ(1, GetTabCount()); + + CheckDownload(file); +} + } // namespace |