• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Brought to you by number 42.
6 
7 #ifndef NET_BASE_COOKIE_STORE_H_
8 #define NET_BASE_COOKIE_STORE_H_
9 #pragma once
10 
11 #include <string>
12 #include <vector>
13 
14 #include "base/basictypes.h"
15 #include "base/memory/ref_counted.h"
16 #include "base/time.h"
17 #include "net/base/cookie_options.h"
18 #include "net/base/net_export.h"
19 
20 class GURL;
21 
22 namespace net {
23 
24 class CookieMonster;
25 
26 // An interface for storing and retrieving cookies. Implementations need to
27 // be thread safe as its methods can be accessed from IO as well as UI threads.
28 class NET_EXPORT CookieStore : public base::RefCountedThreadSafe<CookieStore> {
29  public:
30   // Sets a single cookie.  Expects a cookie line, like "a=1; domain=b.com".
31   virtual bool SetCookieWithOptions(const GURL& url,
32                                     const std::string& cookie_line,
33                                     const CookieOptions& options) = 0;
34 
35   // TODO what if the total size of all the cookies >4k, can we have a header
36   // that big or do we need multiple Cookie: headers?
37   // Simple interface, gets a cookie string "a=b; c=d" for the given URL.
38   // Use options to access httponly cookies.
39   virtual std::string GetCookiesWithOptions(const GURL& url,
40                                             const CookieOptions& options) = 0;
41 
42   // Deletes the passed in cookie for the specified URL.
43   virtual void DeleteCookie(const GURL& url,
44                             const std::string& cookie_name) = 0;
45 
46   // Returns the underlying CookieMonster.
47   virtual CookieMonster* GetCookieMonster() = 0;
48 
49 
50   // --------------------------------------------------------------------------
51   // Helpers to make the above interface simpler for some cases.
52 
53   // Sets a cookie for the given URL using default options.
54   bool SetCookie(const GURL& url, const std::string& cookie_line);
55 
56   // Gets cookies for the given URL using default options.
57   std::string GetCookies(const GURL& url);
58 
59   // Sets a vector of response cookie values for the same URL.
60   void SetCookiesWithOptions(const GURL& url,
61                              const std::vector<std::string>& cookie_lines,
62                              const CookieOptions& options);
63   void SetCookies(const GURL& url,
64                   const std::vector<std::string>& cookie_lines);
65 
66  protected:
67   friend class base::RefCountedThreadSafe<CookieStore>;
68   CookieStore();
69   virtual ~CookieStore();
70 };
71 
72 }  // namespace net
73 
74 #endif  // NET_BASE_COOKIE_STORE_H_
75