| 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 1685 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1696 const CookieOptions& options) { | 1696 const CookieOptions& options) { |
| 1697 lock_.AssertAcquired(); | 1697 lock_.AssertAcquired(); |
| 1698 | 1698 |
| 1699 VLOG(kVlogSetCookies) << "SetCookie() line: " << cookie_line; | 1699 VLOG(kVlogSetCookies) << "SetCookie() line: " << cookie_line; |
| 1700 | 1700 |
| 1701 Time creation_time = creation_time_or_null; | 1701 Time creation_time = creation_time_or_null; |
| 1702 if (creation_time.is_null()) { | 1702 if (creation_time.is_null()) { |
| 1703 creation_time = CurrentTime(); | 1703 creation_time = CurrentTime(); |
| 1704 last_time_seen_ = creation_time; | 1704 last_time_seen_ = creation_time; |
| 1705 } | 1705 } |
| 1706 Time server_time; |
| 1707 if (options.has_server_time()) |
| 1708 server_time = options.server_time(); |
| 1709 else |
| 1710 server_time = creation_time; |
| 1706 | 1711 |
| 1707 // Parse the cookie. | 1712 // Parse the cookie. |
| 1708 ParsedCookie pc(cookie_line); | 1713 ParsedCookie pc(cookie_line); |
| 1709 | 1714 |
| 1710 if (!pc.IsValid()) { | 1715 if (!pc.IsValid()) { |
| 1711 VLOG(kVlogSetCookies) << "WARNING: Couldn't parse cookie"; | 1716 VLOG(kVlogSetCookies) << "WARNING: Couldn't parse cookie"; |
| 1712 return false; | 1717 return false; |
| 1713 } | 1718 } |
| 1714 | 1719 |
| 1715 if (options.exclude_httponly() && pc.IsHttpOnly()) { | 1720 if (options.exclude_httponly() && pc.IsHttpOnly()) { |
| 1716 VLOG(kVlogSetCookies) << "SetCookie() not setting httponly cookie"; | 1721 VLOG(kVlogSetCookies) << "SetCookie() not setting httponly cookie"; |
| 1717 return false; | 1722 return false; |
| 1718 } | 1723 } |
| 1719 | 1724 |
| 1720 std::string cookie_domain; | 1725 std::string cookie_domain; |
| 1721 if (!GetCookieDomain(url, pc, &cookie_domain)) { | 1726 if (!GetCookieDomain(url, pc, &cookie_domain)) { |
| 1722 return false; | 1727 return false; |
| 1723 } | 1728 } |
| 1724 | 1729 |
| 1725 std::string cookie_path = CanonicalCookie::CanonPath(url, pc); | 1730 std::string cookie_path = CanonicalCookie::CanonPath(url, pc); |
| 1726 std::string mac_key = pc.HasMACKey() ? pc.MACKey() : std::string(); | 1731 std::string mac_key = pc.HasMACKey() ? pc.MACKey() : std::string(); |
| 1727 std::string mac_algorithm = pc.HasMACAlgorithm() ? | 1732 std::string mac_algorithm = pc.HasMACAlgorithm() ? |
| 1728 pc.MACAlgorithm() : std::string(); | 1733 pc.MACAlgorithm() : std::string(); |
| 1729 | 1734 |
| 1730 scoped_ptr<CanonicalCookie> cc; | 1735 scoped_ptr<CanonicalCookie> cc; |
| 1731 Time cookie_expires = CanonicalCookie::CanonExpiration(pc, creation_time); | 1736 Time cookie_expires = |
| 1737 CanonicalCookie::CanonExpiration(pc, creation_time, server_time); |
| 1732 | 1738 |
| 1733 cc.reset(new CanonicalCookie(url, pc.Name(), pc.Value(), cookie_domain, | 1739 cc.reset(new CanonicalCookie(url, pc.Name(), pc.Value(), cookie_domain, |
| 1734 cookie_path, mac_key, mac_algorithm, | 1740 cookie_path, mac_key, mac_algorithm, |
| 1735 creation_time, cookie_expires, | 1741 creation_time, cookie_expires, |
| 1736 creation_time, pc.IsSecure(), pc.IsHttpOnly())); | 1742 creation_time, pc.IsSecure(), pc.IsHttpOnly())); |
| 1737 | 1743 |
| 1738 if (!cc.get()) { | 1744 if (!cc.get()) { |
| 1739 VLOG(kVlogSetCookies) << "WARNING: Failed to allocate CanonicalCookie"; | 1745 VLOG(kVlogSetCookies) << "WARNING: Failed to allocate CanonicalCookie"; |
| 1740 return false; | 1746 return false; |
| 1741 } | 1747 } |
| (...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2143 | 2149 |
| 2144 // The system resolution is not high enough, so we can have multiple | 2150 // The system resolution is not high enough, so we can have multiple |
| 2145 // set cookies that result in the same system time. When this happens, we | 2151 // set cookies that result in the same system time. When this happens, we |
| 2146 // increment by one Time unit. Let's hope computers don't get too fast. | 2152 // increment by one Time unit. Let's hope computers don't get too fast. |
| 2147 Time CookieMonster::CurrentTime() { | 2153 Time CookieMonster::CurrentTime() { |
| 2148 return std::max(Time::Now(), | 2154 return std::max(Time::Now(), |
| 2149 Time::FromInternalValue(last_time_seen_.ToInternalValue() + 1)); | 2155 Time::FromInternalValue(last_time_seen_.ToInternalValue() + 1)); |
| 2150 } | 2156 } |
| 2151 | 2157 |
| 2152 } // namespace net | 2158 } // namespace net |
| OLD | NEW |