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

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

Issue 2487343005: Fix Thread::SetMessageLoop(nullptr). (Closed)
Patch Set: Merge up to r434093 Created 4 years 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
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 #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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 UPDATE_RESULT_BACKUP_NETWORK_SUCCESS, 52 UPDATE_RESULT_BACKUP_NETWORK_SUCCESS,
53 UPDATE_RESULT_MAX, 53 UPDATE_RESULT_MAX,
54 UPDATE_RESULT_BACKUP_START = UPDATE_RESULT_BACKUP_CONNECT_FAIL, 54 UPDATE_RESULT_BACKUP_START = UPDATE_RESULT_BACKUP_CONNECT_FAIL,
55 }; 55 };
56 56
57 void RecordUpdateResult(UpdateResult result) { 57 void RecordUpdateResult(UpdateResult result) {
58 DCHECK(result >= 0 && result < UPDATE_RESULT_MAX); 58 DCHECK(result >= 0 && result < UPDATE_RESULT_MAX);
59 UMA_HISTOGRAM_ENUMERATION("SB2.UpdateResult", result, UPDATE_RESULT_MAX); 59 UMA_HISTOGRAM_ENUMERATION("SB2.UpdateResult", result, UPDATE_RESULT_MAX);
60 } 60 }
61 61
62 const char kSBUpdateFrequencyFinchExperiment[] = "SafeBrowsingUpdateFrequency"; 62 constexpr char kSBUpdateFrequencyFinchExperiment[] =
63 const char kSBUpdateFrequencyFinchParam[] = "NextUpdateIntervalInMinutes"; 63 "SafeBrowsingUpdateFrequency";
64 constexpr char kSBUpdateFrequencyFinchParam[] = "NextUpdateIntervalInMinutes";
64 65
65 // This will be used for experimenting on a small subset of the population to 66 // This will be used for experimenting on a small subset of the population to
66 // better estimate the benefit of updating the safe browsing hashes more 67 // better estimate the benefit of updating the safe browsing hashes more
67 // frequently. 68 // frequently.
68 base::TimeDelta GetNextUpdateIntervalFromFinch() { 69 base::TimeDelta GetNextUpdateIntervalFromFinch() {
69 std::string num_str = variations::GetVariationParamValue( 70 std::string num_str = variations::GetVariationParamValue(
70 kSBUpdateFrequencyFinchExperiment, kSBUpdateFrequencyFinchParam); 71 kSBUpdateFrequencyFinchExperiment, kSBUpdateFrequencyFinchParam);
71 int finch_next_update_interval_minutes = 0; 72 int finch_next_update_interval_minutes = 0;
72 if (!base::StringToInt(num_str, &finch_next_update_interval_minutes)) { 73 if (!base::StringToInt(num_str, &finch_next_update_interval_minutes)) {
73 finch_next_update_interval_minutes = 0; // Defaults to 0. 74 finch_next_update_interval_minutes = 0; // Defaults to 0.
74 } 75 }
75 return base::TimeDelta::FromMinutes(finch_next_update_interval_minutes); 76 return base::TimeDelta::FromMinutes(finch_next_update_interval_minutes);
76 } 77 }
77 78
78 } // namespace 79 } // namespace
79 80
80 namespace safe_browsing { 81 namespace safe_browsing {
81 82
82 // Minimum time, in seconds, from start up before we must issue an update query. 83 // Minimum time, in seconds, from start up before we must issue an update query.
83 static const int kSbTimerStartIntervalSecMin = 60; 84 constexpr int kSbTimerStartIntervalSecMin = 60;
84 85
85 // Maximum time, in seconds, from start up before we must issue an update query. 86 // Maximum time, in seconds, from start up before we must issue an update query.
86 static const int kSbTimerStartIntervalSecMax = 300; 87 constexpr int kSbTimerStartIntervalSecMax = 300;
87 88
88 // The maximum time, in seconds, to wait for a response to an update request. 89 // The maximum time to wait for a response to an update request.
89 static const int kSbMaxUpdateWaitSec = 30; 90 constexpr base::TimeDelta kSbMaxUpdateWait = base::TimeDelta::FromSeconds(30);
90 91
91 // Maximum back off multiplier. 92 // Maximum back off multiplier.
92 static const size_t kSbMaxBackOff = 8; 93 constexpr size_t kSbMaxBackOff = 8;
93 94
94 const char kGetHashUmaResponseMetricName[] = "SB2.GetHashResponseOrErrorCode"; 95 constexpr char kGetHashUmaResponseMetricName[] =
95 const char kGetChunkUmaResponseMetricName[] = "SB2.GetChunkResponseOrErrorCode"; 96 "SB2.GetHashResponseOrErrorCode";
97 constexpr char kGetChunkUmaResponseMetricName[] =
98 "SB2.GetChunkResponseOrErrorCode";
96 99
97 // The default SBProtocolManagerFactory. 100 // The default SBProtocolManagerFactory.
98 class SBProtocolManagerFactoryImpl : public SBProtocolManagerFactory { 101 class SBProtocolManagerFactoryImpl : public SBProtocolManagerFactory {
99 public: 102 public:
100 SBProtocolManagerFactoryImpl() {} 103 SBProtocolManagerFactoryImpl() {}
101 ~SBProtocolManagerFactoryImpl() override {} 104 ~SBProtocolManagerFactoryImpl() override {}
102 105
103 std::unique_ptr<SafeBrowsingProtocolManager> CreateProtocolManager( 106 std::unique_ptr<SafeBrowsingProtocolManager> CreateProtocolManager(
104 SafeBrowsingProtocolManagerDelegate* delegate, 107 SafeBrowsingProtocolManagerDelegate* delegate,
105 net::URLRequestContextGetter* request_context_getter, 108 net::URLRequestContextGetter* request_context_getter,
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 const net::URLRequestStatus& status, 186 const net::URLRequestStatus& status,
184 int response_code) { 187 int response_code) {
185 UMA_HISTOGRAM_SPARSE_SLOWLY( 188 UMA_HISTOGRAM_SPARSE_SLOWLY(
186 metric_name, status.is_success() ? response_code : status.error()); 189 metric_name, status.is_success() ? response_code : status.error());
187 } 190 }
188 191
189 bool SafeBrowsingProtocolManager::IsUpdateScheduled() const { 192 bool SafeBrowsingProtocolManager::IsUpdateScheduled() const {
190 return update_timer_.IsRunning(); 193 return update_timer_.IsRunning();
191 } 194 }
192 195
196 // static
197 base::TimeDelta SafeBrowsingProtocolManager::GetUpdateTimeoutForTesting() {
198 return kSbMaxUpdateWait;
199 }
200
193 SafeBrowsingProtocolManager::~SafeBrowsingProtocolManager() {} 201 SafeBrowsingProtocolManager::~SafeBrowsingProtocolManager() {}
194 202
195 // We can only have one update or chunk request outstanding, but there may be 203 // We can only have one update or chunk request outstanding, but there may be
196 // multiple GetHash requests pending since we don't want to serialize them and 204 // multiple GetHash requests pending since we don't want to serialize them and
197 // slow down the user. 205 // slow down the user.
198 void SafeBrowsingProtocolManager::GetFullHash( 206 void SafeBrowsingProtocolManager::GetFullHash(
199 const std::vector<SBPrefix>& prefixes, 207 const std::vector<SBPrefix>& prefixes,
200 FullHashCallback callback, 208 FullHashCallback callback,
201 bool is_download, 209 bool is_download,
202 ExtendedReportingLevel reporting_level) { 210 ExtendedReportingLevel reporting_level) {
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 request_ = net::URLFetcher::Create(url_fetcher_id_++, backup_update_url, 591 request_ = net::URLFetcher::Create(url_fetcher_id_++, backup_update_url,
584 net::URLFetcher::POST, this); 592 net::URLFetcher::POST, this);
585 data_use_measurement::DataUseUserData::AttachToFetcher( 593 data_use_measurement::DataUseUserData::AttachToFetcher(
586 request_.get(), data_use_measurement::DataUseUserData::SAFE_BROWSING); 594 request_.get(), data_use_measurement::DataUseUserData::SAFE_BROWSING);
587 request_->SetLoadFlags(net::LOAD_DISABLE_CACHE); 595 request_->SetLoadFlags(net::LOAD_DISABLE_CACHE);
588 request_->SetRequestContext(request_context_getter_.get()); 596 request_->SetRequestContext(request_context_getter_.get());
589 request_->SetUploadData("text/plain", update_list_data_); 597 request_->SetUploadData("text/plain", update_list_data_);
590 request_->Start(); 598 request_->Start();
591 599
592 // Begin the update request timeout. 600 // Begin the update request timeout.
593 timeout_timer_.Start(FROM_HERE, TimeDelta::FromSeconds(kSbMaxUpdateWaitSec), 601 timeout_timer_.Start(FROM_HERE, kSbMaxUpdateWait, this,
594 this,
595 &SafeBrowsingProtocolManager::UpdateResponseTimeout); 602 &SafeBrowsingProtocolManager::UpdateResponseTimeout);
596 603
597 return true; 604 return true;
598 } 605 }
599 606
600 void SafeBrowsingProtocolManager::IssueChunkRequest() { 607 void SafeBrowsingProtocolManager::IssueChunkRequest() {
601 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 608 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
602 // We are only allowed to have one request outstanding at any time. Also, 609 // We are only allowed to have one request outstanding at any time. Also,
603 // don't get the next url until the previous one has been written to disk so 610 // don't get the next url until the previous one has been written to disk so
604 // that we don't use too much memory. 611 // that we don't use too much memory.
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 request_ = net::URLFetcher::Create(url_fetcher_id_++, update_url, 672 request_ = net::URLFetcher::Create(url_fetcher_id_++, update_url,
666 net::URLFetcher::POST, this); 673 net::URLFetcher::POST, this);
667 data_use_measurement::DataUseUserData::AttachToFetcher( 674 data_use_measurement::DataUseUserData::AttachToFetcher(
668 request_.get(), data_use_measurement::DataUseUserData::SAFE_BROWSING); 675 request_.get(), data_use_measurement::DataUseUserData::SAFE_BROWSING);
669 request_->SetLoadFlags(net::LOAD_DISABLE_CACHE); 676 request_->SetLoadFlags(net::LOAD_DISABLE_CACHE);
670 request_->SetRequestContext(request_context_getter_.get()); 677 request_->SetRequestContext(request_context_getter_.get());
671 request_->SetUploadData("text/plain", update_list_data_); 678 request_->SetUploadData("text/plain", update_list_data_);
672 request_->Start(); 679 request_->Start();
673 680
674 // Begin the update request timeout. 681 // Begin the update request timeout.
675 timeout_timer_.Start(FROM_HERE, TimeDelta::FromSeconds(kSbMaxUpdateWaitSec), 682 timeout_timer_.Start(FROM_HERE, kSbMaxUpdateWait, this,
676 this,
677 &SafeBrowsingProtocolManager::UpdateResponseTimeout); 683 &SafeBrowsingProtocolManager::UpdateResponseTimeout);
678 } 684 }
679 685
680 // If we haven't heard back from the server with an update response, this method 686 // If we haven't heard back from the server with an update response, this method
681 // will run. Close the current update session and schedule another update. 687 // will run. Close the current update session and schedule another update.
682 void SafeBrowsingProtocolManager::UpdateResponseTimeout() { 688 void SafeBrowsingProtocolManager::UpdateResponseTimeout() {
683 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); 689 DCHECK_CURRENTLY_ON(content::BrowserThread::IO);
684 DCHECK(request_type_ == UPDATE_REQUEST || 690 DCHECK(request_type_ == UPDATE_REQUEST ||
685 request_type_ == BACKUP_UPDATE_REQUEST); 691 request_type_ == BACKUP_UPDATE_REQUEST);
686 request_.reset(); 692 request_.reset();
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
798 : callback(callback), is_download(is_download) {} 804 : callback(callback), is_download(is_download) {}
799 805
800 SafeBrowsingProtocolManager::FullHashDetails::FullHashDetails( 806 SafeBrowsingProtocolManager::FullHashDetails::FullHashDetails(
801 const FullHashDetails& other) = default; 807 const FullHashDetails& other) = default;
802 808
803 SafeBrowsingProtocolManager::FullHashDetails::~FullHashDetails() {} 809 SafeBrowsingProtocolManager::FullHashDetails::~FullHashDetails() {}
804 810
805 SafeBrowsingProtocolManagerDelegate::~SafeBrowsingProtocolManagerDelegate() {} 811 SafeBrowsingProtocolManagerDelegate::~SafeBrowsingProtocolManagerDelegate() {}
806 812
807 } // namespace safe_browsing 813 } // namespace safe_browsing
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