Index: chrome/browser/safe_browsing/protocol_manager.cc |
diff --git a/chrome/browser/safe_browsing/protocol_manager.cc b/chrome/browser/safe_browsing/protocol_manager.cc |
index 960b4fdb94ba5abcae00629c8f4fb969b7c5f08b..cd86df11fd7437db9724c1e0430e30f21c57d162 100644 |
--- a/chrome/browser/safe_browsing/protocol_manager.cc |
+++ b/chrome/browser/safe_browsing/protocol_manager.cc |
@@ -250,8 +250,11 @@ void SafeBrowsingProtocolManager::OnURLFetchComplete( |
switch (request_type_) { |
case CHUNK_REQUEST: |
- if (parsed_ok) |
+ if (parsed_ok) { |
chunk_request_urls_.pop_front(); |
+ if (chunk_request_urls_.empty() && !chunk_pending_to_write_) |
+ UpdateFinished(true); |
+ } |
break; |
case UPDATE_REQUEST: |
if (chunk_request_urls_.empty() && parsed_ok) { |
@@ -283,9 +286,10 @@ void SafeBrowsingProtocolManager::OnURLFetchComplete( |
// Schedule a new update request if we've finished retrieving all the chunks |
// from the previous update. We treat the update request and the chunk URLs it |
// contains as an atomic unit as far as back off is concerned. |
- if (chunk_request_urls_.empty() && |
- (request_type_ == CHUNK_REQUEST || request_type_ == UPDATE_REQUEST)) |
+ if (chunk_request_urls_.empty() && !chunk_pending_to_write_ && |
mattm
2012/11/16 21:48:46
so if we hit this case, does something else schedu
cbentzel
2012/11/16 21:52:35
This is handled in OnAddChunksComplete.
The test
|
+ (request_type_ == CHUNK_REQUEST || request_type_ == UPDATE_REQUEST)) { |
ScheduleNextUpdate(must_back_off); |
+ } |
// Get the next chunk if available. |
IssueChunkRequest(); |
@@ -372,7 +376,10 @@ bool SafeBrowsingProtocolManager::HandleServiceResponse(const GURL& url, |
// Chunks to add to storage. Pass ownership of |chunks|. |
if (!chunks->empty()) { |
chunk_pending_to_write_ = true; |
- delegate_->AddChunks(chunk_url.list_name, chunks.release()); |
+ delegate_->AddChunks( |
+ chunk_url.list_name, chunks.release(), |
+ base::Bind(&SafeBrowsingProtocolManager::OnAddChunksComplete, |
+ base::Unretained(this))); |
} |
break; |
@@ -545,7 +552,7 @@ void SafeBrowsingProtocolManager::UpdateResponseTimeout() { |
ScheduleNextUpdate(true); |
} |
-void SafeBrowsingProtocolManager::OnChunkInserted() { |
+void SafeBrowsingProtocolManager::OnAddChunksComplete() { |
DCHECK(CalledOnValidThread()); |
chunk_pending_to_write_ = false; |