diff options
author | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-29 08:45:47 +0000 |
---|---|---|
committer | kinaba@chromium.org <kinaba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-06-29 08:45:47 +0000 |
commit | 0958c3d5447541feaaca2de8421b3a3908e94b99 (patch) | |
tree | b724c7e100e02940bcb7a87e714ecec7902b7af0 /net | |
parent | 336721ebed61ccc340425a603fa794f546494bb7 (diff) | |
download | chromium_src-0958c3d5447541feaaca2de8421b3a3908e94b99.zip chromium_src-0958c3d5447541feaaca2de8421b3a3908e94b99.tar.gz chromium_src-0958c3d5447541feaaca2de8421b3a3908e94b99.tar.bz2 |
Allow PUT and POST with empty body in URLFetcher.
This is needed to upload an empty file using Google Documents List API version 3.0.
Also, it is properly supported in the
underlying net/ layer
(see, e.g., HttpNetworkTransaction::BuildRequestHeaders).
BUG=134261, 132968
TEST=net_unittests --gtest_filter='*URLFetcherEmptyPostTest*'
Review URL: https://chromiumcodereview.appspot.com/10656043
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@144886 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r-- | net/url_request/url_fetcher_core.cc | 1 | ||||
-rw-r--r-- | net/url_request/url_fetcher_impl_unittest.cc | 41 |
2 files changed, 41 insertions, 1 deletions
diff --git a/net/url_request/url_fetcher_core.cc b/net/url_request/url_fetcher_core.cc index b90d82b..6041e0c 100644 --- a/net/url_request/url_fetcher_core.cc +++ b/net/url_request/url_fetcher_core.cc @@ -688,7 +688,6 @@ void URLFetcherCore::StartURLRequest() { case URLFetcher::POST: case URLFetcher::PUT: - DCHECK(!upload_content_.empty() || is_chunked_upload_); DCHECK(!upload_content_type_.empty()); request_->set_method( diff --git a/net/url_request/url_fetcher_impl_unittest.cc b/net/url_request/url_fetcher_impl_unittest.cc index b7eba37..2a2086f 100644 --- a/net/url_request/url_fetcher_impl_unittest.cc +++ b/net/url_request/url_fetcher_impl_unittest.cc @@ -173,6 +173,16 @@ class URLFetcherPostTest : public URLFetcherTest { virtual void OnURLFetchComplete(const URLFetcher* source) OVERRIDE; }; +// Version of URLFetcherTest that does a POST instead with empty upload body +class URLFetcherEmptyPostTest : public URLFetcherTest { + public: + // URLFetcherTest override. + virtual void CreateFetcher(const GURL& url) OVERRIDE; + + // URLFetcherDelegate + virtual void OnURLFetchComplete(const URLFetcher* source) OVERRIDE; +}; + // Version of URLFetcherTest that tests download progress reports. class URLFetcherDownloadProgressTest : public URLFetcherTest { public: @@ -409,6 +419,27 @@ void URLFetcherPostTest::OnURLFetchComplete(const URLFetcher* source) { URLFetcherTest::OnURLFetchComplete(source); } +void URLFetcherEmptyPostTest::CreateFetcher(const GURL& url) { + fetcher_ = new URLFetcherImpl(url, URLFetcher::POST, this); + fetcher_->SetRequestContext(new TestURLRequestContextGetter( + io_message_loop_proxy())); + fetcher_->SetUploadData("text/plain", ""); + fetcher_->Start(); +} + +void URLFetcherEmptyPostTest::OnURLFetchComplete(const URLFetcher* source) { + EXPECT_TRUE(source->GetStatus().is_success()); + EXPECT_EQ(200, source->GetResponseCode()); // HTTP OK + + std::string data; + EXPECT_TRUE(source->GetResponseAsString(&data)); + EXPECT_TRUE(data.empty()); + + CleanupAfterFetchComplete(); + // Do not call the super class method URLFetcherTest::OnURLFetchComplete, + // since it expects a non-empty response. +} + void URLFetcherDownloadProgressTest::CreateFetcher(const GURL& url) { fetcher_ = new URLFetcherImpl(url, URLFetcher::GET, this); fetcher_->SetRequestContext(new ThrottlingTestURLRequestContextGetter( @@ -789,6 +820,16 @@ TEST_F(URLFetcherPostTest, Basic) { MessageLoop::current()->Run(); } +TEST_F(URLFetcherEmptyPostTest, Basic) { + TestServer test_server(TestServer::TYPE_HTTP, + TestServer::kLocalhost, + FilePath(kDocRoot)); + ASSERT_TRUE(test_server.Start()); + + CreateFetcher(test_server.GetURL("echo")); + MessageLoop::current()->Run(); +} + #if defined(OS_MACOSX) // SIGSEGV on Mac: http://crbug.com/60426 TEST_F(URLFetcherUploadProgressTest, DISABLED_Basic) { |