Commit 016659b9 authored by Eric Orth's avatar Eric Orth Committed by Commit Bot

Move AlwaysErrorRequestImpl to HostResolver

Was just used for MappedHostResolver, but moving to HostResolver to be
more generally available to HostResolver implementations.

Also rename to FailingRequestImpl.

Bug: 1006902
Change-Id: Ifffe9971057d8e93a653593d93a6dc88e053f8f8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1828099
Commit-Queue: Eric Orth <ericorth@chromium.org>
Reviewed-by: default avatarMatt Menke <mmenke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#701250}
parent d8feb669
......@@ -9,6 +9,7 @@
#include "base/bind.h"
#include "base/logging.h"
#include "base/macros.h"
#include "base/no_destructor.h"
#include "base/strings/string_number_conversions.h"
#include "base/values.h"
#include "net/base/address_list.h"
......@@ -23,6 +24,49 @@
namespace net {
namespace {
class FailingRequestImpl : public HostResolver::ResolveHostRequest {
public:
explicit FailingRequestImpl(int error) : error_(error) {}
~FailingRequestImpl() override = default;
int Start(CompletionOnceCallback callback) override { return error_; }
const base::Optional<AddressList>& GetAddressResults() const override {
static base::NoDestructor<base::Optional<AddressList>> nullopt_result;
return *nullopt_result;
}
const base::Optional<std::vector<std::string>>& GetTextResults()
const override {
static const base::NoDestructor<base::Optional<std::vector<std::string>>>
nullopt_result;
return *nullopt_result;
}
const base::Optional<std::vector<HostPortPair>>& GetHostnameResults()
const override {
static const base::NoDestructor<base::Optional<std::vector<HostPortPair>>>
nullopt_result;
return *nullopt_result;
}
const base::Optional<HostCache::EntryStaleness>& GetStaleInfo()
const override {
static const base::NoDestructor<base::Optional<HostCache::EntryStaleness>>
nullopt_result;
return *nullopt_result;
}
private:
const int error_;
DISALLOW_COPY_AND_ASSIGN(FailingRequestImpl);
};
} // namespace
const size_t HostResolver::ManagerOptions::kDefaultRetryAttempts =
static_cast<size_t>(-1);
......@@ -171,4 +215,10 @@ HostResolverFlags HostResolver::ParametersToHostResolverFlags(
HostResolver::HostResolver() = default;
// static
std::unique_ptr<HostResolver::ResolveHostRequest>
HostResolver::CreateFailingRequest(int error) {
return std::make_unique<FailingRequestImpl>(error);
}
} // namespace net
......@@ -342,6 +342,10 @@ class NET_EXPORT HostResolver {
protected:
HostResolver();
// Utility to create a request implementation that always fails with |error|
// immediately on start.
static std::unique_ptr<ResolveHostRequest> CreateFailingRequest(int error);
private:
DISALLOW_COPY_AND_ASSIGN(HostResolver);
};
......
......@@ -7,7 +7,6 @@
#include <string>
#include <utility>
#include "base/no_destructor.h"
#include "base/strings/string_util.h"
#include "base/values.h"
#include "net/base/host_port_pair.h"
......@@ -15,43 +14,6 @@
namespace net {
class MappedHostResolver::AlwaysErrorRequestImpl
: public HostResolver::ResolveHostRequest {
public:
explicit AlwaysErrorRequestImpl(int error) : error_(error) {}
int Start(CompletionOnceCallback callback) override { return error_; }
const base::Optional<AddressList>& GetAddressResults() const override {
static base::NoDestructor<base::Optional<AddressList>> nullopt_result;
return *nullopt_result;
}
const base::Optional<std::vector<std::string>>& GetTextResults()
const override {
static const base::NoDestructor<base::Optional<std::vector<std::string>>>
nullopt_result;
return *nullopt_result;
}
const base::Optional<std::vector<HostPortPair>>& GetHostnameResults()
const override {
static const base::NoDestructor<base::Optional<std::vector<HostPortPair>>>
nullopt_result;
return *nullopt_result;
}
const base::Optional<HostCache::EntryStaleness>& GetStaleInfo()
const override {
static const base::NoDestructor<base::Optional<HostCache::EntryStaleness>>
nullopt_result;
return *nullopt_result;
}
private:
const int error_;
};
MappedHostResolver::MappedHostResolver(std::unique_ptr<HostResolver> impl)
: impl_(std::move(impl)) {}
......@@ -70,7 +32,7 @@ MappedHostResolver::CreateRequest(
rules_.RewriteHost(&rewritten);
if (rewritten.host() == "~NOTFOUND")
return std::make_unique<AlwaysErrorRequestImpl>(ERR_NAME_NOT_RESOLVED);
return CreateFailingRequest(ERR_NAME_NOT_RESOLVED);
return impl_->CreateRequest(rewritten, source_net_log, optional_parameters);
}
......
......@@ -61,8 +61,6 @@ class NET_EXPORT MappedHostResolver : public HostResolver {
HostResolverManager* GetManagerForTesting() override;
private:
class AlwaysErrorRequestImpl;
std::unique_ptr<HostResolver> impl_;
HostMappingRules rules_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment