Index: net/url_request/url_fetcher_impl_unittest.cc |
diff --git a/net/url_request/url_fetcher_impl_unittest.cc b/net/url_request/url_fetcher_impl_unittest.cc |
index d48f74987debc3d921b93c86ed83808dc1e3726a..62777bfa014f3226e52c68acb9e516c212465df9 100644 |
--- a/net/url_request/url_fetcher_impl_unittest.cc |
+++ b/net/url_request/url_fetcher_impl_unittest.cc |
@@ -25,6 +25,8 @@ |
#include "base/strings/string_util.h" |
#include "base/strings/stringprintf.h" |
#include "base/synchronization/waitable_event.h" |
+#include "base/task_scheduler/post_task.h" |
+#include "base/test/scoped_task_scheduler.h" |
#include "base/test/test_timeouts.h" |
#include "base/threading/platform_thread.h" |
#include "base/threading/thread.h" |
@@ -515,6 +517,33 @@ TEST_F(URLFetcherTest, DifferentThreadsTest) { |
EXPECT_EQ(kDefaultResponseBody, data); |
} |
+// Create the fetcher from a sequenced (not single-threaded) task. Verify that |
+// the expected response is received. |
+TEST_F(URLFetcherTest, SequencedTaskTest) { |
+ base::test::ScopedTaskScheduler scoped_task_scheduler( |
+ base::MessageLoop::current()); |
+ auto sequenced_task_runner = |
+ base::CreateSequencedTaskRunnerWithTraits(base::TaskTraits()); |
+ |
+ auto delegate = base::MakeUnique<WaitingURLFetcherDelegate>(); |
+ sequenced_task_runner->PostTask( |
+ FROM_HERE, base::Bind(&WaitingURLFetcherDelegate::CreateFetcher, |
+ base::Unretained(delegate.get()), |
+ test_server_->GetURL(kDefaultResponsePath), |
+ URLFetcher::GET, CreateCrossThreadContextGetter())); |
+ base::RunLoop().RunUntilIdle(); |
+ delegate->StartFetcherAndWait(); |
+ |
+ EXPECT_TRUE(delegate->fetcher()->GetStatus().is_success()); |
+ EXPECT_EQ(200, delegate->fetcher()->GetResponseCode()); |
+ std::string data; |
+ ASSERT_TRUE(delegate->fetcher()->GetResponseAsString(&data)); |
+ EXPECT_EQ(kDefaultResponseBody, data); |
+ |
+ sequenced_task_runner->DeleteSoon(FROM_HERE, delegate.release()); |
+ base::RunLoop().RunUntilIdle(); |
+} |
+ |
// Tests to make sure CancelAll() will successfully cancel existing URLFetchers. |
TEST_F(URLFetcherTest, CancelAll) { |
EXPECT_EQ(0, GetNumFetcherCores()); |