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 c4bf355f7e5e3f784483b96d636c87d093165daa..59e0537569f00e773dfeccd0d057c40435418b0a 100644 |
--- a/components/safe_browsing_db/v4_store.h |
+++ b/components/safe_browsing_db/v4_store.h |
@@ -128,6 +128,10 @@ enum ApplyUpdateResult { |
// The server sent a response_type that the client did not expect. |
UNEXPECTED_RESPONSE_TYPE_FAILURE = 6, |
+ // One of more index(es) in removals field of the response is greater than |
+ // the number of hash prefixes currently in the (old) store. |
+ REMOVALS_INDEX_TOO_LARGE = 7, |
+ |
// Memory space for histograms is determined by the max. ALWAYS |
// ADD NEW VALUES BEFORE THIS ONE. |
APPLY_UPDATE_RESULT_MAX |
@@ -197,6 +201,16 @@ class V4Store { |
FRIEND_TEST_ALL_PREFIXES(V4StoreTest, |
TestMergeUpdatesFailsForRepeatedHashPrefix); |
FRIEND_TEST_ALL_PREFIXES(V4StoreTest, |
+ TestMergeUpdatesFailsWhenRemovalsIndexTooLarge); |
+ FRIEND_TEST_ALL_PREFIXES(V4StoreTest, TestMergeUpdatesRemovesOnlyElement); |
+ FRIEND_TEST_ALL_PREFIXES(V4StoreTest, TestMergeUpdatesRemovesFirstElement); |
+ FRIEND_TEST_ALL_PREFIXES(V4StoreTest, TestMergeUpdatesRemovesMiddleElement); |
+ FRIEND_TEST_ALL_PREFIXES(V4StoreTest, TestMergeUpdatesRemovesLastElement); |
+ FRIEND_TEST_ALL_PREFIXES(V4StoreTest, |
+ TestMergeUpdatesRemovesWhenOldHasDifferentSizes); |
+ FRIEND_TEST_ALL_PREFIXES(V4StoreTest, |
+ TestMergeUpdatesRemovesMultipleAcrossDifferentSizes); |
+ FRIEND_TEST_ALL_PREFIXES(V4StoreTest, |
TestReadFullResponseWithValidHashPrefixMap); |
FRIEND_TEST_ALL_PREFIXES(V4StoreTest, |
TestReadFullResponseWithInvalidHashPrefixMap); |
@@ -240,7 +254,9 @@ class V4Store { |
// update (additions_map) to populate the prefix map for the current store. |
// TODO(vakh): Process removals also. |
ApplyUpdateResult MergeUpdate(const HashPrefixMap& old_hash_prefix_map, |
- const HashPrefixMap& additions_map); |
+ const HashPrefixMap& additions_map, |
+ const ::google::protobuf::RepeatedField< |
+ ::google::protobuf::int32>* raw_removals); |
// Reads the state of the store from the file on disk and returns the reason |
// for the failure or reports success. |
@@ -250,6 +266,8 @@ class V4Store { |
StoreWriteResult WriteToDisk( |
std::unique_ptr<ListUpdateResponse> response) const; |
+ const ::google::protobuf::RepeatedField<::google::protobuf::int32> |
Nathan Parker
2016/07/18 19:54:35
Could this be declared in an empty namespace in th
vakh (use Gerrit instead)
2016/07/18 19:58:30
Done.
|
+ empty_removals_; |
// The state of the store as returned by the PVer4 server in the last applied |
// update response. |
std::string state_; |