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

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

Issue 1870003002: Convert //chrome/browser/safe_browsing from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase and address comments Created 4 years, 8 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 (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/browser_feature_extractor.h" 5 #include "chrome/browser/safe_browsing/browser_feature_extractor.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <utility> 10 #include <utility>
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 std::string(), controller, url_index, info->url_redirects, request); 231 std::string(), controller, url_index, info->url_redirects, request);
232 } 232 }
233 if (first_host_index != -1) { 233 if (first_host_index != -1) {
234 AddNavigationFeatures(features::kHostPrefix, 234 AddNavigationFeatures(features::kHostPrefix,
235 controller, 235 controller,
236 first_host_index, 236 first_host_index,
237 info->host_redirects, 237 info->host_redirects,
238 request); 238 request);
239 } 239 }
240 240
241 // The API doesn't take a scoped_ptr because the API gets mocked and we 241 // The API doesn't take a std::unique_ptr because the API gets mocked and we
242 // cannot mock an API that takes scoped_ptr as arguments. 242 // cannot mock an API that takes std::unique_ptr as arguments.
243 scoped_ptr<ClientPhishingRequest> req(request); 243 std::unique_ptr<ClientPhishingRequest> req(request);
244 244
245 ExtractBrowseInfoFeatures(*info, request); 245 ExtractBrowseInfoFeatures(*info, request);
246 base::ThreadTaskRunnerHandle::Get()->PostTask( 246 base::ThreadTaskRunnerHandle::Get()->PostTask(
247 FROM_HERE, 247 FROM_HERE,
248 base::Bind(&BrowserFeatureExtractor::StartExtractFeatures, 248 base::Bind(&BrowserFeatureExtractor::StartExtractFeatures,
249 weak_factory_.GetWeakPtr(), base::Passed(&req), callback)); 249 weak_factory_.GetWeakPtr(), base::Passed(&req), callback));
250 } 250 }
251 251
252 void BrowserFeatureExtractor::ExtractMalwareFeatures( 252 void BrowserFeatureExtractor::ExtractMalwareFeatures(
253 BrowseInfo* info, 253 BrowseInfo* info,
254 ClientMalwareRequest* request, 254 ClientMalwareRequest* request,
255 const MalwareDoneCallback& callback) { 255 const MalwareDoneCallback& callback) {
256 DCHECK_CURRENTLY_ON(BrowserThread::UI); 256 DCHECK_CURRENTLY_ON(BrowserThread::UI);
257 DCHECK(!callback.is_null()); 257 DCHECK(!callback.is_null());
258 258
259 // Grab the IPs because they might go away before we're done 259 // Grab the IPs because they might go away before we're done
260 // checking them against the IP blacklist on the IO thread. 260 // checking them against the IP blacklist on the IO thread.
261 scoped_ptr<IPUrlMap> ips(new IPUrlMap); 261 std::unique_ptr<IPUrlMap> ips(new IPUrlMap);
262 ips->swap(info->ips); 262 ips->swap(info->ips);
263 263
264 IPUrlMap* ips_ptr = ips.get(); 264 IPUrlMap* ips_ptr = ips.get();
265 265
266 // The API doesn't take a scoped_ptr because the API gets mocked and we 266 // The API doesn't take a std::unique_ptr because the API gets mocked and we
267 // cannot mock an API that takes scoped_ptr as arguments. 267 // cannot mock an API that takes std::unique_ptr as arguments.
268 scoped_ptr<ClientMalwareRequest> req(request); 268 std::unique_ptr<ClientMalwareRequest> req(request);
269 269
270 // IP blacklist lookups have to happen on the IO thread. 270 // IP blacklist lookups have to happen on the IO thread.
271 BrowserThread::PostTaskAndReply( 271 BrowserThread::PostTaskAndReply(
272 BrowserThread::IO, 272 BrowserThread::IO,
273 FROM_HERE, 273 FROM_HERE,
274 base::Bind(&FilterBenignIpsOnIOThread, 274 base::Bind(&FilterBenignIpsOnIOThread,
275 host_->database_manager(), 275 host_->database_manager(),
276 ips_ptr), 276 ips_ptr),
277 base::Bind(&BrowserFeatureExtractor::FinishExtractMalwareFeatures, 277 base::Bind(&BrowserFeatureExtractor::FinishExtractMalwareFeatures,
278 weak_factory_.GetWeakPtr(), 278 weak_factory_.GetWeakPtr(),
(...skipping 19 matching lines...) Expand all
298 AddFeature(features::kSafeBrowsingThreatType, 298 AddFeature(features::kSafeBrowsingThreatType,
299 static_cast<double>(info.unsafe_resource->threat_type), 299 static_cast<double>(info.unsafe_resource->threat_type),
300 request); 300 request);
301 } 301 }
302 if (info.http_status_code != 0) { 302 if (info.http_status_code != 0) {
303 AddFeature(features::kHttpStatusCode, info.http_status_code, request); 303 AddFeature(features::kHttpStatusCode, info.http_status_code, request);
304 } 304 }
305 } 305 }
306 306
307 void BrowserFeatureExtractor::StartExtractFeatures( 307 void BrowserFeatureExtractor::StartExtractFeatures(
308 scoped_ptr<ClientPhishingRequest> request, 308 std::unique_ptr<ClientPhishingRequest> request,
309 const DoneCallback& callback) { 309 const DoneCallback& callback) {
310 DCHECK_CURRENTLY_ON(BrowserThread::UI); 310 DCHECK_CURRENTLY_ON(BrowserThread::UI);
311 history::HistoryService* history; 311 history::HistoryService* history;
312 if (!request || !request->IsInitialized() || !GetHistoryService(&history)) { 312 if (!request || !request->IsInitialized() || !GetHistoryService(&history)) {
313 callback.Run(false, std::move(request)); 313 callback.Run(false, std::move(request));
314 return; 314 return;
315 } 315 }
316 GURL request_url(request->url()); 316 GURL request_url(request->url());
317 history->QueryURL(request_url, 317 history->QueryURL(request_url,
318 true /* wants_visits */, 318 true /* wants_visits */,
319 base::Bind(&BrowserFeatureExtractor::QueryUrlHistoryDone, 319 base::Bind(&BrowserFeatureExtractor::QueryUrlHistoryDone,
320 base::Unretained(this), 320 base::Unretained(this),
321 base::Passed(&request), 321 base::Passed(&request),
322 callback), 322 callback),
323 &cancelable_task_tracker_); 323 &cancelable_task_tracker_);
324 } 324 }
325 325
326 void BrowserFeatureExtractor::QueryUrlHistoryDone( 326 void BrowserFeatureExtractor::QueryUrlHistoryDone(
327 scoped_ptr<ClientPhishingRequest> request, 327 std::unique_ptr<ClientPhishingRequest> request,
328 const DoneCallback& callback, 328 const DoneCallback& callback,
329 bool success, 329 bool success,
330 const history::URLRow& row, 330 const history::URLRow& row,
331 const history::VisitVector& visits) { 331 const history::VisitVector& visits) {
332 DCHECK_CURRENTLY_ON(BrowserThread::UI); 332 DCHECK_CURRENTLY_ON(BrowserThread::UI);
333 DCHECK(request); 333 DCHECK(request);
334 DCHECK(!callback.is_null()); 334 DCHECK(!callback.is_null());
335 if (!success) { 335 if (!success) {
336 // URL is not found in the history. In practice this should not 336 // URL is not found in the history. In practice this should not
337 // happen (unless there is a real error) because we just visited 337 // happen (unless there is a real error) because we just visited
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 history->GetVisibleVisitCountToHost( 384 history->GetVisibleVisitCountToHost(
385 request_url, 385 request_url,
386 base::Bind(&BrowserFeatureExtractor::QueryHttpHostVisitsDone, 386 base::Bind(&BrowserFeatureExtractor::QueryHttpHostVisitsDone,
387 base::Unretained(this), 387 base::Unretained(this),
388 base::Passed(&request), 388 base::Passed(&request),
389 callback), 389 callback),
390 &cancelable_task_tracker_); 390 &cancelable_task_tracker_);
391 } 391 }
392 392
393 void BrowserFeatureExtractor::QueryHttpHostVisitsDone( 393 void BrowserFeatureExtractor::QueryHttpHostVisitsDone(
394 scoped_ptr<ClientPhishingRequest> request, 394 std::unique_ptr<ClientPhishingRequest> request,
395 const DoneCallback& callback, 395 const DoneCallback& callback,
396 bool success, 396 bool success,
397 int num_visits, 397 int num_visits,
398 base::Time first_visit) { 398 base::Time first_visit) {
399 DCHECK_CURRENTLY_ON(BrowserThread::UI); 399 DCHECK_CURRENTLY_ON(BrowserThread::UI);
400 DCHECK(request); 400 DCHECK(request);
401 DCHECK(!callback.is_null()); 401 DCHECK(!callback.is_null());
402 if (!success) { 402 if (!success) {
403 callback.Run(false, std::move(request)); 403 callback.Run(false, std::move(request));
404 return; 404 return;
(...skipping 10 matching lines...) Expand all
415 history->GetVisibleVisitCountToHost( 415 history->GetVisibleVisitCountToHost(
416 GURL(https_url.replace(0, 5, "https:")), 416 GURL(https_url.replace(0, 5, "https:")),
417 base::Bind(&BrowserFeatureExtractor::QueryHttpsHostVisitsDone, 417 base::Bind(&BrowserFeatureExtractor::QueryHttpsHostVisitsDone,
418 base::Unretained(this), 418 base::Unretained(this),
419 base::Passed(&request), 419 base::Passed(&request),
420 callback), 420 callback),
421 &cancelable_task_tracker_); 421 &cancelable_task_tracker_);
422 } 422 }
423 423
424 void BrowserFeatureExtractor::QueryHttpsHostVisitsDone( 424 void BrowserFeatureExtractor::QueryHttpsHostVisitsDone(
425 scoped_ptr<ClientPhishingRequest> request, 425 std::unique_ptr<ClientPhishingRequest> request,
426 const DoneCallback& callback, 426 const DoneCallback& callback,
427 bool success, 427 bool success,
428 int num_visits, 428 int num_visits,
429 base::Time first_visit) { 429 base::Time first_visit) {
430 DCHECK_CURRENTLY_ON(BrowserThread::UI); 430 DCHECK_CURRENTLY_ON(BrowserThread::UI);
431 DCHECK(request); 431 DCHECK(request);
432 DCHECK(!callback.is_null()); 432 DCHECK(!callback.is_null());
433 if (!success) { 433 if (!success) {
434 callback.Run(false, std::move(request)); 434 callback.Run(false, std::move(request));
435 return; 435 return;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
468 profile, ServiceAccessType::EXPLICIT_ACCESS); 468 profile, ServiceAccessType::EXPLICIT_ACCESS);
469 if (*history) { 469 if (*history) {
470 return true; 470 return true;
471 } 471 }
472 } 472 }
473 DVLOG(2) << "Unable to query history. No history service available."; 473 DVLOG(2) << "Unable to query history. No history service available.";
474 return false; 474 return false;
475 } 475 }
476 476
477 void BrowserFeatureExtractor::FinishExtractMalwareFeatures( 477 void BrowserFeatureExtractor::FinishExtractMalwareFeatures(
478 scoped_ptr<IPUrlMap> bad_ips, 478 std::unique_ptr<IPUrlMap> bad_ips,
479 MalwareDoneCallback callback, 479 MalwareDoneCallback callback,
480 scoped_ptr<ClientMalwareRequest> request) { 480 std::unique_ptr<ClientMalwareRequest> request) {
481 DCHECK_CURRENTLY_ON(BrowserThread::UI); 481 DCHECK_CURRENTLY_ON(BrowserThread::UI);
482 int matched_bad_ips = 0; 482 int matched_bad_ips = 0;
483 for (IPUrlMap::const_iterator it = bad_ips->begin(); 483 for (IPUrlMap::const_iterator it = bad_ips->begin();
484 it != bad_ips->end(); ++it) { 484 it != bad_ips->end(); ++it) {
485 AddMalwareIpUrlInfo(it->first, it->second, request.get()); 485 AddMalwareIpUrlInfo(it->first, it->second, request.get());
486 ++matched_bad_ips; 486 ++matched_bad_ips;
487 // Limit the number of matched bad IPs in one request to control 487 // Limit the number of matched bad IPs in one request to control
488 // the request's size 488 // the request's size
489 if (matched_bad_ips >= kMaxMalwareIPPerRequest) { 489 if (matched_bad_ips >= kMaxMalwareIPPerRequest) {
490 break; 490 break;
491 } 491 }
492 } 492 }
493 callback.Run(true, std::move(request)); 493 callback.Run(true, std::move(request));
494 } 494 }
495 495
496 } // namespace safe_browsing 496 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698