Re-subimission of https://codereview.chromium.org/1041213003/
[chromium-blink-merge.git] / content / public / browser / cookie_store_factory.h
blob5b2bb7ac789baf2084860d77147b6997a3d5dfbb
1 // Copyright (c) 2013 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 #ifndef CONTENT_PUBLIC_BROWSER_COOKIE_STORE_FACTORY_H_
6 #define CONTENT_PUBLIC_BROWSER_COOKIE_STORE_FACTORY_H_
8 #include "base/files/file_path.h"
9 #include "base/memory/ref_counted.h"
10 #include "content/common/content_export.h"
12 namespace base {
13 class SequencedTaskRunner;
16 namespace net {
17 class CookieCryptoDelegate;
18 class CookieMonsterDelegate;
19 class CookieStore;
22 namespace storage {
23 class SpecialStoragePolicy;
26 namespace content {
28 struct CONTENT_EXPORT CookieStoreConfig {
29 // Specifies how session cookies are persisted in the backing data store.
31 // EPHEMERAL_SESSION_COOKIES specifies session cookies will not be written
32 // out in a manner that allows for restoration.
34 // PERSISTANT_SESSION_COOKIES specifies that session cookies are not restored
35 // when the cookie store is opened, however they will be written in a manner
36 // that allows for them to be restored if the cookie store is opened again
37 // using RESTORED_SESSION_COOKIES.
39 // RESTORED_SESSION_COOKIES is the: same as PERSISTANT_SESSION_COOKIES
40 // except when the cookie store is opened, the previously written session
41 // cookies are loaded first.
42 enum SessionCookieMode {
43 EPHEMERAL_SESSION_COOKIES,
44 PERSISTANT_SESSION_COOKIES,
45 RESTORED_SESSION_COOKIES
48 // Convenience constructor for an in-memory cookie store with no delegate.
49 CookieStoreConfig();
51 // If |path| is empty, then this specifies an in-memory cookie store.
52 // With in-memory cookie stores, |session_cookie_mode| must be
53 // EPHEMERAL_SESSION_COOKIES.
55 // Note: If |crypto_delegate| is non-nullptr, it must outlive any CookieStores
56 // created using this config.
57 CookieStoreConfig(const base::FilePath& path,
58 SessionCookieMode session_cookie_mode,
59 storage::SpecialStoragePolicy* storage_policy,
60 net::CookieMonsterDelegate* cookie_delegate);
61 ~CookieStoreConfig();
63 const base::FilePath path;
64 const SessionCookieMode session_cookie_mode;
65 const scoped_refptr<storage::SpecialStoragePolicy> storage_policy;
66 const scoped_refptr<net::CookieMonsterDelegate> cookie_delegate;
68 // The following are infrequently used cookie store parameters.
69 // Rather than clutter the constructor API, these are assigned a default
70 // value on CookieStoreConfig construction. Clients should then override
71 // them as necessary.
73 // Used to provide encryption hooks for the cookie store. The
74 // CookieCryptoDelegate must outlive any cookie store created with this
75 // config.
76 net::CookieCryptoDelegate* crypto_delegate;
78 // Callbacks for data load events will be performed on |client_task_runner|.
79 // If nullptr, uses the task runner for BrowserThread::IO.
81 // Only used for persistent cookie stores.
82 scoped_refptr<base::SequencedTaskRunner> client_task_runner;
84 // All blocking database accesses will be performed on
85 // |background_task_runner|. If nullptr, uses a SequencedTaskRunner from the
86 // BrowserThread blocking pool.
88 // Only used for persistent cookie stores.
89 scoped_refptr<base::SequencedTaskRunner> background_task_runner;
92 CONTENT_EXPORT net::CookieStore* CreateCookieStore(
93 const CookieStoreConfig& config);
95 } // namespace content
97 #endif // CONTENT_PUBLIC_BROWSER_COOKIE_STORE_FACTORY_H_