Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(635)

Unified Diff: net/dns/dns_client.cc

Issue 1946793002: net: Add fuzzer for HostResolverImpl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Response to Julia's comments Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/dns/dns_client.cc
diff --git a/net/dns/dns_client.cc b/net/dns/dns_client.cc
index 5cf0c45acef1c6d477fb8963fa8f5b34c4977466..274cefa19d0af2c892ad5f6715cf838e15b1ceec 100644
--- a/net/dns/dns_client.cc
+++ b/net/dns/dns_client.cc
@@ -7,6 +7,7 @@
#include <utility>
#include "base/bind.h"
+#include "base/memory/ptr_util.h"
#include "base/rand_util.h"
#include "net/dns/address_sorter.h"
#include "net/dns/dns_config_service.h"
@@ -22,20 +23,25 @@ namespace {
class DnsClientImpl : public DnsClient {
public:
- explicit DnsClientImpl(NetLog* net_log)
+ DnsClientImpl(NetLog* net_log,
+ ClientSocketFactory* socket_factory,
+ const RandIntCallback& rand_int_callback)
: address_sorter_(AddressSorter::CreateAddressSorter()),
- net_log_(net_log) {}
+ net_log_(net_log),
+ socket_factory_(socket_factory),
+ rand_int_callback_(rand_int_callback) {}
void SetConfig(const DnsConfig& config) override {
factory_.reset();
- session_ = NULL;
+ session_ = nullptr;
if (config.IsValid() && !config.unhandled_options) {
- ClientSocketFactory* factory = ClientSocketFactory::GetDefaultFactory();
std::unique_ptr<DnsSocketPool> socket_pool(
- config.randomize_ports ? DnsSocketPool::CreateDefault(factory)
- : DnsSocketPool::CreateNull(factory));
+ config.randomize_ports
+ ? DnsSocketPool::CreateDefault(socket_factory_,
+ rand_int_callback_)
+ : DnsSocketPool::CreateNull(socket_factory_, rand_int_callback_));
session_ = new DnsSession(config, std::move(socket_pool),
- base::Bind(&base::RandInt), net_log_);
+ rand_int_callback_, net_log_);
factory_ = DnsTransactionFactory::CreateFactory(session_.get());
}
}
@@ -56,13 +62,29 @@ class DnsClientImpl : public DnsClient {
std::unique_ptr<AddressSorter> address_sorter_;
NetLog* net_log_;
+
+ ClientSocketFactory* socket_factory_;
+ const RandIntCallback rand_int_callback_;
+
+ DISALLOW_COPY_AND_ASSIGN(DnsClientImpl);
};
} // namespace
// static
std::unique_ptr<DnsClient> DnsClient::CreateClient(NetLog* net_log) {
- return std::unique_ptr<DnsClient>(new DnsClientImpl(net_log));
+ return base::WrapUnique(
+ new DnsClientImpl(net_log, ClientSocketFactory::GetDefaultFactory(),
+ base::Bind(&base::RandInt)));
+}
+
+// static
+std::unique_ptr<DnsClient> DnsClient::CreateClientForTesting(
+ NetLog* net_log,
+ ClientSocketFactory* socket_factory,
+ const RandIntCallback& rand_int_callback) {
+ return base::WrapUnique(
+ new DnsClientImpl(net_log, socket_factory, rand_int_callback));
}
} // namespace net

Powered by Google App Engine
This is Rietveld 408576698