1 // Copyright (c) 2006-2009 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.
5 // Brought to you by number 42.
7 #ifndef NET_BASE_COOKIE_STORE_H_
8 #define NET_BASE_COOKIE_STORE_H_
12 #include "base/basictypes.h"
13 #include "base/ref_counted.h"
14 #include "base/time.h"
15 #include "net/base/cookie_options.h"
23 // An interface for storing and retrieving cookies. Implementations need to
24 // be thread safe as its methods can be accessed from IO as well as UI threads.
25 class CookieStore
: public base::RefCountedThreadSafe
<CookieStore
> {
27 // Sets a single cookie. Expects a cookie line, like "a=1; domain=b.com".
28 virtual bool SetCookieWithOptions(const GURL
& url
,
29 const std::string
& cookie_line
,
30 const CookieOptions
& options
) = 0;
32 // TODO what if the total size of all the cookies >4k, can we have a header
33 // that big or do we need multiple Cookie: headers?
34 // Simple interface, gets a cookie string "a=b; c=d" for the given URL.
35 // Use options to access httponly cookies.
36 virtual std::string
GetCookiesWithOptions(const GURL
& url
,
37 const CookieOptions
& options
) = 0;
39 // Deletes the passed in cookie for the specified URL.
40 virtual void DeleteCookie(const GURL
& url
,
41 const std::string
& cookie_name
) = 0;
43 // Returns the underlying CookieMonster.
44 virtual CookieMonster
* GetCookieMonster() = 0;
47 // --------------------------------------------------------------------------
48 // Helpers to make the above interface simpler for some cases.
50 // Sets a cookie for the given URL using default options.
51 bool SetCookie(const GURL
& url
, const std::string
& cookie_line
) {
52 return SetCookieWithOptions(url
, cookie_line
, CookieOptions());
55 // Gets cookies for the given URL using default options.
56 std::string
GetCookies(const GURL
& url
) {
57 return GetCookiesWithOptions(url
, CookieOptions());
60 // Sets a vector of response cookie values for the same URL.
61 void SetCookiesWithOptions(const GURL
& url
,
62 const std::vector
<std::string
>& cookie_lines
,
63 const CookieOptions
& options
) {
64 for (size_t i
= 0; i
< cookie_lines
.size(); ++i
)
65 SetCookieWithOptions(url
, cookie_lines
[i
], options
);
67 void SetCookies(const GURL
& url
,
68 const std::vector
<std::string
>& cookie_lines
) {
69 SetCookiesWithOptions(url
, cookie_lines
, CookieOptions());
73 friend class base::RefCountedThreadSafe
<CookieStore
>;
74 virtual ~CookieStore() {}
79 #endif // NET_BASE_COOKIE_STORE_H_