Remove RunUntilIdle from WaitForResult.

Remove RunLoop::RunUntilIdle() from
TestCompletionCallbackBaseInternal::WaitForResult()
as suggested by a TODO.

Review-Url: https://codereview.chromium.org/2607123002
Cr-Commit-Position: refs/heads/master@{#441538}
diff --git a/net/spdy/spdy_http_stream_unittest.cc b/net/spdy/spdy_http_stream_unittest.cc
index 8dd3503..812db8d 100644
--- a/net/spdy/spdy_http_stream_unittest.cc
+++ b/net/spdy/spdy_http_stream_unittest.cc
@@ -304,6 +304,10 @@
   EXPECT_TRUE(HasSpdySession(http_session_->spdy_session_pool(), key_));
 
   EXPECT_LE(0, callback2.WaitForResult());
+
+  // Perform all async reads.
+  base::RunLoop().RunUntilIdle();
+
   TestLoadTimingReused(*http_stream2);
   EXPECT_TRUE(http_stream2->GetLoadTimingInfo(&load_timing_info2));
   EXPECT_EQ(load_timing_info1.socket_log_id, load_timing_info2.socket_log_id);
@@ -343,7 +347,7 @@
 
   SpdySerializedFrame resp(spdy_util_.ConstructSpdyPostReply(nullptr, 0));
   MockRead reads[] = {
-      CreateMockRead(resp, 2), CreateMockRead(body, 3),
+      CreateMockRead(resp, 2), CreateMockRead(body, 3, SYNCHRONOUS),
       MockRead(SYNCHRONOUS, 0, 4)  // EOF
   };
 
@@ -401,7 +405,7 @@
 
   SpdySerializedFrame resp(spdy_util_.ConstructSpdyPostReply(nullptr, 0));
   MockRead reads[] = {
-      CreateMockRead(resp, 2), CreateMockRead(chunk, 3),
+      CreateMockRead(resp, 2), CreateMockRead(chunk, 3, SYNCHRONOUS),
       MockRead(SYNCHRONOUS, 0, 4)  // EOF
   };
 
@@ -950,6 +954,9 @@
   int result = http_stream.SendRequest(headers, &response, callback.callback());
   EXPECT_THAT(callback.GetResult(result), IsError(ERR_FAILED));
 
+  // Run posted SpdyHttpStream::ResetStreamInternal() task.
+  base::RunLoop().RunUntilIdle();
+
   // Because the server has not closed the connection yet, there shouldn't be
   // a stream but a session in the pool
   EXPECT_FALSE(HasSpdySession(http_session_->spdy_session_pool(), key_));
@@ -1001,6 +1008,9 @@
   EXPECT_THAT(result, IsError(ERR_IO_PENDING));
   EXPECT_THAT(callback.GetResult(result), IsError(ERR_FAILED));
 
+  // Run posted SpdyHttpStream::ResetStreamInternal() task.
+  base::RunLoop().RunUntilIdle();
+
   // Because the server has closed the connection, there shouldn't be a session
   // in the pool anymore.
   EXPECT_FALSE(HasSpdySession(http_session_->spdy_session_pool(), key_));
@@ -1048,6 +1058,9 @@
   // The callback cancels |http_stream|.
   EXPECT_THAT(callback.WaitForResult(), IsOk());
 
+  // Finish async network reads/writes.
+  base::RunLoop().RunUntilIdle();
+
   EXPECT_FALSE(HasSpdySession(http_session_->spdy_session_pool(), key_));
 }
 
