OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_STORE_H_ | 5 #ifndef CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_STORE_H_ |
6 #define CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_STORE_H_ | 6 #define CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_STORE_H_ |
7 | 7 |
8 #include <set> | 8 #include <set> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 SBSubPrefix() : chunk_id(), add_chunk_id(), add_prefix() {} | 67 SBSubPrefix() : chunk_id(), add_chunk_id(), add_prefix() {} |
68 | 68 |
69 int32 GetAddChunkId() const { return add_chunk_id; } | 69 int32 GetAddChunkId() const { return add_chunk_id; } |
70 SBPrefix GetAddPrefix() const { return add_prefix; } | 70 SBPrefix GetAddPrefix() const { return add_prefix; } |
71 }; | 71 }; |
72 | 72 |
73 typedef std::deque<SBSubPrefix> SBSubPrefixes; | 73 typedef std::deque<SBSubPrefix> SBSubPrefixes; |
74 | 74 |
75 struct SBAddFullHash { | 75 struct SBAddFullHash { |
76 int32 chunk_id; | 76 int32 chunk_id; |
77 int32 received; | 77 // Received field is not used anymore, but is kept for DB compatability. |
| 78 // TODO(mattm): Remove it next time the DB format is changed. |
| 79 int32 deprecated_received; |
78 SBFullHash full_hash; | 80 SBFullHash full_hash; |
79 | 81 |
80 SBAddFullHash(int32 id, base::Time r, const SBFullHash& h) | 82 SBAddFullHash(int32 id, const SBFullHash& h) |
81 : chunk_id(id), | 83 : chunk_id(id), deprecated_received(), full_hash(h) {} |
82 received(static_cast<int32>(r.ToTimeT())), | |
83 full_hash(h) { | |
84 } | |
85 | 84 |
86 // Provided for ReadAddHashes() implementations, which already have | 85 SBAddFullHash() : chunk_id(), deprecated_received(), full_hash() {} |
87 // an int32 for the time. | |
88 SBAddFullHash(int32 id, int32 r, const SBFullHash& h) | |
89 : chunk_id(id), received(r), full_hash(h) {} | |
90 | |
91 SBAddFullHash() : chunk_id(), received(), full_hash() {} | |
92 | 86 |
93 int32 GetAddChunkId() const { return chunk_id; } | 87 int32 GetAddChunkId() const { return chunk_id; } |
94 SBPrefix GetAddPrefix() const { return full_hash.prefix; } | 88 SBPrefix GetAddPrefix() const { return full_hash.prefix; } |
95 }; | 89 }; |
96 | 90 |
97 struct SBSubFullHash { | 91 struct SBSubFullHash { |
98 int32 chunk_id; | 92 int32 chunk_id; |
99 int32 add_chunk_id; | 93 int32 add_chunk_id; |
100 SBFullHash full_hash; | 94 SBFullHash full_hash; |
101 | 95 |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
177 | 171 |
178 // Start a chunk of data. None of the methods through FinishChunk() | 172 // Start a chunk of data. None of the methods through FinishChunk() |
179 // should be called unless this returns true. | 173 // should be called unless this returns true. |
180 // TODO(shess): Would it make sense for this to accept |chunk_id|? | 174 // TODO(shess): Would it make sense for this to accept |chunk_id|? |
181 // Possibly not, because of possible confusion between sub_chunk_id | 175 // Possibly not, because of possible confusion between sub_chunk_id |
182 // and add_chunk_id. | 176 // and add_chunk_id. |
183 virtual bool BeginChunk() = 0; | 177 virtual bool BeginChunk() = 0; |
184 | 178 |
185 virtual bool WriteAddPrefix(int32 chunk_id, SBPrefix prefix) = 0; | 179 virtual bool WriteAddPrefix(int32 chunk_id, SBPrefix prefix) = 0; |
186 virtual bool WriteAddHash(int32 chunk_id, | 180 virtual bool WriteAddHash(int32 chunk_id, |
187 base::Time receive_time, | |
188 const SBFullHash& full_hash) = 0; | 181 const SBFullHash& full_hash) = 0; |
189 virtual bool WriteSubPrefix(int32 chunk_id, | 182 virtual bool WriteSubPrefix(int32 chunk_id, |
190 int32 add_chunk_id, SBPrefix prefix) = 0; | 183 int32 add_chunk_id, SBPrefix prefix) = 0; |
191 virtual bool WriteSubHash(int32 chunk_id, int32 add_chunk_id, | 184 virtual bool WriteSubHash(int32 chunk_id, int32 add_chunk_id, |
192 const SBFullHash& full_hash) = 0; | 185 const SBFullHash& full_hash) = 0; |
193 | 186 |
194 // Collect the chunk data and preferrably store it on disk to | 187 // Collect the chunk data and preferrably store it on disk to |
195 // release memory. Shoul not modify the data in-place. | 188 // release memory. Shoul not modify the data in-place. |
196 virtual bool FinishChunk() = 0; | 189 virtual bool FinishChunk() = 0; |
197 | 190 |
(...skipping 15 matching lines...) Expand all Loading... |
213 // calls the corruption callback and return false. | 206 // calls the corruption callback and return false. |
214 // NOTE(shess): When storage was SQLite, there was no guarantee that | 207 // NOTE(shess): When storage was SQLite, there was no guarantee that |
215 // a structurally sound database actually contained valid data, | 208 // a structurally sound database actually contained valid data, |
216 // whereas SafeBrowsingStoreFile checksums the data. For now, this | 209 // whereas SafeBrowsingStoreFile checksums the data. For now, this |
217 // distinction doesn't matter. | 210 // distinction doesn't matter. |
218 virtual bool CheckValidity() = 0; | 211 virtual bool CheckValidity() = 0; |
219 | 212 |
220 // Pass the collected chunks through SBPRocessSubs() and commit to | 213 // Pass the collected chunks through SBPRocessSubs() and commit to |
221 // permanent storage. The resulting add prefixes and hashes will be | 214 // permanent storage. The resulting add prefixes and hashes will be |
222 // stored in |add_prefixes_result| and |add_full_hashes_result|. | 215 // stored in |add_prefixes_result| and |add_full_hashes_result|. |
223 // |pending_adds| is the set of full hashes which have been received | |
224 // since the previous update, and is provided as a convenience | |
225 // (could be written via WriteAddHash(), but that would flush the | |
226 // chunk to disk). | |
227 virtual bool FinishUpdate( | 216 virtual bool FinishUpdate( |
228 const std::vector<SBAddFullHash>& pending_adds, | |
229 safe_browsing::PrefixSetBuilder* builder, | 217 safe_browsing::PrefixSetBuilder* builder, |
230 std::vector<SBAddFullHash>* add_full_hashes_result) = 0; | 218 std::vector<SBAddFullHash>* add_full_hashes_result) = 0; |
231 | 219 |
232 // Cancel the update in process and remove any temporary disk | 220 // Cancel the update in process and remove any temporary disk |
233 // storage, leaving the original data unmodified. | 221 // storage, leaving the original data unmodified. |
234 virtual bool CancelUpdate() = 0; | 222 virtual bool CancelUpdate() = 0; |
235 | 223 |
236 private: | 224 private: |
237 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingStore); | 225 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingStore); |
238 }; | 226 }; |
239 | 227 |
240 #endif // CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_STORE_H_ | 228 #endif // CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_STORE_H_ |
OLD | NEW |