Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(237)

Unified Diff: components/safe_browsing_db/v4_update_protocol_manager.h

Issue 2062013002: Fetch incremental updates. Store new state in V4Store. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit: Use base::SStringPrintf instead of string concat Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/safe_browsing_db/v4_update_protocol_manager.h
diff --git a/components/safe_browsing_db/v4_update_protocol_manager.h b/components/safe_browsing_db/v4_update_protocol_manager.h
index 4b2031779d1e3f2b3cd1f72158d5ef8adda66f2e..266d13635716b62516bcb513238357db13e4ddea 100644
--- a/components/safe_browsing_db/v4_update_protocol_manager.h
+++ b/components/safe_browsing_db/v4_update_protocol_manager.h
@@ -37,9 +37,6 @@ namespace safe_browsing {
class V4UpdateProtocolManagerFactory;
-typedef FetchThreatListUpdatesRequest::ListUpdateRequest ListUpdateRequest;
-typedef FetchThreatListUpdatesResponse::ListUpdateResponse ListUpdateResponse;
-
// V4UpdateCallback is invoked when a scheduled update completes.
// Parameters:
// - The vector of update response protobufs received from the server for
@@ -62,27 +59,23 @@ class V4UpdateProtocolManager : public net::URLFetcherDelegate,
static std::unique_ptr<V4UpdateProtocolManager> Create(
net::URLRequestContextGetter* request_context_getter,
const V4ProtocolConfig& config,
- const base::hash_map<UpdateListIdentifier, std::string>&
- current_list_states,
V4UpdateCallback callback);
// net::URLFetcherDelegate interface.
void OnURLFetchComplete(const net::URLFetcher* source) override;
- // Schedule the next update without backoff.
- void ScheduleNextUpdate();
+ // Schedule the next update without backoff for the stores in
+ // |store_state_map|.
+ void ScheduleNextUpdate(const StoreStateMap* store_state_map);
protected:
// Constructs a V4UpdateProtocolManager that issues network requests using
- // |request_context_getter|.
- // Schedules an update to get the hash prefixes for the lists in
- // |current_list_states|, and invoke |callback| when the results
- // are retrieved. The callback may be invoked synchronously.
+ // |request_context_getter|. It schedules updates to get the hash prefixes for
+ // SafeBrowsing lists, and invoke |callback| when the results are retrieved.
+ // The callback may be invoked synchronously.
V4UpdateProtocolManager(
net::URLRequestContextGetter* request_context_getter,
const V4ProtocolConfig& config,
- const base::hash_map<UpdateListIdentifier, std::string>&
- current_list_states,
V4UpdateCallback callback);
private:
@@ -105,9 +98,8 @@ class V4UpdateProtocolManager : public net::URLFetcherDelegate,
// Fills a FetchThreatListUpdatesRequest protocol buffer for a request.
// Returns the serialized and base 64 encoded request as a string.
- std::string GetBase64SerializedUpdateRequestProto(
- const base::hash_map<UpdateListIdentifier, std::string>&
- current_list_states);
+ static std::string GetBase64SerializedUpdateRequestProto(
+ const StoreStateMap* store_state_map);
// Parses the base64 encoded response received from the server as a
// FetchThreatListUpdatesResponse protobuf and returns each of the
@@ -137,6 +129,10 @@ class V4UpdateProtocolManager : public net::URLFetcherDelegate,
// Schedule the next update, after the given interval.
void ScheduleNextUpdateAfterInterval(base::TimeDelta interval);
+ void set_store_state_map(const StoreStateMap* store_state_map) {
+ store_state_map_ = store_state_map;
+ }
+
// Get the next update interval, considering whether we are in backoff.
base::TimeDelta GetNextUpdateInterval(bool back_off);
@@ -145,10 +141,8 @@ class V4UpdateProtocolManager : public net::URLFetcherDelegate,
static V4UpdateProtocolManagerFactory* factory_;
// The last known state of the lists.
- // At init, this is read from the disk or is empty for no prior state.
- // Each successful update from the server contains a new state for each
- // requested list.
- base::hash_map<UpdateListIdentifier, std::string> current_list_states_;
+ // Updated after every successful update of the database.
+ const StoreStateMap* store_state_map_;
Nathan Parker 2016/06/15 21:24:21 Q: Does this need to be stored here, or can it jus
vakh (use Gerrit instead) 2016/06/16 01:07:35 As discussed offline, the reason it is stored here
// The number of HTTP response errors since the the last successful HTTP
// response, used for request backoff timing.
@@ -194,8 +188,6 @@ class V4UpdateProtocolManagerFactory {
virtual std::unique_ptr<V4UpdateProtocolManager> CreateProtocolManager(
net::URLRequestContextGetter* request_context_getter,
const V4ProtocolConfig& config,
- const base::hash_map<UpdateListIdentifier, std::string>&
- current_list_states,
V4UpdateCallback callback) = 0;
private:

Powered by Google App Engine
This is Rietveld 408576698