OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 "base/file_version_info.h" | 7 #include "base/file_version_info.h" |
8 #include "base/histogram.h" | 8 #include "base/histogram.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/message_loop.h" | |
11 #include "base/rand_util.h" | 10 #include "base/rand_util.h" |
12 #include "base/stl_util-inl.h" | 11 #include "base/stl_util-inl.h" |
13 #include "base/string_util.h" | 12 #include "base/string_util.h" |
14 #include "base/sys_info.h" | 13 #include "base/sys_info.h" |
15 #include "base/task.h" | 14 #include "base/task.h" |
16 #include "base/timer.h" | 15 #include "base/timer.h" |
| 16 #include "chrome/browser/chrome_thread.h" |
17 #include "chrome/browser/profile.h" | 17 #include "chrome/browser/profile.h" |
18 #include "chrome/browser/safe_browsing/protocol_parser.h" | 18 #include "chrome/browser/safe_browsing/protocol_parser.h" |
19 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 19 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
20 #include "chrome/common/env_vars.h" | 20 #include "chrome/common/env_vars.h" |
21 #include "net/base/base64.h" | 21 #include "net/base/base64.h" |
22 #include "net/base/escape.h" | 22 #include "net/base/escape.h" |
23 #include "net/base/load_flags.h" | 23 #include "net/base/load_flags.h" |
24 | 24 |
25 using base::Time; | 25 using base::Time; |
26 using base::TimeDelta; | 26 using base::TimeDelta; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
60 #endif | 60 #endif |
61 | 61 |
62 // Maximum back off multiplier. | 62 // Maximum back off multiplier. |
63 static const int kSbMaxBackOff = 8; | 63 static const int kSbMaxBackOff = 8; |
64 | 64 |
65 | 65 |
66 // SafeBrowsingProtocolManager implementation ---------------------------------- | 66 // SafeBrowsingProtocolManager implementation ---------------------------------- |
67 | 67 |
68 SafeBrowsingProtocolManager::SafeBrowsingProtocolManager( | 68 SafeBrowsingProtocolManager::SafeBrowsingProtocolManager( |
69 SafeBrowsingService* sb_service, | 69 SafeBrowsingService* sb_service, |
70 MessageLoop* notify_loop, | |
71 const std::string& client_key, | 70 const std::string& client_key, |
72 const std::string& wrapped_key) | 71 const std::string& wrapped_key) |
73 : sb_service_(sb_service), | 72 : sb_service_(sb_service), |
74 request_type_(NO_REQUEST), | 73 request_type_(NO_REQUEST), |
75 update_error_count_(0), | 74 update_error_count_(0), |
76 gethash_error_count_(0), | 75 gethash_error_count_(0), |
77 update_back_off_mult_(1), | 76 update_back_off_mult_(1), |
78 gethash_back_off_mult_(1), | 77 gethash_back_off_mult_(1), |
79 next_update_sec_(-1), | 78 next_update_sec_(-1), |
80 update_state_(FIRST_REQUEST), | 79 update_state_(FIRST_REQUEST), |
81 initial_request_(true), | 80 initial_request_(true), |
82 chunk_pending_to_write_(false), | 81 chunk_pending_to_write_(false), |
83 notify_loop_(notify_loop), | |
84 client_key_(client_key), | 82 client_key_(client_key), |
85 wrapped_key_(wrapped_key), | 83 wrapped_key_(wrapped_key), |
86 update_size_(0) { | 84 update_size_(0) { |
87 // Set the backoff multiplier fuzz to a random value between 0 and 1. | 85 // Set the backoff multiplier fuzz to a random value between 0 and 1. |
88 back_off_fuzz_ = static_cast<float>(base::RandDouble()); | 86 back_off_fuzz_ = static_cast<float>(base::RandDouble()); |
89 | 87 |
90 // The first update must happen between 0-5 minutes of start up. | 88 // The first update must happen between 0-5 minutes of start up. |
91 next_update_sec_ = base::RandInt(60, kSbTimerStartIntervalSec); | 89 next_update_sec_ = base::RandInt(60, kSbTimerStartIntervalSec); |
92 | 90 |
93 scoped_ptr<FileVersionInfo> version_info( | 91 scoped_ptr<FileVersionInfo> version_info( |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
416 | 414 |
417 break; | 415 break; |
418 } | 416 } |
419 case GETKEY_REQUEST: { | 417 case GETKEY_REQUEST: { |
420 std::string client_key, wrapped_key; | 418 std::string client_key, wrapped_key; |
421 if (!parser.ParseNewKey(data, length, &client_key, &wrapped_key)) | 419 if (!parser.ParseNewKey(data, length, &client_key, &wrapped_key)) |
422 return false; | 420 return false; |
423 | 421 |
424 client_key_ = client_key; | 422 client_key_ = client_key; |
425 wrapped_key_ = wrapped_key; | 423 wrapped_key_ = wrapped_key; |
426 notify_loop_->PostTask(FROM_HERE, NewRunnableMethod( | 424 ChromeThread::PostTask( |
427 sb_service_, &SafeBrowsingService::OnNewMacKeys, client_key_, | 425 ChromeThread::UI, FROM_HERE, |
428 wrapped_key_)); | 426 NewRunnableMethod( |
| 427 sb_service_, &SafeBrowsingService::OnNewMacKeys, client_key_, |
| 428 wrapped_key_)); |
429 break; | 429 break; |
430 } | 430 } |
431 | 431 |
432 default: | 432 default: |
433 return false; | 433 return false; |
434 } | 434 } |
435 | 435 |
436 return true; | 436 return true; |
437 } | 437 } |
438 | 438 |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
658 void SafeBrowsingProtocolManager::HandleGetHashError(const Time& now) { | 658 void SafeBrowsingProtocolManager::HandleGetHashError(const Time& now) { |
659 int next = GetNextBackOffTime(&gethash_error_count_, &gethash_back_off_mult_); | 659 int next = GetNextBackOffTime(&gethash_error_count_, &gethash_back_off_mult_); |
660 next_gethash_time_ = now + TimeDelta::FromSeconds(next); | 660 next_gethash_time_ = now + TimeDelta::FromSeconds(next); |
661 } | 661 } |
662 | 662 |
663 void SafeBrowsingProtocolManager::UpdateFinished(bool success) { | 663 void SafeBrowsingProtocolManager::UpdateFinished(bool success) { |
664 UMA_HISTOGRAM_COUNTS("SB2.UpdateSize", update_size_); | 664 UMA_HISTOGRAM_COUNTS("SB2.UpdateSize", update_size_); |
665 update_size_ = 0; | 665 update_size_ = 0; |
666 sb_service_->UpdateFinished(success); | 666 sb_service_->UpdateFinished(success); |
667 } | 667 } |
OLD | NEW |