15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef NET_EXTRAS_SQLITE_SQLITE_CHANNEL_ID_STORE_H_ 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define NET_EXTRAS_SQLITE_SQLITE_CHANNEL_ID_STORE_H_ 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <list> 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <string> 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback_forward.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/macros.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "net/ssl/default_channel_id_store.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FilePath; 194e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)class SequencedTaskRunner; 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass GURL; 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace net { 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Implements the DefaultChannelIDStore::PersistentStore interface 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// in terms of a SQLite database. For documentation about the actual member 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// functions consult the documentation of the parent class 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// DefaultChannelIDStore::PersistentCertStore. 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass SQLiteChannelIDStore : public DefaultChannelIDStore::PersistentStore { 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Create or open persistent store in file |path|. All I/O tasks are performed 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // in background using |background_task_runner|. 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) SQLiteChannelIDStore( 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const base::FilePath& path, 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const scoped_refptr<base::SequencedTaskRunner>& background_task_runner); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // DefaultChannelIDStore::PersistentStore: 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void Load(const LoadedCallback& loaded_callback) OVERRIDE; 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void AddChannelID( 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const DefaultChannelIDStore::ChannelID& channel_id) OVERRIDE; 425f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) virtual void DeleteChannelID( 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const DefaultChannelIDStore::ChannelID& channel_id) OVERRIDE; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetForceKeepSessionState() OVERRIDE; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Delete channel ids from servers in |server_identifiers|. 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci void DeleteAllInList(const std::list<std::string>& server_identifiers); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~SQLiteChannelIDStore(); 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class Backend; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<Backend> backend_; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(SQLiteChannelIDStore); 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace net 601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // NET_EXTRAS_SQLITE_SQLITE_CHANNEL_ID_STORE_H_ 62