Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Unified Diff: net/cookies/canonical_cookie.cc

Issue 876973003: Implement the "first-party-only" cookie flag. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: FirstPartyOnly. Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/cookies/canonical_cookie.h ('k') | net/cookies/canonical_cookie_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/cookies/canonical_cookie.cc
diff --git a/net/cookies/canonical_cookie.cc b/net/cookies/canonical_cookie.cc
index f0b3b3fa5fc74a09a16a6e48228cff26eed551de..9d7ccf297edfba6adbc016488f8f819aeb9d6020 100644
--- a/net/cookies/canonical_cookie.cc
+++ b/net/cookies/canonical_cookie.cc
@@ -109,12 +109,18 @@ CanonicalCookie::CanonicalCookie()
httponly_(false) {
}
-CanonicalCookie::CanonicalCookie(
- const GURL& url, const std::string& name, const std::string& value,
- const std::string& domain, const std::string& path,
- const base::Time& creation, const base::Time& expiration,
- const base::Time& last_access, bool secure, bool httponly,
- CookiePriority priority)
+CanonicalCookie::CanonicalCookie(const GURL& url,
+ const std::string& name,
+ const std::string& value,
+ const std::string& domain,
+ const std::string& path,
+ const base::Time& creation,
+ const base::Time& expiration,
+ const base::Time& last_access,
+ bool secure,
+ bool httponly,
+ bool firstpartyonly,
+ CookiePriority priority)
: source_(GetCookieSourceFromURL(url)),
name_(name),
value_(value),
@@ -125,6 +131,7 @@ CanonicalCookie::CanonicalCookie(
last_access_date_(last_access),
secure_(secure),
httponly_(httponly),
+ first_party_only_(firstpartyonly),
priority_(priority) {
}
@@ -137,6 +144,7 @@ CanonicalCookie::CanonicalCookie(const GURL& url, const ParsedCookie& pc)
last_access_date_(Time()),
secure_(pc.IsSecure()),
httponly_(pc.IsHttpOnly()),
+ first_party_only_(pc.IsFirstPartyOnly()),
priority_(pc.Priority()) {
if (pc.HasExpires())
expiry_date_ = CanonExpiration(pc, creation_date_, creation_date_);
@@ -238,12 +246,11 @@ CanonicalCookie* CanonicalCookie::Create(const GURL& url,
creation_time,
server_time);
- return new CanonicalCookie(url, parsed_cookie.Name(), parsed_cookie.Value(),
- cookie_domain, cookie_path, creation_time,
- cookie_expires, creation_time,
- parsed_cookie.IsSecure(),
- parsed_cookie.IsHttpOnly(),
- parsed_cookie.Priority());
+ return new CanonicalCookie(
+ url, parsed_cookie.Name(), parsed_cookie.Value(), cookie_domain,
+ cookie_path, creation_time, cookie_expires, creation_time,
+ parsed_cookie.IsSecure(), parsed_cookie.IsHttpOnly(),
+ parsed_cookie.IsFirstPartyOnly(), parsed_cookie.Priority());
}
CanonicalCookie* CanonicalCookie::Create(const GURL& url,
@@ -255,6 +262,7 @@ CanonicalCookie* CanonicalCookie::Create(const GURL& url,
const base::Time& expiration,
bool secure,
bool http_only,
+ bool first_party_only,
CookiePriority priority) {
// Expect valid attribute tokens and values, as defined by the ParsedCookie
// logic, otherwise don't create the cookie.
@@ -293,7 +301,7 @@ CanonicalCookie* CanonicalCookie::Create(const GURL& url,
return new CanonicalCookie(url, parsed_name, parsed_value, cookie_domain,
cookie_path, creation, expiration, creation,
- secure, http_only, priority);
+ secure, http_only, first_party_only, priority);
}
bool CanonicalCookie::IsOnPath(const std::string& url_path) const {
@@ -382,6 +390,14 @@ bool CanonicalCookie::IncludeForRequestURL(const GURL& url,
if (!IsOnPath(url.path()))
return false;
+ // Include first-party-only cookies iff |options| tells us to include all of
+ // them, or if a first-party URL is set and its origin matches the origin of
+ // |url|.
+ if (IsFirstPartyOnly() && !options.include_first_party_only() &&
+ options.first_party_url().GetOrigin() != url.GetOrigin()) {
+ return false;
+ }
+
return true;
}
@@ -406,6 +422,7 @@ CanonicalCookie* CanonicalCookie::Duplicate() const {
cc->last_access_date_ = last_access_date_;
cc->secure_ = secure_;
cc->httponly_ = httponly_;
+ cc->first_party_only_ = first_party_only_;
cc->priority_ = priority_;
return cc;
}
« no previous file with comments | « net/cookies/canonical_cookie.h ('k') | net/cookies/canonical_cookie_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698