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 3 // found in the LICENSE file. 4 5 // A sqlite implementation of a cookie monster persistent store. 6 7 #ifndef CONTENT_BROWSER_NET_SQLITE_PERSISTENT_COOKIE_STORE_H_ 8 #define CONTENT_BROWSER_NET_SQLITE_PERSISTENT_COOKIE_STORE_H_ 9 10 #include <string> 11 #include <vector> 12 13 #include "base/callback_forward.h" 14 #include "base/compiler_specific.h" 15 #include "base/memory/ref_counted.h" 16 #include "content/common/content_export.h" 17 #include "net/cookies/cookie_monster.h" 18 19 class Task; 20 21 namespace base { 22 class FilePath; 23 class SequencedTaskRunner; 24 } 25 26 namespace net { 27 class CanonicalCookie; 28 } 29 30 namespace storage { 31 class SpecialStoragePolicy; 32 } 33 34 namespace content { 35 class CookieCryptoDelegate; 36 37 // Implements the PersistentCookieStore interface in terms of a SQLite database. 38 // For documentation about the actual member functions consult the documentation 39 // of the parent class |net::CookieMonster::PersistentCookieStore|. 40 // If provided, a |SpecialStoragePolicy| is consulted when the SQLite database 41 // is closed to decide which cookies to keep. 42 class CONTENT_EXPORT SQLitePersistentCookieStore 43 : public net::CookieMonster::PersistentCookieStore { 44 public: 45 // All blocking database accesses will be performed on 46 // |background_task_runner|, while |client_task_runner| is used to invoke 47 // callbacks. 48 SQLitePersistentCookieStore( 49 const base::FilePath& path, 50 const scoped_refptr<base::SequencedTaskRunner>& client_task_runner, 51 const scoped_refptr<base::SequencedTaskRunner>& background_task_runner, 52 bool restore_old_session_cookies, 53 storage::SpecialStoragePolicy* special_storage_policy, 54 CookieCryptoDelegate* crypto_delegate); 55 56 // net::CookieMonster::PersistentCookieStore: 57 virtual void Load(const LoadedCallback& loaded_callback) OVERRIDE; 58 virtual void LoadCookiesForKey(const std::string& key, 59 const LoadedCallback& callback) OVERRIDE; 60 virtual void AddCookie(const net::CanonicalCookie& cc) OVERRIDE; 61 virtual void UpdateCookieAccessTime(const net::CanonicalCookie& cc) OVERRIDE; 62 virtual void DeleteCookie(const net::CanonicalCookie& cc) OVERRIDE; 63 virtual void SetForceKeepSessionState() OVERRIDE; 64 virtual void Flush(const base::Closure& callback) OVERRIDE; 65 66 protected: 67 virtual ~SQLitePersistentCookieStore(); 68 69 private: 70 class Backend; 71 72 scoped_refptr<Backend> backend_; 73 74 DISALLOW_COPY_AND_ASSIGN(SQLitePersistentCookieStore); 75 }; 76 77 } // namespace content 78 79 #endif // CONTENT_BROWSER_NET_SQLITE_PERSISTENT_COOKIE_STORE_H_ 80