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