Index: net/dns/host_resolver_impl_unittest.cc |
diff --git a/net/dns/host_resolver_impl_unittest.cc b/net/dns/host_resolver_impl_unittest.cc |
index d71db2f1c2243cca86a03f02ace35d7a945a9808..9a886a72c1999d13bcf9cc1467d372c0df7b718f 100644 |
--- a/net/dns/host_resolver_impl_unittest.cc |
+++ b/net/dns/host_resolver_impl_unittest.cc |
@@ -899,7 +899,8 @@ TEST_F(HostResolverImplTest, BypassCache) { |
EXPECT_EQ(2u, proc_->GetCaptureList().size()); |
} |
-// Test that IP address changes flush the cache. |
+// Test that IP address changes flush the cache but initial DNS config reads do |
+// not. |
TEST_F(HostResolverImplTest, FlushCacheOnIPAddressChange) { |
proc_->SignalMultiple(2u); // One before the flush, one after. |
@@ -910,6 +911,11 @@ TEST_F(HostResolverImplTest, FlushCacheOnIPAddressChange) { |
req = CreateRequest("host1", 75); |
EXPECT_EQ(OK, req->Resolve()); // Should complete synchronously. |
+ // Verify initial DNS config read does not flush cache. |
+ NetworkChangeNotifier::NotifyObserversOfInitialDNSConfigReadForTests(); |
+ req = CreateRequest("host1", 75); |
+ EXPECT_EQ(OK, req->Resolve()); // Should complete synchronously. |
+ |
// Flush cache by triggering an IP address change. |
NetworkChangeNotifier::NotifyObserversOfIPAddressChangeForTests(); |
base::MessageLoop::current()->RunUntilIdle(); // Notification happens async. |
@@ -936,6 +942,20 @@ TEST_F(HostResolverImplTest, AbortOnIPAddressChanged) { |
EXPECT_EQ(0u, resolver_->GetHostCache()->size()); |
} |
+// Test that initial DNS config read signals do not abort pending requests. |
+TEST_F(HostResolverImplTest, DontAbortOnInitialDNSConfigRead) { |
+ Request* req = CreateRequest("host1", 70); |
+ EXPECT_EQ(ERR_IO_PENDING, req->Resolve()); |
+ |
+ EXPECT_TRUE(proc_->WaitFor(1u)); |
+ // Triggering initial DNS config read signal. |
+ NetworkChangeNotifier::NotifyObserversOfInitialDNSConfigReadForTests(); |
+ base::MessageLoop::current()->RunUntilIdle(); // Notification happens async. |
+ proc_->SignalAll(); |
+ |
+ EXPECT_EQ(OK, req->WaitForResult()); |
+} |
+ |
// Obey pool constraints after IP address has changed. |
TEST_F(HostResolverImplTest, ObeyPoolConstraintsAfterIPAddressChange) { |
// Runs at most one job at a time. |