diff --git a/net/spdy/spdy_network_transaction_unittest.cc b/net/spdy/spdy_network_transaction_unittest.cc
index c7a3c2b4..817a2b1 100644
--- a/net/spdy/spdy_network_transaction_unittest.cc
+++ b/net/spdy/spdy_network_transaction_unittest.cc
@@ -148,6 +148,8 @@
 
     void FinishDefaultTest() {
       output_.rv = callback_.WaitForResult();
+      // Finish async network reads/writes.
+      base::RunLoop().RunUntilIdle();
       if (output_.rv != OK) {
         session_->spdy_session_pool()->CloseCurrentSessions(ERR_ABORTED);
         return;
@@ -171,6 +173,8 @@
 
     void FinishDefaultTestWithoutVerification() {
       output_.rv = callback_.WaitForResult();
+      // Finish async network reads/writes.
+      base::RunLoop().RunUntilIdle();
       if (output_.rv != OK)
         session_->spdy_session_pool()->CloseCurrentSessions(ERR_ABORTED);
     }
@@ -454,6 +458,9 @@
     EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
     rv = callback.WaitForResult();
 
+    // Finish async network reads/writes.
+    base::RunLoop().RunUntilIdle();
+
     // Request the pushed path.
     HttpNetworkTransaction trans2(DEFAULT_PRIORITY, helper.session());
     rv = trans2.Start(&CreateGetPushRequest(), callback.callback(),
@@ -1119,6 +1126,9 @@
   out.rv = callback1.WaitForResult();
   ASSERT_THAT(out.rv, IsOk());
 
+  // Finish async network reads and writes associated with |trans1|.
+  base::RunLoop().RunUntilIdle();
+
   out.rv = trans2.Start(&httpreq2, callback2.callback(), log);
   ASSERT_THAT(out.rv, IsError(ERR_IO_PENDING));
   out.rv = trans3.Start(&httpreq3, callback3.callback(), log);
@@ -1750,6 +1760,9 @@
   std::string response_body;
   EXPECT_THAT(ReadTransaction(helper.trans(), &response_body), IsOk());
   EXPECT_EQ(kUploadData, response_body);
+
+  // Finish async network reads/writes.
+  base::RunLoop().RunUntilIdle();
   helper.VerifyDataConsumed();
 }
 
@@ -2005,7 +2018,8 @@
   SpdySerializedFrame req(
       spdy_util_.ConstructSpdyGet(nullptr, 0, 1, LOWEST, true));
   MockWrite writes[] = {CreateMockWrite(req)};
-  MockWrite writes2[] = {CreateMockWrite(req, 0)};
+  MockWrite writes2[] = {CreateMockWrite(req, 0),
+                         MockWrite(SYNCHRONOUS, ERR_IO_PENDING, 3)};
 
   // The indicated length of this frame is longer than its actual length. When
   // the session receives an empty frame after this one, it shuts down the
@@ -2528,8 +2542,8 @@
       spdy_util_.ConstructSpdyRstStream(2, RST_STREAM_PROTOCOL_ERROR));
   MockRead reads[] = {
       CreateMockRead(stream1_reply, 1),
-      CreateMockRead(stream2_syn, 2),
-      CreateMockRead(stream2_rst, 3),
+      CreateMockRead(stream2_syn, 2, SYNCHRONOUS),
+      CreateMockRead(stream2_rst, 3, SYNCHRONOUS),
       CreateMockRead(stream1_body, 4, SYNCHRONOUS),
       MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5),  // Force a pause
   };
@@ -2744,6 +2758,9 @@
   rv = callback.WaitForResult();
   EXPECT_THAT(rv, IsOk());
 
+  // Finish async network reads/writes.
+  base::RunLoop().RunUntilIdle();
+
   // Verify that we consumed all test data.
   EXPECT_TRUE(data.AllReadDataConsumed());
   EXPECT_TRUE(data.AllWriteDataConsumed());
@@ -2791,6 +2808,9 @@
   rv = callback.WaitForResult();
   EXPECT_THAT(rv, IsOk());
 
+  // Finish async network reads/writes.
+  base::RunLoop().RunUntilIdle();
+
   // Verify that we consumed all test data.
   EXPECT_TRUE(data.AllReadDataConsumed());
   EXPECT_TRUE(data.AllWriteDataConsumed());
@@ -2841,6 +2861,9 @@
   rv = callback.WaitForResult();
   EXPECT_THAT(rv, IsOk());
 
+  // Finish async network reads/writes.
+  base::RunLoop().RunUntilIdle();
+
   // Verify that we consumed all test data.
   EXPECT_TRUE(data.AllReadDataConsumed());
   EXPECT_TRUE(data.AllWriteDataConsumed());
@@ -2911,6 +2934,10 @@
                         NetLogWithSource());
   rv = callback.GetResult(rv);
   EXPECT_THAT(rv, IsOk());
+
+  // Finish async network reads/writes.
+  base::RunLoop().RunUntilIdle();
+
   HttpResponseInfo response = *trans->GetResponseInfo();
   EXPECT_TRUE(response.headers);
   EXPECT_EQ("HTTP/1.1 200", response.headers->GetStatusLine());
