| OLD | NEW |
| 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 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 const GURL& url, | 373 const GURL& url, |
| 374 const std::string& name, | 374 const std::string& name, |
| 375 const std::string& value, | 375 const std::string& value, |
| 376 const std::string& domain, | 376 const std::string& domain, |
| 377 const std::string& path, | 377 const std::string& path, |
| 378 base::Time creation_time, | 378 base::Time creation_time, |
| 379 base::Time expiration_time, | 379 base::Time expiration_time, |
| 380 base::Time last_access_time, | 380 base::Time last_access_time, |
| 381 bool secure, | 381 bool secure, |
| 382 bool http_only, | 382 bool http_only, |
| 383 bool same_site, | 383 CookieSameSite same_site, |
| 384 bool enforce_strict_secure, | 384 bool enforce_strict_secure, |
| 385 CookiePriority priority, | 385 CookiePriority priority, |
| 386 const SetCookiesCallback& callback) | 386 const SetCookiesCallback& callback) |
| 387 : CookieMonsterTask(cookie_monster), | 387 : CookieMonsterTask(cookie_monster), |
| 388 url_(url), | 388 url_(url), |
| 389 name_(name), | 389 name_(name), |
| 390 value_(value), | 390 value_(value), |
| 391 domain_(domain), | 391 domain_(domain), |
| 392 path_(path), | 392 path_(path), |
| 393 creation_time_(creation_time), | 393 creation_time_(creation_time), |
| (...skipping 16 matching lines...) Expand all Loading... |
| 410 GURL url_; | 410 GURL url_; |
| 411 std::string name_; | 411 std::string name_; |
| 412 std::string value_; | 412 std::string value_; |
| 413 std::string domain_; | 413 std::string domain_; |
| 414 std::string path_; | 414 std::string path_; |
| 415 base::Time creation_time_; | 415 base::Time creation_time_; |
| 416 base::Time expiration_time_; | 416 base::Time expiration_time_; |
| 417 base::Time last_access_time_; | 417 base::Time last_access_time_; |
| 418 bool secure_; | 418 bool secure_; |
| 419 bool http_only_; | 419 bool http_only_; |
| 420 bool same_site_; | 420 CookieSameSite same_site_; |
| 421 bool enforce_strict_secure_; | 421 bool enforce_strict_secure_; |
| 422 CookiePriority priority_; | 422 CookiePriority priority_; |
| 423 SetCookiesCallback callback_; | 423 SetCookiesCallback callback_; |
| 424 | 424 |
| 425 DISALLOW_COPY_AND_ASSIGN(SetCookieWithDetailsTask); | 425 DISALLOW_COPY_AND_ASSIGN(SetCookieWithDetailsTask); |
| 426 }; | 426 }; |
| 427 | 427 |
| 428 void CookieMonster::SetCookieWithDetailsTask::Run() { | 428 void CookieMonster::SetCookieWithDetailsTask::Run() { |
| 429 bool success = this->cookie_monster()->SetCookieWithDetails( | 429 bool success = this->cookie_monster()->SetCookieWithDetails( |
| 430 url_, name_, value_, domain_, path_, creation_time_, expiration_time_, | 430 url_, name_, value_, domain_, path_, creation_time_, expiration_time_, |
| (...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 817 const GURL& url, | 817 const GURL& url, |
| 818 const std::string& name, | 818 const std::string& name, |
| 819 const std::string& value, | 819 const std::string& value, |
| 820 const std::string& domain, | 820 const std::string& domain, |
| 821 const std::string& path, | 821 const std::string& path, |
| 822 Time creation_time, | 822 Time creation_time, |
| 823 Time expiration_time, | 823 Time expiration_time, |
| 824 Time last_access_time, | 824 Time last_access_time, |
| 825 bool secure, | 825 bool secure, |
| 826 bool http_only, | 826 bool http_only, |
| 827 bool same_site, | 827 CookieSameSite same_site, |
| 828 bool enforce_strict_secure, | 828 bool enforce_strict_secure, |
| 829 CookiePriority priority, | 829 CookiePriority priority, |
| 830 const SetCookiesCallback& callback) { | 830 const SetCookiesCallback& callback) { |
| 831 scoped_refptr<SetCookieWithDetailsTask> task = new SetCookieWithDetailsTask( | 831 scoped_refptr<SetCookieWithDetailsTask> task = new SetCookieWithDetailsTask( |
| 832 this, url, name, value, domain, path, creation_time, expiration_time, | 832 this, url, name, value, domain, path, creation_time, expiration_time, |
| 833 last_access_time, secure, http_only, same_site, enforce_strict_secure, | 833 last_access_time, secure, http_only, same_site, enforce_strict_secure, |
| 834 priority, callback); | 834 priority, callback); |
| 835 DoCookieTaskForURL(task, url); | 835 DoCookieTaskForURL(task, url); |
| 836 } | 836 } |
| 837 | 837 |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1007 bool CookieMonster::SetCookieWithDetails(const GURL& url, | 1007 bool CookieMonster::SetCookieWithDetails(const GURL& url, |
| 1008 const std::string& name, | 1008 const std::string& name, |
| 1009 const std::string& value, | 1009 const std::string& value, |
| 1010 const std::string& domain, | 1010 const std::string& domain, |
| 1011 const std::string& path, | 1011 const std::string& path, |
| 1012 base::Time creation_time, | 1012 base::Time creation_time, |
| 1013 base::Time expiration_time, | 1013 base::Time expiration_time, |
| 1014 base::Time last_access_time, | 1014 base::Time last_access_time, |
| 1015 bool secure, | 1015 bool secure, |
| 1016 bool http_only, | 1016 bool http_only, |
| 1017 bool same_site, | 1017 CookieSameSite same_site, |
| 1018 bool enforce_strict_secure, | 1018 bool enforce_strict_secure, |
| 1019 CookiePriority priority) { | 1019 CookiePriority priority) { |
| 1020 DCHECK(thread_checker_.CalledOnValidThread()); | 1020 DCHECK(thread_checker_.CalledOnValidThread()); |
| 1021 | 1021 |
| 1022 if (!HasCookieableScheme(url)) | 1022 if (!HasCookieableScheme(url)) |
| 1023 return false; | 1023 return false; |
| 1024 | 1024 |
| 1025 // TODO(mmenke): This class assumes each cookie to have a unique creation | 1025 // TODO(mmenke): This class assumes each cookie to have a unique creation |
| 1026 // time. Allowing the caller to set the creation time violates that | 1026 // time. Allowing the caller to set the creation time violates that |
| 1027 // assumption. Worth fixing? Worth noting that time changes between browser | 1027 // assumption. Worth fixing? Worth noting that time changes between browser |
| (...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1670 sync_to_store) | 1670 sync_to_store) |
| 1671 store_->AddCookie(*cc); | 1671 store_->AddCookie(*cc); |
| 1672 CookieMap::iterator inserted = | 1672 CookieMap::iterator inserted = |
| 1673 cookies_.insert(CookieMap::value_type(key, cc)); | 1673 cookies_.insert(CookieMap::value_type(key, cc)); |
| 1674 if (delegate_.get()) { | 1674 if (delegate_.get()) { |
| 1675 delegate_->OnCookieChanged(*cc, false, | 1675 delegate_->OnCookieChanged(*cc, false, |
| 1676 CookieMonsterDelegate::CHANGE_COOKIE_EXPLICIT); | 1676 CookieMonsterDelegate::CHANGE_COOKIE_EXPLICIT); |
| 1677 } | 1677 } |
| 1678 | 1678 |
| 1679 // See InitializeHistograms() for details. | 1679 // See InitializeHistograms() for details. |
| 1680 int32_t type_sample = cc->IsSameSite() ? 1 << COOKIE_TYPE_SAME_SITE : 0; | 1680 int32_t type_sample = cc->SameSite() != CookieSameSite::NO_RESTRICTION |
| 1681 ? 1 << COOKIE_TYPE_SAME_SITE |
| 1682 : 0; |
| 1681 type_sample |= cc->IsHttpOnly() ? 1 << COOKIE_TYPE_HTTPONLY : 0; | 1683 type_sample |= cc->IsHttpOnly() ? 1 << COOKIE_TYPE_HTTPONLY : 0; |
| 1682 type_sample |= cc->IsSecure() ? 1 << COOKIE_TYPE_SECURE : 0; | 1684 type_sample |= cc->IsSecure() ? 1 << COOKIE_TYPE_SECURE : 0; |
| 1683 histogram_cookie_type_->Add(type_sample); | 1685 histogram_cookie_type_->Add(type_sample); |
| 1684 | 1686 |
| 1685 // Histogram the type of scheme used on URLs that set cookies. This | 1687 // Histogram the type of scheme used on URLs that set cookies. This |
| 1686 // intentionally includes cookies that are set or overwritten by | 1688 // intentionally includes cookies that are set or overwritten by |
| 1687 // http:// URLs, but not cookies that are cleared by http:// URLs, to | 1689 // http:// URLs, but not cookies that are cleared by http:// URLs, to |
| 1688 // understand if the former behavior can be deprecated for Secure | 1690 // understand if the former behavior can be deprecated for Secure |
| 1689 // cookies. | 1691 // cookies. |
| 1690 if (!cc->Source().is_empty()) { | 1692 if (!cc->Source().is_empty()) { |
| (...skipping 648 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2339 it != hook_map_.end(); ++it) { | 2341 it != hook_map_.end(); ++it) { |
| 2340 std::pair<GURL, std::string> key = it->first; | 2342 std::pair<GURL, std::string> key = it->first; |
| 2341 if (cookie.IncludeForRequestURL(key.first, opts) && | 2343 if (cookie.IncludeForRequestURL(key.first, opts) && |
| 2342 cookie.Name() == key.second) { | 2344 cookie.Name() == key.second) { |
| 2343 it->second->Notify(cookie, removed); | 2345 it->second->Notify(cookie, removed); |
| 2344 } | 2346 } |
| 2345 } | 2347 } |
| 2346 } | 2348 } |
| 2347 | 2349 |
| 2348 } // namespace net | 2350 } // namespace net |
| OLD | NEW |