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

Side by Side Diff: components/safe_browsing_db/v4_update_protocol_manager.cc

Issue 2647323009: Add extended reporting level in the update request (Closed)
Patch Set: rebase Created 3 years, 11 months 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "components/safe_browsing_db/v4_update_protocol_manager.h" 5 #include "components/safe_browsing_db/v4_update_protocol_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/base64url.h" 9 #include "base/base64url.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 66
67 // Minimum time, in seconds, from start up before we must issue an update query. 67 // Minimum time, in seconds, from start up before we must issue an update query.
68 static const int kV4TimerStartIntervalSecMin = 60; 68 static const int kV4TimerStartIntervalSecMin = 60;
69 69
70 // Maximum time, in seconds, from start up before we must issue an update query. 70 // Maximum time, in seconds, from start up before we must issue an update query.
71 static const int kV4TimerStartIntervalSecMax = 300; 71 static const int kV4TimerStartIntervalSecMax = 300;
72 72
73 // Maximum time, in seconds, to wait for a response to an update request. 73 // Maximum time, in seconds, to wait for a response to an update request.
74 static const int kV4TimerUpdateWaitSecMax = 30; 74 static const int kV4TimerUpdateWaitSecMax = 30;
75 75
76 ChromeClientInfo::SafeBrowsingReportingPopulation GetReportingLevelProtoValue(
77 ExtendedReportingLevel reporting_level) {
78 switch (reporting_level) {
79 case SBER_LEVEL_OFF:
80 return ChromeClientInfo::OPT_OUT;
81 case SBER_LEVEL_LEGACY:
82 return ChromeClientInfo::EXTENDED;
83 case SBER_LEVEL_SCOUT:
84 return ChromeClientInfo::SCOUT;
85 default:
86 NOTREACHED() << "Unexpected reporting_level!";
87 return ChromeClientInfo::UNSPECIFIED;
88 }
89 }
90
76 // The default V4UpdateProtocolManagerFactory. 91 // The default V4UpdateProtocolManagerFactory.
77 class V4UpdateProtocolManagerFactoryImpl 92 class V4UpdateProtocolManagerFactoryImpl
78 : public V4UpdateProtocolManagerFactory { 93 : public V4UpdateProtocolManagerFactory {
79 public: 94 public:
80 V4UpdateProtocolManagerFactoryImpl() {} 95 V4UpdateProtocolManagerFactoryImpl() {}
81 ~V4UpdateProtocolManagerFactoryImpl() override {} 96 ~V4UpdateProtocolManagerFactoryImpl() override {}
82 std::unique_ptr<V4UpdateProtocolManager> CreateProtocolManager( 97 std::unique_ptr<V4UpdateProtocolManager> CreateProtocolManager(
83 net::URLRequestContextGetter* request_context_getter, 98 net::URLRequestContextGetter* request_context_getter,
84 const V4ProtocolConfig& config, 99 const V4ProtocolConfig& config,
85 V4UpdateCallback callback) override { 100 V4UpdateCallback update_callback,
86 return std::unique_ptr<V4UpdateProtocolManager>( 101 ExtendedReportingLevelCallback extended_reporting_level_callback)
87 new V4UpdateProtocolManager(request_context_getter, config, callback)); 102 override {
103 return std::unique_ptr<V4UpdateProtocolManager>(new V4UpdateProtocolManager(
104 request_context_getter, config, update_callback,
105 extended_reporting_level_callback));
88 } 106 }
89 107
90 private: 108 private:
91 DISALLOW_COPY_AND_ASSIGN(V4UpdateProtocolManagerFactoryImpl); 109 DISALLOW_COPY_AND_ASSIGN(V4UpdateProtocolManagerFactoryImpl);
92 }; 110 };
93 111
94 // V4UpdateProtocolManager implementation -------------------------------- 112 // V4UpdateProtocolManager implementation --------------------------------
95 113
96 // static 114 // static
97 V4UpdateProtocolManagerFactory* V4UpdateProtocolManager::factory_ = NULL; 115 V4UpdateProtocolManagerFactory* V4UpdateProtocolManager::factory_ = NULL;
98 116
99 // static 117 // static
100 std::unique_ptr<V4UpdateProtocolManager> V4UpdateProtocolManager::Create( 118 std::unique_ptr<V4UpdateProtocolManager> V4UpdateProtocolManager::Create(
101 net::URLRequestContextGetter* request_context_getter, 119 net::URLRequestContextGetter* request_context_getter,
102 const V4ProtocolConfig& config, 120 const V4ProtocolConfig& config,
103 V4UpdateCallback callback) { 121 V4UpdateCallback update_callback,
122 ExtendedReportingLevelCallback extended_reporting_level_callback) {
104 if (!factory_) { 123 if (!factory_) {
105 factory_ = new V4UpdateProtocolManagerFactoryImpl(); 124 factory_ = new V4UpdateProtocolManagerFactoryImpl();
106 } 125 }
107 return factory_->CreateProtocolManager(request_context_getter, config, 126 return factory_->CreateProtocolManager(request_context_getter, config,
108 callback); 127 update_callback,
128 extended_reporting_level_callback);
109 } 129 }
110 130
111 void V4UpdateProtocolManager::ResetUpdateErrors() { 131 void V4UpdateProtocolManager::ResetUpdateErrors() {
112 update_error_count_ = 0; 132 update_error_count_ = 0;
113 update_back_off_mult_ = 1; 133 update_back_off_mult_ = 1;
114 } 134 }
115 135
116 V4UpdateProtocolManager::V4UpdateProtocolManager( 136 V4UpdateProtocolManager::V4UpdateProtocolManager(
117 net::URLRequestContextGetter* request_context_getter, 137 net::URLRequestContextGetter* request_context_getter,
118 const V4ProtocolConfig& config, 138 const V4ProtocolConfig& config,
119 V4UpdateCallback update_callback) 139 V4UpdateCallback update_callback,
140 ExtendedReportingLevelCallback extended_reporting_level_callback)
120 : update_error_count_(0), 141 : update_error_count_(0),
121 update_back_off_mult_(1), 142 update_back_off_mult_(1),
122 next_update_interval_(base::TimeDelta::FromSeconds( 143 next_update_interval_(base::TimeDelta::FromSeconds(
123 base::RandInt(kV4TimerStartIntervalSecMin, 144 base::RandInt(kV4TimerStartIntervalSecMin,
124 kV4TimerStartIntervalSecMax))), 145 kV4TimerStartIntervalSecMax))),
125 config_(config), 146 config_(config),
126 request_context_getter_(request_context_getter), 147 request_context_getter_(request_context_getter),
127 url_fetcher_id_(0), 148 url_fetcher_id_(0),
128 update_callback_(update_callback) { 149 update_callback_(update_callback),
150 extended_reporting_level_callback_(extended_reporting_level_callback) {
129 // Do not auto-schedule updates. Let the owner (V4LocalDatabaseManager) do it 151 // Do not auto-schedule updates. Let the owner (V4LocalDatabaseManager) do it
130 // when it is ready to process updates. 152 // when it is ready to process updates.
131 } 153 }
132 154
133 V4UpdateProtocolManager::~V4UpdateProtocolManager() {} 155 V4UpdateProtocolManager::~V4UpdateProtocolManager() {}
134 156
135 bool V4UpdateProtocolManager::IsUpdateScheduled() const { 157 bool V4UpdateProtocolManager::IsUpdateScheduled() const {
136 return update_timer_.IsRunning(); 158 return update_timer_.IsRunning();
137 } 159 }
138 160
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
210 232
211 if (!state.empty()) { 233 if (!state.empty()) {
212 list_update_request->set_state(state); 234 list_update_request->set_state(state);
213 } 235 }
214 236
215 list_update_request->mutable_constraints()->add_supported_compressions(RAW); 237 list_update_request->mutable_constraints()->add_supported_compressions(RAW);
216 list_update_request->mutable_constraints()->add_supported_compressions( 238 list_update_request->mutable_constraints()->add_supported_compressions(
217 RICE); 239 RICE);
218 } 240 }
219 241
242 if (!extended_reporting_level_callback_.is_null()) {
243 request.mutable_chrome_client_info()->set_reporting_population(
244 GetReportingLevelProtoValue(extended_reporting_level_callback_.Run()));
245 }
246
220 V4ProtocolManagerUtil::SetClientInfoFromConfig(request.mutable_client(), 247 V4ProtocolManagerUtil::SetClientInfoFromConfig(request.mutable_client(),
221 config_); 248 config_);
222 249
223 // Serialize and Base64 encode. 250 // Serialize and Base64 encode.
224 std::string req_data, req_base64; 251 std::string req_data, req_base64;
225 request.SerializeToString(&req_data); 252 request.SerializeToString(&req_data);
226 base::Base64UrlEncode(req_data, base::Base64UrlEncodePolicy::INCLUDE_PADDING, 253 base::Base64UrlEncode(req_data, base::Base64UrlEncodePolicy::INCLUDE_PADDING,
227 &req_base64); 254 &req_base64);
228 return req_base64; 255 return req_base64;
229 } 256 }
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
365 392
366 void V4UpdateProtocolManager::GetUpdateUrlAndHeaders( 393 void V4UpdateProtocolManager::GetUpdateUrlAndHeaders(
367 const std::string& req_base64, 394 const std::string& req_base64,
368 GURL* gurl, 395 GURL* gurl,
369 net::HttpRequestHeaders* headers) const { 396 net::HttpRequestHeaders* headers) const {
370 V4ProtocolManagerUtil::GetRequestUrlAndHeaders( 397 V4ProtocolManagerUtil::GetRequestUrlAndHeaders(
371 req_base64, "threatListUpdates:fetch", config_, gurl, headers); 398 req_base64, "threatListUpdates:fetch", config_, gurl, headers);
372 } 399 }
373 400
374 } // namespace safe_browsing 401 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698