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

Side by Side Diff: net/cookies/canonical_cookie.h

Issue 2874843002: Shifted creation of unvalidated CanonicalCookies over to a constructor. (Closed)
Patch Set: Merged to top of dependent CL. Created 3 years, 7 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
« no previous file with comments | « ios/net/cookies/system_cookie_util_unittest.mm ('k') | net/cookies/canonical_cookie.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #ifndef NET_COOKIES_CANONICAL_COOKIE_H_ 5 #ifndef NET_COOKIES_CANONICAL_COOKIE_H_
6 #define NET_COOKIES_CANONICAL_COOKIE_H_ 6 #define NET_COOKIES_CANONICAL_COOKIE_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/gtest_prod_util.h" 12 #include "base/gtest_prod_util.h"
13 #include "base/time/time.h" 13 #include "base/time/time.h"
14 #include "net/base/net_export.h" 14 #include "net/base/net_export.h"
15 #include "net/cookies/cookie_constants.h" 15 #include "net/cookies/cookie_constants.h"
16 #include "net/cookies/cookie_options.h" 16 #include "net/cookies/cookie_options.h"
17 17
18 class GURL; 18 class GURL;
19 19
20 namespace net { 20 namespace net {
21 21
22 class ParsedCookie; 22 class ParsedCookie;
23 23
24 class NET_EXPORT CanonicalCookie { 24 class NET_EXPORT CanonicalCookie {
25 public: 25 public:
26 CanonicalCookie(); 26 CanonicalCookie();
27 CanonicalCookie(const CanonicalCookie& other); 27 CanonicalCookie(const CanonicalCookie& other);
28 28
29 // This constructor does not validate or canonicalize their inputs;
30 // the resulting CanonicalCookies should not be relied on to be canonical
31 // unless the caller has done appropriate validation and canonicalization
32 // themselves.
33 CanonicalCookie(const std::string& name,
34 const std::string& value,
35 const std::string& domain,
36 const std::string& path,
37 const base::Time& creation,
38 const base::Time& expiration,
39 const base::Time& last_access,
40 bool secure,
41 bool httponly,
42 CookieSameSite same_site,
43 CookiePriority priority);
44
29 ~CanonicalCookie(); 45 ~CanonicalCookie();
30 46
31 // Supports the default copy constructor. 47 // Supports the default copy constructor.
32 48
33 // Creates a new |CanonicalCookie| from the |cookie_line| and the 49 // Creates a new |CanonicalCookie| from the |cookie_line| and the
34 // |creation_time|. Canonicalizes and validates inputs. May return NULL if 50 // |creation_time|. Canonicalizes and validates inputs. May return NULL if
35 // an attribute value is invalid. 51 // an attribute value is invalid.
36 static std::unique_ptr<CanonicalCookie> Create( 52 static std::unique_ptr<CanonicalCookie> Create(
37 const GURL& url, 53 const GURL& url,
38 const std::string& cookie_line, 54 const std::string& cookie_line,
39 const base::Time& creation_time, 55 const base::Time& creation_time,
40 const CookieOptions& options); 56 const CookieOptions& options);
41 57
42 // Creates a canonical cookie from unparsed attribute values.
43 // It does not do any canonicalization.
44 // |name| and |path| must not be empty.
45 static std::unique_ptr<CanonicalCookie> Create(const std::string& name,
46 const std::string& value,
47 const std::string& domain,
48 const std::string& path,
49 const base::Time& creation,
50 const base::Time& expiration,
51 const base::Time& last_access,
52 bool secure,
53 bool http_only,
54 CookieSameSite same_site,
55 CookiePriority priority);
56
57 const std::string& Name() const { return name_; } 58 const std::string& Name() const { return name_; }
58 const std::string& Value() const { return value_; } 59 const std::string& Value() const { return value_; }
59 const std::string& Domain() const { return domain_; } 60 const std::string& Domain() const { return domain_; }
60 const std::string& Path() const { return path_; } 61 const std::string& Path() const { return path_; }
61 const base::Time& CreationDate() const { return creation_date_; } 62 const base::Time& CreationDate() const { return creation_date_; }
62 const base::Time& LastAccessDate() const { return last_access_date_; } 63 const base::Time& LastAccessDate() const { return last_access_date_; }
63 bool IsPersistent() const { return !expiry_date_.is_null(); } 64 bool IsPersistent() const { return !expiry_date_.is_null(); }
64 const base::Time& ExpiryDate() const { return expiry_date_; } 65 const base::Time& ExpiryDate() const { return expiry_date_; }
65 bool IsSecure() const { return secure_; } 66 bool IsSecure() const { return secure_; }
66 bool IsHttpOnly() const { return httponly_; } 67 bool IsHttpOnly() const { return httponly_; }
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
150 // https://tools.ietf.org/html/draft-west-cookie-prefixes 151 // https://tools.ietf.org/html/draft-west-cookie-prefixes
151 // 152 //
152 // This enum is being histogrammed; do not reorder or remove values. 153 // This enum is being histogrammed; do not reorder or remove values.
153 enum CookiePrefix { 154 enum CookiePrefix {
154 COOKIE_PREFIX_NONE = 0, 155 COOKIE_PREFIX_NONE = 0,
155 COOKIE_PREFIX_SECURE, 156 COOKIE_PREFIX_SECURE,
156 COOKIE_PREFIX_HOST, 157 COOKIE_PREFIX_HOST,
157 COOKIE_PREFIX_LAST 158 COOKIE_PREFIX_LAST
158 }; 159 };
159 160
160 // This constructor does not validate or canonicalize their inputs;
161 // the resulting CanonicalCookies should not be relied on to be canonical
162 // unless the caller has done appropriate validation and canonicalization
163 // themselves.
164 CanonicalCookie(const std::string& name,
165 const std::string& value,
166 const std::string& domain,
167 const std::string& path,
168 const base::Time& creation,
169 const base::Time& expiration,
170 const base::Time& last_access,
171 bool secure,
172 bool httponly,
173 CookieSameSite same_site,
174 CookiePriority priority);
175
176 // Returns the CookiePrefix (or COOKIE_PREFIX_NONE if none) that 161 // Returns the CookiePrefix (or COOKIE_PREFIX_NONE if none) that
177 // applies to the given cookie |name|. 162 // applies to the given cookie |name|.
178 static CookiePrefix GetCookiePrefix(const std::string& name); 163 static CookiePrefix GetCookiePrefix(const std::string& name);
179 // Records histograms to measure how often cookie prefixes appear in 164 // Records histograms to measure how often cookie prefixes appear in
180 // the wild and how often they would be blocked. 165 // the wild and how often they would be blocked.
181 static void RecordCookiePrefixMetrics(CookiePrefix prefix, 166 static void RecordCookiePrefixMetrics(CookiePrefix prefix,
182 bool is_cookie_valid); 167 bool is_cookie_valid);
183 // Returns true if a prefixed cookie does not violate any of the rules 168 // Returns true if a prefixed cookie does not violate any of the rules
184 // for that cookie. 169 // for that cookie.
185 static bool IsCookiePrefixValid(CookiePrefix prefix, 170 static bool IsCookiePrefixValid(CookiePrefix prefix,
(...skipping 14 matching lines...) Expand all
200 bool httponly_; 185 bool httponly_;
201 CookieSameSite same_site_; 186 CookieSameSite same_site_;
202 CookiePriority priority_; 187 CookiePriority priority_;
203 }; 188 };
204 189
205 typedef std::vector<CanonicalCookie> CookieList; 190 typedef std::vector<CanonicalCookie> CookieList;
206 191
207 } // namespace net 192 } // namespace net
208 193
209 #endif // NET_COOKIES_CANONICAL_COOKIE_H_ 194 #endif // NET_COOKIES_CANONICAL_COOKIE_H_
OLDNEW
« no previous file with comments | « ios/net/cookies/system_cookie_util_unittest.mm ('k') | net/cookies/canonical_cookie.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698