| Index: components/safe_browsing_db/v4_update_protocol_manager.cc
|
| diff --git a/components/safe_browsing_db/v4_update_protocol_manager.cc b/components/safe_browsing_db/v4_update_protocol_manager.cc
|
| index f0fad8d07acf607a566378cdc9baf9f0eaf42e7c..23617f319f3286c8334a0a2f4afe3accb52a4515 100644
|
| --- a/components/safe_browsing_db/v4_update_protocol_manager.cc
|
| +++ b/components/safe_browsing_db/v4_update_protocol_manager.cc
|
| @@ -77,11 +77,9 @@ class V4UpdateProtocolManagerFactoryImpl
|
| 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) override {
|
| - return std::unique_ptr<V4UpdateProtocolManager>(new V4UpdateProtocolManager(
|
| - request_context_getter, config, current_list_states, callback));
|
| + return std::unique_ptr<V4UpdateProtocolManager>(
|
| + new V4UpdateProtocolManager(request_context_getter, config, callback));
|
| }
|
|
|
| private:
|
| @@ -97,14 +95,12 @@ V4UpdateProtocolManagerFactory* V4UpdateProtocolManager::factory_ = NULL;
|
| std::unique_ptr<V4UpdateProtocolManager> V4UpdateProtocolManager::Create(
|
| net::URLRequestContextGetter* request_context_getter,
|
| const V4ProtocolConfig& config,
|
| - const base::hash_map<UpdateListIdentifier, std::string>&
|
| - current_list_states,
|
| V4UpdateCallback callback) {
|
| if (!factory_) {
|
| factory_ = new V4UpdateProtocolManagerFactoryImpl();
|
| }
|
| return factory_->CreateProtocolManager(request_context_getter, config,
|
| - current_list_states, callback);
|
| + callback);
|
| }
|
|
|
| void V4UpdateProtocolManager::ResetUpdateErrors() {
|
| @@ -115,11 +111,8 @@ void V4UpdateProtocolManager::ResetUpdateErrors() {
|
| V4UpdateProtocolManager::V4UpdateProtocolManager(
|
| net::URLRequestContextGetter* request_context_getter,
|
| const V4ProtocolConfig& config,
|
| - const base::hash_map<UpdateListIdentifier, std::string>&
|
| - current_list_states,
|
| V4UpdateCallback update_callback)
|
| - : current_list_states_(current_list_states),
|
| - update_error_count_(0),
|
| + : update_error_count_(0),
|
| update_back_off_mult_(1),
|
| next_update_interval_(base::TimeDelta::FromSeconds(
|
| base::RandInt(kV4TimerStartIntervalSecMin,
|
| @@ -130,8 +123,6 @@ V4UpdateProtocolManager::V4UpdateProtocolManager(
|
| update_callback_(update_callback) {
|
| // Do not auto-schedule updates. Let the owner (V4LocalDatabaseManager) do it
|
| // when it is ready to process updates.
|
| - DVLOG(1) << "V4UpdateProtocolManager::V4UpdateProtocolManager: "
|
| - << "next_update_interval_: " << next_update_interval_;
|
| }
|
|
|
| V4UpdateProtocolManager::~V4UpdateProtocolManager() {}
|
| @@ -140,7 +131,9 @@ bool V4UpdateProtocolManager::IsUpdateScheduled() const {
|
| return update_timer_.IsRunning();
|
| }
|
|
|
| -void V4UpdateProtocolManager::ScheduleNextUpdate() {
|
| +void V4UpdateProtocolManager::ScheduleNextUpdate(
|
| + std::unique_ptr<StoreStateMap> store_state_map) {
|
| + store_state_map_ = std::move(store_state_map);
|
| ScheduleNextUpdateWithBackoff(false);
|
| }
|
|
|
| @@ -198,13 +191,14 @@ void V4UpdateProtocolManager::ScheduleNextUpdateAfterInterval(
|
| &V4UpdateProtocolManager::IssueUpdateRequest);
|
| }
|
|
|
| +// static
|
| std::string V4UpdateProtocolManager::GetBase64SerializedUpdateRequestProto(
|
| - const base::hash_map<UpdateListIdentifier, std::string>&
|
| - current_list_states) {
|
| + const StoreStateMap& store_state_map) {
|
| + DCHECK(!store_state_map.empty());
|
| // Build the request. Client info and client states are not added to the
|
| // request protocol buffer. Client info is passed as params in the url.
|
| FetchThreatListUpdatesRequest request;
|
| - for (const auto& entry : current_list_states) {
|
| + for (const auto& entry : store_state_map) {
|
| const auto& list_to_update = entry.first;
|
| const auto& state = entry.second;
|
| ListUpdateRequest* list_update_request = request.add_list_update_requests();
|
| @@ -277,7 +271,7 @@ void V4UpdateProtocolManager::IssueUpdateRequest() {
|
| }
|
|
|
| std::string req_base64 =
|
| - GetBase64SerializedUpdateRequestProto(current_list_states_);
|
| + GetBase64SerializedUpdateRequestProto(*store_state_map_.get());
|
| GURL update_url;
|
| net::HttpRequestHeaders headers;
|
| GetUpdateUrlAndHeaders(req_base64, &update_url, &headers);
|
| @@ -320,6 +314,9 @@ void V4UpdateProtocolManager::OnURLFetchComplete(
|
| }
|
| request_.reset();
|
|
|
| + UMA_HISTOGRAM_COUNTS("SafeBrowsing.V4UpdateResponseSizeKB",
|
| + data.size() / 1024);
|
| +
|
| // Invoke the callback with list_update_responses.
|
| // The caller should update its state now, based on list_update_responses.
|
| // The callback must call ScheduleNextUpdate() at the end to resume
|
|
|