Handle invalid DnsConfig in DnsProbeRunner.
Don't crash in RunProbe if the DnsConfig is invalid; add a test case to the
DnsProbeRunnerTest for invalid config.
BUG=156415,261588
TEST=added test case to DnsProbeRunnerTest
Review URL: https://chromiumcodereview.appspot.com/19678015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@212631 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/net/dns_probe_runner_unittest.cc b/chrome/browser/net/dns_probe_runner_unittest.cc
index fd674e65..5020afc 100644
--- a/chrome/browser/net/dns_probe_runner_unittest.cc
+++ b/chrome/browser/net/dns_probe_runner_unittest.cc
@@ -15,6 +15,8 @@
using base::MessageLoopForIO;
using base::RunLoop;
using content::TestBrowserThreadBundle;
+using net::DnsClient;
+using net::DnsConfig;
using net::MockDnsClientRule;
namespace chrome_browser_net {
@@ -86,6 +88,24 @@
RunTest(MockDnsClientRule::EMPTY, DnsProbeRunner::INCORRECT);
}
+TEST_F(DnsProbeRunnerTest, InvalidDnsConfig) {
+ scoped_ptr<DnsClient> dns_client(DnsClient::CreateClient(NULL));
+ DnsConfig empty_config;
+ dns_client->SetConfig(empty_config);
+ ASSERT_EQ(NULL, dns_client->GetTransactionFactory());
+ runner_.SetClient(dns_client.Pass());
+
+ TestDnsProbeRunnerCallback callback;
+
+ runner_.RunProbe(callback.callback());
+ EXPECT_TRUE(runner_.IsRunning());
+
+ RunLoop().RunUntilIdle();
+ EXPECT_FALSE(runner_.IsRunning());
+ EXPECT_TRUE(callback.called());
+ EXPECT_EQ(DnsProbeRunner::UNKNOWN, runner_.result());
+}
+
} // namespace
} // namespace chrome_browser_net