Chromium Code Reviews| Index: components/safe_browsing_db/v4_store.h |
| diff --git a/components/safe_browsing_db/v4_store.h b/components/safe_browsing_db/v4_store.h |
| index f0172808c8f92d8b0df83b25a174801190c2ac8a..5f9a45d98e7c6a799ef74d7506ba7f5cab9ea796 100644 |
| --- a/components/safe_browsing_db/v4_store.h |
| +++ b/components/safe_browsing_db/v4_store.h |
| @@ -180,8 +180,14 @@ class V4Store { |
| // of the hash prefixes. |
| void Initialize(); |
| - // Reset internal state and delete the backing file. |
| - virtual bool Reset(); |
| + // Reset internal state. |
| + void Reset(); |
| + |
| + // Scheduled after reading the store file from disk on startup. When run, it |
| + // ensures that the checksum of the hash prefixes in lexicographical sorted |
| + // order matches the expected value in |expected_checksum_|. Returns ture if |
|
Nathan Parker
2016/10/07 23:24:29
nit: s/ture/true
I'd comment on why it's run afte
vakh (use Gerrit instead)
2016/10/10 17:42:34
Done.
|
| + // it matches; false otherwise. |
| + bool VerifyChecksum(); |
| private: |
| FRIEND_TEST_ALL_PREFIXES(V4StoreTest, TestReadFromEmptyFile); |
| @@ -246,6 +252,7 @@ class V4Store { |
| FRIEND_TEST_ALL_PREFIXES(V4StoreTest, TestAdditionsWithRiceEncodingSucceeds); |
| FRIEND_TEST_ALL_PREFIXES(V4StoreTest, TestRemovalsWithRiceEncodingSucceeds); |
| FRIEND_TEST_ALL_PREFIXES(V4StoreTest, TestMergeUpdatesFailsChecksum); |
| + FRIEND_TEST_ALL_PREFIXES(V4StoreTest, TestChecksumErrorOnStartup); |
| friend class V4StoreTest; |
| // If |prefix_size| is within expected range, and |raw_hashes_length| is a |
| @@ -293,8 +300,9 @@ class V4Store { |
| // Merges the prefix map from the old store (|old_hash_prefix_map|) and the |
| // update (additions_map) to populate the prefix map for the current store. |
| // The indices in the |raw_removals| list, which may be NULL, are not merged. |
| - // The SHA256 checksum of the final list of hash prefixes, in lexographically |
| - // sorted order, must match |expected_checksum| (if it's not empty). |
| + // The SHA256 checksum of the final list of hash prefixes, in |
| + // lexicographically sorted order, must match |expected_checksum| (if it's not |
| + // empty). |
| ApplyUpdateResult MergeUpdate(const HashPrefixMap& old_hash_prefix_map, |
| const HashPrefixMap& additions_map, |
| const ::google::protobuf::RepeatedField< |
| @@ -345,6 +353,10 @@ class V4Store { |
| StoreWriteResult WriteToDisk( |
| std::unique_ptr<ListUpdateResponse> response) const; |
| + // The checksum value as read from the disk, until it is verified. Once |
| + // verified, it is cleared. |
| + std::string expected_checksum_; |
| + |
| // The state of the store as returned by the PVer4 server in the last applied |
| // update response. |
| std::string state_; |