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

Side by Side Diff: chrome/browser/safe_browsing/incident_reporting/last_download_finder.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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/incident_reporting/last_download_finder.h " 5 #include "chrome/browser/safe_browsing/incident_reporting/last_download_finder.h "
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
11 #include <functional> 11 #include <functional>
12 #include <utility> 12 #include <utility>
13 13
14 #include "base/bind.h" 14 #include "base/bind.h"
15 #include "base/macros.h" 15 #include "base/macros.h"
16 #include "base/memory/ptr_util.h"
16 #include "base/strings/string_util.h" 17 #include "base/strings/string_util.h"
17 #include "base/strings/utf_string_conversions.h" 18 #include "base/strings/utf_string_conversions.h"
18 #include "build/build_config.h" 19 #include "build/build_config.h"
19 #include "chrome/browser/browser_process.h" 20 #include "chrome/browser/browser_process.h"
20 #include "chrome/browser/chrome_notification_types.h" 21 #include "chrome/browser/chrome_notification_types.h"
21 #include "chrome/browser/history/history_service_factory.h" 22 #include "chrome/browser/history/history_service_factory.h"
22 #include "chrome/browser/profiles/profile_manager.h" 23 #include "chrome/browser/profiles/profile_manager.h"
23 #include "chrome/browser/safe_browsing/incident_reporting/incident_reporting_ser vice.h" 24 #include "chrome/browser/safe_browsing/incident_reporting/incident_reporting_ser vice.h"
24 #include "chrome/common/pref_names.h" 25 #include "chrome/common/pref_names.h"
25 #include "chrome/common/safe_browsing/csd.pb.h" 26 #include "chrome/common/safe_browsing/csd.pb.h"
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 details->set_url_spec_sha256( 222 details->set_url_spec_sha256(
222 crypto::SHA256HashString(download.url_chain.back().spec())); 223 crypto::SHA256HashString(download.url_chain.back().spec()));
223 } 224 }
224 225
225 } // namespace 226 } // namespace
226 227
227 LastDownloadFinder::~LastDownloadFinder() { 228 LastDownloadFinder::~LastDownloadFinder() {
228 } 229 }
229 230
230 // static 231 // static
231 scoped_ptr<LastDownloadFinder> LastDownloadFinder::Create( 232 std::unique_ptr<LastDownloadFinder> LastDownloadFinder::Create(
232 const DownloadDetailsGetter& download_details_getter, 233 const DownloadDetailsGetter& download_details_getter,
233 const LastDownloadCallback& callback) { 234 const LastDownloadCallback& callback) {
234 scoped_ptr<LastDownloadFinder> finder(make_scoped_ptr(new LastDownloadFinder( 235 std::unique_ptr<LastDownloadFinder> finder(
235 download_details_getter, 236 base::WrapUnique(new LastDownloadFinder(
236 g_browser_process->profile_manager()->GetLoadedProfiles(), 237 download_details_getter,
237 callback))); 238 g_browser_process->profile_manager()->GetLoadedProfiles(),
239 callback)));
238 // Return NULL if there is no work to do. 240 // Return NULL if there is no work to do.
239 if (finder->profile_states_.empty()) 241 if (finder->profile_states_.empty())
240 return scoped_ptr<LastDownloadFinder>(); 242 return std::unique_ptr<LastDownloadFinder>();
241 return finder; 243 return finder;
242 } 244 }
243 245
244 LastDownloadFinder::LastDownloadFinder() 246 LastDownloadFinder::LastDownloadFinder()
245 : history_service_observer_(this), weak_ptr_factory_(this) { 247 : history_service_observer_(this), weak_ptr_factory_(this) {
246 } 248 }
247 249
248 LastDownloadFinder::LastDownloadFinder( 250 LastDownloadFinder::LastDownloadFinder(
249 const DownloadDetailsGetter& download_details_getter, 251 const DownloadDetailsGetter& download_details_getter,
250 const std::vector<Profile*>& profiles, 252 const std::vector<Profile*>& profiles,
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 // Initiate a metadata search. 284 // Initiate a metadata search.
283 profile_states_[profile] = WAITING_FOR_METADATA; 285 profile_states_[profile] = WAITING_FOR_METADATA;
284 download_details_getter_.Run(profile, 286 download_details_getter_.Run(profile,
285 base::Bind(&LastDownloadFinder::OnMetadataQuery, 287 base::Bind(&LastDownloadFinder::OnMetadataQuery,
286 weak_ptr_factory_.GetWeakPtr(), 288 weak_ptr_factory_.GetWeakPtr(),
287 profile)); 289 profile));
288 } 290 }
289 291
290 void LastDownloadFinder::OnMetadataQuery( 292 void LastDownloadFinder::OnMetadataQuery(
291 Profile* profile, 293 Profile* profile,
292 scoped_ptr<ClientIncidentReport_DownloadDetails> details) { 294 std::unique_ptr<ClientIncidentReport_DownloadDetails> details) {
293 auto iter = profile_states_.find(profile); 295 auto iter = profile_states_.find(profile);
294 // Early-exit if the search for this profile was abandoned. 296 // Early-exit if the search for this profile was abandoned.
295 if (iter == profile_states_.end()) 297 if (iter == profile_states_.end())
296 return; 298 return;
297 299
298 if (details) { 300 if (details) {
299 if (IsMostInterestingBinary(*details, details_.get(), 301 if (IsMostInterestingBinary(*details, details_.get(),
300 most_recent_binary_row_)) { 302 most_recent_binary_row_)) {
301 details_ = std::move(details); 303 details_ = std::move(details);
302 most_recent_binary_row_.end_time = base::Time(); 304 most_recent_binary_row_.end_time = base::Time();
(...skipping 24 matching lines...) Expand all
327 329
328 void LastDownloadFinder::AbandonSearchInProfile(Profile* profile) { 330 void LastDownloadFinder::AbandonSearchInProfile(Profile* profile) {
329 // |profile| may not be present in the set of profiles. 331 // |profile| may not be present in the set of profiles.
330 auto iter = profile_states_.find(profile); 332 auto iter = profile_states_.find(profile);
331 if (iter != profile_states_.end()) 333 if (iter != profile_states_.end())
332 RemoveProfileAndReportIfDone(iter); 334 RemoveProfileAndReportIfDone(iter);
333 } 335 }
334 336
335 void LastDownloadFinder::OnDownloadQuery( 337 void LastDownloadFinder::OnDownloadQuery(
336 Profile* profile, 338 Profile* profile,
337 scoped_ptr<std::vector<history::DownloadRow> > downloads) { 339 std::unique_ptr<std::vector<history::DownloadRow>> downloads) {
338 // Early-exit if the history search for this profile was abandoned. 340 // Early-exit if the history search for this profile was abandoned.
339 auto iter = profile_states_.find(profile); 341 auto iter = profile_states_.find(profile);
340 if (iter == profile_states_.end()) 342 if (iter == profile_states_.end())
341 return; 343 return;
342 344
343 // Don't overwrite the download from metadata if it came from this profile. 345 // Don't overwrite the download from metadata if it came from this profile.
344 if (iter->second == WAITING_FOR_HISTORY) { 346 if (iter->second == WAITING_FOR_HISTORY) {
345 // Find the most recent from this profile and use it if it's better than 347 // Find the most recent from this profile and use it if it's better than
346 // anything else found so far. 348 // anything else found so far.
347 const history::DownloadRow* profile_best_binary = 349 const history::DownloadRow* profile_best_binary =
(...skipping 24 matching lines...) Expand all
372 374
373 // Finish processing if all results are in. 375 // Finish processing if all results are in.
374 if (profile_states_.empty()) 376 if (profile_states_.empty())
375 ReportResults(); 377 ReportResults();
376 // Do not touch this LastDownloadFinder after reporting results. 378 // Do not touch this LastDownloadFinder after reporting results.
377 } 379 }
378 380
379 void LastDownloadFinder::ReportResults() { 381 void LastDownloadFinder::ReportResults() {
380 DCHECK(profile_states_.empty()); 382 DCHECK(profile_states_.empty());
381 383
382 scoped_ptr<ClientIncidentReport_DownloadDetails> binary_details = nullptr; 384 std::unique_ptr<ClientIncidentReport_DownloadDetails> binary_details =
383 scoped_ptr<ClientIncidentReport_NonBinaryDownloadDetails> non_binary_details =
384 nullptr; 385 nullptr;
386 std::unique_ptr<ClientIncidentReport_NonBinaryDownloadDetails>
387 non_binary_details = nullptr;
385 388
386 if (details_) { 389 if (details_) {
387 binary_details.reset(new ClientIncidentReport_DownloadDetails(*details_)); 390 binary_details.reset(new ClientIncidentReport_DownloadDetails(*details_));
388 } else if (!most_recent_binary_row_.end_time.is_null()) { 391 } else if (!most_recent_binary_row_.end_time.is_null()) {
389 binary_details.reset(new ClientIncidentReport_DownloadDetails()); 392 binary_details.reset(new ClientIncidentReport_DownloadDetails());
390 PopulateDetailsFromRow(most_recent_binary_row_, binary_details.get()); 393 PopulateDetailsFromRow(most_recent_binary_row_, binary_details.get());
391 } 394 }
392 395
393 if (!most_recent_non_binary_row_.end_time.is_null()) { 396 if (!most_recent_non_binary_row_.end_time.is_null()) {
394 non_binary_details.reset( 397 non_binary_details.reset(
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 } 439 }
437 } 440 }
438 } 441 }
439 442
440 void LastDownloadFinder::HistoryServiceBeingDeleted( 443 void LastDownloadFinder::HistoryServiceBeingDeleted(
441 history::HistoryService* history_service) { 444 history::HistoryService* history_service) {
442 history_service_observer_.Remove(history_service); 445 history_service_observer_.Remove(history_service);
443 } 446 }
444 447
445 } // namespace safe_browsing 448 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698