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 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
219 return nullptr; | 219 return nullptr; |
220 } | 220 } |
221 | 221 |
222 std::string cookie_path = CanonPathWithString( | 222 std::string cookie_path = CanonPathWithString( |
223 url, parsed_cookie.HasPath() ? parsed_cookie.Path() : std::string()); | 223 url, parsed_cookie.HasPath() ? parsed_cookie.Path() : std::string()); |
224 | 224 |
225 Time server_time(creation_time); | 225 Time server_time(creation_time); |
226 if (options.has_server_time()) | 226 if (options.has_server_time()) |
227 server_time = options.server_time(); | 227 server_time = options.server_time(); |
228 | 228 |
| 229 DCHECK(!creation_time.is_null()); |
229 Time cookie_expires = CanonicalCookie::CanonExpiration(parsed_cookie, | 230 Time cookie_expires = CanonicalCookie::CanonExpiration(parsed_cookie, |
230 creation_time, | 231 creation_time, |
231 server_time); | 232 server_time); |
232 | 233 |
233 CookiePrefix prefix = GetCookiePrefix(parsed_cookie.Name()); | 234 CookiePrefix prefix = GetCookiePrefix(parsed_cookie.Name()); |
234 bool is_cookie_valid = IsCookiePrefixValid(prefix, url, parsed_cookie); | 235 bool is_cookie_valid = IsCookiePrefixValid(prefix, url, parsed_cookie); |
235 RecordCookiePrefixMetrics(prefix, is_cookie_valid); | 236 RecordCookiePrefixMetrics(prefix, is_cookie_valid); |
236 if (!is_cookie_valid) { | 237 if (!is_cookie_valid) { |
237 VLOG(kVlogSetCookies) | 238 VLOG(kVlogSetCookies) |
238 << "Create() failed because the cookie violated prefix rules."; | 239 << "Create() failed because the cookie violated prefix rules."; |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
437 return false; | 438 return false; |
438 | 439 |
439 if (GetCookiePrefix(name_) == COOKIE_PREFIX_HOST && | 440 if (GetCookiePrefix(name_) == COOKIE_PREFIX_HOST && |
440 (path_ != "/" || domain_.empty() || domain_[0] == '.')) { | 441 (path_ != "/" || domain_.empty() || domain_[0] == '.')) { |
441 return false; | 442 return false; |
442 } | 443 } |
443 | 444 |
444 return true; | 445 return true; |
445 } | 446 } |
446 | 447 |
| 448 void CanonicalCookie::SetCreationDate(base::Time new_creation_date) { |
| 449 DCHECK(CreationDate().is_null()); |
| 450 creation_date_ = new_creation_date; |
| 451 } |
| 452 |
447 // static | 453 // static |
448 CanonicalCookie::CookiePrefix CanonicalCookie::GetCookiePrefix( | 454 CanonicalCookie::CookiePrefix CanonicalCookie::GetCookiePrefix( |
449 const std::string& name) { | 455 const std::string& name) { |
450 const char kSecurePrefix[] = "__Secure-"; | 456 const char kSecurePrefix[] = "__Secure-"; |
451 const char kHostPrefix[] = "__Host-"; | 457 const char kHostPrefix[] = "__Host-"; |
452 if (base::StartsWith(name, kSecurePrefix, base::CompareCase::SENSITIVE)) | 458 if (base::StartsWith(name, kSecurePrefix, base::CompareCase::SENSITIVE)) |
453 return CanonicalCookie::COOKIE_PREFIX_SECURE; | 459 return CanonicalCookie::COOKIE_PREFIX_SECURE; |
454 if (base::StartsWith(name, kHostPrefix, base::CompareCase::SENSITIVE)) | 460 if (base::StartsWith(name, kHostPrefix, base::CompareCase::SENSITIVE)) |
455 return CanonicalCookie::COOKIE_PREFIX_HOST; | 461 return CanonicalCookie::COOKIE_PREFIX_HOST; |
456 return CanonicalCookie::COOKIE_PREFIX_NONE; | 462 return CanonicalCookie::COOKIE_PREFIX_NONE; |
(...skipping 30 matching lines...) Expand all Loading... |
487 return true; | 493 return true; |
488 } | 494 } |
489 | 495 |
490 std::string CanonicalCookie::DomainWithoutDot() const { | 496 std::string CanonicalCookie::DomainWithoutDot() const { |
491 if (domain_.empty() || domain_[0] != '.') | 497 if (domain_.empty() || domain_[0] != '.') |
492 return domain_; | 498 return domain_; |
493 return domain_.substr(1); | 499 return domain_.substr(1); |
494 } | 500 } |
495 | 501 |
496 } // namespace net | 502 } // namespace net |
OLD | NEW |