#include "net/cookies/parsed_cookie.h"
#include "base/logging.h"
#include "base/metrics/histogram_macros.h"
#include "base/numerics/checked_math.h"
#include "base/strings/string_util.h"
#include "net/base/features.h"
#include "net/cookies/cookie_constants.h"
#include "net/cookies/cookie_inclusion_status.h"
#include "net/http/http_util.h"
namespace {
const char kPathTokenName[] = …;
const char kDomainTokenName[] = …;
const char kExpiresTokenName[] = …;
const char kMaxAgeTokenName[] = …;
const char kSecureTokenName[] = …;
const char kHttpOnlyTokenName[] = …;
const char kSameSiteTokenName[] = …;
const char kPriorityTokenName[] = …;
const char kPartitionedTokenName[] = …;
const char kTerminator[] = …;
const int kTerminatorLen = …;
const char kWhitespace[] = …;
const char kValueSeparator = …;
const char kTokenSeparator[] = …;
inline bool CharIsA(const char c, const char* chars) { … }
inline bool SeekToCharacter(std::string::const_iterator* it,
const std::string::const_iterator& end,
const char character) { … }
inline bool SeekTo(std::string::const_iterator* it,
const std::string::const_iterator& end,
const char* chars) { … }
inline bool SeekPast(std::string::const_iterator* it,
const std::string::const_iterator& end,
const char* chars) { … }
inline bool SeekBackPast(std::string::const_iterator* it,
const std::string::const_iterator& end,
const char* chars) { … }
std::string_view ValidStringPieceForValue(const std::string& value) { … }
}
namespace net {
ParsedCookie::ParsedCookie(const std::string& cookie_line,
CookieInclusionStatus* status_out) { … }
ParsedCookie::~ParsedCookie() = default;
bool ParsedCookie::IsValid() const { … }
CookieSameSite ParsedCookie::SameSite(
CookieSameSiteString* samesite_string) const { … }
CookiePriority ParsedCookie::Priority() const { … }
bool ParsedCookie::SetName(const std::string& name) { … }
bool ParsedCookie::SetValue(const std::string& value) { … }
bool ParsedCookie::SetPath(const std::string& path) { … }
bool ParsedCookie::SetDomain(const std::string& domain) { … }
bool ParsedCookie::SetExpires(const std::string& expires) { … }
bool ParsedCookie::SetMaxAge(const std::string& maxage) { … }
bool ParsedCookie::SetIsSecure(bool is_secure) { … }
bool ParsedCookie::SetIsHttpOnly(bool is_http_only) { … }
bool ParsedCookie::SetSameSite(const std::string& same_site) { … }
bool ParsedCookie::SetPriority(const std::string& priority) { … }
bool ParsedCookie::SetIsPartitioned(bool is_partitioned) { … }
std::string ParsedCookie::ToCookieLine() const { … }
std::string::const_iterator ParsedCookie::FindFirstTerminator(
const std::string& s) { … }
bool ParsedCookie::ParseToken(std::string::const_iterator* it,
const std::string::const_iterator& end,
std::string::const_iterator* token_start,
std::string::const_iterator* token_end) { … }
void ParsedCookie::ParseValue(std::string::const_iterator* it,
const std::string::const_iterator& end,
std::string::const_iterator* value_start,
std::string::const_iterator* value_end) { … }
std::string ParsedCookie::ParseTokenString(const std::string& token) { … }
std::string ParsedCookie::ParseValueString(const std::string& value) { … }
bool ParsedCookie::ValueMatchesParsedValue(const std::string& value) { … }
bool ParsedCookie::IsValidCookieName(const std::string& name) { … }
bool ParsedCookie::IsValidCookieValue(const std::string& value) { … }
bool ParsedCookie::CookieAttributeValueHasValidCharSet(
const std::string& value) { … }
bool ParsedCookie::CookieAttributeValueHasValidSize(const std::string& value) { … }
bool ParsedCookie::IsValidCookieNameValuePair(
const std::string& name,
const std::string& value,
CookieInclusionStatus* status_out) { … }
void ParsedCookie::ParseTokenValuePairs(const std::string& cookie_line,
CookieInclusionStatus& status_out) { … }
void ParsedCookie::SetupAttributes() { … }
bool ParsedCookie::SetString(size_t* index,
const std::string& key,
const std::string& untrusted_value) { … }
bool ParsedCookie::SetBool(size_t* index, const std::string& key, bool value) { … }
bool ParsedCookie::SetAttributePair(size_t* index,
const std::string& key,
const std::string& value) { … }
void ParsedCookie::ClearAttributePair(size_t index) { … }
}