Index: chrome/browser/safe_browsing/safe_browsing_service.cc |
diff --git a/chrome/browser/safe_browsing/safe_browsing_service.cc b/chrome/browser/safe_browsing/safe_browsing_service.cc |
index 2222296551531161b8d57d40d1ccc9cca94d5fbd..8f97f4ec857b5ce7a75af065058688227ef61720 100644 |
--- a/chrome/browser/safe_browsing/safe_browsing_service.cc |
+++ b/chrome/browser/safe_browsing/safe_browsing_service.cc |
@@ -4,6 +4,8 @@ |
#include "chrome/browser/safe_browsing/safe_browsing_service.h" |
+#include "base/bind.h" |
+#include "base/bind_helpers.h" |
#include "base/callback.h" |
#include "base/command_line.h" |
#include "base/lazy_instance.h" |
@@ -126,7 +128,7 @@ SafeBrowsingService::SafeBrowsingCheck::SafeBrowsingCheck() |
need_get_hash(false), |
result(SAFE), |
is_download(false), |
- timeout_task(NULL) { |
+ timeout_factory_(NULL) { |
} |
SafeBrowsingService::SafeBrowsingCheck::~SafeBrowsingCheck() {} |
@@ -254,9 +256,7 @@ bool SafeBrowsingService::CheckDownloadUrl(const std::vector<GURL>& url_chain, |
StartDownloadCheck( |
check, |
client, |
- NewRunnableMethod(this, |
- &SafeBrowsingService::CheckDownloadUrlOnSBThread, |
- check), |
+ base::Bind(&SafeBrowsingService::CheckDownloadUrlOnSBThread, this, check), |
download_urlcheck_timeout_ms_); |
return false; |
} |
@@ -276,9 +276,7 @@ bool SafeBrowsingService::CheckDownloadHash(const std::string& full_hash, |
StartDownloadCheck( |
check, |
client, |
- NewRunnableMethod(this, |
- &SafeBrowsingService::CheckDownloadHashOnSBThread, |
- check), |
+ base::Bind(&SafeBrowsingService::CheckDownloadHashOnSBThread,this, check), |
download_hashcheck_timeout_ms_); |
return false; |
} |
@@ -349,7 +347,7 @@ bool SafeBrowsingService::CheckBrowseUrl(const GURL& url, |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod(this, &SafeBrowsingService::OnCheckDone, check)); |
+ base::Bind(&SafeBrowsingService::OnCheckDone, this, check)); |
return false; |
} |
@@ -400,8 +398,7 @@ void SafeBrowsingService::DisplayBlockingPage( |
// The blocking page must be created from the UI thread. |
BrowserThread::PostTask( |
BrowserThread::UI, FROM_HERE, |
- NewRunnableMethod( |
- this, &SafeBrowsingService::DoDisplayBlockingPage, resource)); |
+ base::Bind(&SafeBrowsingService::DoDisplayBlockingPage, this, resource)); |
} |
void SafeBrowsingService::HandleGetHashResults( |
@@ -435,16 +432,16 @@ void SafeBrowsingService::HandleChunk(const std::string& list, |
SBChunkList* chunks) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
DCHECK(enabled_); |
- safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( |
- this, &SafeBrowsingService::HandleChunkForDatabase, list, chunks)); |
+ safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, base::Bind( |
+ &SafeBrowsingService::HandleChunkForDatabase, this, list, chunks)); |
} |
void SafeBrowsingService::HandleChunkDelete( |
std::vector<SBChunkDelete>* chunk_deletes) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
DCHECK(enabled_); |
- safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( |
- this, &SafeBrowsingService::DeleteChunks, chunk_deletes)); |
+ safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, base::Bind( |
+ &SafeBrowsingService::DeleteChunks, this, chunk_deletes)); |
} |
void SafeBrowsingService::UpdateStarted() { |
@@ -452,8 +449,8 @@ void SafeBrowsingService::UpdateStarted() { |
DCHECK(enabled_); |
DCHECK(!update_in_progress_); |
update_in_progress_ = true; |
- safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( |
- this, &SafeBrowsingService::GetAllChunksFromDatabase)); |
+ safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, base::Bind( |
+ &SafeBrowsingService::GetAllChunksFromDatabase, this)); |
} |
void SafeBrowsingService::UpdateFinished(bool update_succeeded) { |
@@ -462,9 +459,8 @@ void SafeBrowsingService::UpdateFinished(bool update_succeeded) { |
if (update_in_progress_) { |
update_in_progress_ = false; |
safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, |
- NewRunnableMethod(this, |
- &SafeBrowsingService::DatabaseUpdateFinished, |
- update_succeeded)); |
+ base::Bind(&SafeBrowsingService::DatabaseUpdateFinished, |
+ this, update_succeeded)); |
} |
} |
@@ -485,9 +481,7 @@ void SafeBrowsingService::OnBlockingPageDone( |
BrowserThread::PostTask( |
BrowserThread::UI, |
FROM_HERE, |
- NewRunnableMethod(this, |
- &SafeBrowsingService::UpdateWhitelist, |
- resource)); |
+ base::Bind(&SafeBrowsingService::UpdateWhitelist, this, resource)); |
} |
} |
} |
@@ -510,8 +504,8 @@ void SafeBrowsingService::RegisterPrefs(PrefService* prefs) { |
void SafeBrowsingService::ResetDatabase() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
DCHECK(enabled_); |
- safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, NewRunnableMethod( |
- this, &SafeBrowsingService::OnResetDatabase)); |
+ safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, base::Bind( |
+ &SafeBrowsingService::OnResetDatabase, this)); |
} |
void SafeBrowsingService::LogPauseDelay(base::TimeDelta time) { |
@@ -632,8 +626,6 @@ void SafeBrowsingService::OnIOShutdown() { |
check->result = SAFE; |
check->client->OnSafeBrowsingResult(*check); |
} |
- if (check->timeout_task) |
- check->timeout_task->Cancel(); |
} |
STLDeleteElements(&checks_); |
@@ -651,7 +643,8 @@ bool SafeBrowsingService::MakeDatabaseAvailable() { |
if (DatabaseAvailable()) |
return true; |
safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, |
- NewRunnableMethod(this, &SafeBrowsingService::GetDatabase)); |
+ base::IgnoreReturn<SafeBrowsingDatabase*>( |
+ base::Bind(&SafeBrowsingService::GetDatabase, this))); |
return false; |
} |
@@ -682,7 +675,7 @@ void SafeBrowsingService::CloseDatabase() { |
closing_database_ = true; |
if (safe_browsing_thread_.get()) { |
safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, |
- NewRunnableMethod(this, &SafeBrowsingService::OnCloseDatabase)); |
+ base::Bind(&SafeBrowsingService::OnCloseDatabase, this)); |
} |
} |
@@ -713,7 +706,7 @@ SafeBrowsingDatabase* SafeBrowsingService::GetDatabase() { |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod(this, &SafeBrowsingService::DatabaseLoadComplete)); |
+ base::Bind(&SafeBrowsingService::DatabaseLoadComplete, this)); |
UMA_HISTOGRAM_TIMES("SB2.DatabaseOpen", base::TimeTicks::Now() - before); |
return database_; |
@@ -779,9 +772,8 @@ void SafeBrowsingService::GetAllChunksFromDatabase() { |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod( |
- this, &SafeBrowsingService::OnGetAllChunksFromDatabase, lists, |
- database_error)); |
+ base::Bind(&SafeBrowsingService::OnGetAllChunksFromDatabase, |
+ this, lists, database_error)); |
} |
void SafeBrowsingService::OnGetAllChunksFromDatabase( |
@@ -836,7 +828,7 @@ void SafeBrowsingService::HandleChunkForDatabase( |
} |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod(this, &SafeBrowsingService::OnChunkInserted)); |
+ base::Bind(&SafeBrowsingService::OnChunkInserted, this)); |
} |
void SafeBrowsingService::DeleteChunks( |
@@ -923,15 +915,14 @@ void SafeBrowsingService::Start() { |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod( |
- this, &SafeBrowsingService::OnIOInitialize, client_key, wrapped_key, |
- request_context_getter)); |
+ base::Bind(&SafeBrowsingService::OnIOInitialize, |
+ this, client_key, wrapped_key, request_context_getter)); |
} |
void SafeBrowsingService::Stop() { |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod(this, &SafeBrowsingService::OnIOShutdown)); |
+ base::Bind(&SafeBrowsingService::OnIOShutdown, this)); |
} |
void SafeBrowsingService::OnCloseDatabase() { |
@@ -1025,9 +1016,8 @@ void SafeBrowsingService::DoDisplayBlockingPage( |
if (IsWhitelisted(resource)) { |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod(this, |
- &SafeBrowsingService::NotifyClientBlockingComplete, |
- resource.client, true)); |
+ base::Bind(&SafeBrowsingService::NotifyClientBlockingComplete, |
+ this, resource.client, true)); |
return; |
} |
@@ -1043,8 +1033,8 @@ void SafeBrowsingService::DoDisplayBlockingPage( |
resources.push_back(resource); |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod( |
- this, &SafeBrowsingService::OnBlockingPageDone, resources, false)); |
+ base::Bind(&SafeBrowsingService::OnBlockingPageDone, |
+ this, resources, false)); |
return; |
} |
@@ -1154,9 +1144,7 @@ void SafeBrowsingService::CheckDownloadHashOnSBThread( |
check->result = SAFE; |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod(this, |
- &SafeBrowsingService::CheckDownloadHashDone, |
- check)); |
+ base::Bind(&SafeBrowsingService::CheckDownloadHashDone, this, check)); |
return; |
} |
@@ -1164,7 +1152,7 @@ void SafeBrowsingService::CheckDownloadHashOnSBThread( |
check->prefix_hits.push_back(check->full_hash->prefix); |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod(this, &SafeBrowsingService::OnCheckDone, check)); |
+ base::Bind(&SafeBrowsingService::OnCheckDone, this, check)); |
} |
void SafeBrowsingService::CheckDownloadUrlOnSBThread(SafeBrowsingCheck* check) { |
@@ -1178,9 +1166,7 @@ void SafeBrowsingService::CheckDownloadUrlOnSBThread(SafeBrowsingCheck* check) { |
check->result = SAFE; |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod(this, |
- &SafeBrowsingService::CheckDownloadUrlDone, |
- check)); |
+ base::Bind(&SafeBrowsingService::CheckDownloadUrlDone, this, check)); |
return; |
} |
@@ -1189,7 +1175,7 @@ void SafeBrowsingService::CheckDownloadUrlOnSBThread(SafeBrowsingCheck* check) { |
check->prefix_hits = prefix_hits; |
BrowserThread::PostTask( |
BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod(this, &SafeBrowsingService::OnCheckDone, check)); |
+ base::Bind(&SafeBrowsingService::OnCheckDone, this, check)); |
} |
void SafeBrowsingService::TimeoutCallback(SafeBrowsingCheck* check) { |
@@ -1205,7 +1191,6 @@ void SafeBrowsingService::TimeoutCallback(SafeBrowsingCheck* check) { |
check->client->OnSafeBrowsingResult(*check); |
check->client = NULL; |
} |
- check->timeout_task = NULL; |
} |
void SafeBrowsingService::CheckDownloadUrlDone(SafeBrowsingCheck* check) { |
@@ -1229,28 +1214,28 @@ void SafeBrowsingService::SafeBrowsingCheckDone(SafeBrowsingCheck* check) { |
DCHECK(checks_.find(check) != checks_.end()); |
if (check->client) |
check->client->OnSafeBrowsingResult(*check); |
- if (check->timeout_task) |
- check->timeout_task->Cancel(); |
checks_.erase(check); |
delete check; |
} |
void SafeBrowsingService::StartDownloadCheck(SafeBrowsingCheck* check, |
Client* client, |
- CancelableTask* task, |
+ const base::Closure& task, |
int64 timeout_ms) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
check->client = client; |
check->result = SAFE; |
check->is_download = true; |
- check->timeout_task = |
- NewRunnableMethod(this, &SafeBrowsingService::TimeoutCallback, check); |
+ check->timeout_factory_.reset( |
+ new base::WeakPtrFactory<SafeBrowsingService>(this)); |
checks_.insert(check); |
safe_browsing_thread_->message_loop()->PostTask(FROM_HERE, task); |
- MessageLoop::current()->PostDelayedTask( |
- FROM_HERE, check->timeout_task, timeout_ms); |
+ MessageLoop::current()->PostDelayedTask(FROM_HERE, |
+ base::Bind(&SafeBrowsingService::TimeoutCallback, |
+ check->timeout_factory_->GetWeakPtr(), check), |
+ timeout_ms); |
} |
void SafeBrowsingService::UpdateWhitelist(const UnsafeResource& resource) { |