summaryrefslogtreecommitdiffstats
path: root/chrome/browser/download
diff options
context:
space:
mode:
authorbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-21 07:31:11 +0000
committerbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-04-21 07:31:11 +0000
commitc70f9b84b30986220dc58993a9a41d6fdebefac2 (patch)
treebfd1dd487c509f9bfb65b065293d300c934b9282 /chrome/browser/download
parent2f312ab5f419b77456eba5e0362af3adaf94f6ad (diff)
downloadchromium_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.cc140
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