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

Unified Diff: chrome/browser/safe_browsing/local_database_manager.cc

Issue 2442953002: Remove stl_util's deletion function use from chrome/. (Closed)
Patch Set: fix Created 4 years, 2 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/safe_browsing/local_database_manager.cc
diff --git a/chrome/browser/safe_browsing/local_database_manager.cc b/chrome/browser/safe_browsing/local_database_manager.cc
index 3bff7600bef97ea0e1bbd6f086ae24534359ef20..8d3d1a9b2ac46ae575e7f45e26287c8d8692af48 100644
--- a/chrome/browser/safe_browsing/local_database_manager.cc
+++ b/chrome/browser/safe_browsing/local_database_manager.cc
@@ -13,9 +13,9 @@
#include "base/command_line.h"
#include "base/debug/leak_tracker.h"
#include "base/location.h"
+#include "base/memory/ptr_util.h"
#include "base/metrics/histogram_macros.h"
#include "base/single_thread_task_runner.h"
-#include "base/stl_util.h"
#include "base/strings/string_util.h"
#include "base/threading/thread_task_runner_handle.h"
#include "chrome/browser/browser_process.h"
@@ -349,13 +349,14 @@ bool LocalSafeBrowsingDatabaseManager::CheckDownloadUrl(
// We need to check the database for url prefix, and later may fetch the url
// from the safebrowsing backends. These need to be asynchronous.
- SafeBrowsingCheck* check = new SafeBrowsingCheck(
- url_chain, std::vector<SBFullHash>(), client, BINURL,
- std::vector<SBThreatType>(1, SB_THREAT_TYPE_BINARY_MALWARE_URL));
+ std::unique_ptr<SafeBrowsingCheck> check =
+ base::MakeUnique<SafeBrowsingCheck>(
+ url_chain, std::vector<SBFullHash>(), client, BINURL,
+ std::vector<SBThreatType>(1, SB_THREAT_TYPE_BINARY_MALWARE_URL));
std::vector<SBPrefix> prefixes;
SafeBrowsingDatabase::GetDownloadUrlPrefixes(url_chain, &prefixes);
StartSafeBrowsingCheck(
- check,
+ std::move(check),
base::Bind(&LocalSafeBrowsingDatabaseManager::CheckDownloadUrlOnSBThread,
this, prefixes));
return false;
@@ -376,11 +377,12 @@ bool LocalSafeBrowsingDatabaseManager::CheckExtensionIDs(
for (const SBFullHash& hash : extension_id_hashes)
prefixes.push_back(hash.prefix);
- SafeBrowsingCheck* check = new SafeBrowsingCheck(
- std::vector<GURL>(), extension_id_hashes, client, EXTENSIONBLACKLIST,
- std::vector<SBThreatType>(1, SB_THREAT_TYPE_EXTENSION));
+ std::unique_ptr<SafeBrowsingCheck> check =
+ base::MakeUnique<SafeBrowsingCheck>(
+ std::vector<GURL>(), extension_id_hashes, client, EXTENSIONBLACKLIST,
+ std::vector<SBThreatType>(1, SB_THREAT_TYPE_EXTENSION));
StartSafeBrowsingCheck(
- check,
+ std::move(check),
base::Bind(&LocalSafeBrowsingDatabaseManager::CheckExtensionIDsOnSBThread,
this, prefixes));
return false;
@@ -403,14 +405,14 @@ bool LocalSafeBrowsingDatabaseManager::CheckResourceUrl(const GURL& url,
return false;
}
- SafeBrowsingCheck* check =
+ std::unique_ptr<SafeBrowsingCheck> check = base::WrapUnique(
new SafeBrowsingCheck({url}, std::vector<SBFullHash>(), client,
- RESOURCEBLACKLIST, expected_threats);
+ RESOURCEBLACKLIST, expected_threats));
std::vector<SBPrefix> prefixes;
SafeBrowsingDatabase::GetDownloadUrlPrefixes(check->urls, &prefixes);
StartSafeBrowsingCheck(
- check,
+ std::move(check),
base::Bind(&LocalSafeBrowsingDatabaseManager::CheckResourceUrlOnSBThread,
this, prefixes));
return false;
@@ -547,7 +549,7 @@ bool LocalSafeBrowsingDatabaseManager::CheckBrowseUrl(const GURL& url,
check->need_get_hash = cache_hits.empty();
check->prefix_hits.swap(prefix_hits);
check->cache_hits.swap(cache_hits);
- checks_.insert(check);
+ checks_[check] = base::WrapUnique(check);
BrowserThread::PostTask(
BrowserThread::IO, FROM_HERE,
@@ -558,18 +560,17 @@ bool LocalSafeBrowsingDatabaseManager::CheckBrowseUrl(const GURL& url,
void LocalSafeBrowsingDatabaseManager::CancelCheck(Client* client) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
- for (CurrentChecks::iterator i = checks_.begin(); i != checks_.end(); ++i) {
+ for (const auto& check : checks_) {
// We can't delete matching checks here because the db thread has a copy of
// the pointer. Instead, we simply NULL out the client, and when the db
// thread calls us back, we'll clean up the check.
- if ((*i)->client == client)
- (*i)->client = NULL;
+ if (check.first->client == client)
+ check.first->client = NULL;
}
// Scan the queued clients store. Clients may be here if they requested a URL
// check before the database has finished loading.
- for (std::deque<QueuedCheck>::iterator it(queued_checks_.begin());
- it != queued_checks_.end();) {
+ for (auto it = queued_checks_.begin(); it != queued_checks_.end();) {
// In this case it's safe to delete matches entirely since nothing has a
// pointer to them.
if (it->client == client)
@@ -768,14 +769,12 @@ void LocalSafeBrowsingDatabaseManager::DoStopOnIOThread() {
// We have to do this after the db thread returns because methods on it can
// have copies of these pointers, so deleting them might lead to accessing
// garbage.
- for (CurrentChecks::iterator it = checks_.begin(); it != checks_.end();
- ++it) {
- SafeBrowsingCheck* check = *it;
- if (check->client)
- check->OnSafeBrowsingResult();
+ for (const auto& check : checks_) {
+ if (check.first->client)
+ check.first->OnSafeBrowsingResult();
}
- base::STLDeleteElements(&checks_);
+ checks_.clear();
gethash_requests_.clear();
}
@@ -1220,24 +1219,25 @@ void LocalSafeBrowsingDatabaseManager::SafeBrowsingCheckDone(
if (check->client)
check->OnSafeBrowsingResult();
checks_.erase(check);
- delete check;
}
void LocalSafeBrowsingDatabaseManager::StartSafeBrowsingCheck(
- SafeBrowsingCheck* check,
+ std::unique_ptr<SafeBrowsingCheck> check,
const base::Callback<std::vector<SBPrefix>(void)>& task) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
check->weak_ptr_factory_.reset(
new base::WeakPtrFactory<LocalSafeBrowsingDatabaseManager>(this));
- checks_.insert(check);
+ SafeBrowsingCheck* check_ptr = check.get();
+ checks_[check_ptr] = std::move(check);
base::PostTaskAndReplyWithResult(
safe_browsing_task_runner_.get(), FROM_HERE, task,
base::Bind(&LocalSafeBrowsingDatabaseManager::OnAsyncCheckDone,
- check->weak_ptr_factory_->GetWeakPtr(), check));
+ check_ptr->weak_ptr_factory_->GetWeakPtr(), check_ptr));
base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
- FROM_HERE, base::Bind(&LocalSafeBrowsingDatabaseManager::TimeoutCallback,
- check->weak_ptr_factory_->GetWeakPtr(), check),
+ FROM_HERE,
+ base::Bind(&LocalSafeBrowsingDatabaseManager::TimeoutCallback,
+ check_ptr->weak_ptr_factory_->GetWeakPtr(), check_ptr),
check_timeout_);
}
« no previous file with comments | « chrome/browser/safe_browsing/local_database_manager.h ('k') | chrome/browser/safe_browsing/local_database_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698