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

Side by Side Diff: chrome/browser/safe_browsing/protocol_manager.cc

Issue 11419041: Add tests for redirect responses from SafeBrowsingProtocolManager. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reintroduce newline Created 8 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/safe_browsing/protocol_manager.h" 5 #include "chrome/browser/safe_browsing/protocol_manager.h"
6 6
7 #ifndef NDEBUG 7 #ifndef NDEBUG
8 #include "base/base64.h" 8 #include "base/base64.h"
9 #endif 9 #endif
10 #include "base/environment.h" 10 #include "base/environment.h"
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 if (!parsed_ok) { 243 if (!parsed_ok) {
244 VLOG(1) << "SafeBrowsing request for: " << source->GetURL() 244 VLOG(1) << "SafeBrowsing request for: " << source->GetURL()
245 << " failed parse."; 245 << " failed parse.";
246 must_back_off = true; 246 must_back_off = true;
247 chunk_request_urls_.clear(); 247 chunk_request_urls_.clear();
248 UpdateFinished(false); 248 UpdateFinished(false);
249 } 249 }
250 250
251 switch (request_type_) { 251 switch (request_type_) {
252 case CHUNK_REQUEST: 252 case CHUNK_REQUEST:
253 if (parsed_ok) 253 if (parsed_ok) {
254 chunk_request_urls_.pop_front(); 254 chunk_request_urls_.pop_front();
255 if (chunk_request_urls_.empty() && !chunk_pending_to_write_)
256 UpdateFinished(true);
257 }
255 break; 258 break;
256 case UPDATE_REQUEST: 259 case UPDATE_REQUEST:
257 if (chunk_request_urls_.empty() && parsed_ok) { 260 if (chunk_request_urls_.empty() && parsed_ok) {
258 // We are up to date since the servers gave us nothing new, so we 261 // We are up to date since the servers gave us nothing new, so we
259 // are done with this update cycle. 262 // are done with this update cycle.
260 UpdateFinished(true); 263 UpdateFinished(true);
261 } 264 }
262 break; 265 break;
263 default: 266 default:
264 NOTREACHED(); 267 NOTREACHED();
(...skipping 11 matching lines...) Expand all
276 } else { 279 } else {
277 VLOG(1) << "SafeBrowsing request for: " << source->GetURL() 280 VLOG(1) << "SafeBrowsing request for: " << source->GetURL()
278 << " failed with error: " << source->GetResponseCode(); 281 << " failed with error: " << source->GetResponseCode();
279 } 282 }
280 } 283 }
281 } 284 }
282 285
283 // Schedule a new update request if we've finished retrieving all the chunks 286 // Schedule a new update request if we've finished retrieving all the chunks
284 // from the previous update. We treat the update request and the chunk URLs it 287 // from the previous update. We treat the update request and the chunk URLs it
285 // contains as an atomic unit as far as back off is concerned. 288 // contains as an atomic unit as far as back off is concerned.
286 if (chunk_request_urls_.empty() && 289 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
287 (request_type_ == CHUNK_REQUEST || request_type_ == UPDATE_REQUEST)) 290 (request_type_ == CHUNK_REQUEST || request_type_ == UPDATE_REQUEST)) {
288 ScheduleNextUpdate(must_back_off); 291 ScheduleNextUpdate(must_back_off);
292 }
289 293
290 // Get the next chunk if available. 294 // Get the next chunk if available.
291 IssueChunkRequest(); 295 IssueChunkRequest();
292 } 296 }
293 297
294 bool SafeBrowsingProtocolManager::HandleServiceResponse(const GURL& url, 298 bool SafeBrowsingProtocolManager::HandleServiceResponse(const GURL& url,
295 const char* data, 299 const char* data,
296 int length) { 300 int length) {
297 DCHECK(CalledOnValidThread()); 301 DCHECK(CalledOnValidThread());
298 SafeBrowsingProtocolParser parser; 302 SafeBrowsingProtocolParser parser;
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 VLOG(1) << "ParseChunk error for chunk: " << chunk_url.url 369 VLOG(1) << "ParseChunk error for chunk: " << chunk_url.url
366 << ", Base64Encode(data): " << encoded_chunk 370 << ", Base64Encode(data): " << encoded_chunk
367 << ", length: " << length; 371 << ", length: " << length;
368 #endif 372 #endif
369 return false; 373 return false;
370 } 374 }
371 375
372 // Chunks to add to storage. Pass ownership of |chunks|. 376 // Chunks to add to storage. Pass ownership of |chunks|.
373 if (!chunks->empty()) { 377 if (!chunks->empty()) {
374 chunk_pending_to_write_ = true; 378 chunk_pending_to_write_ = true;
375 delegate_->AddChunks(chunk_url.list_name, chunks.release()); 379 delegate_->AddChunks(
380 chunk_url.list_name, chunks.release(),
381 base::Bind(&SafeBrowsingProtocolManager::OnAddChunksComplete,
382 base::Unretained(this)));
376 } 383 }
377 384
378 break; 385 break;
379 } 386 }
380 387
381 default: 388 default:
382 return false; 389 return false;
383 } 390 }
384 391
385 return true; 392 return true;
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 // If we haven't heard back from the server with an update response, this method 545 // If we haven't heard back from the server with an update response, this method
539 // will run. Close the current update session and schedule another update. 546 // will run. Close the current update session and schedule another update.
540 void SafeBrowsingProtocolManager::UpdateResponseTimeout() { 547 void SafeBrowsingProtocolManager::UpdateResponseTimeout() {
541 DCHECK(CalledOnValidThread()); 548 DCHECK(CalledOnValidThread());
542 DCHECK_EQ(request_type_, UPDATE_REQUEST); 549 DCHECK_EQ(request_type_, UPDATE_REQUEST);
543 request_.reset(); 550 request_.reset();
544 UpdateFinished(false); 551 UpdateFinished(false);
545 ScheduleNextUpdate(true); 552 ScheduleNextUpdate(true);
546 } 553 }
547 554
548 void SafeBrowsingProtocolManager::OnChunkInserted() { 555 void SafeBrowsingProtocolManager::OnAddChunksComplete() {
549 DCHECK(CalledOnValidThread()); 556 DCHECK(CalledOnValidThread());
550 chunk_pending_to_write_ = false; 557 chunk_pending_to_write_ = false;
551 558
552 if (chunk_request_urls_.empty()) { 559 if (chunk_request_urls_.empty()) {
553 UMA_HISTOGRAM_LONG_TIMES("SB2.Update", Time::Now() - last_update_); 560 UMA_HISTOGRAM_LONG_TIMES("SB2.Update", Time::Now() - last_update_);
554 UpdateFinished(true); 561 UpdateFinished(true);
555 } else { 562 } else {
556 IssueChunkRequest(); 563 IssueChunkRequest();
557 } 564 }
558 } 565 }
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 FullHashCallback callback, bool is_download) 643 FullHashCallback callback, bool is_download)
637 : callback(callback), 644 : callback(callback),
638 is_download(is_download) { 645 is_download(is_download) {
639 } 646 }
640 647
641 SafeBrowsingProtocolManager::FullHashDetails::~FullHashDetails() { 648 SafeBrowsingProtocolManager::FullHashDetails::~FullHashDetails() {
642 } 649 }
643 650
644 SafeBrowsingProtocolManagerDelegate::~SafeBrowsingProtocolManagerDelegate() { 651 SafeBrowsingProtocolManagerDelegate::~SafeBrowsingProtocolManagerDelegate() {
645 } 652 }
OLDNEW
« no previous file with comments | « chrome/browser/safe_browsing/protocol_manager.h ('k') | chrome/browser/safe_browsing/protocol_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698