mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
chore: add A/B CHECK() for DomainIs
This commit is contained in:
@@ -30,6 +30,7 @@
|
||||
#include "shell/common/gin_helper/dictionary.h"
|
||||
#include "shell/common/gin_helper/object_template_builder.h"
|
||||
#include "shell/common/gin_helper/promise.h"
|
||||
#include "url/url_util.h"
|
||||
|
||||
namespace gin {
|
||||
|
||||
@@ -121,6 +122,13 @@ bool MatchesDomain(std::string filter, const std::string& domain) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool DomainIs(std::string_view host, const std::string_view domain) {
|
||||
// Strip any leading '.'. character from the input cookie domain.
|
||||
if (host.starts_with('.'))
|
||||
host.remove_prefix(1);
|
||||
return url::DomainIs(host, domain);
|
||||
}
|
||||
|
||||
// Returns whether |cookie| matches |filter|.
|
||||
bool MatchesCookie(const base::Value::Dict& filter,
|
||||
const net::CanonicalCookie& cookie) {
|
||||
@@ -129,9 +137,13 @@ 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()))
|
||||
return false;
|
||||
if ((str = filter.FindString("domain"))) {
|
||||
const bool old_domains_match = MatchesDomain(*str, cookie.Domain());
|
||||
const bool new_domains_match = DomainIs(cookie.Domain(), *str);
|
||||
CHECK_EQ(old_domains_match, new_domains_match);
|
||||
if (!old_domains_match)
|
||||
return false;
|
||||
}
|
||||
std::optional<bool> secure_filter = filter.FindBool("secure");
|
||||
if (secure_filter && *secure_filter != cookie.SecureAttribute())
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user