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

Unified Diff: chrome/common/net/url_fetcher_unittest.cc

Issue 5322015: Fixed a bug with URLFetcher where retrying the request would append the new r... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 10 years, 1 month 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/common/net/url_fetcher.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/common/net/url_fetcher_unittest.cc
===================================================================
--- chrome/common/net/url_fetcher_unittest.cc (revision 67561)
+++ chrome/common/net/url_fetcher_unittest.cc (working copy)
@@ -228,6 +228,20 @@
scoped_refptr<URLRequestContext> context_;
};
+// Version of URLFetcherTest that tests retying the same request twice.
+class URLFetcherMultipleAttemptTest : public URLFetcherTest {
+ public:
+ // URLFetcher::Delegate
+ virtual void OnURLFetchComplete(const URLFetcher* source,
+ const GURL& url,
+ const URLRequestStatus& status,
+ int response_code,
+ const ResponseCookies& cookies,
+ const std::string& data);
+ private:
+ std::string data_;
eroman 2010/12/01 01:34:40 nit: looks like there is one space too many here.
sanjeevr 2010/12/01 02:10:01 Done.
+};
+
// Wrapper that lets us call CreateFetcher() on a thread of our choice. We
// could make URLFetcherTest refcounted and use PostTask(FROM_HERE.. ) to call
// CreateFetcher() directly, but the ownership of the URLFetcherTest is a bit
@@ -448,6 +462,31 @@
// did not work.
}
+void URLFetcherMultipleAttemptTest::OnURLFetchComplete(
+ const URLFetcher* source,
+ const GURL& url,
+ const URLRequestStatus& status,
+ int response_code,
+ const ResponseCookies& cookies,
+ const std::string& data) {
+ EXPECT_TRUE(status.is_success());
+ EXPECT_EQ(200, response_code); // HTTP OK
+ EXPECT_FALSE(data.empty());
+ if (!data.empty() && data_.empty()) {
+ data_ = data;
+ fetcher_->Start();
eroman 2010/12/01 01:34:40 It is not clear from the docs whether calling Star
sanjeevr 2010/12/01 02:10:01 Other tests also use fetcher_->Start to retry. Bes
eroman 2010/12/01 02:13:38 ah ok, didn't realize it was a common pattern.
+ } else {
+ EXPECT_EQ(data, data_);
+ delete fetcher_; // Have to delete this here and not in the destructor,
+ // because the destructor won't necessarily run on the
+ // same thread that CreateFetcher() did.
+
+ io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask());
+ // If the current message loop is not the IO loop, it will be shut down when
+ // the main loop returns and this thread subsequently goes out of scope.
+ }
+}
+
TEST_F(URLFetcherTest, SameThreadsTest) {
net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
ASSERT_TRUE(test_server.Start());
@@ -629,4 +668,16 @@
net::URLRequestThrottlerManager::GetInstance()->EraseEntryForTests(url);
}
+TEST_F(URLFetcherMultipleAttemptTest, SameData) {
+ net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot));
+ ASSERT_TRUE(test_server.Start());
+
+ // Create the fetcher on the main thread. Since IO will happen on the main
+ // thread, this will test URLFetcher's ability to do everything on one
+ // thread.
+ CreateFetcher(test_server.GetURL("defaultresponse"));
+
+ MessageLoop::current()->Run();
+}
+
} // namespace.
« no previous file with comments | « chrome/common/net/url_fetcher.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698