1 // Copyright 2014 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 CHROME_BROWSER_NET_QUOTA_POLICY_CHANNEL_ID_STORE_H_
6 #define CHROME_BROWSER_NET_QUOTA_POLICY_CHANNEL_ID_STORE_H_
11 #include "base/callback_forward.h"
12 #include "base/compiler_specific.h"
13 #include "base/macros.h"
14 #include "base/memory/ref_counted.h"
15 #include "base/memory/scoped_ptr.h"
16 #include "base/memory/scoped_vector.h"
17 #include "net/extras/sqlite/sqlite_channel_id_store.h"
18 #include "net/ssl/default_channel_id_store.h"
22 class SequencedTaskRunner
;
26 class SpecialStoragePolicy
;
29 // Persistent ChannelID Store that takes into account SpecialStoragePolicy and
30 // removes ChannelIDs that are StorageSessionOnly when store is closed.
31 class QuotaPolicyChannelIDStore
32 : public net::DefaultChannelIDStore::PersistentStore
{
34 // Create or open persistent store in file |path|. All I/O tasks are performed
35 // in background using |background_task_runner|. If provided, a
36 // |special_storage_policy| is consulted when the store is closed to decide
37 // which certificates to keep.
38 QuotaPolicyChannelIDStore(
39 const base::FilePath
& path
,
40 const scoped_refptr
<base::SequencedTaskRunner
>& background_task_runner
,
41 const scoped_refptr
<storage::SpecialStoragePolicy
>&
42 special_storage_policy
);
44 // net::DefaultChannelIDStore::PersistentStore:
45 void Load(const LoadedCallback
& loaded_callback
) override
;
47 const net::DefaultChannelIDStore::ChannelID
& channel_id
) override
;
49 const net::DefaultChannelIDStore::ChannelID
& channel_id
) override
;
50 void SetForceKeepSessionState() override
;
53 typedef ScopedVector
<net::DefaultChannelIDStore::ChannelID
> ChannelIDVector
;
55 ~QuotaPolicyChannelIDStore() override
;
57 void OnLoad(const LoadedCallback
& loaded_callback
,
58 scoped_ptr
<ChannelIDVector
> channel_ids
);
60 scoped_refptr
<storage::SpecialStoragePolicy
> special_storage_policy_
;
61 scoped_refptr
<net::SQLiteChannelIDStore
> persistent_store_
;
62 // Cache of server identifiers we have channel IDs stored for.
63 std::set
<std::string
> server_identifiers_
;
65 DISALLOW_COPY_AND_ASSIGN(QuotaPolicyChannelIDStore
);
68 #endif // CHROME_BROWSER_NET_QUOTA_POLICY_CHANNEL_ID_STORE_H_