diff options
Diffstat (limited to 'chromium/net/base/scheme_host_port_matcher_rule.cc')
-rw-r--r-- | chromium/net/base/scheme_host_port_matcher_rule.cc | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/chromium/net/base/scheme_host_port_matcher_rule.cc b/chromium/net/base/scheme_host_port_matcher_rule.cc index 18798a3842e..cb02c0522c2 100644 --- a/chromium/net/base/scheme_host_port_matcher_rule.cc +++ b/chromium/net/base/scheme_host_port_matcher_rule.cc @@ -5,6 +5,7 @@ #include "net/base/scheme_host_port_matcher_rule.h" #include "base/strings/pattern.h" +#include "base/strings/strcat.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "net/base/host_port_pair.h" @@ -28,15 +29,15 @@ std::string AddBracketsIfIPv6(const IPAddress& ip_address) { // static std::unique_ptr<SchemeHostPortMatcherRule> SchemeHostPortMatcherRule::FromUntrimmedRawString( - const std::string& raw_untrimmed) { - std::string raw; - base::TrimWhitespaceASCII(raw_untrimmed, base::TRIM_ALL, &raw); + base::StringPiece raw_untrimmed) { + base::StringPiece raw = + base::TrimWhitespaceASCII(raw_untrimmed, base::TRIM_ALL); // Extract any scheme-restriction. std::string::size_type scheme_pos = raw.find("://"); std::string scheme; if (scheme_pos != std::string::npos) { - scheme = raw.substr(0, scheme_pos); + scheme = std::string(raw.substr(0, scheme_pos)); raw = raw.substr(scheme_pos + 3); if (scheme.empty()) return nullptr; @@ -55,7 +56,7 @@ SchemeHostPortMatcherRule::FromUntrimmedRawString( return nullptr; return std::make_unique<SchemeHostPortMatcherIPBlockRule>( - raw, scheme, ip_prefix, prefix_length_in_bits); + std::string(raw), scheme, ip_prefix, prefix_length_in_bits); } // Check if we have an <ip-address>[:port] input. We need to treat this @@ -87,11 +88,15 @@ SchemeHostPortMatcherRule::FromUntrimmedRawString( // Special-case hostnames that begin with a period. // For example, we remap ".google.com" --> "*.google.com". - if (base::StartsWith(raw, ".", base::CompareCase::SENSITIVE)) - raw = "*" + raw; + std::string hostname_pattern; + if (base::StartsWith(raw, ".", base::CompareCase::SENSITIVE)) { + hostname_pattern = base::StrCat({"*", raw}); + } else { + hostname_pattern = std::string(raw); + } - return std::make_unique<SchemeHostPortMatcherHostnamePatternRule>(scheme, raw, - port); + return std::make_unique<SchemeHostPortMatcherHostnamePatternRule>( + scheme, hostname_pattern, port); } bool SchemeHostPortMatcherRule::IsHostnamePatternRule() const { |