Index: chrome/browser/search_engines/search_provider_install_data.cc |
diff --git a/chrome/browser/search_engines/search_provider_install_data.cc b/chrome/browser/search_engines/search_provider_install_data.cc |
index bc1b77b04e6c15433d4ce4125e5a464c99582a5e..569462837394931dd682bb45fccb8c92d60e8e3f 100644 |
--- a/chrome/browser/search_engines/search_provider_install_data.cc |
+++ b/chrome/browser/search_engines/search_provider_install_data.cc |
@@ -4,12 +4,14 @@ |
#include "chrome/browser/search_engines/search_provider_install_data.h" |
+#include <algorithm> |
+#include <functional> |
#include <vector> |
#include "base/basictypes.h" |
+#include "base/bind.h" |
#include "base/logging.h" |
#include "base/memory/ref_counted.h" |
-#include "base/task.h" |
#include "chrome/browser/search_engines/search_host_to_urls_map.h" |
#include "chrome/browser/search_engines/search_terms_data.h" |
#include "chrome/browser/search_engines/template_url.h" |
@@ -138,9 +140,9 @@ void GoogleURLObserver::Observe(int type, |
const content::NotificationDetails& details) { |
if (type == chrome::NOTIFICATION_GOOGLE_URL_UPDATED) { |
BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, |
- NewRunnableMethod(change_notifier_.get(), |
- &GoogleURLChangeNotifier::OnChange, |
- UIThreadSearchTermsData().GoogleBaseURLValue())); |
+ base::Bind(&GoogleURLChangeNotifier::OnChange, |
+ change_notifier_.get(), |
+ UIThreadSearchTermsData().GoogleBaseURLValue())); |
} else { |
// This must be the death notification. |
delete this; |
@@ -185,16 +187,15 @@ SearchProviderInstallData::~SearchProviderInstallData() { |
} |
} |
-void SearchProviderInstallData::CallWhenLoaded(Task* task) { |
+void SearchProviderInstallData::CallWhenLoaded(const base::Closure& closure) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
if (provider_map_.get()) { |
- task->Run(); |
- delete task; |
+ closure.Run(); |
return; |
} |
- task_queue_.Push(task); |
+ closure_queue_.push_back(closure); |
if (load_handle_) |
return; |
@@ -300,7 +301,12 @@ void SearchProviderInstallData::OnLoadFailed() { |
void SearchProviderInstallData::NotifyLoaded() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- task_queue_.Run(); |
+ std::vector<base::Closure> closure_queue; |
+ closure_queue.swap(closure_queue_); |
+ |
+ std::for_each(closure_queue.begin(), |
+ closure_queue.end(), |
+ std::mem_fun_ref(&base::Closure::Run)); |
// Since we expect this request to be rare, clear out the information. This |
// also keeps the responses current as the search providers change. |