| 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) {
|
|
|