| 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 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 name_(pc.Name()), | 132 name_(pc.Name()), |
| 133 value_(pc.Value()), | 133 value_(pc.Value()), |
| 134 path_(CanonPath(url, pc)), | 134 path_(CanonPath(url, pc)), |
| 135 mac_key_(pc.MACKey()), | 135 mac_key_(pc.MACKey()), |
| 136 mac_algorithm_(pc.MACAlgorithm()), | 136 mac_algorithm_(pc.MACAlgorithm()), |
| 137 creation_date_(Time::Now()), | 137 creation_date_(Time::Now()), |
| 138 last_access_date_(Time()), | 138 last_access_date_(Time()), |
| 139 secure_(pc.IsSecure()), | 139 secure_(pc.IsSecure()), |
| 140 httponly_(pc.IsHttpOnly()) { | 140 httponly_(pc.IsHttpOnly()) { |
| 141 if (pc.HasExpires()) | 141 if (pc.HasExpires()) |
| 142 expiry_date_ = CanonExpiration(pc, creation_date_); | 142 expiry_date_ = CanonExpiration(pc, creation_date_, creation_date_); |
| 143 | 143 |
| 144 // Do the best we can with the domain. | 144 // Do the best we can with the domain. |
| 145 std::string cookie_domain; | 145 std::string cookie_domain; |
| 146 std::string domain_string; | 146 std::string domain_string; |
| 147 if (pc.HasDomain()) { | 147 if (pc.HasDomain()) { |
| 148 domain_string = pc.Domain(); | 148 domain_string = pc.Domain(); |
| 149 } | 149 } |
| 150 bool result | 150 bool result |
| 151 = cookie_util::GetCookieDomainWithString(url, domain_string, | 151 = cookie_util::GetCookieDomainWithString(url, domain_string, |
| 152 &cookie_domain); | 152 &cookie_domain); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 174 std::string CanonicalCookie::CanonPath(const GURL& url, | 174 std::string CanonicalCookie::CanonPath(const GURL& url, |
| 175 const ParsedCookie& pc) { | 175 const ParsedCookie& pc) { |
| 176 std::string path_string; | 176 std::string path_string; |
| 177 if (pc.HasPath()) | 177 if (pc.HasPath()) |
| 178 path_string = pc.Path(); | 178 path_string = pc.Path(); |
| 179 return CanonPathWithString(url, path_string); | 179 return CanonPathWithString(url, path_string); |
| 180 } | 180 } |
| 181 | 181 |
| 182 // static | 182 // static |
| 183 Time CanonicalCookie::CanonExpiration(const ParsedCookie& pc, | 183 Time CanonicalCookie::CanonExpiration(const ParsedCookie& pc, |
| 184 const Time& current) { | 184 const Time& current, |
| 185 const Time& server_time) { |
| 185 // First, try the Max-Age attribute. | 186 // First, try the Max-Age attribute. |
| 186 uint64 max_age = 0; | 187 uint64 max_age = 0; |
| 187 if (pc.HasMaxAge() && | 188 if (pc.HasMaxAge() && |
| 188 #ifdef COMPILER_MSVC | 189 #ifdef COMPILER_MSVC |
| 189 sscanf_s( | 190 sscanf_s( |
| 190 #else | 191 #else |
| 191 sscanf( | 192 sscanf( |
| 192 #endif | 193 #endif |
| 193 pc.MaxAge().c_str(), " %" PRIu64, &max_age) == 1) { | 194 pc.MaxAge().c_str(), " %" PRIu64, &max_age) == 1) { |
| 194 return current + TimeDelta::FromSeconds(max_age); | 195 return current + TimeDelta::FromSeconds(max_age); |
| 195 } | 196 } |
| 196 | 197 |
| 197 // Try the Expires attribute. | 198 // Try the Expires attribute. |
| 198 if (pc.HasExpires()) | 199 if (pc.HasExpires()) { |
| 199 return cookie_util::ParseCookieTime(pc.Expires()); | 200 // Adjust for clock skew between server and host. |
| 201 return current + (cookie_util::ParseCookieTime(pc.Expires()) - server_time); |
| 202 } |
| 200 | 203 |
| 201 // Invalid or no expiration, persistent cookie. | 204 // Invalid or no expiration, persistent cookie. |
| 202 return Time(); | 205 return Time(); |
| 203 } | 206 } |
| 204 | 207 |
| 205 CanonicalCookie* CanonicalCookie::Create(const GURL& url, | 208 CanonicalCookie* CanonicalCookie::Create(const GURL& url, |
| 206 const ParsedCookie& pc) { | 209 const ParsedCookie& pc) { |
| 207 if (!pc.IsValid()) { | 210 if (!pc.IsValid()) { |
| 208 return NULL; | 211 return NULL; |
| 209 } | 212 } |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 350 std::string CanonicalCookie::DebugString() const { | 353 std::string CanonicalCookie::DebugString() const { |
| 351 return base::StringPrintf( | 354 return base::StringPrintf( |
| 352 "name: %s value: %s domain: %s path: %s creation: %" | 355 "name: %s value: %s domain: %s path: %s creation: %" |
| 353 PRId64, | 356 PRId64, |
| 354 name_.c_str(), value_.c_str(), | 357 name_.c_str(), value_.c_str(), |
| 355 domain_.c_str(), path_.c_str(), | 358 domain_.c_str(), path_.c_str(), |
| 356 static_cast<int64>(creation_date_.ToTimeT())); | 359 static_cast<int64>(creation_date_.ToTimeT())); |
| 357 } | 360 } |
| 358 | 361 |
| 359 } // namespace net | 362 } // namespace net |
| OLD | NEW |