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

Side by Side Diff: net/cookies/cookie_monster.cc

Issue 1773133002: SameSite: Implement 'Strict'/'Lax' attribute parsing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ios? Created 4 years, 9 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Portions of this code based on Mozilla: 5 // Portions of this code based on Mozilla:
6 // (netwerk/cookie/src/nsCookieService.cpp) 6 // (netwerk/cookie/src/nsCookieService.cpp)
7 /* ***** BEGIN LICENSE BLOCK ***** 7 /* ***** BEGIN LICENSE BLOCK *****
8 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 8 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
9 * 9 *
10 * The contents of this file are subject to the Mozilla Public License Version 10 * The contents of this file are subject to the Mozilla Public License Version
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 const GURL& url, 399 const GURL& url,
400 const std::string& name, 400 const std::string& name,
401 const std::string& value, 401 const std::string& value,
402 const std::string& domain, 402 const std::string& domain,
403 const std::string& path, 403 const std::string& path,
404 base::Time creation_time, 404 base::Time creation_time,
405 base::Time expiration_time, 405 base::Time expiration_time,
406 base::Time last_access_time, 406 base::Time last_access_time,
407 bool secure, 407 bool secure,
408 bool http_only, 408 bool http_only,
409 bool same_site, 409 CookieSameSite same_site,
410 bool enforce_strict_secure, 410 bool enforce_strict_secure,
411 CookiePriority priority, 411 CookiePriority priority,
412 const SetCookiesCallback& callback) 412 const SetCookiesCallback& callback)
413 : CookieMonsterTask(cookie_monster), 413 : CookieMonsterTask(cookie_monster),
414 url_(url), 414 url_(url),
415 name_(name), 415 name_(name),
416 value_(value), 416 value_(value),
417 domain_(domain), 417 domain_(domain),
418 path_(path), 418 path_(path),
419 creation_time_(creation_time), 419 creation_time_(creation_time),
(...skipping 16 matching lines...) Expand all
436 GURL url_; 436 GURL url_;
437 std::string name_; 437 std::string name_;
438 std::string value_; 438 std::string value_;
439 std::string domain_; 439 std::string domain_;
440 std::string path_; 440 std::string path_;
441 base::Time creation_time_; 441 base::Time creation_time_;
442 base::Time expiration_time_; 442 base::Time expiration_time_;
443 base::Time last_access_time_; 443 base::Time last_access_time_;
444 bool secure_; 444 bool secure_;
445 bool http_only_; 445 bool http_only_;
446 bool same_site_; 446 CookieSameSite same_site_;
447 bool enforce_strict_secure_; 447 bool enforce_strict_secure_;
448 CookiePriority priority_; 448 CookiePriority priority_;
449 SetCookiesCallback callback_; 449 SetCookiesCallback callback_;
450 450
451 DISALLOW_COPY_AND_ASSIGN(SetCookieWithDetailsTask); 451 DISALLOW_COPY_AND_ASSIGN(SetCookieWithDetailsTask);
452 }; 452 };
453 453
454 void CookieMonster::SetCookieWithDetailsTask::Run() { 454 void CookieMonster::SetCookieWithDetailsTask::Run() {
455 bool success = this->cookie_monster()->SetCookieWithDetails( 455 bool success = this->cookie_monster()->SetCookieWithDetails(
456 url_, name_, value_, domain_, path_, creation_time_, expiration_time_, 456 url_, name_, value_, domain_, path_, creation_time_, expiration_time_,
(...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 const GURL& url, 843 const GURL& url,
844 const std::string& name, 844 const std::string& name,
845 const std::string& value, 845 const std::string& value,
846 const std::string& domain, 846 const std::string& domain,
847 const std::string& path, 847 const std::string& path,
848 Time creation_time, 848 Time creation_time,
849 Time expiration_time, 849 Time expiration_time,
850 Time last_access_time, 850 Time last_access_time,
851 bool secure, 851 bool secure,
852 bool http_only, 852 bool http_only,
853 bool same_site, 853 CookieSameSite same_site,
854 bool enforce_strict_secure, 854 bool enforce_strict_secure,
855 CookiePriority priority, 855 CookiePriority priority,
856 const SetCookiesCallback& callback) { 856 const SetCookiesCallback& callback) {
857 scoped_refptr<SetCookieWithDetailsTask> task = new SetCookieWithDetailsTask( 857 scoped_refptr<SetCookieWithDetailsTask> task = new SetCookieWithDetailsTask(
858 this, url, name, value, domain, path, creation_time, expiration_time, 858 this, url, name, value, domain, path, creation_time, expiration_time,
859 last_access_time, secure, http_only, same_site, enforce_strict_secure, 859 last_access_time, secure, http_only, same_site, enforce_strict_secure,
860 priority, callback); 860 priority, callback);
861 DoCookieTaskForURL(task, url); 861 DoCookieTaskForURL(task, url);
862 } 862 }
863 863
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1033 bool CookieMonster::SetCookieWithDetails(const GURL& url, 1033 bool CookieMonster::SetCookieWithDetails(const GURL& url,
1034 const std::string& name, 1034 const std::string& name,
1035 const std::string& value, 1035 const std::string& value,
1036 const std::string& domain, 1036 const std::string& domain,
1037 const std::string& path, 1037 const std::string& path,
1038 base::Time creation_time, 1038 base::Time creation_time,
1039 base::Time expiration_time, 1039 base::Time expiration_time,
1040 base::Time last_access_time, 1040 base::Time last_access_time,
1041 bool secure, 1041 bool secure,
1042 bool http_only, 1042 bool http_only,
1043 bool same_site, 1043 CookieSameSite same_site,
1044 bool enforce_strict_secure, 1044 bool enforce_strict_secure,
1045 CookiePriority priority) { 1045 CookiePriority priority) {
1046 DCHECK(thread_checker_.CalledOnValidThread()); 1046 DCHECK(thread_checker_.CalledOnValidThread());
1047 1047
1048 if (!HasCookieableScheme(url)) 1048 if (!HasCookieableScheme(url))
1049 return false; 1049 return false;
1050 1050
1051 // TODO(mmenke): This class assumes each cookie to have a unique creation 1051 // TODO(mmenke): This class assumes each cookie to have a unique creation
1052 // time. Allowing the caller to set the creation time violates that 1052 // time. Allowing the caller to set the creation time violates that
1053 // assumption. Worth fixing? Worth noting that time changes between browser 1053 // assumption. Worth fixing? Worth noting that time changes between browser
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
1696 sync_to_store) 1696 sync_to_store)
1697 store_->AddCookie(*cc); 1697 store_->AddCookie(*cc);
1698 CookieMap::iterator inserted = 1698 CookieMap::iterator inserted =
1699 cookies_.insert(CookieMap::value_type(key, cc)); 1699 cookies_.insert(CookieMap::value_type(key, cc));
1700 if (delegate_.get()) { 1700 if (delegate_.get()) {
1701 delegate_->OnCookieChanged(*cc, false, 1701 delegate_->OnCookieChanged(*cc, false,
1702 CookieMonsterDelegate::CHANGE_COOKIE_EXPLICIT); 1702 CookieMonsterDelegate::CHANGE_COOKIE_EXPLICIT);
1703 } 1703 }
1704 1704
1705 // See InitializeHistograms() for details. 1705 // See InitializeHistograms() for details.
1706 int32_t type_sample = cc->IsSameSite() ? 1 << COOKIE_TYPE_SAME_SITE : 0; 1706 int32_t type_sample =
1707 cc->SameSite() != COOKIE_SAME_SITE_NONE ? 1 << COOKIE_TYPE_SAME_SITE : 0;
1707 type_sample |= cc->IsHttpOnly() ? 1 << COOKIE_TYPE_HTTPONLY : 0; 1708 type_sample |= cc->IsHttpOnly() ? 1 << COOKIE_TYPE_HTTPONLY : 0;
1708 type_sample |= cc->IsSecure() ? 1 << COOKIE_TYPE_SECURE : 0; 1709 type_sample |= cc->IsSecure() ? 1 << COOKIE_TYPE_SECURE : 0;
1709 histogram_cookie_type_->Add(type_sample); 1710 histogram_cookie_type_->Add(type_sample);
1710 1711
1711 // Histogram the type of scheme used on URLs that set cookies. This 1712 // Histogram the type of scheme used on URLs that set cookies. This
1712 // intentionally includes cookies that are set or overwritten by 1713 // intentionally includes cookies that are set or overwritten by
1713 // http:// URLs, but not cookies that are cleared by http:// URLs, to 1714 // http:// URLs, but not cookies that are cleared by http:// URLs, to
1714 // understand if the former behavior can be deprecated for Secure 1715 // understand if the former behavior can be deprecated for Secure
1715 // cookies. 1716 // cookies.
1716 if (!cc->Source().is_empty()) { 1717 if (!cc->Source().is_empty()) {
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after
2349 it != hook_map_.end(); ++it) { 2350 it != hook_map_.end(); ++it) {
2350 std::pair<GURL, std::string> key = it->first; 2351 std::pair<GURL, std::string> key = it->first;
2351 if (cookie.IncludeForRequestURL(key.first, opts) && 2352 if (cookie.IncludeForRequestURL(key.first, opts) &&
2352 cookie.Name() == key.second) { 2353 cookie.Name() == key.second) {
2353 it->second->Notify(cookie, removed); 2354 it->second->Notify(cookie, removed);
2354 } 2355 }
2355 } 2356 }
2356 } 2357 }
2357 2358
2358 } // namespace net 2359 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698