| 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.
|
|
|