OLD | NEW |
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 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/environment.h" | 9 #include "base/environment.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
245 // TODO(paulg): Clarify with the SafeBrowsing team whether a failed parse of a | 245 // TODO(paulg): Clarify with the SafeBrowsing team whether a failed parse of a |
246 // chunk should retry the download and parse of that chunk (and | 246 // chunk should retry the download and parse of that chunk (and |
247 // what back off / how many times to try), and if that effects the | 247 // what back off / how many times to try), and if that effects the |
248 // update back off. For now, a failed parse of the chunk means we | 248 // update back off. For now, a failed parse of the chunk means we |
249 // drop it. This isn't so bad because the next UPDATE_REQUEST we | 249 // drop it. This isn't so bad because the next UPDATE_REQUEST we |
250 // do will report all the chunks we have. If that chunk is still | 250 // do will report all the chunks we have. If that chunk is still |
251 // required, the SafeBrowsing servers will tell us to get it again. | 251 // required, the SafeBrowsing servers will tell us to get it again. |
252 void SafeBrowsingProtocolManager::OnURLFetchComplete( | 252 void SafeBrowsingProtocolManager::OnURLFetchComplete( |
253 const net::URLFetcher* source) { | 253 const net::URLFetcher* source) { |
254 DCHECK(CalledOnValidThread()); | 254 DCHECK(CalledOnValidThread()); |
255 scoped_ptr<const net::URLFetcher> fetcher; | 255 std::unique_ptr<const net::URLFetcher> fetcher; |
256 | 256 |
257 HashRequests::iterator it = hash_requests_.find(source); | 257 HashRequests::iterator it = hash_requests_.find(source); |
258 int response_code = source->GetResponseCode(); | 258 int response_code = source->GetResponseCode(); |
259 net::URLRequestStatus status = source->GetStatus(); | 259 net::URLRequestStatus status = source->GetStatus(); |
260 | 260 |
261 if (it != hash_requests_.end()) { | 261 if (it != hash_requests_.end()) { |
262 // GetHash response. | 262 // GetHash response. |
263 // Reset the scoped pointer so the fetcher gets destroyed properly. | 263 // Reset the scoped pointer so the fetcher gets destroyed properly. |
264 fetcher.reset(it->first); | 264 fetcher.reset(it->first); |
265 RecordHttpResponseOrErrorCode(kGetHashUmaResponseMetricName, status, | 265 RecordHttpResponseOrErrorCode(kGetHashUmaResponseMetricName, status, |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
409 bool SafeBrowsingProtocolManager::HandleServiceResponse(const GURL& url, | 409 bool SafeBrowsingProtocolManager::HandleServiceResponse(const GURL& url, |
410 const char* data, | 410 const char* data, |
411 size_t length) { | 411 size_t length) { |
412 DCHECK(CalledOnValidThread()); | 412 DCHECK(CalledOnValidThread()); |
413 | 413 |
414 switch (request_type_) { | 414 switch (request_type_) { |
415 case UPDATE_REQUEST: | 415 case UPDATE_REQUEST: |
416 case BACKUP_UPDATE_REQUEST: { | 416 case BACKUP_UPDATE_REQUEST: { |
417 size_t next_update_sec = 0; | 417 size_t next_update_sec = 0; |
418 bool reset = false; | 418 bool reset = false; |
419 scoped_ptr<std::vector<SBChunkDelete>> chunk_deletes( | 419 std::unique_ptr<std::vector<SBChunkDelete>> chunk_deletes( |
420 new std::vector<SBChunkDelete>); | 420 new std::vector<SBChunkDelete>); |
421 std::vector<ChunkUrl> chunk_urls; | 421 std::vector<ChunkUrl> chunk_urls; |
422 if (!ParseUpdate(data, length, &next_update_sec, &reset, | 422 if (!ParseUpdate(data, length, &next_update_sec, &reset, |
423 chunk_deletes.get(), &chunk_urls)) { | 423 chunk_deletes.get(), &chunk_urls)) { |
424 return false; | 424 return false; |
425 } | 425 } |
426 | 426 |
427 // New time for the next update. | 427 // New time for the next update. |
428 base::TimeDelta finch_next_update_interval = | 428 base::TimeDelta finch_next_update_interval = |
429 GetNextUpdateIntervalFromFinch(); | 429 GetNextUpdateIntervalFromFinch(); |
(...skipping 26 matching lines...) Expand all Loading... |
456 if (!chunk_deletes->empty()) | 456 if (!chunk_deletes->empty()) |
457 delegate_->DeleteChunks(std::move(chunk_deletes)); | 457 delegate_->DeleteChunks(std::move(chunk_deletes)); |
458 | 458 |
459 break; | 459 break; |
460 } | 460 } |
461 case CHUNK_REQUEST: { | 461 case CHUNK_REQUEST: { |
462 UMA_HISTOGRAM_TIMES("SB2.ChunkRequest", | 462 UMA_HISTOGRAM_TIMES("SB2.ChunkRequest", |
463 base::Time::Now() - chunk_request_start_); | 463 base::Time::Now() - chunk_request_start_); |
464 | 464 |
465 const ChunkUrl chunk_url = chunk_request_urls_.front(); | 465 const ChunkUrl chunk_url = chunk_request_urls_.front(); |
466 scoped_ptr<std::vector<scoped_ptr<SBChunkData>>> chunks( | 466 std::unique_ptr<std::vector<std::unique_ptr<SBChunkData>>> chunks( |
467 new std::vector<scoped_ptr<SBChunkData>>); | 467 new std::vector<std::unique_ptr<SBChunkData>>); |
468 UMA_HISTOGRAM_COUNTS("SB2.ChunkSize", length); | 468 UMA_HISTOGRAM_COUNTS("SB2.ChunkSize", length); |
469 update_size_ += length; | 469 update_size_ += length; |
470 if (!ParseChunk(data, length, chunks.get())) | 470 if (!ParseChunk(data, length, chunks.get())) |
471 return false; | 471 return false; |
472 | 472 |
473 // Chunks to add to storage. Pass ownership of |chunks|. | 473 // Chunks to add to storage. Pass ownership of |chunks|. |
474 if (!chunks->empty()) { | 474 if (!chunks->empty()) { |
475 chunk_pending_to_write_ = true; | 475 chunk_pending_to_write_ = true; |
476 delegate_->AddChunks( | 476 delegate_->AddChunks( |
477 chunk_url.list_name, std::move(chunks), | 477 chunk_url.list_name, std::move(chunks), |
(...skipping 11 matching lines...) Expand all Loading... |
489 return true; | 489 return true; |
490 } | 490 } |
491 | 491 |
492 void SafeBrowsingProtocolManager::Initialize() { | 492 void SafeBrowsingProtocolManager::Initialize() { |
493 DCHECK(CalledOnValidThread()); | 493 DCHECK(CalledOnValidThread()); |
494 // TODO(cbentzel): Remove ScopedTracker below once crbug.com/483689 is fixed. | 494 // TODO(cbentzel): Remove ScopedTracker below once crbug.com/483689 is fixed. |
495 tracked_objects::ScopedTracker tracking_profile( | 495 tracked_objects::ScopedTracker tracking_profile( |
496 FROM_HERE_WITH_EXPLICIT_FUNCTION( | 496 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
497 "483689 SafeBrowsingProtocolManager::Initialize")); | 497 "483689 SafeBrowsingProtocolManager::Initialize")); |
498 // Don't want to hit the safe browsing servers on build/chrome bots. | 498 // Don't want to hit the safe browsing servers on build/chrome bots. |
499 scoped_ptr<base::Environment> env(base::Environment::Create()); | 499 std::unique_ptr<base::Environment> env(base::Environment::Create()); |
500 if (env->HasVar(env_vars::kHeadless)) | 500 if (env->HasVar(env_vars::kHeadless)) |
501 return; | 501 return; |
502 ScheduleNextUpdate(false /* no back off */); | 502 ScheduleNextUpdate(false /* no back off */); |
503 } | 503 } |
504 | 504 |
505 void SafeBrowsingProtocolManager::ScheduleNextUpdate(bool back_off) { | 505 void SafeBrowsingProtocolManager::ScheduleNextUpdate(bool back_off) { |
506 DCHECK(CalledOnValidThread()); | 506 DCHECK(CalledOnValidThread()); |
507 if (disable_auto_update_) { | 507 if (disable_auto_update_) { |
508 // Unschedule any current timer. | 508 // Unschedule any current timer. |
509 update_timer_.Stop(); | 509 update_timer_.Stop(); |
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
801 : callback(callback), is_download(is_download) {} | 801 : callback(callback), is_download(is_download) {} |
802 | 802 |
803 SafeBrowsingProtocolManager::FullHashDetails::FullHashDetails( | 803 SafeBrowsingProtocolManager::FullHashDetails::FullHashDetails( |
804 const FullHashDetails& other) = default; | 804 const FullHashDetails& other) = default; |
805 | 805 |
806 SafeBrowsingProtocolManager::FullHashDetails::~FullHashDetails() {} | 806 SafeBrowsingProtocolManager::FullHashDetails::~FullHashDetails() {} |
807 | 807 |
808 SafeBrowsingProtocolManagerDelegate::~SafeBrowsingProtocolManagerDelegate() {} | 808 SafeBrowsingProtocolManagerDelegate::~SafeBrowsingProtocolManagerDelegate() {} |
809 | 809 |
810 } // namespace safe_browsing | 810 } // namespace safe_browsing |
OLD | NEW |