@@ -4366,7 +4393,7 @@
   SpdySerializedFrame body_data(spdy_util_.ConstructSpdyDataFrame(3, true));
   MockRead spdy_reads[] = {
       CreateMockRead(resp_authentication, 1),
-      CreateMockRead(body_authentication, 2),
+      CreateMockRead(body_authentication, 2, SYNCHRONOUS),
       CreateMockRead(resp_data, 4),
       CreateMockRead(body_data, 5),
       MockRead(ASYNC, 0, 6),
@@ -4724,6 +4751,9 @@
     EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
     rv = callback.WaitForResult();
 
+    // Finish async network reads/writes.
+    base::RunLoop().RunUntilIdle();
+
     // Read the response body.
     std::string result;
     ReadResult(trans, &result);
@@ -4766,9 +4796,9 @@
       2, kPushedData, strlen(kPushedData), true));
   MockRead reads[] = {
       CreateMockRead(reply, 1),
-      CreateMockRead(push, 2),
-      CreateMockRead(body, 3),
-      CreateMockRead(pushed_body, 4),
+      CreateMockRead(push, 2, SYNCHRONOUS),
+      CreateMockRead(body, 3, SYNCHRONOUS),
+      CreateMockRead(pushed_body, 4, SYNCHRONOUS),
       MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5),
   };
 
@@ -4879,9 +4909,9 @@
 
   MockRead reads1[] = {
       CreateMockRead(reply1, 1),
-      CreateMockRead(push, 2),
-      CreateMockRead(body1, 3),
-      CreateMockRead(pushed_body, 4),
+      CreateMockRead(push, 2, SYNCHRONOUS),
+      CreateMockRead(body1, 3, SYNCHRONOUS),
+      CreateMockRead(pushed_body, 4, SYNCHRONOUS),
       MockRead(SYNCHRONOUS, ERR_IO_PENDING, 5),
   };
 
@@ -5080,6 +5110,9 @@
   rv = callback.WaitForResult();
   EXPECT_THAT(rv, IsOk());
 
+  // Finish async network reads.
+  base::RunLoop().RunUntilIdle();
+
   // Verify that we consumed all test data.
   EXPECT_TRUE(data.AllReadDataConsumed());
   EXPECT_TRUE(data.AllWriteDataConsumed());
@@ -5392,6 +5425,9 @@
   rv = callback.WaitForResult();
   EXPECT_THAT(rv, IsOk());
 
+  // Finish async network reads.
+  base::RunLoop().RunUntilIdle();
+
   SpdyHttpStream* stream =
       static_cast<SpdyHttpStream*>(trans->stream_.get());
   ASSERT_TRUE(stream);
@@ -5638,6 +5674,10 @@
 
   data.Resume();  // Read in WINDOW_UPDATE frame.
   rv = callback.WaitForResult();
+  EXPECT_THAT(rv, IsOk());
+
+  // Finish async network reads.
+  base::RunLoop().RunUntilIdle();
   helper.VerifyDataConsumed();
 }
 
diff --git a/net/spdy/spdy_proxy_client_socket_unittest.cc b/net/spdy/spdy_proxy_client_socket_unittest.cc
index 7c09e576..23e030b7 100644
--- a/net/spdy/spdy_proxy_client_socket_unittest.cc
+++ b/net/spdy/spdy_proxy_client_socket_unittest.cc
@@ -837,8 +837,8 @@
   SpdySerializedFrame msg1(ConstructBodyFrame(kMsg1, kLen1));
   SpdySerializedFrame msg2(ConstructBodyFrame(kMsg2, kLen2));
   MockRead reads[] = {
-      CreateMockRead(resp, 1, ASYNC), CreateMockRead(msg1, 2, ASYNC),
-      CreateMockRead(msg2, 3, ASYNC), MockRead(ASYNC, 0, 4),  // EOF
+      CreateMockRead(resp, 1, ASYNC), CreateMockRead(msg1, 2, SYNCHRONOUS),
+      CreateMockRead(msg2, 3, SYNCHRONOUS), MockRead(SYNCHRONOUS, 0, 4),  // EOF
   };
 
   Initialize(reads, arraysize(reads), writes, arraysize(writes));
