blob: bb9bead9e6c383feac772c395466b5011e55132b [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "components/url_formatter/spoof_checks/top_domains/top_domain_util.h"
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
namespace url_formatter {
namespace top_domains {
namespace {
// Minimum length for a hostname to be considered for an edit distance
// comparison. Shorter domains are ignored.
const size_t kMinLengthForEditDistance = 5u;
} // namespace
std::string HostnameWithoutRegistry(const std::string& hostname) {
DCHECK(!hostname.empty());
const size_t registry_size =
net::registry_controlled_domains::PermissiveGetHostRegistryLength(
hostname.c_str(),
net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES,
net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES);
return hostname.substr(0, hostname.size() - registry_size);
}
bool IsEditDistanceCandidate(const std::string& hostname) {
return !hostname.empty() &&
HostnameWithoutRegistry(hostname).size() >= kMinLengthForEditDistance;
}
} // namespace top_domains
} // namespace url_formatter