Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Side by Side Diff: chrome/browser/extensions/api/downloads/downloads_api_browsertest.cc

Issue 148133007: [Downloads] Always call DM::StartDownload() for explicit downloads. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Disable everything on windows only. http://crbug.com/306144 5 // Disable everything on windows only. http://crbug.com/306144
6 #ifndef OS_WIN 6 #ifndef OS_WIN
7 7
8 #include <algorithm> 8 #include <algorithm>
9 9
10 #include "base/file_util.h" 10 #include "base/file_util.h"
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 NOTREACHED(); 198 NOTREACHED();
199 } 199 }
200 } 200 }
201 201
202 bool WaitFor(Profile* profile, 202 bool WaitFor(Profile* profile,
203 const std::string& event_name, 203 const std::string& event_name,
204 const std::string& json_args) { 204 const std::string& json_args) {
205 waiting_for_.reset(new Event(profile, event_name, json_args, base::Time())); 205 waiting_for_.reset(new Event(profile, event_name, json_args, base::Time()));
206 for (std::deque<Event*>::const_iterator iter = events_.begin(); 206 for (std::deque<Event*>::const_iterator iter = events_.begin();
207 iter != events_.end(); ++iter) { 207 iter != events_.end(); ++iter) {
208 if ((*iter)->Satisfies(*waiting_for_.get())) { 208 if ((*iter)->Satisfies(*waiting_for_.get()))
209 return true; 209 return true;
210 }
211 } 210 }
212 waiting_ = true; 211 waiting_ = true;
213 content::RunMessageLoop(); 212 content::RunMessageLoop();
214 bool success = !waiting_; 213 bool success = !waiting_;
215 if (waiting_) { 214 if (waiting_) {
216 // Print the events that were caught since the last WaitFor() call to help 215 // Print the events that were caught since the last WaitFor() call to help
217 // find the erroneous event. 216 // find the erroneous event.
218 // TODO(benjhayden) Fuzzy-match and highlight the erroneous event. 217 // TODO(benjhayden) Fuzzy-match and highlight the erroneous event.
219 for (std::deque<Event*>::const_iterator iter = events_.begin(); 218 for (std::deque<Event*>::const_iterator iter = events_.begin();
220 iter != events_.end(); ++iter) { 219 iter != events_.end(); ++iter) {
(...skipping 1458 matching lines...) Expand 10 before | Expand all | Expand 10 after
1679 "[{\"url\": \"%s\"}]", kInvalidURLs[index])).c_str()) 1678 "[{\"url\": \"%s\"}]", kInvalidURLs[index])).c_str())
1680 << kInvalidURLs[index]; 1679 << kInvalidURLs[index];
1681 } 1680 }
1682 1681
1683 EXPECT_STREQ("NETWORK_INVALID_REQUEST", RunFunctionAndReturnError( 1682 EXPECT_STREQ("NETWORK_INVALID_REQUEST", RunFunctionAndReturnError(
1684 new DownloadsDownloadFunction(), 1683 new DownloadsDownloadFunction(),
1685 "[{\"url\": \"javascript:document.write(\\\"hello\\\");\"}]").c_str()); 1684 "[{\"url\": \"javascript:document.write(\\\"hello\\\");\"}]").c_str());
1686 EXPECT_STREQ("NETWORK_INVALID_REQUEST", RunFunctionAndReturnError( 1685 EXPECT_STREQ("NETWORK_INVALID_REQUEST", RunFunctionAndReturnError(
1687 new DownloadsDownloadFunction(), 1686 new DownloadsDownloadFunction(),
1688 "[{\"url\": \"javascript:return false;\"}]").c_str()); 1687 "[{\"url\": \"javascript:return false;\"}]").c_str());
1689 EXPECT_STREQ("NETWORK_FAILED", RunFunctionAndReturnError( 1688
1690 new DownloadsDownloadFunction(), 1689 std::string url_parameter = "[{\"url\": \"ftp://example.com/example.txt\"}]";
1691 "[{\"url\": \"ftp://example.com/example.txt\"}]").c_str()); 1690 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
1691 new DownloadsDownloadFunction(), url_parameter));
1692 ASSERT_TRUE(result.get());
1693 int result_id = -1;
1694 ASSERT_TRUE(result->GetAsInteger(&result_id));
1695 DownloadItem* item = GetCurrentManager()->GetDownload(result_id);
1696 ASSERT_TRUE(item);
1697 ScopedCancellingItem canceller(item);
1698 ASSERT_TRUE(WaitForInterruption(
1699 item, content::DOWNLOAD_INTERRUPT_REASON_NETWORK_FAILED, url_parameter));
1692 } 1700 }
1693 1701
1694 // TODO(benjhayden): Set up a test ftp server, add ftp://localhost* to 1702 // TODO(benjhayden): Set up a test ftp server, add ftp://localhost* to
1695 // permissions, test downloading from ftp. 1703 // permissions, test downloading from ftp.
1696 1704
1697 // Valid URLs plus fragments are still valid URLs. 1705 // Valid URLs plus fragments are still valid URLs.
1698 IN_PROC_BROWSER_TEST_F(DownloadExtensionTest, 1706 IN_PROC_BROWSER_TEST_F(DownloadExtensionTest,
1699 DownloadExtensionTest_Download_URLFragment) { 1707 DownloadExtensionTest_Download_URLFragment) {
1700 LoadExtension("downloads_split"); 1708 LoadExtension("downloads_split");
1701 ASSERT_TRUE(StartEmbeddedTestServer()); 1709 ASSERT_TRUE(StartEmbeddedTestServer());
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1822 result_id, 1830 result_id,
1823 GetFilename("file.txt").c_str()))); 1831 GetFilename("file.txt").c_str())));
1824 ASSERT_TRUE(WaitFor(api::OnChanged::kEventName, 1832 ASSERT_TRUE(WaitFor(api::OnChanged::kEventName,
1825 base::StringPrintf("[{\"id\": %d," 1833 base::StringPrintf("[{\"id\": %d,"
1826 " \"state\": {" 1834 " \"state\": {"
1827 " \"previous\": \"in_progress\"," 1835 " \"previous\": \"in_progress\","
1828 " \"current\": \"complete\"}}]", 1836 " \"current\": \"complete\"}}]",
1829 result_id))); 1837 result_id)));
1830 } 1838 }
1831 1839
1832 // Test that auth-basic-succeed would fail if the resource requires the 1840 // Test that auth-basic would fail if the resource requires the Authorization
1833 // Authorization header and chrome fails to propagate it back to the server. 1841 // header and chrome fails to propagate it back to the server. This tests both
1834 // This tests both that testserver.py does not succeed when it should fail as 1842 // that the embedded test server does not succeed when it should fail as well as
1835 // well as how the downloads extension API exposes the failure to extensions. 1843 // how the downloads extension API exposes the failure to extensions.
1836 IN_PROC_BROWSER_TEST_F(DownloadExtensionTest, 1844 IN_PROC_BROWSER_TEST_F(DownloadExtensionTest,
1837 DownloadExtensionTest_Download_AuthBasic_Fail) { 1845 DownloadExtensionTest_Download_AuthBasic_Fail) {
1838 LoadExtension("downloads_split"); 1846 LoadExtension("downloads_split");
1839 ASSERT_TRUE(StartEmbeddedTestServer()); 1847 ASSERT_TRUE(StartEmbeddedTestServer());
1840 ASSERT_TRUE(test_server()->Start()); 1848 ASSERT_TRUE(test_server()->Start());
1841 std::string download_url = test_server()->GetURL("auth-basic").spec(); 1849 std::string download_url = test_server()->GetURL("auth-basic").spec();
1842 GoOnTheRecord(); 1850 GoOnTheRecord();
1843 1851
1844 scoped_ptr<base::Value> result(RunFunctionAndReturnResult( 1852 scoped_ptr<base::Value> result(RunFunctionAndReturnResult(
1845 new DownloadsDownloadFunction(), base::StringPrintf( 1853 new DownloadsDownloadFunction(), base::StringPrintf(
1846 "[{\"url\": \"%s\"," 1854 "[{\"url\": \"%s\","
1847 " \"filename\": \"auth-basic-fail.txt\"}]", 1855 " \"filename\": \"auth-basic-fail.txt\"}]",
1848 download_url.c_str()))); 1856 download_url.c_str())));
1849 ASSERT_TRUE(result.get()); 1857 ASSERT_TRUE(result.get());
1850 int result_id = -1; 1858 int result_id = -1;
1851 ASSERT_TRUE(result->GetAsInteger(&result_id)); 1859 ASSERT_TRUE(result->GetAsInteger(&result_id));
1852 DownloadItem* item = GetCurrentManager()->GetDownload(result_id); 1860 DownloadItem* item = GetCurrentManager()->GetDownload(result_id);
1853 ASSERT_TRUE(item); 1861 ASSERT_TRUE(item);
1854 ScopedCancellingItem canceller(item); 1862 ScopedCancellingItem canceller(item);
1855 ASSERT_EQ(download_url, item->GetOriginalUrl().spec()); 1863 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
1856 1864 ASSERT_TRUE(
1857 ASSERT_TRUE(WaitForInterruption( 1865 WaitForInterruption(item,
1858 item, 1866 content::DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED,
1859 content::DOWNLOAD_INTERRUPT_REASON_SERVER_FAILED, 1867 base::StringPrintf(
1860 base::StringPrintf("[{\"danger\": \"safe\"," 1868 "[{\"danger\": \"safe\","
1861 " \"incognito\": false," 1869 " \"incognito\": false,"
1862 " \"mime\": \"text/html\"," 1870 " \"mime\": \"\","
1863 " \"paused\": false," 1871 " \"paused\": false,"
1864 " \"url\": \"%s\"}]", 1872 " \"url\": \"%s\"}]",
1865 download_url.c_str()))); 1873 download_url.c_str())));
1866 } 1874 }
1867 1875
1868 // Test that DownloadsDownloadFunction propagates |headers| to the URLRequest. 1876 // Test that DownloadsDownloadFunction propagates |headers| to the URLRequest.
1869 IN_PROC_BROWSER_TEST_F(DownloadExtensionTest, 1877 IN_PROC_BROWSER_TEST_F(DownloadExtensionTest,
1870 DownloadExtensionTest_Download_Headers) { 1878 DownloadExtensionTest_Download_Headers) {
1871 LoadExtension("downloads_split"); 1879 LoadExtension("downloads_split");
1872 ASSERT_TRUE(StartEmbeddedTestServer()); 1880 ASSERT_TRUE(StartEmbeddedTestServer());
1873 ASSERT_TRUE(test_server()->Start()); 1881 ASSERT_TRUE(test_server()->Start());
1874 std::string download_url = test_server()->GetURL("files/downloads/" 1882 std::string download_url = test_server()->GetURL("files/downloads/"
1875 "a_zip_file.zip?expected_headers=Foo:bar&expected_headers=Qx:yo").spec(); 1883 "a_zip_file.zip?expected_headers=Foo:bar&expected_headers=Qx:yo").spec();
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1932 " \"filename\": \"headers-fail.txt\"}]", 1940 " \"filename\": \"headers-fail.txt\"}]",
1933 download_url.c_str()))); 1941 download_url.c_str())));
1934 ASSERT_TRUE(result.get()); 1942 ASSERT_TRUE(result.get());
1935 int result_id = -1; 1943 int result_id = -1;
1936 ASSERT_TRUE(result->GetAsInteger(&result_id)); 1944 ASSERT_TRUE(result->GetAsInteger(&result_id));
1937 DownloadItem* item = GetCurrentManager()->GetDownload(result_id); 1945 DownloadItem* item = GetCurrentManager()->GetDownload(result_id);
1938 ASSERT_TRUE(item); 1946 ASSERT_TRUE(item);
1939 ScopedCancellingItem canceller(item); 1947 ScopedCancellingItem canceller(item);
1940 ASSERT_EQ(download_url, item->GetOriginalUrl().spec()); 1948 ASSERT_EQ(download_url, item->GetOriginalUrl().spec());
1941 1949
1942 ASSERT_TRUE(WaitForInterruption( 1950 ASSERT_TRUE(
1943 item, 1951 WaitForInterruption(item,
1944 content::DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT, 1952 content::DOWNLOAD_INTERRUPT_REASON_SERVER_BAD_CONTENT,
1945 base::StringPrintf("[{\"danger\": \"safe\"," 1953 base::StringPrintf(
1946 " \"incognito\": false," 1954 "[{\"danger\": \"safe\","
1947 " \"bytesReceived\": 0.0," 1955 " \"incognito\": false,"
1948 " \"fileSize\": 0.0," 1956 " \"bytesReceived\": 0.0,"
1949 " \"mime\": \"\"," 1957 " \"fileSize\": -1.0,"
1950 " \"paused\": false," 1958 " \"mime\": \"\","
1951 " \"url\": \"%s\"}]", 1959 " \"paused\": false,"
1952 download_url.c_str()))); 1960 " \"url\": \"%s\"}]",
1961 download_url.c_str())));
1953 } 1962 }
1954 1963
1955 // Test that DownloadsDownloadFunction propagates the Authorization header 1964 // Test that DownloadsDownloadFunction propagates the Authorization header
1956 // correctly. 1965 // correctly.
1957 IN_PROC_BROWSER_TEST_F(DownloadExtensionTest, 1966 IN_PROC_BROWSER_TEST_F(DownloadExtensionTest,
1958 DownloadExtensionTest_Download_AuthBasic) { 1967 DownloadExtensionTest_Download_AuthBasic) {
1959 LoadExtension("downloads_split"); 1968 LoadExtension("downloads_split");
1960 ASSERT_TRUE(StartEmbeddedTestServer()); 1969 ASSERT_TRUE(StartEmbeddedTestServer());
1961 ASSERT_TRUE(test_server()->Start()); 1970 ASSERT_TRUE(test_server()->Start());
1962 std::string download_url = test_server()->GetURL("auth-basic").spec(); 1971 std::string download_url = test_server()->GetURL("auth-basic").spec();
(...skipping 1672 matching lines...) Expand 10 before | Expand all | Expand 10 after
3635 EXPECT_EQ("suggester", winner_id); 3644 EXPECT_EQ("suggester", winner_id);
3636 EXPECT_EQ(FILE_PATH_LITERAL("b"), filename.value()); 3645 EXPECT_EQ(FILE_PATH_LITERAL("b"), filename.value());
3637 EXPECT_EQ(api::FILENAME_CONFLICT_ACTION_PROMPT, conflict_action); 3646 EXPECT_EQ(api::FILENAME_CONFLICT_ACTION_PROMPT, conflict_action);
3638 EXPECT_FALSE(warnings.empty()); 3647 EXPECT_FALSE(warnings.empty());
3639 EXPECT_EQ(extensions::ExtensionWarning::kDownloadFilenameConflict, 3648 EXPECT_EQ(extensions::ExtensionWarning::kDownloadFilenameConflict,
3640 warnings.begin()->warning_type()); 3649 warnings.begin()->warning_type());
3641 EXPECT_EQ("incumbent", warnings.begin()->extension_id()); 3650 EXPECT_EQ("incumbent", warnings.begin()->extension_id());
3642 } 3651 }
3643 3652
3644 #endif // http://crbug.com/3061144 3653 #endif // http://crbug.com/3061144
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698