refactor: use net::CanonicalCookie::IsDomainMatch()
(#46748)
* refactor: use net::CanonicalCookie::IsDomainMatch() Previously we had been rolling our own impl * test: add pattern-matching tests for our cookie API
This commit is contained in:
parent
06a99d6770
commit
74c4ae0b55
2 changed files with 160 additions and 23 deletions
|
@ -102,27 +102,6 @@ namespace electron::api {
|
|||
|
||||
namespace {
|
||||
|
||||
// Returns whether |domain| matches |filter|.
|
||||
bool MatchesDomain(std::string filter, const std::string& domain) {
|
||||
// Add a leading '.' character to the filter domain if it doesn't exist.
|
||||
if (net::cookie_util::DomainIsHostOnly(filter))
|
||||
filter.insert(0, ".");
|
||||
|
||||
std::string sub_domain(domain);
|
||||
// Strip any leading '.' character from the input cookie domain.
|
||||
if (!net::cookie_util::DomainIsHostOnly(sub_domain))
|
||||
sub_domain = sub_domain.substr(1);
|
||||
|
||||
// Now check whether the domain argument is a subdomain of the filter domain.
|
||||
for (sub_domain.insert(0, "."); sub_domain.length() >= filter.length();) {
|
||||
if (sub_domain == filter)
|
||||
return true;
|
||||
const size_t next_dot = sub_domain.find('.', 1); // Skip over leading dot.
|
||||
sub_domain.erase(0, next_dot);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Returns whether |cookie| matches |filter|.
|
||||
bool MatchesCookie(const base::Value::Dict& filter,
|
||||
const net::CanonicalCookie& cookie) {
|
||||
|
@ -131,8 +110,7 @@ bool MatchesCookie(const base::Value::Dict& filter,
|
|||
return false;
|
||||
if ((str = filter.FindString("path")) && *str != cookie.Path())
|
||||
return false;
|
||||
if ((str = filter.FindString("domain")) &&
|
||||
!MatchesDomain(*str, cookie.Domain()))
|
||||
if ((str = filter.FindString("domain")) && !cookie.IsDomainMatch(*str))
|
||||
return false;
|
||||
std::optional<bool> secure_filter = filter.FindBool("secure");
|
||||
if (secure_filter && *secure_filter != cookie.SecureAttribute())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue