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 19class Task; 20 21namespace base { 22class FilePath; 23class SequencedTaskRunner; 24} 25 26namespace net { 27class CanonicalCookie; 28} 29 30namespace storage { 31class SpecialStoragePolicy; 32} 33 34namespace content { 35class 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. 42class 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