Index: net/http/disk_cache_based_quic_server_info_unittest.cc |
diff --git a/net/http/disk_cache_based_quic_server_info_unittest.cc b/net/http/disk_cache_based_quic_server_info_unittest.cc |
index 9bd7462bdf60305b9910cc741189bd18f2345816..845fdc953f64ca34f7ecff583e6eeaf4c772644f 100644 |
--- a/net/http/disk_cache_based_quic_server_info_unittest.cc |
+++ b/net/http/disk_cache_based_quic_server_info_unittest.cc |
@@ -359,4 +359,40 @@ TEST(DiskCacheBasedQuicServerInfo, MultiplePersist) { |
RemoveMockTransaction(&kHostInfoTransaction1); |
} |
+TEST(DiskCacheBasedQuicServerInfo, CancelWaitForDataReady) { |
+ MockBlockingBackendFactory* factory = new MockBlockingBackendFactory(); |
+ MockHttpCache cache(factory); |
+ TestCompletionCallback callback; |
+ QuicServerId server_id("www.google.com", 443, true, PRIVACY_MODE_DISABLED); |
+ scoped_ptr<QuicServerInfo> quic_server_info( |
+ new DiskCacheBasedQuicServerInfo(server_id, cache.http_cache())); |
+ EXPECT_FALSE(quic_server_info->IsDataReady()); |
+ quic_server_info->Start(); |
+ int rv = quic_server_info->WaitForDataReady(callback.callback()); |
+ EXPECT_EQ(ERR_IO_PENDING, rv); |
+ // Now cancel the callback. |
+ quic_server_info->CancelWaitForDataReadyCallback(); |
+ EXPECT_FALSE(quic_server_info->IsDataReady()); |
+ // Now complete the backend creation and let the callback run. |
+ factory->FinishCreation(); |
+ EXPECT_TRUE(quic_server_info->IsDataReady()); |
+} |
+ |
+TEST(DiskCacheBasedQuicServerInfo, CancelWaitForDataReadyButDataIsReady) { |
+ MockHttpCache cache; |
+ AddMockTransaction(&kHostInfoTransaction1); |
+ TestCompletionCallback callback; |
+ |
+ QuicServerId server_id("www.google.com", 443, true, PRIVACY_MODE_DISABLED); |
+ scoped_ptr<QuicServerInfo> quic_server_info( |
+ new DiskCacheBasedQuicServerInfo(server_id, cache.http_cache())); |
+ EXPECT_FALSE(quic_server_info->IsDataReady()); |
+ quic_server_info->Start(); |
+ int rv = quic_server_info->WaitForDataReady(callback.callback()); |
+ quic_server_info->CancelWaitForDataReadyCallback(); |
+ EXPECT_EQ(OK, callback.GetResult(rv)); |
+ EXPECT_TRUE(quic_server_info->IsDataReady()); |
+ RemoveMockTransaction(&kHostInfoTransaction1); |
+} |
+ |
} // namespace net |