diff --git a/net/spdy/spdy_session_unittest.cc b/net/spdy/spdy_session_unittest.cc
index 4d10961f..dc7d422 100644
--- a/net/spdy/spdy_session_unittest.cc
+++ b/net/spdy/spdy_session_unittest.cc
@@ -1213,6 +1213,11 @@
   EXPECT_THAT(delegate.WaitForClose(), IsOk());
   EXPECT_EQ("hello!", delegate.TakeReceivedData());
 
+  // Finish async network reads/writes.
+  base::RunLoop().RunUntilIdle();
+  EXPECT_TRUE(data.AllWriteDataConsumed());
+  EXPECT_TRUE(data.AllReadDataConsumed());
+
   // Session is destroyed.
   EXPECT_FALSE(session_);
 }
@@ -4362,6 +4367,10 @@
   EXPECT_TRUE(delegate.send_headers_completed());
   EXPECT_EQ("200", delegate.GetResponseHeaderValue(":status"));
   EXPECT_EQ(std::string(), delegate.TakeReceivedData());
+
+  // Run SpdySession::PumpWriteLoop which destroys |session_|.
+  base::RunLoop().RunUntilIdle();
+
   EXPECT_FALSE(session_);
   EXPECT_TRUE(data.AllWriteDataConsumed());
 }
diff --git a/net/spdy/spdy_stream_unittest.cc b/net/spdy/spdy_stream_unittest.cc
index 330f75e..d9d58a6 100644
--- a/net/spdy/spdy_stream_unittest.cc
+++ b/net/spdy/spdy_stream_unittest.cc
@@ -591,6 +591,9 @@
 
   EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR));
 
+  // Finish async network reads and writes.
+  base::RunLoop().RunUntilIdle();
+
   EXPECT_TRUE(data.AllWriteDataConsumed());
   EXPECT_TRUE(data.AllReadDataConsumed());
 }
@@ -706,6 +709,9 @@
 
   EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR));
 
+  // Finish async network reads and writes.
+  base::RunLoop().RunUntilIdle();
+
   EXPECT_TRUE(data.AllWriteDataConsumed());
   EXPECT_TRUE(data.AllReadDataConsumed());
 }
@@ -772,6 +778,9 @@
   EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
             delegate.TakeReceivedData());
 
+  // Finish async network reads and writes.
+  base::RunLoop().RunUntilIdle();
+
   EXPECT_TRUE(data.AllWriteDataConsumed());
   EXPECT_TRUE(data.AllReadDataConsumed());
 }
@@ -875,6 +884,9 @@
   EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
             delegate.TakeReceivedData());
 
+  // Finish async network reads and writes.
+  base::RunLoop().RunUntilIdle();
+
   EXPECT_TRUE(data.AllWriteDataConsumed());
   EXPECT_TRUE(data.AllReadDataConsumed());
 }
@@ -934,6 +946,9 @@
 
   EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR));
 
+  // Finish async network reads and writes.
+  base::RunLoop().RunUntilIdle();
+
   EXPECT_TRUE(data.AllWriteDataConsumed());
   EXPECT_TRUE(data.AllReadDataConsumed());
 }
@@ -991,6 +1006,9 @@
 
   EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR));
 
+  // Finish async network reads and writes.
+  base::RunLoop().RunUntilIdle();
+
   EXPECT_TRUE(data.AllWriteDataConsumed());
   EXPECT_TRUE(data.AllReadDataConsumed());
 }
@@ -1045,6 +1063,9 @@
   EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
             delegate.TakeReceivedData());
 
+  // Finish async network reads and writes.
+  base::RunLoop().RunUntilIdle();
+
   EXPECT_TRUE(data.AllWriteDataConsumed());
   EXPECT_TRUE(data.AllReadDataConsumed());
 }
@@ -1092,6 +1113,9 @@
 
   EXPECT_THAT(delegate.WaitForClose(), IsError(ERR_SPDY_PROTOCOL_ERROR));
 
+  // Finish async network reads and writes.
+  base::RunLoop().RunUntilIdle();
+
   EXPECT_TRUE(data.AllWriteDataConsumed());
   EXPECT_TRUE(data.AllReadDataConsumed());
 }
@@ -1144,6 +1168,9 @@
   EXPECT_EQ(std::string(kPostBody, kPostBodyLength),
             delegate.TakeReceivedData());
 
+  // Finish async network reads and writes.
+  base::RunLoop().RunUntilIdle();
+
   EXPECT_TRUE(data.AllWriteDataConsumed());
   EXPECT_TRUE(data.AllReadDataConsumed());
 }